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
-~----------~----~----~----~------~----~------~--~---

Reply via email to