Workflow is a label for systems which enable:
General Purpose Workflow is Complicated.
The complexity with workflow is specifying
- the fault handling,
- when user intervention is needed,
- how to handle failures of an operation.
- Actor - A person or program which performs some action.
- Action - Something to be performed by an actor. Once an actor is notified that a given action is to be completed, they may perform it synchronously or asynchronously. It may take hours or days to complete the action.
- Process Definition - A set of actions which need to be performed. The actions have a defined order in which they must be performed. Some actions may be performed concurrently with others.
- Process - An instantiation of a process definition. Each process definition may have many processes running at once. A process definition can be compared to the on disk image of a program, where the process is comparable to an executing program (possibly with multiple threads of execution). Or from an OO perspective, a process definition is analogous to a class definition and a process is like an instantiated object of that class.
- Workflow Engine - A program, library or API which can load process definitions and from them, generate and execute a processes.
They are generally implemented as a state machine.