[jboss-user] [jBPM] - Modelling a Process Cancellation

Yang Yang Qian do-not-reply at jboss.com
Tue Nov 30 18:51:59 EST 2010


Yang Yang Qian [http://community.jboss.org/people/yangyang.qian] created the discussion

"Modelling a Process Cancellation"

To view the discussion, visit: http://community.jboss.org/message/573760#573760

--------------------------------------------------------------
Hi all,

I am a new user to jBPM and I've been trying to use it as a simple state-machine to model a process-cancellation proof-of-concept.

My aim is to define a workflow where two approvers need to sequentially approve a request that has been submitted. At any point in the process, someone, for example the person for whom the request was made, can cancel / withdraw the request. As soon as the request is cancelled, all tasks / executions / states must stop.

(I suppose I'm trying to implement the type of pattern that is decribed here  http://www.workflowpatterns.com/patterns/control/cancellation/wcp20.php http://www.workflowpatterns.com/patterns/control/cancellation/wcp20.php ... perhaps it's over-described  :p )

My current process definition tries to do this by introducing a Monitor state that lasts until there is an external event to trigger the "cancel" transition, at which time the process goes to the cancel end state and stops the other executions. But creating a Monitor state purely for cancellation seems rather awkward ...

I wasn't sure what the recommended practice for modelling a process cancellation would be in jBPM ... I've found some posts on using the API (the ExecutionService.deleteProcessInstance() function I suppose?) but I am not sure that doing so is correct since that will be a runtime solution? I suppose I can call it at runtime from the servlet associated with the cancellation button? Or is there a more elegant model-based solution?

Thanks all!



test_Cancellation_Model.jpdl.xml:
<?xml version="1.0" encoding="UTF-8"?>

<process name="test" xmlns="http://jbpm.org/4.4/jpdl">

   <start g="39,68,48,48" name="Start">
      <transition to="fork1"/>
   </start>
   
   <fork g="135,158,48,48" name="fork1">
      <transition to="Approval 1"/>
      <transition to="Monitor"/>
   </fork>
   
   <state g="115,272,92,52" name="Monitor">
      <transition g="-39,-18" name="cancel" to="End - Cancelled Request"/>
   </state>
   
   <state g="247,154,92,52" name="Approval 1">
      <on event="start"><event-listener class="OnApprovalListener1"/></on>
      <transition g="-30,-4" name="approve" to="Approval 2"/>
      <transition g="-34,-18" name="reject" to="End - Rejected Request"/>
   </state>

   <state g="396,60,92,52" name="Approval 2">
      <on event="start"><event-listener class="OnApprovalListener2"/></on>
      <transition g="-25,-9" name="approve" to="End - Approved Request"/>
      <transition g="-4,-8" name="reject" to="End - Rejected Request"/>
   </state>
   
   <end g="638,77,48,48" name="End - Approved Request" state="Completed"/>
   
   <end g="635,154,48,48" name="End - Rejected Request" state="Rejected"/>
   
   <end-cancel g="641,277,48,48" name="End - Cancelled Request"/>
   
</process>
--------------------------------------------------------------

Reply to this message by going to Community
[http://community.jboss.org/message/573760#573760]

Start a new discussion in jBPM at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20101130/7875678d/attachment.html 


More information about the jboss-user mailing list