Sha256: 9bbd74c53f6f0774e76f734efb865f877079ca95308d66339d3263ffd3701ac7
Contents?: true
Size: 1.69 KB
Versions: 3
Compression:
Stored size: 1.69 KB
Contents
# -*- coding: utf-8 -*- require 'tengine/job/runtime' # Edgeとともにジョブネットを構成するグラフの「頂点」を表すモデルです。 # このクラスだけでツリー構造を作ることができますが、ほぼ抽象クラスであり実際には # 派生クラスのオブジェクトによってツリー構造が作られます。 class Tengine::Job::Runtime::Vertex include Mongoid::Document include Mongoid::Timestamps include Tengine::Job::Structure::NamePath include Tengine::Job::Structure::Tree include Tengine::Job::Structure::Visitor::Accepter include Tengine::Job::Runtime::Signal::Transmittable field :child_index, type: Integer # self.cyclic = true with_options(class_name: self.name, foreign_key: "parent_id") do |c| c.belongs_to :parent , inverse_of: :children c.has_many :children, inverse_of: :parent , validate: false, order: {child_index: 1} end def template?; false; end def runtime?; !template?; end def previous_edges return nil unless parent parent.edges.select{|edge| edge.destination_id == self.id} end alias_method :prev_edges, :previous_edges def next_edges return nil unless parent parent.edges.select{|edge| edge.origin_id == self.id} end def ancestors_until_expansion if parent = self.parent parent.ancestors_until_expansion + [parent] else [] end end # Tengine::Job::Runtime::Vertexは構成されるツリーのルートを保存しても、embedでないので # 各vertexをsaveしないと保存されないため、明示的に保存しています。 def save_descendants! accept_visitor(Tengine::Job::Structure::Visitor::All.new{|v| v.save! }) end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
tengine_job-1.2.2 | lib/tengine/job/runtime/vertex.rb |
tengine_job-1.2.1 | lib/tengine/job/runtime/vertex.rb |
tengine_job-1.2.0 | lib/tengine/job/runtime/vertex.rb |