A selling point for BPMN is the nice way to depict events. This is obviously so popular that the OMG keeps on expanding the standard at that point. This post gives you an overview about the different event flavors in BPMN 1.x and 2.0.

Events in BPMN 1.0

BPMN started with three different types of events (start | intermediate | end). The type also indicated the way the event could be used. Start events spawn a process instance. When a start event is used with a trigger (Message|Timer|Rule|…) the occurrence of the trigger spawns the process. Similarly, intermediate events (in BPMN1.0) wait for a trigger; the control flow pauses until the expected trigger occurs. End events mark the completion of a process flow. If end events have triggers they send information upon completion of the process.

Moreover, intermediate events can be attached to activities in BPMN. In short, the activities are aborted when the event trigger occurs and the flow is rerouted to the outgoing edge of the message event. A very useful feature to express time out scenarios or to catch errors thrown inside the activity.

Sample with attached events to a subprocess using BPMN 1.0

Events in BPMN 1.1
People often misused (BPMN1.0) intermediate message events not only to receive but also to send messages. There was the assumption that the symbol for message exchange should be a circle, no matter whether the message is sent or received.
BPMN1.1 embraced this idea for all event triggers and used the chance to make a clear distinction in the notation with what I call here event flavors. On the one side, there are catching events which consume a trigger. These event triggers are drawn with black stokes and a white filling. On the other side, there are throwing events which emit a trigger. They are drawn with white strokes and a black filling. The systematic behind it made is indeed appealing. However, I struggled at first to sketch an inverted message symbol on the whiteboard and it still looks odd.

Events in BPMN 2.0
And now BPMN2.0 is evoling and the SAP/IBM proposal indicates a new event flavor (non-interrupting event) to be added. In short, it is a catching event to be used attached to activities, BUT this one does not abort the activity once the event trigger occurs.

Event overview snippet taken from the BPMN 2.0 draft

Sounds familiar to you? You may have heard about BPEL Event Handler. Such an event handler is attached to a BPEL Scope (set of activities). While the scope is active (activities inside are running) an event (message or timer) might spawn an event handler instance. This is like an independent stream in the process flow. The event handler instance runs in parallel to the scope. While the scope is still active many parallel event handler instances might be spawned by further incoming triggers.

Why would you do that? Well, speaking in terms of the materials sample above. It is probably not a good idea to abort the activities such as ‘assemble product’ when you recognize you’re running out of time. Instead you might spawn activities in parallel to find out how you can speed up things.

This was already on people’s wishlists for BPMN but more importantly, the non-interrupting event can be used to represent BPEL Event Handlers. However, it is more than the need to represent BPEL code with BPMN. Scenarios exist that motivate configurable completion behavior for activities spawned by non-interrupting events. Existing descriptions in the draft (section 10.1.4.) imply that this will be addressed by the non-interrupting event handler. Unfortunately, the draft is not mature enough to foresee application scenarios for this new event flavor. It is a powerful constructs but my impression is that it is not fully thought through in the current draft.

Open Issues
Since the draft was published in order to get input from the community here are the things that make me scratch my head:

  • Why do we need non-interrupting start events?
    I currently cannot think of any use case for it.
  • Why are non-aborting events introduced as a flavor (similar to catching/throwing)?
    To me this is a special type of catching event.
  • Is there a better way to depict non-interrupting events using black and white coloring?
    Grey shades are very hard to depict on a whiteboard.

Looking forward to your opinion in the comments.