Events

An event is a signal that something has happened, which triggers some process behavior. A catching event means that the process responds to this signal. A throwing event means that the process sends this signal.

Event Types

BPMN defines three basic event types:

  • Start event. A start event represents the start of a process or subprocess. It is always catching. Usually there is just one of these.

  • End event. An end event marks the completion of one path of a process or subprocess. It is always throwing. There are often several of these. Because BPMN allows parallel paths, the process or subproces is not complete until all active paths have reached an end event.

  • Intermediate event. An intermediate event occurs after the start and before the end of a process or subprocess. It may be catching or throwing. A boundary event is an intermediate event attached to the boundary of an activity, meaning its action occurs if the trigger is received while the activity is running.

Event Triggers

The trigger of an event is the particular type of signal either caught or thrown. It is selected using the Change Shape context menu applied to an event shape:

trigger direction 1

The most important triggers are Timer, Message, Error, and None. You may have occasion also to use Escalation, Signal, or Multiple. The others are rarely needed or used.

Timer Event

  • Timer start event. A Timer start event indicates a recurring process, such as one run daily or weekly.

  • Timer intermediate event. A Timer event with sequence flow in and out is a fixed delay. The process pauses and waits for the event parameter - either a duration or specific date and time - to occur, then resumes.

  • Timer boundary event. A Timer boundary event means if the activity it is attached to does not complete prior to the event parameter, the trigger fires. If the event is interrupting, the activity terminates and flow continues on the sequence flow out of the event, called the exception flow. If the event is non-interrupting, the exception flow is initiated in parallel with the continuation and normal exit of the activity. If the activity completes before the timr fires, exit on the normal flow and do not initiate the exception flow.

Message Event

  • Message start event. In descriptive models, a Message start event means a process started on external request, where that request is modeled as an incoming message flow. In executable models, the request is the payload of an incoming email.

  • Catching Message intermediate event. A catching Message event with sequence flow in and out means the process pauses and waits for the arrival of a message flow, then resumes.

  • Message boundary event. A Message boundary event means if the message flow arrives while the activity it is attached to is active, initiate the exception flow. If the event is interrupting, terminate the activity, and if non-interrupting it continues as before in parallel with the exception flow.

  • Throwing Message event. A throwing Message intermediate or end event sends an outgoing message flow.

Error/Escalation Event

  • Error/Escalation start event. An Error or Escalation start event only is used in an Event Subprocess, where it is triggered by a throwing Error or Escalation event in the same process level.

  • Error/Escalation boundary event. An Error or Escalation boundary event is triggered by a thrown Error or Escalation trigger inside the activity. In a task, the throw is implicit. In a subprocess, the throw is explicitly modeled as a throwing Error or Escalation event. An Error boundary event is always interrupting; an Escalation may be either interrupting or non-interrupting.

  • Throwing Error/Escalation event. A throwing Error or Escalation event is caught on the activity boundary. If the activity is a task, the throwing event is implicit. If it is a subprocess, the throwing event is explicitly modeled. A throwing Error event must be an end event. A throwing Escalation may be either an end event or intermediate event.

None Event

  • None start event. A normal subprocess always starts with a None start event. In descriptive modeling, a None start event in a process means either manual start by a task performer or the start trigger is undefined. Executable models often use a None start event, where the trigger is an API call to the process service populating the data input.

  • None intermediate event. A throwing None intermediate event is sometimes used as a process milestone, indicating the instance has reached a particular point in the flow.

  • None end event. A None end event means no signal is thrown when the flow reaches the end event.

Signal Event

A Signal event is similar to a Message event, with two differences:

  • Where a Message event is addressed to a specific process, a Signal event uses publish/subscribe integration, so that the throwing Signal (publish) need not know what processes are responding (subscribing) to the signal.

  • Where a Message can only be sent from an external entity or process, a Signal can also be sent from a node in the same process.

Multiple Event

A Multiple event means multiple triggers may be caught or thrown. For example, a catching Multiple event can be triggered either by a Timer or a Message, or by either Message A or Message B.

Conditional Event

A Conditional event is triggered when a data condition becomes true. Because that can only occur from the action of some activity, the same behavior could be triggerd directly by a Signal event.