Sequence Flow

Sequence Flow is a connection object that shows the execution order of activities in a Process.

Overview of Sequence Flow
Sequence Flow is a connection object that

“connects activities and shows the order those activities by means of a solid line with an arrowhead (a solid-line arrow).”

Generally, Sequence Flow is “unidirectional,” and it develops a Process either left to right or top to bottom in a Process diagram, so the arrow’s direction is basically either right-pointing or down-pointing. Each Flow has only one


 * Source object: Flow Object as a source (Flow Object that is a source of a flow)
 * Target object: Flow Object as a target (Flow Object that is a target of a flow)

However, one Flow Object can have more than one Sequence Flows that connects to it.

In BPMN, Sequence Flow is defined as an object that illustrates, in a diagram, the “execution order” of actual business processes.

Sequence Flow has the following attributes (characteristics).
 * Cannot get across boundaries of pools (difference from Message Flow)
 * Cannot get across boundaries of Sub-Processes
 * Does not receive any influence from artifacts (data objects, groups, annotations, etc.)
 * Can connect to any places on the boundaries of Flow Objects.

Redundancy of BPMN
BPMN, which is a flexible notation, has various ways to describe business processes by means of Sequence Flow. So, an identical Process can be drawn in different ways depending on Process diagram designers; such lack of consistency sometimes could puzzle people in charge of actual tasks in the job. This property, which is a side-effect of the high flexibility, is generally called “redundancy” of BPMN.

Types of Sequence Flow
Sequence Flow is classified into three types as follows.

Uncontrolled Sequence Flow
Uncontrolled Sequence Flow is used to simply proceed to the following (subsequent) Flow Object. No conditional expression affects it, and it doesn’t traverse any Gateways. Uncontrolled Sequence Flow allows us to describe tasks carried out in parallel.

Conditional Sequence Flow
Conditional Sequence Flow has a diamond at is source, and a conditional expression is written for it. When a conditional expression defined on the Flow is satisfied, this Flow proceeds. In case a Flow object that is the source of the Flow is an activity with conditional split, it has “Conditional Marker” (a small diamond) at the source of the Sequence Flow. In case Conditional Sequence Flow originates from Decision Gateway, because this Gateway plays a role of “Conditional Marker,” it doesn’t require any markers.

Default Sequence Flow
Default Sequence Flow is Sequence Flow for which a default conditional expression is defined. When all of the other conditional Sequence Flows are “false,” it is taken. It is illustrated (represented) with a backslash near the source of the Sequence Flow.

Mechanism of Sequence Flow
Process Model designers use Sequence Flow in roughly two ways, i.e. Normal Flow and Exceptional Flow, as follows:


 * 1) Normal Flow
 * This starts with Start Event, and it flows according to the order of activities until it reaches End Event through alternative or parallel Flow (routes?).
 * 1) Exceptional Flow
 * Based on Intermediate Event, which occurs in the middle of process execution, Exceptional Flow arises outside of Normal Flow of a Process. Generally, in case a Throw Intermediate Event (i.e. Message, Timer, Error) is connected to an activity in Normal Flow and there is a reason to activate it, a Token traverses down the Exceptional Flow for “exception handling.”

(*)Ad-hoc

This is used when a model designer cannot define the order of a series of activities in advance. An executor of the activity decides the effects of the Sequence Flow (i.e. direction, number of times, etc.). A “tilde” is used to draw this.



Merging/Split of Default Flow
Alternative routes, parallel routes, and merging of routes used in Default Flow can be summed up as follows:

Relative Articles

 * BPMN
 * Activity
 * Event (Start Event, Intermediate Event, End Event)
 * Gateway
 * Flow
 * Default Sequence Flow
 * Fork