class Tengine::Job::Runtime::Junction

ForkやJoinの継承元となるVertex。特に状態は持たない。

Public Instance Methods

activatable?() click to toggle source
# File lib/tengine/job/runtime/junction.rb, line 18
def activatable?
  prev_edges.all?(&:transmitted?)
end
activate(signal) click to toggle source
# File lib/tengine/job/runtime/junction.rb, line 22
def activate(signal)
  Tengine.logger.debug "a" * 100
  Tengine.logger.debug "#{__FILE__}##{__LINE__}"
  Tengine.logger.debug "#{object_id} #{inspect}"
  Tengine.logger.debug "#{signal.cache(parent).object_id} #{signal.cache(parent).inspect}"
  signal.leave(self)
end
reset(signal) click to toggle source
# File lib/tengine/job/runtime/junction.rb, line 30
def reset(signal)
  signal.leave(self, :reset)
end
transmit(signal) click to toggle source

cacoo.com/diagrams/hdLgrzYsTBBpV3Wj#D26C1

# File lib/tengine/job/runtime/junction.rb, line 7
def transmit(signal)
  complete_origin_edge(signal, :except_closed => true)
  # transmitted?で判断すると、closedなものに対する処理を考慮できないので、alive?を使って判断します
  # activate(signal) if prev_edges.all?(&:transmitted?)
  execution = signal.execution
  predicate = execution.retry ? :alive_or_closing_or_closed? : :alive_or_closing?
  unless signal.cache(prev_edges).any?(&predicate)
    activate(signal)
  end
end