slideshow 1 slideshow 2 slideshow 3 slideshow 4

Gateway Mismatch

The flows from a splitting Gateway should always be joined by a matching Gateway of the same type.  Failure to match gateways can lead to unexpected behaviors, including deadlock where the process cannot complete.
This example will behave the same as if it were matched with a Parallel Gateway, but is less clear, and in most implementations more expensive to execute at runtime.


Service Task in User Lane

Most processes should have one or more System Lanes where all automated task are placed.  

Mixing Message Events and Tasks

The Send/Receive Tasks and intermediate message events have approximately the same behavior, both send or receive a message. 


Processes with loops are more difficult to understand.  While loops are often necessary to accurately model business processes, the process models are often clearer if the loops are encapsulated in a sub-process.

Flows Out of Parallel Blocks

Parallel blocks in a process require careful design.  The joining Parallel Gateway must receive incoming flows on all paths.  Branches out of a parallel block can prevent the join from being satisfied.  In the first example, there is an exclusive split in the parallel block.  If that branch is taken, the process will deadlock.

Flows Into Parallel Blocks

Flows into a parallel block can create deadlocks, since they will not be matched by flows in the other branches.

Multiple Start Events

If a process has multiple Start Events, whichever is triggered first will start the process.  If one of the others is triggered subsequently, it will start a new process instance.  

No End Event

If an Activity has no outgoing Sequence Flows it becomes the end of a path in the process.  If other paths are active, they will continue.

No Start Event

The BPMN standard allows processes with no Start Event.  In this case, all Activities with no incoming Sequence Flows will be activated.

Parallel Multiple Event

This form of multiple Event has all of the same problems as the others, hiding the number and types of Events.  Unlike the basic multiple catching Event, it requires all of the Events to be triggered before flow continues.


Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer