Intermediate message events can be placed on an activity boundary in BPMN. This use represents a form of exception handling for a task or sub-process, in response to an incoming message. This is a very different behavior than the intermediate message behavior we previously described, which show how to use intermediate message events in the course of the normal sequence flow of a business process.
We presented an introduction to BPMN diagrams over a month ago. Business analysts are often required to document as-is processes and to-be processes. These diagrams help identify the scope of a software project. The diagrams can also help uncover requirements that might be overlooked without diagramming the processes.
The BPMN specification is designed to establish a common language and convention for creating process diagrams. This common convention allows people who are familiar with modeling, but new to a project to avoid learning a new diagramming language on each project or for each client. We have a link to the official version of the spec in our introductory post (we will update that link if and when the spec changes).
On The Edge (Exception Flow)
When an intermediate event is placed on the boundary (or edge) of an activity, it is a representation of how a business process responds to an exception – a deviation from the normal sequence flow of the process. Some intermediate events (including intermediate message events) can be used on the boundary of an activity.
When an intermediate message event appears on the boundary of an activity, it indicates that an incoming message can interrupt the activity, and will divert the sequence flow from the “normal” flow to an “exception” flow. The intermediate message event can be placed on the boundary of a task or of a sub-process. If placed on the boundary of a subprocess, it can be attached either to the collapsed or the expanded subprocess boundary.
In the business process modeling example above a hungry dog (for example, a Labrador retriever like Scout, whenever concious) will faithfully pursue an agenda of eating anything he can. The dog will watch the owner leave the kitchen, put his paws on the counter, and if he can get away with it, procede to eat any available people food. Once he’s done eating, he will resume his normal activity.
If, however, Scout is interrupted with a loud “No” message, he will display a guilty* appearance for a brief period before resuming his normal activities.
When an intermediate message event is placed on the boundary of an activity, like the looping “Eat People Food” task, it represents a possible exception flow. If the associated message (“No”) is received, the activity is interrupted and the alternative (exception) flow is followed.
An intermediate message event can be used within the normal sequence flow of a business process. It can also be used to designate specific behavior for the interruption of an activity upon receipt of a message. This interruption is handled via exception flow which may or may not reconnect with other tasks in the sequence flow.
*He may just look at you funny or completely ignore you. YMMV.