Fork

Fork refers to a mechanism in which a flow that passes one route branches off and become two or more parallel routes unconditionally. Forking Flow.

Overview of Fork
Fork is one type of Split mechanism in BPMN and it refers to the mechanism AND Split (parallel Split). One flow branches off and becomes two or more Flows. The process simultaneously advances in parallel on the multiple flows. The characteristics that one root is divided into some branches is similar to a fork. Therefore, this came to be called "fork" in general.

Unlike Conditional Split such as OR-Split or XOR-Split, any condition controls flow. In addition, there is no order among activities in parallel and these activities are all executed at the same time. In other words, the Token gets divided at a fork and go through all split routes.

Fork make a process unconditionally advance to multiple flows. So, any conditional expression is not added to flow at the branch point. Therefore, Sequence Flow used for Fork is an Uncontrolled Sequence Flow.

Notation of Fork
In BPMN, there are mainly three way of notation for Fork.

Activity + Sequence Flow (Left figure)
This is the simplest notation. Multiple outgoing Sequence Flows are directly connected to one Activity or Start Event. Questetra BPM Suite adopted this type.

Activity + Sequence Flow + Parallel Gateway (Middle figure)
A Gateway makes it understood that a Flow branches off. Here, Parallel Gateway is appropriate to use so we should place the cross form marker in the diamond form that represents a Gateway. As a result, it becomes evident that Fork (And Split) occurs here. Therefore, some process designers consider this modeling type as the best practice.

Activity + Sequence Flow + Expanded Sub-Process (Right figure)
This type brings a series of activities together in the Expanded Sub-Process and makes them a group. Such an Expanded Sub-Process can be called a "parallel box" in which neither the Start Event nor End Event are written. This notation clearly shows that some activities are executed in parallel. However, this type is generally used in few cases.

This notation is used in ad-hoc situations, for instance, a state in which Activity0 is executed, and then Activity1-1, 1-2 and 1-3 are decided to execute but actually it is not know whether these three Activities are executed in what order.

Related Articles

 * BPMN
 * Activity
 * Gateway
 * Flow
 * Sequence Flow
 * Split
 * Merge

Reference

 * BPMN1.1 Specification (2008-01-17)