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