Class: Tengine::Job::Runtime::Junction

Inherits:
Vertex
  • Object
show all
Defined in:
lib/tengine/job/runtime/junction.rb

Overview

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

Direct Known Subclasses

Fork, Join

Instance Method Summary collapse

Instance Method Details

#activatable?Boolean



19
20
21
# File 'lib/tengine/job/runtime/junction.rb', line 19

def activatable?
  prev_edges.all?(&:transmitted?)
end

#activate(signal) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/tengine/job/runtime/junction.rb', line 23

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) ⇒ Object



31
32
33
# File 'lib/tengine/job/runtime/junction.rb', line 31

def reset(signal)
  signal.leave(self, :reset)
end

#transmit(signal) ⇒ Object



8
9
10
11
12
13
14
15
16
17
# File 'lib/tengine/job/runtime/junction.rb', line 8

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