BPMN 2.0 Events

From Training Material
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.

Element type dimension.png

Start Event

Element start event.png

  • 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

Start-event-must-not.png

  • Process without Start Event

Process-without-start-event-1.png

Process-without-start-event2.png

  • 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

Element intermediate events.png

  • 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

Element multiple instances parallel.png

  • Loop

Element activity looping.png

  • Ad-hoc

Figure10-35-collapsed-ad-hoc-sub-process.png

  • Compensation

Element compensation association.png

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

Element end event.png

  • 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.

Element exception flow.png

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