class Trailblazer::Activity::Introspect::Graph
@private This API is still under construction.
Constants
- Node
- Outgoing
Public Class Methods
new(activity)
click to toggle source
# File lib/trailblazer/activity/introspect.rb, line 11 def initialize(activity) @activity = activity @schema = activity.to_h or raise @circuit = @schema[:circuit] @map = @circuit.to_h[:map] @configs = @schema[:nodes] end
Public Instance Methods
collect(strategy: :circuit) { |find_with_block { |node| task == task }| ... }
click to toggle source
# File lib/trailblazer/activity/introspect.rb, line 25 def collect(strategy: :circuit) @map.keys.each_with_index.collect { |task, i| yield find_with_block { |node| node.task == task }, i } end
find(id = nil, &block)
click to toggle source
# File lib/trailblazer/activity/introspect.rb, line 19 def find(id = nil, &block) return find_by_id(id) unless block_given? find_with_block(&block) end
stop_events()
click to toggle source
# File lib/trailblazer/activity/introspect.rb, line 29 def stop_events @circuit.to_h[:end_events] end
Private Instance Methods
Node(*args)
click to toggle source
# File lib/trailblazer/activity/introspect.rb, line 50 def Node(*args) Node.new(*args).freeze end
find_by_id(id)
click to toggle source
# File lib/trailblazer/activity/introspect.rb, line 35 def find_by_id(id) node = @configs.find { |_node| _node.id == id } or return node_for(node) end
find_with_block() { |Node(task, id, outputs, data)| ... }
click to toggle source
# File lib/trailblazer/activity/introspect.rb, line 40 def find_with_block existing = @configs.find { |node| yield Node(node.task, node.id, node.outputs, node.data) } or return node_for(existing) end
node_for(node_attributes)
click to toggle source
# File lib/trailblazer/activity/introspect.rb, line 46 def node_for(node_attributes) Node(node_attributes.task, node_attributes.id, node_attributes.outputs, outgoings_for(node_attributes), node_attributes.data) end
outgoings_for(node)
click to toggle source
# File lib/trailblazer/activity/introspect.rb, line 57 def outgoings_for(node) outputs = node.outputs connections = @map[node.task] connections.collect do |signal, target| output = outputs.find { |out| out.signal == signal } Outgoing.new(output, target) end end