Thanks a lot.

I didn't get the participant could be defined at runtime, this help me
a lot to understand more about Ruote.


On Jun 25, 10:16 am, John Mettraux <[email protected]> wrote:
> On Thu, Jun 25, 2009 at 10:50 AM, Li Xiao<[email protected]> wrote:
>
> > I have problem to define a workflow with the following scenario:
>
> >   * there is big organization, lets say: have 10 groups of users: a,
> > b, c, d, e, f, g, h, i, j
> >   *  A document would be go through 3 steps
> >   * the first step is started from group 'a'
> >   * the next step maybe need some of other groups/users to review the
> > document concurrently, user processes the first step will decide
> > what's groups need to review the document.
> >   * If all reviewers in second step think the document is ok, then
> > the document will be pass to next step, otherwise, the document will
> > be back to step 1.
> >   * the third step do nothing special, and finish the process.
>
> > For my understanding of Ruote currently, there is no way to define
> > this kind workflow, (I think most of opensource workflow engine
> > couldn't do it). I would be very happy someone point out I am wrong.
> > Any ideas?
>
> Hello Sun Hao,
>
> what about :
>
> ---8<---
> pdef = OpenWFE.process_definition :name => 'review' do
>   sequence do
>     cursor do
>       participant '${f:launcher_group}', :activity => 'step 1', :if =>
> '${f:not_ok}'
>       participant '${f:review_group}', :activity => 'step 2'
>       rewind :if => '${f:not_ok}'
>     end
>     participant 'other'
>   end
> end
> --->8---
>
> ?
>
> The value of the field 'launcher_group' is set at launch time.
> The value of the field 'review_group' is set at launch time as well.
> The value of the field 'not_ok' is set by the review_group members.
>
> This is leveraging the cursor expression :
>
>  http://openwferu.rubyforge.org/expressions.html#exp_cursor
>
> The concurrent review requirement could be written as :
>
> ---8<---
> pdef = OpenWFE.process_definition :name => 'review' do
>   sequence do
>     cursor do
>       participant '${f:launcher_group}', :activity => 'step 1', :if =>
> '${f:not_ok}'
>       concurrent-iterator :on_value =>
> '${f:list_of_review_group_members}', :to_field => 'reviewer' do
>         participant '${f:reviewer}', :activity => 'step 2'
>       end
>       rewind :if => '${f:not_ok}'
>     end
>     participant 'other'
>   end
> end
> --->8---
>
> The 'list_of_review_group_members' is set at launch time, it could
> look like "alice, bob, charly" it's a comma separated list of
> user/group (participant) names.
>
>  http://openwferu.rubyforge.org/expressions.html#exp_concurrent-iterator
>
> > Further question: is this kind requirement should be considered as
> > part of workflow engine?
>
> This kind of requirement is essential.
>
> Ruote supports directly a lot of the control-flow patterns at :
>
>  http://workflowpatterns.com/patterns/control/index.php
>
> Read more about it at :
>
>  http://openwferu.rubyforge.org/patterns.html
>
> I hope this will help, best regards,
>
> --
> 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