A workflow pattern is a specialized form of a design pattern as defined in the area of software engineering or business process engineering respectively. Workflow patterns refer specifically to recurrent problems and proven solutions related to the development of workflow applications in particular, and more broadly, process-oriented applications.
Workflow patterns are concepts of economised development. Their usage should follow strategies of simplifying maintenance and reducing modeling work. Workflow is performed in real time. The mechanisms of control must support the typical pace of work. Design patterns must delay execution of workflow.
Workflow patterns may usually be aggregated as chains and the conditions for starting and terminating must be explicitly defined.
Workflow patterns can be applied in various context, hence the conditions for use must be explicitly defined and shown in order to prevent misinterpretation.
A well-known collection of workflow patterns is that proposed by Wil van der Aalst et al. (2003) in their paper Workflow Patterns. with earlier versions published in 2000-02. This collection of patterns focuses on one specific aspect of process-oriented application development, namely the description of control flow dependencies between activities in a workflow/process. These patterns are divided into the following categories:
The above workflow patterns have been used to evaluate the functionality of commercial products supporting the development of process-oriented applications. They have also been used to evaluate a number of proposed standards, including BPEL, BPMN, UML Activity diagram, XPDL, etc. It has been noted that not all these patterns are relevant in all application domains, so care must be taken when using the above workflow patterns to select a particular language or system for a given application.
The workflow patterns have also been used as initial requirements in the design of a workflow language and open-source system called YAWL (Yet Another Workflow Language).