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