Show Table of Contents
A.8. Intermediate Events
A.8.1. Intermediate Events
“... the Intermediate Event indicates where something happens (an Event) somewhere between the start and end of a Process. It will affect the flow of the Process, but will not start or (directly) terminate the Process.[3]”
Intermediate Event handles a particular situation that occurs during Process execution. The situation is the trigger of the Intermediate Event.
In a Process, Intermediate Events can be placed as follows:
- in a Process workflow with one optional incoming and one outgoing Flow:
- The event is executed as part of the workflow. If the Event has no incoming Flow, its execution is triggered always when the respective trigger occurs during the entire Process instance execution. If the Event has an incoming Flow it is executed as part of the Process workflow. Once triggered, the Event's outgoing Flow is taken only after the respective Event has occurred.
- on an Activity boundary with one outgoing Flow:
- If the Event occurs while the Activity is being executed, the Event triggers its execution to the outgoing Flow. One Activity may have multiple boundary Intermediate Events. Note that depending on the behavior you require from the Activity with the boundary Intermediate Event, you can use either of the following Intermediate Event type:
- interrupting: the Activity execution is interrupted and the execution of the Intermediate Event is triggered.
- non-interrupting: the Intermediate Event is triggered and the Activity execution continues.
Based on the type of Event cause the execution of the Intermediate Event (triggers), the following Intermediate Events are distinguished:
- Timer Intermediate Event
- delays the execution of the outgoing Flow.
- Conditional Intermediate Event
- is triggered when its condition evaluates to
true. - Error Intermediate Event
- is triggered by an Error object with the given Error Code.
- Escalation Intermediate Event
- has two subtypes: Catching Escalation Intermediate Event that is triggered by a Escalation and Throwing Escalation Intermediate Event that produces an Escalation when executed.
- Signal Intermediate Event
- has two subtypes: Catching Signal Intermediate Event that is triggered by a Signal and Throwing Signal Intermediate Event that produces a Signal when executed.
- Message Intermediate Event
- has two subtypes: Catching Message Intermediate Event that is triggered by a Message and Throwing Message Intermediate Event that produces a Message when executed.
A.8.2. Intermediate Event types
A.8.2.1. None Intermediate Event
None Intermediate Event is an abstract Intermediate Event and displays all possible Intermediate Event properties.
A.8.2.2. Timer Intermediate Event
A Timer Intermediate Event allows you to delay further workflow execution or to trigger the workflow execution periodically. It represents a timer that can trigger one or multiple times after a given period of time: always when triggered the timer condition (the defined time) is checked and once the time event occurs, the outgoing Flow is taken.
The Event defines the Timer delay and Timer period properties, that use the Timing mechanism as described in Section A.5, “Timing”. When placed in the Process workflow, a Timer Intermediate Event has one incoming Flow and one outgoing Flow and its execution starts when the incoming Flow transfers to the Event. When placed on an Activity boundary, the execution is trigger at the same time as the Activity execution.
The timer is canceled if the timer element is canceled, for example, by completing or aborting the enclosing process instance).
Attributes
- Message
- ID of the expected Message object
- Timer delay
- Time delay before the Event triggers its outgoing Flow for the first time
- Timer period
- Period between two subsequent triggersIf set to
0, the Event execution is not repeated.
A.8.2.3. Conditional Intermediate Event
A Conditional Intermediate Event is an Intermediate Event with a boolean condition as its trigger. The Event triggers further workflow execution when the condition evaluates to
true and its outgoing Flow is taken.
The Event must define its boolean Conditional. When placed in the Process workflow, a Conditional Intermediate Event has one incoming Flow and one outgoing Flow and its execution starts when the incoming Flow transfers to the Event. When placed on an Activity boundary, the execution is triggered at the same time as the Activity execution. Note, that if the Event is non-interrupting, the Event triggers continuously while the condition is
true.
Attributes
- Condition
- Boolean condition that must be evaluated to true for the execution to continue
A.8.2.4. Message Intermediate Event
A Message Intermediate Event is an Intermediate Event that allows you to produce or consume a Message object. Depending on the action the event element is to perform, you need to use either of the following:
- Throwing Message Intermediate Event produces a Message object based on the defined properties
- Catching Message Intermediate Event listens for a Message object with the defined properties
A.8.2.5. Compensation Intermediate Event
A Compensation Intermediate Event is a boundary event that is attached to a Activity in a transaction Sub-Process that may finish with a Compensation End Event or a Cancel End Event. The Compensation Intermediate Event must have one outgoing Association Flow that connects to an Activity that defines the compensation action needed to compensate for the action performed by the Activity.
On runtime, if the transaction Sub-Process finishes with the Compensation End Event, the Activity associated with the boundary Compensation Intermediate Event is executed and the execution continues with the respective Flow leaving the transaction Sub-Process.
A.8.2.6. Message Intermediate Event types
A.8.2.6.1. Throwing Message Intermediate Event
When reached on execution, a Throwing Message Intermediate Event produces a Message and the excecution continues to its outgoing Flow.
Attributes
- CancelActivity
- if the Event is place on the boundary of an Activity and the Cancel Activity property is set to
true, the Activity execution is cancelled immediately when the Event receives its Escalation object. - MessageRef
- ID of the produced Message object
A.8.2.6.2. Catching Message Intermediate Event
When reached on execution, a Catching Message Intermediate Event awaits a Message defined in its properties. Once the Message is received, the Event triggers execution of its outgoing Flow.
Attributes
- MessageRef
- ID of the expected Message object
A.8.2.7. Escalation Intermediate Event
An Escalation Intermediate Event is an Intermediate Event that allows you to produce or consume an Escalation object. Depending on the action the event element is to perform, you need to use either of the following:
- Throwing Escalation Intermediate Event produces an Escalation object based on the defined properties
- Catching Escalation Intermediate Event listens for an Escalation object with the defined properties
A.8.2.8. Escalation Intermediate Event types
A.8.2.8.1. Throwing Escalation Intermediate Event
When reached on execution, a Throwing Escalation Intermediate Event produces an Escalation object and the excecution continues to its outgoing Flow.
Attributes
- EscalationCode
- ID of the produced Escalation object
A.8.2.8.2. Catching Escalation Intermediate Event
When reached on execution, a Catching Escalation Intermediate Event awaits an Escalation object defined in its properties. Once the object is received, the Event triggers execution of its outgoing Flow.
Attributes
- EscalationCode
- code of the expected Escalation object
- CancelActivity
- if the Event is place on the boundary of an Activity and the Cancel Activity property is set to
true, the Activity execution is cancelled immediately when the Event receives its Escalation object.
A.8.2.9. Error Intermediate Event
An Error Intermediate Event is an Intermediate Event that can be used only on an Activity boundary. It allows the Process to react to an Error End Event in the respective Activity. The Activity must not be atomic. When the Activity finishes with an Error End Event that produces an Error with the respective ErrorCode, the Error Intermediate Event catches the Error object and execution continues to the outgoing Flow of the Error Intermediate Event.
Attributes
- ErrorRef
- reference number of the Error object the Event is listening for
A.8.2.10. Error Intermediate Event types
A.8.2.10.1. Throwing Error Intermediate Event
When reached on execution, a Throwing Error Intermediate Event produces an Error object and the excecution continues to its outgoing Flow.
Attributes
- ErrorRef
- reference number of the produced Error object
A.8.2.10.2. Catching Error Intermediate Event
When reached on execution, a Catching Error Intermediate Event awaits an Error object defined in its properties. Once the object is received, the Event triggers execution of its outgoing Flow.
Attributes
- ErrorRef
- reference number of the expected Error object
- CancelActivity
- if the Event is place on the boundary of an Activity and the Cancel Activity property is set to
true, the Activity execution is cancelled immediately when the Event receives its Escalation object.
A.8.2.11. Signal Intermediate Event
A Signal Intermediate Event is an Intermediate Event that allows you to produce or consume a Signal object. Depending on the action the event element is to perform, you need to use either of the following:
- Throwing Signal Intermediate Event produces a Signal object based on the defined properties
- Catching Signal Intermediate Event listens for a Signal object with the defined properties
A.8.2.12. Signal Intermediate Event types
A.8.2.12.1. Throwing Signal Intermediate Event
When reached on execution, a Throwing Signal Intermediate Event produces a Signal object and the execution continues to its outgoing Flow.
Attributes
- SignalRef
- The Signal code that is to be sent or consumed
- CancelActivity
- if the Event is place on the boundary of an Activity and the Cancel Activity property is set to
true, the Activity execution is cancelled immediately when the Event receives its Escalation object.
A.8.2.12.2. Catching Signal Intermediate Event
When reached on execution, a Catching Signal Intermediate Event awaits a Signal object defined in its properties. Once the object is received, the Event triggers execution of its outgoing Flow.
Attributes
- SignalRef
- reference code of the expected Signal object
[3]
Business Process Model and Notation (BPMN). Version 2.0, OMG Document Number: formal/2011-01-03 http://www.omg.org/spec/BPMN/2.0

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.