Class | OpenWFE::TimeoutExpression |
In: |
lib/openwfe/expressions/fe_timeout.rb
|
Parent: | FlowExpression |
The timeout concept begun with the participant expression. When a participant doesn‘t reply for a certain amount of time, a specified timeout can get triggered. Sometimes something more complex than a single participant needs a timeout setting, this expression sets a timeout for the expression[s] nested within it.
<timeout after="2d"> <sequence> (...) </sequence> </timeout>
applied_workitem | [RW] |
# File lib/openwfe/expressions/fe_timeout.rb, line 72 72: def apply (workitem) 73: 74: if @children.size < 1 75: reply_to_parent workitem 76: return 77: end 78: 79: @applied_workitem = workitem.dup 80: 81: schedule_timeout(:after) 82: 83: get_expression_pool.apply @children[0], workitem 84: end
Cancel order : cancels the child expression (if applied) and unschedule the timeout (if any).
# File lib/openwfe/expressions/fe_timeout.rb, line 101 101: def cancel 102: 103: get_expression_pool.cancel(@children[0]) if @applied_workitem 104: 105: unschedule_timeout() 106: 107: super 108: end
The child expression replies, make sure to unschedule the timeout before replying (to our own parent expression).
# File lib/openwfe/expressions/fe_timeout.rb, line 90 90: def reply (workitem) 91: 92: unschedule_timeout() 93: 94: super 95: end
The timeout trigger, cancels the nested process segment (the nested expression).
# File lib/openwfe/expressions/fe_timeout.rb, line 114 114: def trigger (scheduler) 115: 116: ldebug { "trigger() timeout requested for #{@fei.to_debug_s}" } 117: 118: set_timedout_flag(@applied_workitem) 119: 120: cancel() 121: 122: reply_to_parent @applied_workitem 123: end