Class: JobWorkflow::SubTaskJob

Inherits:
ActiveJob::Base
  • Object
show all
Includes:
ActiveJob::Continuable
Defined in:
lib/job_workflow/sub_task_job.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#_contextObject

: Context?



47
48
49
# File 'lib/job_workflow/sub_task_job.rb', line 47

def _context
  @_context
end

Class Method Details

.from_parent_context(context:) ⇒ Object

: (context: Context) -> SubTaskJob



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/job_workflow/sub_task_job.rb', line 9

def from_parent_context(context:)
  validate_sub_task_context!(context)

  new_context = context.dup
  job = new(context.arguments.to_h)
  new_context._job = job
  job._context = new_context
  task = new_context._task_context.task || (raise "task is not set")
  return job if task.enqueue.queue.nil?

  job.set(queue: task.enqueue.queue)
end

Instance Method Details

#deserialize(job_data) ⇒ Object

: (Hash[String, untyped]) -> void



55
56
57
58
# File 'lib/job_workflow/sub_task_job.rb', line 55

def deserialize(job_data)
  super
  self.serialized_job_workflow_context = job_data["job_workflow_context"]
end

#outputObject

: () -> Output



40
41
42
43
44
45
# File 'lib/job_workflow/sub_task_job.rb', line 40

def output
  context = _context
  raise "context is not set." if context.nil?

  context.output
end

#perform(arguments) ⇒ Object

: (Hash[untyped, untyped]) -> void



33
34
35
36
37
# File 'lib/job_workflow/sub_task_job.rb', line 33

def perform(arguments)
  payload = arguments.symbolize_keys
  self._context = build_context(payload)
  Runner.new(context: _context).run
end

#serializeObject

: () -> Hash[String, untyped]



50
51
52
# File 'lib/job_workflow/sub_task_job.rb', line 50

def serialize
  super.merge({ "job_workflow_context" => _context&.serialize || serialized_job_workflow_context }.compact)
end