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

Reply via email to