module Tengine::Job::Structure::JobnetBuilder

Public Instance Methods

build_edges(auto_sequence, boot_job_names, redirections) click to toggle source
# File lib/tengine/job/structure/jobnet_builder.rb, line 47
def build_edges(auto_sequence, boot_job_names, redirections)
  if self.children.length == 1 # 最初に追加したStartだけなら。
    self.children.delete_all
    return
  end
  if auto_sequence || boot_job_names.empty?
    prepare_end
    build_sequencial_edges
  else
    edge_builder = Tengine::Job::Structure::EdgeBuilder.new(self, boot_job_names, redirections,
      fork_class: self.class.fork_class,
      join_class: self.class.join_class
    )
    edge_builder.process
  end
end
build_sequencial_edges() { |edge| ... } click to toggle source
# File lib/tengine/job/structure/jobnet_builder.rb, line 64
def build_sequencial_edges
  self.edges.clear
  current = nil
  self.children.each do |child|
    next if child.is_a?(self.class.jobnet_class) && !!child.jobnet_type_entry[:alternative]
    if current
      edge = self.new_edge(current, child)
      yield(edge) if block_given?
    end
    current = child
  end
end
child_by_name(str) click to toggle source
# File lib/tengine/job/structure/jobnet_builder.rb, line 35
def child_by_name(str)
  case str
  when '..'      then parent
  when '.'       then self
  when 'start'   then start_vertex
  when 'end'     then end_vertex
  when 'finally' then finally_vertex
  else
    self.children.detect{|c| c.respond_to?(:name) && (c.name == str)}
  end
end
end_vertex() click to toggle source
# File lib/tengine/job/structure/jobnet_builder.rb, line 9
def end_vertex
  self.children.detect{|child| child.is_a?(self.class.end_vertex_class)}
end
finally_jobnet()
Alias for: finally_vertex
finally_vertex() click to toggle source
# File lib/tengine/job/structure/jobnet_builder.rb, line 13
def finally_vertex
  self.children.detect{|child| child.is_a?(self.class.jobnet_class) && (child.jobnet_type_key == :finally)}
end
Also aliased as: finally_jobnet
new_edge(origin, destination) click to toggle source
# File lib/tengine/job/structure/jobnet_builder.rb, line 77
def new_edge(origin, destination)
  origin_id = origin.is_a?(self.class.vertex_class) ? origin.id : origin
  destination_id = destination.is_a?(self.class.vertex_class) ? destination.id : destination
  edges.new(:origin_id => origin_id, :destination_id => destination_id)
end
prepare_end() { |_end| ... } click to toggle source
# File lib/tengine/job/structure/jobnet_builder.rb, line 23
def prepare_end
  if self.children.last.is_a?(self.class.end_vertex_class)
    _end = self.children.last
    yield(_end) if block_given?
  else
    _end = self.class.end_vertex_class.new
    yield(_end) if block_given?
    self.children << _end
  end
  _end
end
start_vertex() click to toggle source
# File lib/tengine/job/structure/jobnet_builder.rb, line 5
def start_vertex
  self.children.detect{|child| child.is_a?(self.class.start_vertex_class)}
end
with_start() click to toggle source
# File lib/tengine/job/structure/jobnet_builder.rb, line 18
def with_start
  self.children << self.class.start_vertex_class.new
  self
end