工作流程引擎主要由各种流转模式、对外提供的各类接口和内部调用接口组成。
其中流转模式包括:基本控制模式、先进的分支和同步模式、迭代模式、基于状态的模式、取消模式以及多实例模式。下面对上述的几种模式进行详细描述。
一、基本控制模式
1、顺序模式
顺序模式是最基本的工作流模式。当两个或更多任务间存在依赖关系时需用顺序模式——在前一任务完成之前,本任务不能执行(调度)。
在同一流程中,一个任务在另一任务完成后才能被激活。顺序模式主要用于对工作流程中连贯的步骤建模。
同义词:顺序路由,串行路由。
2、并行模式
当两个或更多任务需并行执行时需要并行分叉。除不要求任何程度并行支持的系统外大多数工作流引擎都较易支持并行分叉。
在流程中,需将单进程的某控制点分成可并行执行的多进程控制,于是允许任务同时执行或以任何顺序执行。
所有的工作流引擎都可能支持并行任务。可区分两种基本的方法:显性与分叉和隐性与分叉。支持显性与分叉结构的工作流引擎(诸如:Visual Workflow)可激活多个流出转移的路由选择节点。支持隐性与分叉的工作流引擎(如MQSeries/Workflow) 不提供特殊的路由选择结构――每个任务可有多于一个的流出转移,且每个转移都有相关条件。为达到并行执行的目的,流程设计者须保证流出转移的多个相关条件为真(典型的方法是将条件置为空)。
同义词:与分支,并行路由, 分叉。
3、同步模式
当两个并行任务都完成后下一任务才能开始执行时需要同步。
在流程中,多个并行子流程/任务在某点汇聚成一个单进程,从而同步多个进程。
4、条件选择模式
在流程的某一点,依据一个结果或流程控制数据, 从多个分支路径中选定一个路径。
类似于“并行分叉”,有两种基本策略――某些工作流引擎提供显性的结构以实现“条件选择”模式 (譬如Staffware, Visual WorkFlow), 但是在其它工作流引擎 (MQSeries/Workflow, Verve)中,流程设计者不得不选择转移条件仿效“条件选择”。
同义词:异或分叉,条件路径,开关,决议。
5、简单合作模式
欲将选择执行的路径合并成一个路径需用“合并”模式。
在流程中某点,需将两个或更多可选分支合并而不同步;换言之,“合并”在任一入口达到时被触发。
同义词:异或连接,异步连接,合并。
二、分支和同步模式
1、多路选择模式
排它模式采取的是只有一个可选项被选定并执行,亦即它对应于排它或。有时,要用到从给定的一组选项中选定多项(而非一项)的结构,于是,引入(非排它)多路选择。
在工作流过程的某点,依据判定或工作流控制数据,选择一个或多个分支。
很多工作流管理系统中,or上可以定义条件。这些系统中可直接实现OR-分叉,但是有几种工作流管理系统不能在or上设置条件,仅提供纯粹的AND-split和XOR-split建模元素 (例如Staffware)。正如所述,对于可在or上设置条件的工作流管理系统 (诸如Verve, MQSeries/Workflow, Forte Conductor)实现多重选择是直截了当的,流程设计者只需简单地设定每一路由的条件即可。值得注意的是多重选择是并行模式和排它选择选择模式的泛化。
2、多路同步合并模式
本模式旨在阐述简单合并模式中提及的问题, 即当一个合并中有多于一条流入路由被激活时的情形。
多路同步合并是指在流程中某点,两条或更多分支同步后再合并。若多于一个分支被激活,可能同时被激活,任务后的合并对于每条流入的激活分支只响应一次(亦即,在上图中,D将被实例化一次)。
3、多路异步合并模式
多路异步合并是指在流程中某点,两条或更多分支无同步再合并。若多于一个分支被激活,可能同时被激活,任务后的合并对于每条流入的激活分支都响应一次(亦即,在上图中,D将被实例化两次)。
4、路由鉴别模式
本模式可以看作多路合并模式的逆。其语义是合并后仅一个任务应被实例化。
路由鉴别模式是指在流程的某点,激活后续任务之前等待许多流入分支的完成。从它开始之时起,等待所有剩余分支的完成并“忽略”它们。一旦所有的流入分支都被触发,它使自己复位,以便可被再次触发。
5、M中选N合并模式
M中选N合并模式可视作路由鉴别模式的泛化,意欲从M个流入路由中同步N个线程。
M中选N合并模式是指流程的某点M 条并行路径聚合到一点,只要其中N条路径完成则激活后续任务,所有其它剩余路径的完成应被忽略。类似于路由鉴别模式,只要所有流入分支被触发,则该合并使自己复位,以便可被再次触发。
同义词:部分合并,定制合并。
三、迭代模式
1、任意循环模式
在工作流分析/设计期间,人们不希望受各种各样工作流定义工具的语法约束,诸如循环仅有一个入口一个出口。事实上,为正确抽象, 工作流引擎应允许无约束模型的执行,也许更利于最终用户跟踪过程的执行。
任意循环模式指在流程中,一个或多个任务可被重复执行。
同义词:循环(loop), 叠代(iterate), 周期(cycle)。
2、结构化循环模式
结构化循环是指利用路由将不同的节点连接为一个循环的模式,使得流程中的某些节点可以循环执行。