工作流(Workflow)、业务流程管理(BPM)工作流引擎、业务流程引擎在国内的使用已经有不少年头,不过好像多在传统OA、少量在ERP领域,而在比较典型的互联网应用中,似乎比较少,大家还是习惯硬编码,专门研究这一块的就更少了。
学生时代在一个研究所里混的时候,开发过一款小型的公文流转系统,第一次涉及到工作流的概念和开发实践,这已经是04年左右的事情了,往后的走马观花的各种项目经历中,竟然再没有沉下心来仔细研究过这一块。
今年年初的时候,想到这个主题,在微信读书上搜到了国内人士写的《流程永恒之道》一书,算是少有的既有理论又有实战的难得之作了。后来买了纸质书,洋洋洒洒有460多页,而这还未算上两位作者翻译的《工作流模式附录》143页。
这本书附录的两位作者翻译的《工作流模式》,包含了 A、工作流控制模式、B、工作流资源模式、C、工作流数据模式、D、工作流异常处理模式四个方面的内容。PDF格式查阅起来,未免还是有少许不便,于是想着所以看看能否通过超文本的形式组织一下,推广更多软件开发中流程化建模思维。
版权声明:工作流模式版权归 Workflow Patterns 组 织 ( http://www.workflowpatterns.com ) 所 有 。 经 Workflow Patterns授权,中文简体版由辛鹏和荣浩翻译。未经译者书面许可,不得将该中文简体版用于商业目的。
模式最早出现在C. 亚历山大的《建筑的永恒之道》里。在这本建筑学的经典巨著里,亚历山大说:“永恒之道是一个唯有我们自己才能带来次序的过程,建筑或城市只有踏上了永恒之道,才会生机勃勃。” 建筑模式,就是通往这条永恒之道的大门。亚历山大描述了253个建筑模式,这些模式和那里发生的事件一起赋予城市和建筑以特征。模式语言则是对应于那些使建筑美妙并 加以深刻观察的模式的集合,它综合了我们对建造的认识。建筑的永恒之道正在于建筑模式, 在于我们对建筑的认知达到一致即拥有共同的模式语言,在于我们真正遵循了自己的内心和顺其自然。
工作流模式亦是如此,它紧紧抓住了在我们周围发生的事件,赋予不同组织以特征。处处讲流程,处处明确职责,这是大企业;处处讲特色,处处要干预,这是政府机构;处处讲人,处处 要求通才,这是创业公司。如何把某个创造价值的活动拆分成不同的活动,如何将这些活动协调 整合起来,以便实现最终目标,不仅关系到流程,也关系到组织结构,更关系到人。
工作流模式分为4种:控制模式、资源模式、数据模式和异常模式。
- 控制模式关注对流程进行建模,将商业目标的实现根据组织所进行的工作和现有的技术体系拆分成一系列的活动。
- 资源模式关注组织内部资源的协调。
- 数据模式关注流程中信息的传递。
- 异常模式关注流程执行过程中出现偏离期望的情况。
但不管是控制模式、资源模式、数据模式,还是异常模式,它们一致的核心都是人,人,永远是管理中的核心。
A、工作流控制模式
工作流控制模式共有43种,分为8组,分别是基本控制模式、高级分支和同步模式、多实例 模式、状态模式、取消和强制完成模式、迭代模式、结束模式和触发模式,如图A-1所示。
图 A-1 控制模式
- 基本控制模式关注流程里最基本的顺序、并发、条件和合并路由,是其他控制模式的 基础;
- 高级分支和同步模式关注流程里更复杂一些的分支和同步场景;
- 多实例模式关注活动在一个流程实例中多次执行的场景;
- 状态模式关注流程实例状态对流程执行所产生的影响;
- 取消和强制完成模式关注流程实例/活动的取消,这通常与工作流异常相关;
- 迭代模式关注流程实例里的重复行为;
- 结束模式关注什么情况下流程实例执行结束;
- 触发模式关注外部环境变化对流程活动的影响。
工作流控制模式的出发点基于对实际业务的描述,而工作流系统对模式的支持程度则直接决 定了该系统对业务的建模能力。所以,衡量一个工作流系统时,必须考虑其对工作流模式的支持 程度。
B、 工作流资源模式
工作流资源模式共有43种,根据工作项所处的不同阶段以及状态变迁,分为7组,即创建模 式、推模式、拉模式、折回模式、自动开始模式、可见性模式和多资源模式,如图B-2所示。
图B-2 工作流资源模式的分类
- 创建模式位于工作项生命周期的创建阶段,作为流程模型的一部分在流程定义期指定活 动的分配规则,限定执行该活动的资源范围;
- 推模式将创建完毕的工作项与满足分配规则的资源进行匹配,将工作项推送给资源,资 源本身不做出选择;
- 拉模式则是资源把工作项与自身进行匹配,考察其能够执行的工作项并选择执行,资源 是主动的;
- 折回模式对应着由于各种原因所导致的工作项状态的反复和回退;
- 自动开始模式提供一种系统驱动工作项执行的方式,表明工作项的高优先级,需要马上开始执行;
- 可见性模式讨论各种不同资源对工作项的可见性,与管理权限相关;
- 多资源模式讨论一个资源执行多个工作项和多个资源执行同一个工作项的特殊情况。
C、 工作流数据模式
在WfMC的工作流模型里,工作流数据被分为了3类,如图C-1所示。
图C-1 WfMC的工作流数据分类
- 工作流控制数据:工作流系统管理的内部控制数据,这些数据包括了与流程实例和活动 实例相关的执行数据和状态数据,例如流程实例的状态、执行时间、工作项的执行者、 执行时间、状态、紧急程度等。
- 工作流相关数据:工作流系统使用工作流相关数据确定流程实例的流转条件,并选择下 一个将执行的活动,这些数据由业务系统访问并修改。例如报销流程中的“报销金额”, 这个数据会决定该流程的审批路径;再例如为活动设置的超时时间,这个数据会触发活 动的取消。这些数据是工作流系统需要依赖进行流程流转的业务应用数据。
- 工作流应用数据:业务系统管理的业务数据,工作流系统不能访问。
D、工作流异常处理模式
异常分类,流程执行过程中的异常分为五类,如图D-1所示。
图D-1 工作流异常分类
- 工作项执行失败:工作项所代表的工作不能继续执行或无法按照期望完成。导致工作项 执行失败的原因有很多种,与该工作项相关的硬件故障、软件故障或网络故障都会导致 活动参与者无法正常执行该工作项,同时活动参与者也可能会自己中止该工作项的执行 或者直接放弃。
- 超时:工作项未在指定的时间点完成或未在指定的时间点开始执行。
- 资源不可用:没有可用的资源执行或完成工作项。有两种情况,一是分配工作项时系统 找不到满足执行该工作条件的资源(人手不够,资源被占用),二是工作项执行过程中,先前指定的资源不能继续或无法执行该工作项(生病、离职、调动)。
- 外部触发:外部触发通常表现为事件,组织外部的事件影响正在执行中的工作项。例如 用户突然取消订单会导致订单处理流程中所有工作项的中止,并伴随着业务回滚(收回 发货)。
- 违反约束:工作流约束包括流程流转的约束(流程死锁,不能继续执行,进入死循环)、 数据的约束、资源的约束(超出当前组织资源所能达到的能力)以及业务约束。工作流 系统运行过程中需要保证流程执行的合理性和一致性,需要对流程执行状态进行持续的 监控。