In Business Process Modeling Notation (BPMN) 2.0, there are special types of events called boundary events. These types of events are triggered from outside the process or when something does not go according to the plan of the process while performing a human or automatic activity. When an exception is thrown by an activity, the process flow stops the normal process execution and follows an alternative path, as defined by the outgoing sequence flow of that particular boundary event. The boundary event and an end event are both represented with a thick-lined circle.
With a boundary event, you can define how to deal (that is, catch the exception) with exceptional situations when they arise at runtime in the process flow. Boundary events are a must have when using automated activities in your business processes. They allow you to perform exception handling after an application or technical exception has occurred. You can configure a boundary event to automatically handle exceptions thrown by automatic activities. You can do this by binding boundary events to fault message types defined in your web services definition.
Typical examples of application exceptions are functional errors and wrong input or output inside business rules. Technical exceptions, on other hand, are timeouts, authentication issues, network-related issues, and so on. For those of you with a software programming background in Java or C#, you can compare it with a TRY/CATCH exception block.
A boundary event has a single outbound sequence flow and is connected to the boundary of an activity. The outbound sequence flow of a boundary event indicates how the process should continue or recover after an exception has been detected.

In the figure, Boundary Event Types, an escalation event is triggered if the employee does not complete his task by the set deadline. The outgoing sequence flow of this boundary event goes into a notification task, which sends a reminder email to the employee. In a real-life scenario, we recommend that you add a condition (for example, a max of three reminders, and then exit the loop) that prevents an endless loop situation like the one in this example.
You should take note of the following event characteristics:
Events are the things that you expect to happen at process runtime.
They exist in four main groups: start, end, intermediate, and boundary.
Start, end, and intermediate message events are linked to service interfaces at design time.
There is no guarantee that an intermediate event may or may not occur in the process.
Boundary events are used to handle exceptions thrown by process activities during runtime.
When looking at boundary events from a specific human task context, they represent situations in which the execution of a human task can fail or terminate in error. The exceptions are generally generated as a result of one of the constraints set by the task’s attribute settings (such as start deadline, activation time and so on) not being met. The exceptional or erroneous situation in a human task can be categorized as follows:
Critical Exceptions
The task processing is canceled, and the corresponding boundary event should catch and handle the exception.
Noncritical Exceptions
The task processing is not canceled and carries on its processing normally from the noncritical boundary event.
These are the possible exception types:
Human Task Exception Events
Exception | Description |
---|---|
CompletionDeadlineIsCriticalException | Completion Deadline Raise critical exception when deadline is reached. |
CompletionDeadlineIsNonCriticalException | Completion Deadline constraint is not met and the Raise Critical Exception When Deadline Is Reached and the Raise Critical Exception Deadline Is Reached attribute has not been checked in the task’s settings. |
HandleExceptionErrorEvent | Thrown in any case not listed. |
StartDeadlineIsCriticalException | Thrown when the Start Deadline is not met and the Raise Critical Exception Deadline Is Reached attribute has been checked in the task’s settings. |
StartDeadlineIsNonCriticalException | Thrown when the constraint is not met and the Raise Critical Exception Deadline Is Reached attribute has not been checked in the task’s settings. |