Deadlock

A deadlock, in English, means a stalemate. In general, it means a situation in which two or more processes are mutually attempting to obtain resources held by other processes at the same time and are required to keep waiting the release of necessary resources forever because none of the processes can complete its own task since no one can satisfy its own resource requirement and thereby resources held can not be released.

Overview of Deadlock
A deadlock can be caused by flaws in flow model designs (unstructured workflow). In general, a deadlock occurs in a situation in which one task is waiting the completion of another task that is not going to be executed.

In Japanese, some people mistake "lock" for "rock" and use a phrase like "to be stranded on a dead rock" to mean "to be deadlocked," but it is not correct.

Deadlock Caused by Flaws in Designs (Unstructured Workflow)
In Figure 1, the flow is split into task A and task B at the first split. After that, task A is split into task C and task D at the next AND-Split. In case the process proceeds to task C, the flow is merged with task D later.

Task B goes through task D and then is merged with task C. After merged, the flow proceeds to task E.

If "Yes" is selected at the first split, the next AND-Split enables the process to proceed to task C and task D, and thereby task C and task D can be merged after that. However, if "No" is chosen at the first split, none of task A and task C is executed, which makes it impossible to merge task C and task D later.

As can be seen in this example, even though the notation is correct in terms of BPMN workflow, unexpected deadlocks can occur because the workflow is not structured or not checked in detail.

Related Articles

 * Workflow
 * Business process