Introduction

Transitions link activities in a process definition. In the most basic configuration of activities and transitions, each activity has only one incoming and one outgoing transition. However it is often useful to follow more than one path out of an activity resulting in a split (i.e. multiple transitions emanating from an activity). To support a valid block structure in a process definition (see Workflow Structure), each split must be matched by a join (i.e. multiple transitions meeting at one activity). In general a split allows multiple threads of work to be done at the same time while a join is the reciprocal synchronization point for those threads.

There are two reasons for an activity to have a split (and by extension some other activity down the line to have a join). The first is to allow work that does not have dependencies to be done in parallel while the second is to allow a choice to be made between a number of different paths in the workflow.

At the metadata level, each activity has a split and a join type. When the activity has only one outgoing or incoming transition a type of none is assigned to the split or join respectively. The other two split and join types, choice (also known as XOR) and parallel (also known as AND), are self explanatory and are the primary subject of this chapter.