Class | OpenWFE::BlockParticipant |
In: |
lib/openwfe/participants/participants.rb
|
Parent: | Object |
This participant is used by the register_participant() method of Engine class.
engine.register_participant("the_boss") do |workitem| puts "the boss received a workitem" end
After the block executes, the BlockParticipant immediately replies to the engine.
You can pass a block with two arguments : flow_expression and workitem to BlockParticipant, it will automatically adapt.
engine.register_participant("the_boss") do |fexp, wi| puts "the boss received a workitem from exp #{fexp.fei.to_s}" end
Having the FlowExpression instance at hand allows for advanced tricks, beware…
It‘s also OK to register a block participant without params :
engine.register_participant :alice do puts "Alice received a workitem" end
# File lib/openwfe/participants/participants.rb, line 159 159: def initialize (block0=nil, &block1) 160: @block = if block1 161: block1 162: else 163: block0 164: end 165: raise "Missing a block parameter" \ 166: unless @block 167: end
# File lib/openwfe/participants/participants.rb, line 169 169: def consume (workitem) 170: 171: result = call_block @block, workitem 172: 173: workitem.set_result(result) \ 174: if result and result != workitem 175: 176: reply_to_engine(workitem) \ 177: if workitem.kind_of? InFlowWorkItem 178: # else it's a cancel ite 179: end