class Dynflow::Director::SequentialManager
Attributes
execution_plan[R]
world[R]
Public Class Methods
new(world, execution_plan)
click to toggle source
# File lib/dynflow/director/sequential_manager.rb, line 7 def initialize(world, execution_plan) @world = world @execution_plan = execution_plan @done = false end
Public Instance Methods
done!()
click to toggle source
# File lib/dynflow/director/sequential_manager.rb, line 46 def done! @done = true end
done?()
click to toggle source
# File lib/dynflow/director/sequential_manager.rb, line 50 def done? @done end
finalize()
click to toggle source
# File lib/dynflow/director/sequential_manager.rb, line 22 def finalize reset_finalize_steps unless execution_plan.error? step_id = execution_plan.finalize_flow.all_step_ids.first action_class = execution_plan.steps[step_id].action_class world.middleware.execute(:finalize_phase, action_class, execution_plan) do dispatch(execution_plan.finalize_flow) end end @done = true end
finalize_steps()
click to toggle source
# File lib/dynflow/director/sequential_manager.rb, line 34 def finalize_steps execution_plan.finalize_flow.all_step_ids.map do |step_id| execution_plan.steps[step_id] end end
reset_finalize_steps()
click to toggle source
# File lib/dynflow/director/sequential_manager.rb, line 40 def reset_finalize_steps finalize_steps.each do |step| step.state = :pending if [:success, :error].include? step.state end end
run()
click to toggle source
# File lib/dynflow/director/sequential_manager.rb, line 13 def run with_state_updates do dispatch(execution_plan.run_flow) finalize end return execution_plan end
Private Instance Methods
dispatch(flow)
click to toggle source
# File lib/dynflow/director/sequential_manager.rb, line 56 def dispatch(flow) case flow when Flows::Sequence run_in_sequence(flow.flows) when Flows::Concurrence run_in_concurrence(flow.flows) when Flows::Atom run_step(execution_plan.steps[flow.step_id]) else raise ArgumentError, "Don't know how to run #{flow}" end end
run_in_concurrence(steps)
click to toggle source
# File lib/dynflow/director/sequential_manager.rb, line 73 def run_in_concurrence(steps) run_in_sequence(steps) end
run_in_sequence(steps)
click to toggle source
# File lib/dynflow/director/sequential_manager.rb, line 69 def run_in_sequence(steps) steps.all? { |s| dispatch(s) } end
run_step(step)
click to toggle source
# File lib/dynflow/director/sequential_manager.rb, line 77 def run_step(step) step.execute return step.state != :error end
with_state_updates(&block)
click to toggle source
# File lib/dynflow/director/sequential_manager.rb, line 82 def with_state_updates(&block) execution_plan.update_state(:running) block.call execution_plan.update_state(execution_plan.error? ? :paused : :stopped) end