Sha256: c9e737834a733c4c12b0bdd4ced0fb8962b8aa336743848235ac5e796df11a2b

Contents?: true

Size: 1.22 KB

Versions: 35

Compression:

Stored size: 1.22 KB

Contents

module Dynflow
  module Executors
    class Parallel < Abstract
      class FlowManager
        include Algebrick::TypeCheck

        attr_reader :execution_plan, :cursor_index

        def initialize(execution_plan, flow)
          @execution_plan = Type! execution_plan, ExecutionPlan
          @flow           = flow
          @cursor_index   = {}
          @cursor         = build_root_cursor
        end

        def done?
          @cursor.done?
        end

        # @return [Set] of steps to continue with
        def what_is_next(flow_step)
          return [] if flow_step.state == :suspended

          success = flow_step.state != :error
          return cursor_index[flow_step.id].what_is_next(flow_step, success)
        end

        # @return [Set] of steps to continue with
        def start
          return @cursor.what_is_next.tap do |steps|
            raise 'invalid state' if steps.empty? && !done?
          end
        end

        private

        def build_root_cursor
          # the root cursor has to always run against sequence
          sequence = @flow.is_a?(Flows::Sequence) ? @flow : Flows::Sequence.new([@flow])
          return SequenceCursor.new(self, sequence, nil)
        end
      end
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
dynflow-0.8.16 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.15 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.14 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.13 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.12 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.11 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.10 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.9 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.8 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.7 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.6 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.5 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.4 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.3 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.2 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.1 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.8.0 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.7.9 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.7.8 lib/dynflow/executors/parallel/flow_manager.rb
dynflow-0.7.7 lib/dynflow/executors/parallel/flow_manager.rb