How to best present a 'process cancellation' event within a BPMN 2.0 Process

383 views
Skip to first unread message

Mitch

unread,
Jan 11, 2011, 10:26:17 PM1/11/11
to BPMN Forum
Hi All,

I need to understand the best way to model a process cancellation in
BPMN 2.0. I have a process that has 3 major subprocess. At any stage
in any of these processes, I need to somehow model that a cancellation
message could be received. The result then would then trigger a fourth
'termination process' and then end all processes.

What's the best method to represent the potential for a cancellation
notice to be received at any stage in a process? Intermediate Event?
Notification Broadcast? A overarching loop that checks for a specific
cancellation data attribute?

Bit stuck on this one...

Thanks, mitch

laura

unread,
Jan 18, 2011, 8:38:34 PM1/18/11
to BPMN Forum
It would depend on whether or not you want to completely interupt the
3 major subprocesses or not. Based on how you described, I would
suggest encompassing the 3 major subprocesses into an expanded
subprocess. Attach an intermediate message event to the boundary of
this process, indicating that when the message is received, these 3
processes are interupted. Draw sequence flow from the intermediate
event to your cancellation process. Depending on how the 3 major
subprocesses are related, you can either connect them via sequence
flow, or just keep them as separate activities / high level processes
without sequence flow, and use the ad-hoc marker for the process
boundary that encompasses them all.

Neal McWhorter

unread,
Jan 19, 2011, 11:59:26 PM1/19/11
to bpmn...@googlegroups.com
Great answer Laura! I did want to add a couple of thoughts to expand on some of your suggestions..

From a structuring standpoint there are multiple choices depending on how closely you want to couple your three core processes. Laura pointed out that all three processes could be contained in an expanded subprocess and a single boundary event could be used to handle your exception flow. This does assume that it is reasonable to put all these processes within a single higher-level process. If this isn't the case then it is possible to simply create multiple independent processes and have each of them respond to an exception event. The three exception flows would then need to synchronize to handle triggering the process that would continue after the exception. So each process could handle the exception event and generate a message indicating that they have processed the exception. Then all three messages would be required to start the fourth flow that begins the process that continues on from there. Again, all of this depends upon how coupled the three core processes need to be. But this does also lead to the question of which kind of event to use.

You actually have quite a bit of flexibility on deciding what kind of intermediate event to use as your boundary event to handle the exception processing. You don't want to use Cancel or Compensation events because they have a specific meaning related to Transactions. But Signal, Error and Escalation events are all virtually identical under the skin so they really exist to help distinguish business situations (and messages are the right choice if you are synchronizing across multiple pools within a conversation). If you model the processes as three separate exception handling flows then there is a bit more to consider. There is an implication in the standard (but only an implication I'm afraid) that Signal events can be used in situations where a single event can be consumed by multiple handlers. What this means is that if you want to have a single source of the interrupting event and multiple places that handle the event (i.e. all three of your processes)  that you need to throw three separate events unless you use a signal event. In that case all three of the boundary events would process the same signal.

Sorry to make it appear to complicated but there really are quite a few considerations to evaluate and lots of ways to handle the same problem in BPMN!

Neal McWhorter
Principal | Enterprise Agility


--
You received this message because you are subscribed to the Google Groups "BPMN Forum" group.
To post to this group, send email to BPMN...@googlegroups.com.
To unsubscribe from this group, send email to BPMNforum+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/BPMNforum?hl=en.


Mitch

unread,
Jan 20, 2011, 6:57:11 PM1/20/11
to BPMN Forum
Thank you all very much for your input !

kind regards, mitch
Reply all
Reply to author
Forward
0 new messages