A controlled flow represents a flow that proceeds from one activity to another, but is subject to conditions as defined by a gateway.
In contrast, uncontrolled flows proceed without dependencies or conditional expressions. Typically, an uncontrolled flow is a sequence flow between two activities that do not have an intervening gateway.
Both uncontrolled and controlled flows can be used for process forks and process merges. A process fork refers to the dividing of a process path into two or more parallel paths. It represents a place in the process where activities can be performed concurrently, rather than sequentially. A process fork can be modelled with a parallel gateway or with multiple outgoing sequence flows.
In contrast, a process merge refers to a point in the process where two or more alternative sequence flow paths are combined into one sequence flow path. To perform a merge, BPMN uses an exclusive gateway or multiple incoming sequence flows for an activity.
Unlike process forks and merges, process branches and joins can only be modelled with controlled flows. Branches or decisions are represented with exclusive or inclusive gateways which ensures the flow of control can take one or more alternative paths.
Process join refers to the point in the process where two or more parallel paths combine into one path, also known as synchronization. For representing process joins, BPMN uses a parallel gateway.
A process join is commonly used in a combination with a controlled fork.