Conditional Sequence Flow

Conditional Sequence Flow is a type of Sequence Flow, and a conditional expression is defined at its origin.

Overview
Conditional Sequence Flow is a Sequence Flow that has a conditional expression near its origin. A conditional expression is used when either of the following decision branching is done. Conditional Sequence Flow has a diamond-shaped marker at its origin (the root of an arrow symbol in terms of representation). This diamond-shaped marker is called "conditional marker." When the origin of Conditional Sequence Flow is attached to Gateway, the Gateway itself works as a conditional marker. So in this case we do not use the diamond-shaped marker. "Conditional markers" are used only in case of Conditional Sequence Flows departing from Activities.
 * XOR-Split
 * OR-Split

Sequence Flow that is not connected to a diamond-shaped marker is specially called Unconditional Sequence Flow.

Usage
Two types of flow objects shown below can be used as an origin of Conditional Sequence Flow.
 * Activity
 * Decision Gateway (A gateway that works as XOR-Split or OR-Split)

While BPMN has flexibility to deal with various business processes, it can have multiple representations for the same process. (This feature is generally called "redundancy" of BPMN.) For example, there are primarily two possible ways to represent the mechanism of Conditional Sequence Flow on OR-Split.

A process diagram regarding a connection to Activity and a process diagram regarding a connection to Decision Gateway are representing the same process even though the representations are different. In the two diagrams shown below, Sequence Flows of an orange color are Conditional Sequence Flows.

Connection to Activity
Conditional Sequence Flow is mainly used in case of a flow that works as OR-Split. In such a case, the "conditional marker" needs to be attached to the origin of the Sequence Flow. When more than two flows are originating from one flow object, we need to use Default Sequence Flow.

Connection to Decision Gateway
In spite of the absence of "conditional markers," all Sequence Flows departing from "XOR Gateways" or "OR Gateways", which are called "Decision Gateways" as a whole, are Conditional Sequence Flows. They are used in flows that are XOR-Splits or OR-Splits. Because no "decision" is made in case of AND-Splits, Sequence Flows departing from AND Gateways are not Conditional Sequence Flows, but Unconditional Sequence Flows.

Condition Decision Mechanism
At OR-Split or XOR-Split, each of multiple Conditional Sequence Flows is assigned one conditional expression. However, when there are more than two conditional expressions, "the order and the way in which the conditional expressions are evaluated" depend on whether it is OR-Split or XOR-Split.
 * In case of OR-Split (Refer to Figure 2.)
 * All conditional expressions are evaluated in order from the expression written on the top. Then, the Token will flow into all flows corresponding to the conditional expression that are evaluated to be "true." Therefore, at OR-Split, the Token could flow into multiple flows. In Figure 2, if both of conditional expression A and B are evaluated to be "true," both "Activity 1" and "Activity 2" will be executed.


 * In case of XOR-Split
 * Conditional expressions are evaluated in order from the expression written on the top. If there is a case evaluated to be "true," the Token will flow into only the flow corresponding to the conditional expression, and conditional expressions written afterwards will not be evaluated at all. Thus, in case of XOR-Split, the Token will flow into only one flow. However, the marker notation in BPMN can not accurately explain that "the conditions are evaluated in order from the top one, and once one conditional expression is evaluated to be true, the conditional expressions afterwards will not be evaluated." Thereby, we must be careful enough to prevent participants from considering that all conditional expressions are evaluated just like OR-Split.

Related Articles

 * BPMN
 * Activity
 * Flow
 * Sequence Flow
 * Default Sequence Flow
 * Gateway
 * XOR-Split
 * OR-Split