Class: WFlow::TasksWorker

Inherits:
Object
  • Object
show all
Defined in:
lib/w_flow/tasks_worker.rb

Instance Method Summary collapse

Constructor Details

#initialize(owner_node, tasks) ⇒ TasksWorker

Returns a new instance of TasksWorker.



4
5
6
7
# File 'lib/w_flow/tasks_worker.rb', line 4

def initialize(owner_node, tasks)
  @owner_node = owner_node
  @tasks      = tasks
end

Instance Method Details

#finalizeObject



35
36
37
# File 'lib/w_flow/tasks_worker.rb', line 35

def finalize
  executed_do(:finalize)
end

#rollbackObject



39
40
41
# File 'lib/w_flow/tasks_worker.rb', line 39

def rollback
  executed_do(:rollback)
end

#run(flow, options = {}) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/w_flow/tasks_worker.rb', line 9

def run(flow, options = {})
  @flow           = flow
  @options        = options
  @executed_tasks = []

  @tasks.each do |task|
    report = Supervisor.supervise { execute_task(task) }

    if report.failed?
      rollback
      finalize

      @executed_tasks.clear

      if signal_failure?
        Supervisor.resignal!(report)
      else
        flow.log_failure(report.message)
        return
      end
    else
      Supervisor.resignal!(report) if report.stopped? && signal_stop?
    end
  end
end