On Thu, Jul 26, 2012 at 04:05:27PM +0530, Rashi Gupta wrote:
>
> I am using Ruote 2.2.0
>
> class ParticipantTest
> include Ruote::LocalParticipant
>
> def initialize (options)
> @options = options
> end
>
> def consume (workitem)
>
> # some long running process
>
> @handle = long_running_process(r)
>
> reply_to_engine(workitem)
> end
>
> def cancel(fei, flavour)
>
> # cancel long running process using @handle ???
> end
> end
Hello Rashi,
I'd say you have to flip the issue. Since you seem to be in control of
"long_running_process"...
---8<---
#
# Hypothetical API for Rashi's "long running processes"
#
module LongProcessRunner
def self.run(id, process_name)
# ...
end
def self.cancel(id)
# ...
end
end
class ParticipantTest
include Ruote::LocalParticipant
def initialize (options)
@options = options
end
def consume (workitem)
LongProcessRunner.run(
workitem.fei.to_storage_id,
workitem.fields['long_process_name'])
reply_to_engine(workitem)
end
def cancel(fei, flavour)
LongProcessRunner.cancel(fei.to_strorage_id)
end
end
--->8---
Here, you force the id on the LongProcessRunner and you thus use the
workitem's fei (FlowExpressionId, the unique identifier for the workitem) as
the id for the long running process.
If you cannot do that, then use some database model:
---8<---
class ParticipantTest
include Ruote::LocalParticipant
def initialize (options)
@options = options
end
def consume (workitem)
handle = long_running_process(r)
ProcessHandle.create(workitem.fei, handle)
reply_to_engine(workitem)
end
def cancel(fei, flavour)
handle = ProcessHandle.find(fei)
cancel_long_running_process(handle)
end
end
--->8---
If none of those options are possible for you, please tell me and I'll show
you a third technique.
I hope it will help. Best regards,
--
John Mettraux - http://lambda.io/jmettraux
--
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