class Tengine::Job::Runtime::Jobnet
ジョブの始端から終端までを持ち、VertexとEdgeを組み合わせてジョブネットを構成することができるVertex。 自身もジョブネットを構成するVertexの一部として扱われる。
Constants
- VERTEX_CLASSES
Attributes
stop_modified[R]
Public Class Methods
by_name(name)
click to toggle source
# File lib/tengine/job/runtime/jobnet.rb, line 85 def by_name(name) where({:name => name}).first end
Public Instance Methods
ack(signal)
click to toggle source
ハンドリングするドライバ: ジョブネット制御ドライバ このackは、子要素のTengine::Job::Runtime::Start#activateから呼ばれます
# File lib/tengine/job/runtime/jobnet.rb, line 142 def ack(signal) self.phase_key = :running end
activate(signal)
click to toggle source
ハンドリングするドライバ: ジョブネット制御ドライバ
# File lib/tengine/job/runtime/jobnet.rb, line 118 def activate(signal) self.phase_key = :starting self.started_at = signal.event.occurred_at complete_origin_edge(signal) if prev_edges && !prev_edges.empty? signal.call_later do signal.cache(parent || signal.execution).ack(signal) if root? signal.execution.with(safe: safemode(Tengine::Job::Runtime::Execution.collection)).save! end signal.call_later do self.update_with_lock do signal.paths << self signal.cache(self.start_vertex).transmit(signal) end end end end
ancestors_until_expansion()
click to toggle source
@override
# File lib/tengine/job/runtime/jobnet.rb, line 91 def ancestors_until_expansion if (parent = self.parent) && !self.was_expansion? parent.ancestors_until_expansion + [parent] else [] end end
chained_box?()
click to toggle source
# File lib/tengine/job/runtime/jobnet.rb, line 36 def chained_box?; jobnet_type_entry[:chained_box]; end
check_stop_modified()
click to toggle source
# File lib/tengine/job/runtime/jobnet.rb, line 68 def check_stop_modified @stop_modified = stop_reason_changed? || stopped_at_changed? true end
close(signal)
click to toggle source
# File lib/tengine/job/runtime/jobnet.rb, line 205 def close(signal) self.edges.each{|edge| signal.cache(edge).close(signal)} end
fail(signal)
click to toggle source
ハンドリングするドライバ: ジョブネット制御ドライバ
# File lib/tengine/job/runtime/jobnet.rb, line 172 def fail(signal) Tengine.logger.info("#{__FILE__}##{__LINE__} #{self.class}#fail") return if signal.cache(self.edges).any?(&:alive?) self.phase_key = :error self.finished_at = signal.event.occurred_at signal.fire(self, :"error.jobnet.job.tengine", { :target_jobnet_id => self.id, :target_jobnet_name_path => self.name_path, }) end
finish(signal)
click to toggle source
ハンドリングするドライバ: ジョブネット制御ドライバ このackは、子要素のTengine::Job::End#activateから呼ばれます
# File lib/tengine/job/runtime/jobnet.rb, line 150 def finish(signal) Tengine.logger.info("#{__FILE__}##{__LINE__} #{self.class}#finish") edge = signal.cache(end_vertex.prev_edges.first) edge.closed? ? self.fail(signal) : succeed(signal) end
fire_stop(signal)
click to toggle source
# File lib/tengine/job/runtime/jobnet.rb, line 185 def fire_stop(signal) return if self.phase_key == :initialized signal.fire(self, :"stop.jobnet.job.tengine", { :target_jobnet_id => self.id, :target_jobnet_name_path => self.name_path, :stop_reason => signal.event[:stop_reason] }) end
reset(signal, &block)
click to toggle source
# File lib/tengine/job/runtime/jobnet.rb, line 210 def reset(signal, &block) # children.each{|c| c.reset(signal) } self.phase_key = :initialized edges.each do |edge| signal.paths.push(edge) edge.phase_key = :active end children.each do |child| signal.call_later do signal.paths.push(child) signal.cache(child).reset(signal) end end reset_followings(signal) rescue Exception => e puts "#{self.name_path} [#{e.class}] #{e.message}" raise end
script_executable?()
click to toggle source
TODO このメソッドは削除するべき。これを使わないで動くようにする。
# File lib/tengine/job/runtime/jobnet.rb, line 100 def script_executable? false end
stop(signal)
click to toggle source
# File lib/tengine/job/runtime/jobnet.rb, line 194 def stop(signal) self.phase_key = :dying self.stopped_at = signal.event.occurred_at self.stop_reason = signal.event[:stop_reason] close(signal) children.each do |child| child.fire_stop(signal) if child.respond_to?(:fire_stop) end end
succeed(signal)
click to toggle source
ハンドリングするドライバ: ジョブネット制御ドライバ
# File lib/tengine/job/runtime/jobnet.rb, line 161 def succeed(signal) self.phase_key = :success self.finished_at = signal.event.occurred_at signal.fire(self, :"success.jobnet.job.tengine", { :target_jobnet_id => self.id, :target_jobnet_name_path => self.name_path, }) end
transmit(signal)
click to toggle source
ハンドリングするドライバ: ジョブネット制御ドライバ or ジョブ起動ドライバ
# File lib/tengine/job/runtime/jobnet.rb, line 107 def transmit(signal) self.phase_key = :ready signal.fire(self, :"start.jobnet.job.tengine", { :target_jobnet_id => self.id, :target_jobnet_name_path => self.name_path, }) end
update_children_stop_modified()
click to toggle source
# File lib/tengine/job/runtime/jobnet.rb, line 73 def update_children_stop_modified @stop_modified = false children.each do |child| if child.is_a?(Tengine::Job::Runtime::Stoppable) && child.respond_to?(:chained_box?) && child.chained_box? child.stop_reason = stop_reason child.stopped_at = stopped_at child.save! end end end