Class OpenWFE::EvalExpression
In: lib/openwfe/expressions/fe_misc.rb
Parent: FlowExpression

An advanced expression : it takes the value in a field or variable (or the nested value) and evaluates it as a process definition.

    sequence
        set :field => "code", :value => "<print>hello 0</print>"
        _eval :field_def => "code"
        set :field => "code", :value => "_print 'hello 1'"
        _eval :field_def => "code"
    end

will print "hello0\nhello1".

This expression can be useful for evaluating process definition snippets coming from participants directly.

It‘s also dangerous. This ‘eval’ expression will raise an error if the parameter :dynamic_eval_allowed in the engine‘s application context is not set to true.

Methods

Included Modules

ValueMixin

Public Instance methods

[Source]

     # File lib/openwfe/expressions/fe_misc.rb, line 193
193:         def reply (workitem)
194: 
195:             raise "dynamic evaluation of process definitions is not allowed" \
196:                 if @application_context[:dynamic_eval_allowed] != true
197: 
198:             df = lookup_vf_attribute(workitem, 'def') || workitem.get_result
199: 
200:             return reply_to_parent(workitem) unless df
201:                 #
202:                 # currently, 'nothing to eval' means, 'just go on'
203: 
204:             ldebug { "apply() def is >#{df}<" }
205: 
206:             raw_expression = build_raw_expression df
207: 
208:             #puts
209:             #puts "======================================"
210:             #puts raw_expression.to_s
211:             #puts raw_expression.raw_representation
212:             #puts "======================================"
213:             #puts
214: 
215:             raw_expression.apply workitem
216:         end

Protected Instance methods

[Source]

     # File lib/openwfe/expressions/fe_misc.rb, line 220
220:             def build_raw_expression (df)
221: 
222:                 procdf = get_expression_pool.determine_rep df
223: 
224:                 RawExpression.new_raw(
225:                     fei, parent_id, environment_id, application_context, procdf)
226:             end

[Validate]