A Cúram process must form a graph that has the following properties: directed, connected and acyclic. This may sound complicated, but these are just the technical terms for some very simple graph properties.
- A "directed" graph is one in which each edge only goes one way (it is usually referred to as a digraph). In workflow terms, this means that a transition from activity A to activity B cannot be used to get from B back to A. This is a given in Cúram workflow. It is mentioned here only because the 'acyclic' property (see below) is defined differently for graphs and digraphs.
- A "connected" graph is one in which every vertex can be reached. In workflow terms, this means that every Activity in the process must be reachable on at least one path from the start activity to the end activity.
This prevents workflows from having a structure such that one or more activities could never be executed.
- Finally, an "acyclic" digraph is one in which there are no directed cycles. In workflow terms, this means there can be no ad-hoc loops (i.e. loops constructed using transitions instead of loop-begin and loop-end activities).
Ad-hoc loops may seem convenient, but (like GOTO statements in programming languages) they can make a process very difficult to read and understand. Using explicit loop constructs leads to clearer, more understandable process definitions.
In addition, it allows the engine to know where looping can occur, so it can keep track of how many times a loop has iterated at runtime.