Class | OpenWFE::DefinedExpression |
In: |
lib/openwfe/expressions/fe_equals.rb
|
Parent: | FlowExpression |
This expression class actually implements ‘defined’ and ‘undefined’.
They are some kind of ‘equals’ for validating the presence or not of a variable or a workitem field (attribute).
<if> <defined field="customer"> <!-- then --> <subprocess ref="call_customer" /> </if>
Since OpenWFEru 0.9.17, ‘defined’ and ‘undefined’ can be easily replaced by the "is [not ]set" suffix in the dollar notation :
<if test="${f:customer_name} is set"> <!-- then --> <subprocess ref="call_customer" /> </if>
# File lib/openwfe/expressions/fe_equals.rb, line 251 251: def apply (workitem) 252: 253: fname = lookup_field(workitem, 'value') || lookup_field(workitem) 254: 255: fmatch = lookup_string_attribute(:field_match, workitem) 256: 257: vname = lookup_var(workitem, 'value') || lookup_var(workitem) 258: 259: result = if fname 260: workitem.has_attribute?(fname) 261: elsif vname 262: lookup_variable(vname) != nil 263: elsif fmatch 264: field_match?(workitem, fmatch) 265: else 266: false # when in doubt, say 'no' (even when 'undefined' ?) 267: end 268: 269: result = ( ! result) \ 270: if result != nil and fei.expression_name == 'undefined' 271: 272: workitem.set_result result 273: 274: reply_to_parent workitem 275: end