模式(pattern)是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,就是模式。它是一种指导,是一种解决某类问题的最佳实践。借助于模式,我们可以利用前人的经验和智慧,做出优良的设计方案,达到事半功倍的效果。
工作流模式是解决流程类问题的方法论,是解决流程问题的最佳实践。工作流领域同样存在着大量的不断重复出现的时间,从这些实践中发现和抽象出规律,并找到解决这些重复问题的解决方案,对这些问题及其解决方案进行归纳总结,就形成了各种各样的工作流模式。
1999年,由荷兰埃因霍温大学的Wil van der Aalst教授与昆士兰大学的Arthur ter Hofstede教授联合创立了Workflow Patterns Initiative,并提出了工作流模式的概念。两位教授一共总结了21种工作流模式(其实是21种控制模式)。2004年,Nick Russell教授加入Workflow Patterns Initiative,并扩展提出了工作流数据模式和资源模式。2005年扩展出了异常模式,2006年工作流控制模式被扩展到了43种模式。经过多年的发展,工作流模式被分为了控制模式、资源模式、数据模式、异常模式四大类。
本文先介绍一下工作流模式之控制模式。控制模式是流程的中枢神经,负责将多个单独的活动组合在一起,并推动活动的自动化流转,形成流程。其重要性不言而喻,因此要设计一个好的流程,就必须学会应用各种各样的控制模式。
在这里,我们一同来探寻21种控制模式:
基本模式(5个):
1.顺序模式(Sequence)-- 即串行模式,按照顺序执行各项活动;
2.单选模式(Exclusive Choice) -- 即排他选择,从多个路径种选择一个执行;
3.并行分支模式(Parallel Split) -- 并行执行活动;
4.简单合并模式(Simple Merge) -- 合并两个或多个执行路径;
5.同步模式(Synchronization)-- 并行执行的活动同步汇聚,全部完成后才可触发下一活动;
高级分支与同步模式(5个):
6.多选模式(Multiple Choice) -- 基于决策或者业务规则,从多个可选路径中选择几路执行;
7.多路合并模式(Multiple Merge)-- 异步合并多个执行路径;
8.同步连接模式(Synchronizing Join) -- 合并多个执行路径,若多路执行则同步;若一路执行则简单合并(Simple merge);
9.路径鉴别模式(Discriminator) -- 异步合并多个执行路径,但并发任务仅执行一次;
10.M并N模式(N-out-of-M Join) -- 合并多个执行路径,实现部分同步,并发任务仅执行一次;
结构模式(2个):
11.强制循环模式(Arbitrary Cycles):工作流中的一个点可以让一个或多个活动反复的执行。
12.隐式终止模式(Implicit Termination):一个子过程应该在没有什么事情可做的时候被停下来。换句话说,在工作流中没有别的活动在执行并且没有活动可被激活的时候终止。
多实例模式(4个):
13.异步的多实例模式(Multiple Instances - Without Synchronization)
14.在设计期间预先确定的多实例模式(Multiple Instances - With a Priori DesignTime Knowledge)
15.在运行期预先确定的多实例模式(Multiple Instances - With a Priori RuntimeKnowledge)
16.无法在运行期预先确定的多实例模式(Multiple Instances - With no Priori RuntimeKnowledge)
基于状态的模式(3个):
17.延迟选择模式(Deferred Choice)
18.交替平行路由模式(Interleaved Parallel Routing)
19.里程碑模式(Milestone)
取消模式(2个):
20.取消活动模式(Cancel Activity)
21.取消实例模式(Cancel Instance)
在Workflow Pattern官方网站上还将控制模式分为了8个类别43种模式,这8个类别是:基本控制模式、高级分支同步模式、多实例模式、状态模式、取消和强制完成模式、迭代模式、结束模式以及触发模式。在日常应用中,以上讲的5种模式是BPM业务流程管理中最常用的控制模式。
国内流程实际应用中,很多流程都是人工流程(Human-Centric)。由于管理模式的中国特色,这类流程常常应用到以下模式, 是对工作流21种控制模式的应用和补充:
会签模式(Vote)- 即会审或表决,流程中某个业务需要经过多人表决,并且根据表决意见的结果,决定流程的走向。流程设计阶段可设定会签参与者,流程运行阶段可动态改变会签的数量和参与者,支持对静态设置的加签、减签和改签;
多轮签核模式(M-Vote)- 重复多轮循环执行一个或者多个会签环境,对签核记录根据轮次进行记录和展现;
动态代理模式(Dynamic Delegate) - 流程运行阶段当前环节委托其他参与者代为办理,完成后不再回到当前环节;
驳回模式(Return) -- 即退回模式,流程环节需要返回任何一个前驱环节 ;
收回模式 (Recall) – 即取消模式,在办理人签收或者办理之前,被上一环节的办理人收回;
抄送模式(Copy) – 在流程办理的任何环节人员,都可以根据需求把流程抄送给相关人员进行查看,不需要任何审批。
自动跳转模式(Auto Jump) -流程流转过程,如当前环境和下一步是同一人,能够自动跳过下一环节,类似发起人和主管是同一人的情况;
流程模式是由Workflow/BPM 行业专家总结的公认常见的业务流程标准化的实现方案,是被验证过的最佳实践,有利于统一实现和控制各类业务流程。可以说,工作流模式是流程的灵魂,对工作流模式的支持程度是衡量工作流系统的核心指标。