Workflow at its simplest is the movement of information and/or tasks through a work process. More specifically, workflow is the operational aspect of a work procedure: how tasks are structured, who performs them, what their relative order is, how they are synchronized, how information flows to support the tasks (wordflow) and how tasks are being tracked. As the dimension of time is considered in workflow, workflow considers "throughput" as a distinct measure. Workflow problems can be modeled and analyzed using graph-based formalisms like Petri nets.
While the concept of workflow is not specific to information technology, support for workflow is an integral part of document management and imaging software. Since 1993, one trade consortium specifically focused on workflow management and the interoperability of workflow management systems has been the Workflow Management Coalition.
Distinction can be made between "scientific" and "business" workflow paradigms. While the former is mostly concerned with throughput of data through various algorithms, applications and services, the latter concentrates on scheduling task executions, including dependencies which are not necessarily data-driven and may include human agents.
Scientific workflows found wide acceptance in the fields of bioinformatics and cheminformatics in the early 2000s, where they successfully met the need for multiple interconnected tools, handling of multiple data formats and large data quantities. Also, the paradigm of scientific workflows was close to the well-established tradition of Perl scripting in life-science research organizations, so this adoption represented a natural step forward towards a more structured infrastructure setup.
Business workflows are more generic, being able to represent any structuring of tasks, and are equally applicable to task scheduling within a software application server and organizing a paper or electronic document trail within an organization. Their origins date back to the 1970s, when they were purely paper-based, and the principles from that period made the transition to modern IT infrastructure systems.
The key driver to gain benefit from the understanding of the workflow process in a business context is that the throughput of the workstream path is modelled in such a way as to evaluate the efficiency of the flow route through internal silos with a view to increasing discrete control of uniquely identified business attributes and rules and reducing potential low efficiency drivers. Evaluation of resources, both physical and human is essential to evaluate hand-off points and potential to create smoother transitions between tasks.
As a way of bridging the gap between the two, significant effort is being put into defining workflow patterns that can be used to compare and contrast different workflow engines across both of these domains.
In general, "workflow automation" is most appropriate for work in which human involvement is limited to key data entry and decision points, however, "workflow management" relates to the broader discipline of how information, roles, responsibilities, and content or "state" work move along within a given business process. For innovative, adaptive, collaborative human work the techniques of Human Interaction Management are required.
Single steps or components of a workflow can basically be defined by three parameters:
- input description
- transformation rules, algorithms
- output description
Components can only be plugged together if the output of one previous (set of) component(s) is equal to the mandatory input requirements of the following component. Thus, the essential description of a component actually comprises only in- and output that are described fully in terms of data types and their meaning (semantics). The algorithms' or rules' description need only be included when there are several alternative ways to transform one type of input into one type of output - possibly with different accuracy, speed, etc..
Especially when the components are non-local services that are invoked remotely via a computer network, like Web services, additional descriptors like QoS, availability, etc. have to be considered, too.
A Workflow Application is where various applications, components and people must be involved in the processing of data to complete an instance of a process. For example, consider a purchase order that moves through various departments for authorization and eventual purchase. The orders may be treated as messages, which are put into various queues for processing. A workflow process involves constant change and update. You can introduce new components into the operation without changing any code.
There are two ways of developing workflow applications. The first one is to design workflow models in a dedicated language and then to link the tasks in these models to worklist handlers (for human tasks) or software applications (for automated tasks). Workflow languages usually come with an associated graphical notation, but some are textual or XML-based. Languages that can be used for workflow definition in this way include:
- Dedicated workflow specification languages:
- Executable process definition languages based on Web Services:
- Job Definition Formats
Another approach to develop workflow applications is to use a programming language in conjunction with libraries and interfaces that capture abstractions for task coordination. The following are examples of such libraries and interfaces:
- Windows Workflow Foundation
- Workflow OSID
It is also possible to use languages designed for business process modeling (e.g. the Business Process Modeling Notation) to specify workflows. However, to fit the purpose of workflow specification, such notations need to be enhanced with additional constructs to capture data passing, data transformations and routing conditions, to bind tasks to their implementation, etc. Indeed, business process modeling is about capturing business processes at a higher level of abstraction, in order to enable their analysis through methods such as simulation. Meanwhile, workflow specification is about capturing processes at a level of detail that is sufficient to enable their execution.
For the purpose of static analysis, e.g. to detect semantic errors at design-time, it is also possible to represent workflow in a mathematical form using formal notations such as Petri nets.