Class: JobWorkflow::WorkflowStatus
- Inherits:
-
Object
- Object
- JobWorkflow::WorkflowStatus
- Defined in:
- lib/job_workflow/workflow_status.rb
Defined Under Namespace
Classes: NotFoundError
Instance Attribute Summary collapse
-
#completed_task_names ⇒ Object
readonly
: Array.
-
#context ⇒ Object
readonly
@rbs! type status_type = :pending | :running | :completed | :failed.
-
#job_class_name ⇒ Object
readonly
: String.
-
#status ⇒ Object
readonly
: status_type.
Class Method Summary collapse
-
.find(job_id) ⇒ Object
: (String) -> WorkflowStatus.
-
.find_by(job_id:) ⇒ Object
: (job_id: String) -> WorkflowStatus?.
-
.from_job_data(data) ⇒ Object
: (Hash[String, untyped]) -> WorkflowStatus.
Instance Method Summary collapse
-
#arguments ⇒ Object
: () -> Arguments.
-
#completed? ⇒ Boolean
: () -> bool.
-
#current_task_name ⇒ Object
: () -> Symbol?.
-
#failed? ⇒ Boolean
: () -> bool.
-
#initialize(context:, job_class_name:, status:, completed_task_names: []) ⇒ WorkflowStatus
constructor
: ( context: Context, job_class_name: String, status: status_type, ?completed_task_names: Array ) -> void.
-
#job_status ⇒ Object
: () -> JobStatus.
-
#output ⇒ Object
: () -> Output.
-
#pending? ⇒ Boolean
: () -> bool.
-
#running? ⇒ Boolean
: () -> bool.
-
#to_h ⇒ Object
: () -> Hash[Symbol, untyped].
Constructor Details
#initialize(context:, job_class_name:, status:, completed_task_names: []) ⇒ WorkflowStatus
: (
context: Context,
job_class_name: String,
status: status_type,
?completed_task_names: Array[Symbol]
) -> void
84 85 86 87 88 89 |
# File 'lib/job_workflow/workflow_status.rb', line 84 def initialize(context:, job_class_name:, status:, completed_task_names: []) @context = context #: Context @job_class_name = job_class_name #: String @status = status #: Symbol @completed_task_names = completed_task_names end |
Instance Attribute Details
#completed_task_names ⇒ Object (readonly)
: Array
13 14 15 |
# File 'lib/job_workflow/workflow_status.rb', line 13 def completed_task_names @completed_task_names end |
#context ⇒ Object (readonly)
@rbs!
type status_type = :pending | :running | :completed | :failed
10 11 12 |
# File 'lib/job_workflow/workflow_status.rb', line 10 def context @context end |
#job_class_name ⇒ Object (readonly)
: String
11 12 13 |
# File 'lib/job_workflow/workflow_status.rb', line 11 def job_class_name @job_class_name end |
#status ⇒ Object (readonly)
: status_type
12 13 14 |
# File 'lib/job_workflow/workflow_status.rb', line 12 def status @status end |
Class Method Details
.find(job_id) ⇒ Object
: (String) -> WorkflowStatus
17 18 19 20 21 22 |
# File 'lib/job_workflow/workflow_status.rb', line 17 def find(job_id) workflow_status = find_by(job_id:) raise NotFoundError, "Workflow with job_id '#{job_id}' not found" if workflow_status.nil? workflow_status end |
.find_by(job_id:) ⇒ Object
: (job_id: String) -> WorkflowStatus?
25 26 27 28 29 30 31 |
# File 'lib/job_workflow/workflow_status.rb', line 25 def find_by(job_id:) data = QueueAdapter.current.find_job(job_id) return if data.nil? return if data["class_name"] == JobWorkflow::SubTaskJob.name WorkflowStatus.from_job_data(data) end |
.from_job_data(data) ⇒ Object
: (Hash[String, untyped]) -> WorkflowStatus
34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/job_workflow/workflow_status.rb', line 34 def from_job_data(data) job_class_name = data["class_name"] job_class = job_class_name.constantize workflow = job_class._workflow context = context_from_job_data(data, workflow) new( context:, job_class_name:, status: data["status"], completed_task_names: completed_task_names_from_job_data(data) ) end |
Instance Method Details
#arguments ⇒ Object
: () -> Arguments
97 98 99 |
# File 'lib/job_workflow/workflow_status.rb', line 97 def arguments context.arguments end |
#completed? ⇒ Boolean
: () -> bool
117 118 119 |
# File 'lib/job_workflow/workflow_status.rb', line 117 def completed? status == :succeeded end |
#current_task_name ⇒ Object
: () -> Symbol?
92 93 94 |
# File 'lib/job_workflow/workflow_status.rb', line 92 def current_task_name context._task_context.task&.task_name end |
#failed? ⇒ Boolean
: () -> bool
122 123 124 |
# File 'lib/job_workflow/workflow_status.rb', line 122 def failed? status == :failed end |
#job_status ⇒ Object
: () -> JobStatus
107 108 109 |
# File 'lib/job_workflow/workflow_status.rb', line 107 def job_status context.job_status end |
#output ⇒ Object
: () -> Output
102 103 104 |
# File 'lib/job_workflow/workflow_status.rb', line 102 def output context.output end |
#pending? ⇒ Boolean
: () -> bool
127 128 129 |
# File 'lib/job_workflow/workflow_status.rb', line 127 def pending? status == :pending end |
#running? ⇒ Boolean
: () -> bool
112 113 114 |
# File 'lib/job_workflow/workflow_status.rb', line 112 def running? status == :running end |
#to_h ⇒ Object
: () -> Hash[Symbol, untyped]
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/job_workflow/workflow_status.rb', line 132 def to_h { status:, job_class_name:, current_task_name:, arguments: arguments.to_h, output: output.flat_task_outputs.map do |task_output| { task_name: task_output.task_name, each_index: task_output.each_index, data: task_output.data } end } end |