On Fri, Apr 10, 2009 at 12:43 AM, harshal <[email protected]> wrote:
>
> I went through earlier thread as well.
> Is it possible to refer a subprocess with just 'internal' Ruby
> definition instead of a URL (either local storage or remote) ?
>
> An intuitive analogous example to cite would be 'rake' tasks. In
> 'rake' DSL, the task dependencies are mapped such that they are
> resolved 'internally'. An example of such process reference is at the
> end of the post.
Hi Harshal,
thanks for reformulating the question, I understand better now.
Here is a way to do it :
p1 = OpenWFE.process_definition :name => 'p1' do
sequence do
participant 'a'
participant 'b'
end
end
p2 = OpenWFE.process_definition :name => 'p2' do
sequence do
_eval :def => p1
participant 'c'
end
end
You have to set the :dynamic_eval_allowed option of the engine to true
for this to work :
engine.application_context[:dynamic_eval_allowed] = true
Since this technique is using "_eval" (not ruby's own eval), it
happens at runtime (ie the substitution occurs when the process flow
reaches the _eval).
If you would like the insertion to occur at definition time, you could
work directly with the internal representation of process definition
and do something like :
p1 = [ 'process-definition', { 'name' => 'p1' }, [
[ 'sequence', {}, [
[ 'participant', {}, [ 'a' ] ],
[ 'participant', {}, [ 'b' ] ]
]
] ]
p2 = [ 'process-definition', { 'name' => 'p2' }, [
[ 'sequence', {}, [
p1,
[ 'participant', {}, [ 'c' ] ]
]
] ]
It's straightforward, but a bit tedious. No need to unlock 'dynamic
evaluation' in the engine. I could probably add an "insert"
pseudo-expression that does this work inside of ruby process
definitions. Though I prefer to push people towards the classical
"subprocess :ref => 'x'" technique. Let me know what you think, it's
an interesting idea anyway.
Note that these techniques are not "fancy GUI BPMN editor"-friendly,
they bind process definitions to the Ruby context.
Best regards, thanks again for the reformulation,
--
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
-~----------~----~----~----~------~----~------~--~---