Class: Tengine::Job::Junction

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

Overview

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

Direct Known Subclasses

Fork, Join

Instance Method Summary collapse

Instance Method Details

#activatable?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/tengine/job/junction.rb', line 17

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

#activate(signal) ⇒ Object



21
22
23
# File 'lib/tengine/job/junction.rb', line 21

def activate(signal)
  signal.leave(self)
end

#reset(signal) ⇒ Object



25
26
27
# File 'lib/tengine/job/junction.rb', line 25

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

#transmit(signal) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/tengine/job/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?
  activate(signal) unless prev_edges.any?(&predicate)
end