On Thu, Feb 10, 2011 at 02:48:16PM -0800, Raphael Simon wrote: > > The title says it all: I'm writing a participant and it needs to retrieve > the workitem that was consumed prior to the expression being cancelled. What > I ended up having to do was to basically copy/paste the StorageParticipant > code to store and retrieve the workitem. This doesn't seem ideal though. I > could have my participant inherit from StorageParticipant and reuse the > consume and reply method there but that also does not seem ideal (makes my > participant brittle as it relies in the internal behavior of > StorageParticipant). I am wondering if there should be a more generic > mechanism for stashing/retrieving/deleting the workitem for a given > expression. Both the StorageParticipant and mine could rely on this. I'm > happy doing that refactoring and contributing it back but I wanted to first > check that I am not missing anything.
Hello Raphael, would that help ? https://gist.github.com/821882 ---8<--- require 'rubygems' require 'yajl' # or 'json' require 'ruote' engine = Ruote::Engine.new(Ruote::Worker.new(Ruote::HashStorage.new)) pdef = Ruote.process_definition do alpha end class Alpha include Ruote::LocalParticipant def consume(workitem) # do nothing, do not even reply to the engine end def cancel(fei, flavour) #p workitem(fei) puts "the workitem as it reached the participant expression :" p applied_workitem(fei) end end engine.register_participant :alpha, Alpha engine.noisy = true wfid = engine.launch(pdef) engine.wait_for(:alpha) engine.cancel(wfid) engine.wait_for(wfid) --->8--- this #applied_workitem(fei) method is hidden in the ReceiverMixin (which is included in Ruote::LocalParticipant). (Making a note to link to this discussion thread from the documentation). Cheers, -- John Mettraux - http://jmettraux.wordpress.com -- you received this message because you are subscribed to the "ruote users" group. to post : send email to [email protected] to unsubscribe : send email to [email protected] more options : http://groups.google.com/group/openwferu-users?hl=en
