Class/Module Index [+]

Quicksearch

Ruote::Exp::DefineExpression

The main names for this expression are 'define' and 'process_definition'. It simply encloses a process definition (and gives it a name and revision if needed).

pdef = Ruote.process_definition :name => 'test', :revision => '0' do
  sequence do
    participant :ref => 'alice'
    participant :ref => 'bob'
  end
end

It's used for subprocess definitions as well.

pdef = Ruote.process_definition :name => 'test', :revision => '0' do
  sequence do
    buy_food
    cook_food
  end
  define 'buy_food' do
    participant :ref => 'alice'
  end
  define :name => 'cook_food' do
    participant :ref => 'bob'
  end
end

like a sequence

Ruote 2.0 treats the child expressions of a 'define' expression like a 'sequence' expression does. Thus, this

pdef = Ruote.process_definition :name => 'test' do
  sequence do
    buy_food
    cook_food
  end
end

is equivalent to

pdef = Ruote.process_definition :name => 'test' do
  buy_food
  cook_food
end

Public Class Methods

is_definition?(tree) click to toggle source

Returns true if the tree's root expression is a definition (define, process_definition, ...)

# File lib/ruote/exp/fe_define.rb, line 95
def self.is_definition? (tree)

  self.expression_names.include?(tree.first)
end
reorganize(tree) click to toggle source

Used by instances of this class and also the expression pool, when launching a new process instance.

# File lib/ruote/exp/fe_define.rb, line 103
def self.reorganize (tree)

  definitions, bodies = tree[2].partition { |b| is_definition?(b) }
  name = tree[1]['name'] || tree[1].keys.find { |k| tree[1][k] == nil }

  [ name, [ 'define', tree[1], definitions + bodies ] ]
end

Public Instance Methods

apply() click to toggle source
# File lib/ruote/exp/fe_define.rb, line 78
def apply

  t = self.class.reorganize(tree).last

  name = attribute(:name) || attribute_text

  set_variable(name, [ h.fei['expid'], t ]) if name
    #
    # fei.expid : keeping track of the expid/branch for the subprocess
    #             (so that graphical representations match)

  reply_to_parent(h.applied_workitem)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.