Workflow in a laboratory context refers to the movement of resources through a series of steps. Sequential movement and transformation of data alone can be managed using a data integration pipeline
. A workflow process comprised entirely of steps performed by people can be managed using the issue tracker
When the workflow includes a combination of human and system tasks, decision points within the flow, and may involve parallel or repeating tasks, a business process management system can be designed to track and manage the workflow. The Workflow
module supports using BPMN 2.0 compliant workflows within LabKey Server.
Business Process Modeling & Notation 2.0 is a graphical notation for representing business processes. The LabKey workflow module is built on the open-source Activiti BPM Platform
. Process diagrams like the following show the work proceeding along the arrows. Tasks are shown in rectangles with a cog icon indicating a system task; a person is shown for a human task. Events (such as starts, stops, messages exchanged among processes) are shown as circles. Gateways (decisions) are shown as diamonds - an 'X' indicates an exclusive gateway (only one outcome is possible) while a '+' indicates a parallel gateway enabling the launch of parallel processes from that point.
Activiti implements a large subset of the full BPMN 2.0 standard, including many more options than those shown above. For more options, see Activiti BPMN 2.0 Constructs
The workflow module includes:
- API: a wrapper around Activiti objects, with interfaces and base classes for various types of workflow activities.
- Database: holds the workflow schema in which tables are created.
- Resources: the workflow process definitions.
- Permissions Handler
- Email Notifier: enables sending of email from a workflow process.
- System Task Runner
- Boundary Event Handlers
Note that developers will need to provide their own user interface for interacting with the Activiti workflow, for example to initiate and guide the workflow between states. (See the tutorial
for a simple JSP example.)