BPMN Diagrams don’t use the term control flow to describe processes. They use the terms sequence flow and message flow. Within sequence flow, there are four classifications of flow.
- Normal Flow
- Exception Flow
- Link Events
- Ad Hoc
Normal flow is exactly what you would expect – flow starts at a start event, travels through activities (both tasks and subprocesses), and then ends at an end event.
Exception flow is the type of flow that happens when a process deviates from the normal flow. A timer intermediate event, for example, can initiate exception flow at a specified time. After triggering at least one activity, his exception flow may lead to a stop event or may rejoin the normal flow.
Link events connect processes and subprocesses together. The “flow” that happens between two links is not represented in the diagram by the solid-arrow, but is inferred from the link events.
Ad Hoc flow can be considered a lack of flow, or an undefined flow. Ad hoc flows simply indicate that the activities within a subprocess that uses ad hoc flow can be processed in any order – there are no rules associated with the sequencing of the activities.
Normal Vs. Exception Flow
In this business process modeling example, a worker has a daily routine. The worker either goes to the office or works from home. She will work all day, except to take a break for lunch, and then will enjoy her evening. Each sequence flow in the diagram is identified as being either a normal flow or an exception flow.
The BPMN specification does not clarify exactly which flows qualify as exception flows. It is possible that only the flow immediately attached to an intermediate boundary event is considered to be exception flow, or it could be that all flow reached via an intermediate boundary event is exception flow. A third possibility would be that all flow that can be reached only via an intermediate boundary event should be considered to be exception flow.
Exception Flow occurs outside the Normal Flow of the Process and is based upon an event (an Intermediate Event) that
occurs during the performance of the Process. While Intermediate Events can be included in the Normal Flow to set
delays or breaks to wait for a message, when they are attached to the boundary of an activity, either a Task or a Sub-
Process (see Figure 10.53), they create Exception Flow.
We propose that all flow that can only result from an exception to the normal process should be considered exception flow.
Link events connect processes and subprocesses. A link event can be an end event, or it can be an intermediate event. Both of those articles provide detail on how link events work. The “flow” between the first link event (leaving the current process) and the second link event (entering the new process) is considered to be a type of sequence flow, but no one talks about it that way. It is included in the list of sequence flows for completeness, not clarity.
Ad Hoc Flow
Ad hoc flow, precisely, is a set of activities with no pre-defined sequence requirements. Further, there is no specification about how many times any activity is performed.
The following example shows the unstructured day of our worker if she were to call in sick. The sequence flow that enters and exits the expanded subprocess in the diagram is normal flow, and all possible paths within the subprocess are considered to be ad hoc flow.
The worker can choose to perform the tasks within the subprocess at any time, in any order, and repeating any number of times.
The most common sequence flow is normal flow. Exception flow happens outside the course of the normal flow. When flow transfers from one link event to another, it is considered to be link flow. Ad hoc flow is the undefined flow within an ad hoc subprocess.