Intermediate Event
In BPMN, Intermediate Event is a modeling element that represents a point of time between a start event and end event of a process at which some matter occurs.
Contents |
Overview of Intermediate Event
| What are Events? |
|---|
Matters that occur in a series of business processes. They affect the order and timings of activities. Evens are categorized into three shown below based on the timing of occurrence.
|
In BPMN, Intermediate Event represents a point of time at which some matter occurs in a process being executed, i.e. an interval between the start of an individual process and its end. Thus, Intermediate Event itself does not start or terminate a process. Intermediate Event catches triggers (conditions or situations that cause events) or throws such triggers. In other words, Intermediate Event has characteristics of both Catch Event and Throw Event. However, it does not mean that all Intermediate Events have both of them. Intermediate Events are categorized into 10 patterns based on the timing at which they are used in a process and what kind of events are caught or thrown.
Primary Roles of Intermediate Event
- Indicate a point of time at which messages are sent or received in a process
- Indicate a point of time at which delays are expected in a process
- Abort a normal flow by means of a exception handling, and then switch to an exceptional flow
- Show that there is an ad-hoc task that is necessary for a compensation process
Details related to Intermediate Event
- When used in a normal flow, it behaves as either Catch Event or Throw Event.
- When used on boundaries of Activitys, it only behaves as Catch Event.
- When used as Catch Event, the Token stays at the Event until the arrival of timing or a message that is defined as a trigger.
- When used as Throw Event, it initiates, as soon as a Token arrives, an event, such as transmission of messages, and then the process proceeds to the next phase.
Notation for Intermediate Events
In general, Intermediate Event is represented as a circle drawn with double thin lines to be distinguished from Start Event and End Event. There are ten types, as shown below, in Intermediate Event. Different notations are used for each type of event (result) that occurs during the process execution. A marker of different shape is placed in the double-lined circle to distinguish the corresponding event from Intermediate Events of other types.
Unlike Start Event and End Event, Intermediate Event can be categorized as either Catch Event or Throw Event depending on the cases. In BPMN, markers of Intermediate Events that are classified as Catch Events are filled with white. On the other hand, markers of Intermediate Events that are classified as Throw Events are filled with black.
Notation of Exception Handling and Compensation Process
In general, an exception handling and a compensation process are represented with one Intermediate Event as shown in Figure 1 on the right. Both Figure 1-1 and Figure 1-2 are process diagrams that show that activity B is executed as the "exception handling" when an error occurs at activity A. In case the process diagram is to be horizontally drawn, it is usually drawn as shown in Figure 1-1. On the other hand, if the process diagram is to be vertically drawn, it is generally drawn as shown in Figure 1-2.
Connection to Boundary of Activity and Flow
- Connection to Boundary of Activity
- Intermediate Events other than ones of "None" type and "Link" type can be directly placed on boundaries of activities. It is also possible to place multiple events.
- * "Cancel" type Intermediate Events can be placed on boundaries of sub-processes.
- Intermediate Events other than ones of "None" type and "Link" type can be directly placed on boundaries of activities. It is also possible to place multiple events.
- Connection to Sequence Flow
- (a)When Intermediate Events other than ones of "None" type and "Link" type are placed on boundaries of Activities:
- They can not be subjects of Sequence Flows. In other words, incoming Sequence Flows are not connected to Intermediate Events.
- They must be the only one origin of Sequence Flows. In other words, an outgoing Sequence Flow is connected to only one Intermediate Event.
- *Intermediate Events of "Compensation" type are not connected to outgoing Sequence Flows.
- (b) When Intermediate Events other than ones of "Cancel" type, "Error" type, and "Multiple" type are used in normal flows:
- Intermediate Event of "None" type and "Compensation" type must be the only one subject of Sequence Flow. In other words, these Intermediate Events must be connected only one incoming Sequence Flow.
- Intermediate Events of "Message" type, "Timer" type, "Conditional" type, "Link" type, and "Signal" type can be a subject of only one Sequence Flow. In other words, these Intermediate Events can be connected to only one incoming Sequence Flow.
- Intermediate Events must be the only one origin of Sequence Flows. In other words, outgoing Sequence Flows are connected to only one Intermediate Event.
- * Intermediate Events of "Link" type do not require outgoing Sequence Flows.
- (c) When Intermediate Events of "Link" type are used as "Off-Page Connectors" or "Go To" objects:
- It can not be the origin and subject of Sequence Flows at the same time. In other words, it can not be the Intermediate Event for both of the link source and link target at the same time.
- When there exists one "Source" Intermediate Event, there must be the corresponding "Target" Intermediate Event (with the same name).
- There can be multiple "Source" Intermediate Events corresponding to one "Target" Intermediate Event.
- There can not be multiple "Target" Intermediate Events corresponding to one "Source" Intermediate Event.
- (a)When Intermediate Events other than ones of "None" type and "Link" type are placed on boundaries of Activities:
- Connection to Message Flows
- Intermediate Events of "Message" type can be either origins or subjects of Message Flows. In other words, they can connect to incoming Message Flows as well as outgoing Message Flows. However, both can not be connected at the same time.
All Kinds of Intermediate Events
| Triggers of Event | Description | Marker |
|---|---|---|
| None | This is used when the type of event is not shown. This is effective only in case of Intermediate Events in the main flow of process. In other words, Intermediate Events of this type never lead exceptional flows. This type indicates that some kind of event occurs in the middle of the process and that statuses or situations are changed owing to it. |
|
| Message | Events of this type are used in case of receiving messages from participants or sending messages to participants. Triggered by transmission or receipt of messages, these events affect the process. If they are waiting messages, they let the process continue. Upon exception handling, they play roles to switch from normal flows to exceptional flows.
|
|
| ||
| Timer | Timer is used when specific date and time or specific cycle, such as "at 9am every Monday" etc., can be used as a trigger of an event. If it is used in the main flow, it works as a "delaying mechanism" that suspends the process until the specific time or cycle is actually reached. In case it is used in exception handling, it plays a role to switch an normal flow into an exceptional flow when the specific time or cycle is actually reached. |
|
| Error | This is used to execute error handling. It catches errors that satisfy pre-defined conditions or errors that do not have such conditions and can occur under arbitrary conditions, and then it switches into the exceptional flow (for example, in case Transaction causes a hazard). It never is a part of a normal flow. It is always placed on boundaries of Activities. |
|
| Cancel | This is used to execute a cancel process in Transaction. In a sub-process of Transaction, it receives "Cancel (unsuccessful termination)," then stops the execution of the Transaction, and plays a role to switch into the exceptional flow. It is always placed on boundaries of sub-processes. Cancel Intermediate Events are activated in the two cases shown below.
|
|
| Compensation | This type is used when executing compensation processes. This is used to define and execute Compensation, which rollbacks the process into the state just before the execution of the Activity. It needs to be always placed on boundaries of Activities.
Concerning Activities in a normal flow, "Throw Event" type, which means that Compensation is required, is placed on the boundaries. "Compensation Activity" connected, with Association, to the corresponding event is executed, and thereby the original Activity receives Compensation. As for other Activities that terminate in Process Instances including all processes, from the highest-level processes to sub-processes, Compensation is broadly done in the order opposite to the order of termination. |
|
| ||
| Conditional | This is used to define specific conditional expressions. When the defined conditional expression is evaluated as "true," it impacts the process. |
|
| Link | This is used to create a loop environment in a process or to avoid lengthy Sequence Flows. This is used only in the same process level.
Link is a mechanism to connect two parts in a process but does not connect a parent process and a sub-process. Each of Source and Target has one Link Intermediate Event, and they are corresponding to each other. Paired Intermediate Events are also used as an Off-Page Connector to show the connection relationship in a process that is drawn over multiple pages. On the other hand, they are also used as a "Go To" object that elaborates a detailed process diagram in the same process. There can be multiple Sources, but Target must be only one. |
|
| ||
| Signal | This is used when signals are sent or received during the process execution. When Intermediate Events of this type are used in a normal flow, they can catch and throw signals. However, when placed on boundaries of Activities, they can only catch signals.
Signals convey some contents. The origin of signals can be identified, but they are not sent to any specific receivers. This point differentiates signals from "messages," which have specific senders and receivers. In BPMN, signals can propagate within the same process level, among different process levels, across Pools, and among Business Flow Diagrams. |
|
| ||
| Multiple | This is used when multiple triggers exist for a event that occur during the process execution. If it is used in a normal flow, this event can catch triggers or can throw triggers. However, if it is placed on boundaries of Activities, it only catches triggers.
|
|
|
Changes from BPMN 1.0 Specification
Upon the transition from BPMN 1.0 specification to BPMN 1.1 specification, some changes are made in notation and names.
- Regarding "Message" type, "Throw Event" type is newly added.
- Design of a marker for "Error" type is changed so that it is drawn with extra-thick lines.
- In "Cancel" type, "Throw Event" type is changed into "Catch Event" type.
- Concerning "Compensation" type, "Catch Event" type is newly added.
- In "Conditional" type, a name of a trigger is changed from "rule" to "condition."
- Regarding "Link" type, "Catch Event" type is newly added.
- A trigger named "Signal" is newly added in BPMN 1.1 specification.
- The design of "Multiple" type is changed from "hexagram" to "pentagon." Furthermore, "Catch Event" type is newly added.





















