We also use re-routing in our workflows:

* Firstly we use it when we want to split/merge tokens.  The idea here is that 
we can gradually move in a process instance from a situation where we have:
  - a single token with a reference to a collection of domain objects
  - as much tokens as we have domain objects.
For example a single report can be made about several domain cases, or the user 
can opt to split it and make different reports for domain cases which belong 
together.  The user can also opt to merge other domain cases into the current 
token.  Splitting actually creates new subtokens, merging adds domain cases to 
the current token and can remove other process instances which were created.  
When a user decides to merge a re-route can happen to a certain node in the 
workflow (is configurable in custom addition in jbpm designer).  Re-routing is 
done by calling node.leave()

* Secondly we allow the user to reopen task instances under certain 
circumstances.  For example when having a process with 2 task nodes, making of 
a report followed by approving the report, and the user has complete the making 
of a report task but realized he forgot something, he can reopen this task.  In 
that case the approving of the report task will be removed and the token will 
be re-routed.  This is actually your case.

* Thirdly when a user did some changes in a process instance with a start task 
but wants to undo those changes (and he triggered the creation of the process 
instance), this process instance and task will be removed.  This is not 
re-routing but simply removing task and processes.

For removing processes and task instances we just make sure they don't appear 
in the client task lists any more.
- We created methods to end processinstances, subprocessinstances, the tokens 
and taskinstances they contain.  Clients won 't notice these any more but they 
still remain in the database.
- The circumstances in which a user can undo/reopen etc... are really specific. 
 For example your implementation will not work if you have subprocesses or if 
you fork and have subtokens.

Hope this helps a bit (and is a bit understandeable), 

feel free the comment

Olivier.

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4114912#4114912

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4114912
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to