Class | OpenWFE::DefineExpression |
In: |
lib/openwfe/expressions/fe_define.rb
|
Parent: | SequenceExpression |
The <process-definition> expression.
body_fei | [RW] | A pointer to the body expression of this process definition. |
Called at the end of the ‘evaluation’, the ‘apply’ operation on the body of the definition is done here.
# File lib/openwfe/expressions/fe_define.rb, line 75 75: def reply_to_parent (workitem) 76: 77: #return if @eval_only 78: 79: #puts "/// \n bf #{@body_fei} \n wi.fei #{workitem.fei}" 80: 81: return super(workitem) \ 82: if @body_fei == nil or @body_fei == workitem.fei 83: #unless @body_fei 84: 85: #_fei = @body_fei 86: #@body_fei = nil 87: #store_itself 88: #get_expression_pool.apply _fei, workitem 89: 90: get_expression_pool.apply @body_fei, workitem 91: end
Overrides the set_variable in FlowExpression to make sure to intercept requests for binding subprocesses at the engine level and to store a copy of the raw expression, not only the flow expression id.
# File lib/openwfe/expressions/fe_define.rb, line 99 99: def set_variable (name, fei) 100: 101: if name[0, 2] == "//" 102: 103: raw_exp = get_expression_pool.fetch_expression(fei).dup 104: raw_exp.parent_id = nil 105: raw_exp.fei = raw_exp.fei.dup 106: fei = raw_exp.fei 107: fei.wfid = get_wfid_generator.generate 108: 109: raw_exp.store_itself 110: end 111: 112: super name, fei 113: end
Determines the flowExpressionId of the next child to apply.
# File lib/openwfe/expressions/fe_define.rb, line 120 120: def next_child (current_fei) 121: 122: next_fei = super 123: 124: return nil unless next_fei 125: 126: rawchild = get_expression_pool.fetch_expression next_fei 127: 128: return next_child(next_fei) unless rawchild 129: 130: unless rawchild.is_definition? 131: 132: unless @body_fei 133: @body_fei = next_fei 134: store_itself 135: end 136: return next_child(next_fei) 137: end 138: 139: exp_class = get_expression_map.get_class rawchild 140: 141: if exp_class == DefineExpression 142: set_variable rawchild.definition_name, next_fei 143: return next_child(next_fei) 144: end 145: 146: next_fei 147: # 148: # expression is a 'set', a 'filter-definition' or 149: # something like that, let it get applied 150: end