Bah of course, I see it in the participant dispatch methods 10 seconds after sending my email :) So yes that works perfectly, thank you!
-- Raphael. On Thu, Feb 10, 2011 at 10:34 PM, Raphael Simon <[email protected]>wrote: > John, this looks great... I'm wondering if I could trouble you with > explaining a little bit where the flow expression and its workitem get > persisted? I don't see the dispatch pool persisting it before dispatching so > it must be prior to the worker getting the dispatch message but I couldn't > put my finger on exactly where that happens. > > Thank you! > > -- > Raphael. > > > On Thu, Feb 10, 2011 at 7:42 PM, John Mettraux <[email protected]>wrote: > >> >> 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 > > > -- 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
