BPMN 2.0 Events
Jump to navigation
Jump to search
- Indented line
- An Event is something that “happens” during the course of a Process
- These Events affect the flow of the Process and usually have a cause or an impact. The term “event” is general enough to cover many things in a Process.
- The start of an Activity, the end of an Activity, the change of state of a document, a Message that arrives, etc., all could be considered Events
- However, BPMN has restricted the use of Events to include only those types of Events that will affect the sequence or timing of Activities of a Process.
Start Event
- Indicates where a particular Process will start
- Does not have any incoming Sequence Flows
Tokens
- Token traverses the Sequence Flows and pass through the elements in the Process
- A token is a theoretical concept that is used as an aid to define the behavior of a Process that is being performed
- The behavior of Process elements can be defined by describing how they interact with a token as it “traverses” the structure of the Process.
- A token does NOT traverse a Message Flow
Start Event Semantics
A Start Event is OPTIONAL:
- a Process level—a top-level Process
- a Sub-Process (embedded)
- Global Process (called Process)
MAY (is NOT REQUIRED to) have a Start Event.
- If a Process is complex and/or the starting conditions are not obvious, then it is RECOMMENDED that a Start Event be used.
- If a Start Event is not used, then the implicit Start Event for the Process SHALL NOT have a trigger.
- If there is an End Event, then there MUST be at least one Start Event.
Processes without start event
- All Flow Objects that do not have an incoming Sequence Flow (i.e., are not a target of a Sequence Flow) SHALL be instantiated when the Process is instantiated.
Exceptions from the rule
Exceptions to this are:
- Compensation Activity (it has the Compensation marker). Compensation Activities are not considered a part of the normal flow and MUST NOT be instantiated when the Process is instantiated.
- Catching Link Intermediate Event, which is not allowed to have incoming Sequence Flows.
- Event Sub-Process, which is not allowed to have incoming Sequence Flows and will only be instantiated when its Start Event is triggered.
- If the Start Event is used, then there MUST NOT be other flow elements that do not have incoming Sequence Flow — all other Flow Objects MUST be a target of at least one Sequence Flow
- Process without Start Event
- There MAY be multiple Start Events for a given Process level.
- Each Start Event is an independent Event. That is, a Process instance SHALL be generated when the Start
Event is triggered.
- When the trigger for a Start Event occurs, a new Process will be instantiated and a token will be generated for each outgoing Sequence Flow from that Event.
Start Event Triggers
Start Events can be used for these types of Processes:
- Top-level Processes
- Sub-Processes (embedded)
- Global Process (called)
- Event Sub-Processes
Intermediate Events
- 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.
Intermediate Events can be used to:
- Show where Messages are expected or sent within the Process,
- Show delays are expected within the Process
- Disrupt the normal flow through exception handling
- Show the extra work needed for compensation.
Compensation Handling
- Multi-Instance
- Loop
- Ad-hoc
- Compensation
Throw and Catch
When a token arrives at an Intermediate Event that is placed within the normal flow of a Process, one of two things will happen:
- For throw Event
- trigger of the Event will immediately occur (e.g., the Message will be sent)
- the token will move down the outgoing Sequence Flow
- For catch
- the token will remain at the Event until the trigger occurs (e.g., the Message is received)
- then the token will move down the outgoing Sequence Flow
Types of Intermediate Events
TODO: Create Icon for each 12 intermediate event (Compensation, Timer, Signal etc..)
End Event
- End Event indicates where a Process will end
- In terms of Sequence Flows, the End Event ends the flow of the Process, and thus, will not have any outgoing Sequence Flows
- The End Event shares the same basic shape of the Start Event and Intermediate Event, a circle with an open center so that markers can be placed within the circle to indicate variations of the Event.
End Event and Token
- End Event consumes a token that had been generated from a Start Event within the same level of Process
- If parallel Sequence Flows targets the End Event, then the tokens will be consumed as they arrive
- All the tokens that were generated within the Process MUST be consumed by an End Event before the Process has been completed
- In exception flow , if the Process is a Sub-Process, it can be stopped prior to normal completion through interrupting Intermediate Events
- In this situation the tokens will be consumed by an Intermediate Event attached to the boundary of the Sub-Process.
End Event Semantics
- There MAY be multiple End Events within a single level of a Process.
- An End Event is OPTIONAL: a given Process level—a Process or an expanded Sub-Process—MAY (is NOT REQUIRED to) have this shape:
- If an End Event is not used, then the implicit End Event for the Process SHALL NOT have a Result.
- If there is a Start Event, then there MUST be at least one End Event.
- If the End Event is not used, then all Flow Objects that do not have any outgoing Sequence Flow (i.e., are not a source of a Sequence Flow) mark the end of a path in the Process
- However, the Process MUST NOT end until all parallel paths have completed
- For Processes without an End Event, a token entering a path-ending Flow Object will be consumed after completion of the Flow Object
- When all tokens for a given instance of the Process are consumed, then the Process will reach a state of being completed