class Tengine::Job::Runtime::NamedVertex

処理を意味するVertex。実際に実行を行うTengine::Job::Scriptやジョブネットである Tengine::Job::Runtime::Jobnetの継承元である。

Public Instance Methods

name_as_resource() click to toggle source

リソース識別子を返します

# File lib/tengine/job/runtime/named_vertex.rb, line 17
def name_as_resource
  @name_as_resource ||= "job:#{Tengine::Event.host_name}/#{Process.pid.to_s}/#{root.id.to_s}/#{id.to_s}"
end
reset_followings(signal) click to toggle source
# File lib/tengine/job/runtime/named_vertex.rb, line 63
def reset_followings(signal)
  return if parent.nil?
  return unless signal.execution.in_scope?(self)
  edge_owner = signal.cache(parent)
  return if signal.paths.include?(edge_owner)
  edges, vertecs = [], []
  visitor = Tengine::Job::Structure::Visitor::TraceEdge.new do |obj|
    dest = obj.is_a?(Tengine::Job::Runtime::Edge) ? edges : vertecs
    dest << obj
  end
  (next_edges || []).each{|edge| edge.accept_visitor(visitor)}
  signal.paths << edge_owner

  signal.call_later do
    signal.cache(edge_owner).update_with_lock do
      edges.each do |edge|
        next unless signal.execution.in_scope?(edge.destination)
        signal.cache(edge).phase_key = :active
      end
    end
    vertecs.each do |vertex|
      next unless signal.execution.in_scope?(vertex)
      if vertex.is_a?(Tengine::Job::Runtime::NamedVertex) || vertex.is_a?(Tengine::Job::Runtime::End)
        signal.call_later do
          signal.cache(vertex).reset(signal)
        end
      end
    end
  end
end
root_or_expansion() click to toggle source
# File lib/tengine/job/runtime/named_vertex.rb, line 29
def root_or_expansion
  p = parent
  raise "something wrong!" if p.nil? && !self.is_a?(Tengine::Job::Runtime::Jobnet)
  p.nil? ? self : p.was_expansion ? p : p.root_or_expansion
end
short_inspect() click to toggle source
# File lib/tengine/job/runtime/named_vertex.rb, line 21
def short_inspect
  "#<%%%-30s id: %s name: %s>" % [self.class.name, self.id.to_s, name]
end
template_vertex() click to toggle source
# File lib/tengine/job/runtime/named_vertex.rb, line 56
def template_vertex
  r = root_or_expansion
  # return nil unless parent # templateから生成される途中だとparentがnilの場合があります
  t = r.template
  t.nil? ? nil : t.vertex_by_absolute_name_path(name_path_until_expansion)
end
update_with_lock(*args) { || ... } click to toggle source
Calls superclass method
# File lib/tengine/job/runtime/named_vertex.rb, line 35
def update_with_lock(*args)
  if @in_update_with_lock
    Tengine::Job.test_harness_hook("[#{self.class.name}] #{name_path} before yield in nested update_with_lock")
    yield if block_given?
    Tengine::Job.test_harness_hook("[#{self.class.name}] #{name_path} after yield in nested update_with_lock")
    return
  end
  @in_update_with_lock = true
  begin
    Tengine::Job.test_harness_hook("[#{self.class.name}] #{name_path} before update_with_lock")
    super(*args) do
      Tengine::Job.test_harness_hook("[#{self.class.name}] #{name_path} before yield in update_with_lock")
      yield if block_given?
      Tengine::Job.test_harness_hook("[#{self.class.name}] #{name_path} after yield in update_with_lock")
    end
    Tengine::Job.test_harness_hook("[#{self.class.name}] #{name_path} after update_with_lock")
  ensure
    @in_update_with_lock = false
  end
end