流程引擎介绍

上海派拉软件基础产品部--刘声斌
0、为什么要使用工作流引擎
假定我们有一个支付订单状态需要维护,它的状态图如下:
它的状态跃迁自左向右,清晰名了,而且没有处理角色的概念,此时我们使用代码控制好状态流转即可,无需使用框架。

再来看另外一个场景,假定我们有一个企业内部采购订单,它的状态图如下:

这个采购订单的状态复杂多变,状态的转换不稳定性很强,随时有可能增加新的状态;而且不同状态的处理人也是不同的,存在权限管理功能,若此时我们仍然使用一个状态字段来维持状态变更,无疑会困难重重。
工作流引擎就是为了解决这类问题而生的,我们可以观察当前实体(如支付订单、采购订单)是否具有如下特性,由此来确定是否需要引入工作流引擎。
状态的个数及其稳定性,个数多且不稳定,适合使用工作流引擎。
每个状态的处理人,处理人角色多且不稳定,适合使用工作流引擎。
工作流引擎实际上是放大了状态管理的功能,它根据既有流程图(基于 BPMN2.0 规范)的指示,指定每一次状态跃迁的处理角色,在状态变更时持久化评论、表单、附件等数据,保存了完整处理轨迹。
工作流引擎最常见用于审批流程中,现在一线互联网公司也开始使用,并有快速推广的趋势,复杂繁多的业务流程如果采用 if else 实现那将是崩溃的,代码不可维护,业务流程在代码中可读性很差,所以高人设计了业务流程模型图示 BPMN2.0 规范,我们要做到就是把业务场景抽象为标准流程图,把流程图丢到流程引擎中按流程定义约定逐步流转,很显然扩展性和业务可描述性会好很多,所以工作流引擎主要用于解决复杂的业务,目前经常被提起的中台系统抽象业务为服务,也涉及大量智能的业务流程引擎做支撑。
1、工作流概念
1.1 流程的定义
从最朴素和最直接的角度看,我们按照条理和顺序做事情的过程,就是流程。
流程之父迈克尔.哈默是这样定义的: 流程是把一个或多个输入转化对顾客有价值的输出的活动。
李.克拉耶夫斯基和拉里.里茨曼在其《运营管理--流程与价值链》第 7 版中是这样定义的:
流程是一种或一组活动,这些活动利用一个或多个输入要素,对起进行转换并 3 使其增值,向顾客提供一种或多种产出。
我们的理解是:
流程就是一组活动按照一定的顺序组成的序列流,其顺序可能是串行的、并行的,或者两者的组合模式,例如面包制作流程中的“混合原料”,“揉面醒发”,“整形”,“烘烤”等活动。
综上所述,流程一般具备六个要素:输入、活动、活动间的相互作用、输出、流程的服务对象和价值。
如下图所示:

1.2 工作流参考模型
1993 年,工作流管理联盟(WfMC)成立,接着发布了著名的工作流参考模型(如下图所示)及接口规范。2002 年 10 月 25 日,WFMC 发布了 XPDL 1.0 规范(WFMC-TC-1025)、规范流程定义的 XML 描述形式。

WFMC 定义的 5 类接口的功能:
接口 1:过程定义输入输出接口,工作流服务和工作流建模工具间接口,包括工作流模型的解释和读写操作;
接口 2:客户端函数接口,工作流服务和客户应用之间的接口,这是最主要的接口规范,它约定所有客户方应用与工作流服务之间的功能操作方式;
接口 3:激活应用程序接口,工作流机和直接调用的应用程序之间的直接接口;
接口 4:工作流执行服务之间的互操作接口,工作流系统之间的互操作接口;
接口 5:系统管理与监控接口,工作流服务于工作流管理工具之间的接口;
1.3 主要应用场景
一般 OA 都内置有一个轻量级的审批流引擎,适用于办公协同领域。BPM 呢,在中国主要适用于流程化信息化程度较高的制造业、零售业、房地产、金融业和政府事业单位,可以应用在企业战略、运营、管理等从上到下的各个场景。BPM 主要为这些行业中体量较大的公司客户服务。
2、 工作流规范简介
20 世纪 70 年代中期,工作流出现并运用于办公自动化领域,使流程管理技术第一次有了系统的技术规范。20 世纪 80 年代 初期,工作流伴随着 OA 系统走向商用,但是应用范围有限。至 80 年代后期,OA 系统的研究被群件和工作流管理系统所代替。20 世纪 90 年代以后,相关技术逐渐成熟,工作流管理联盟(WfMC)成立并发布了工作流参考模型。进入 21 世纪, BPM 更进一步发展。SOA 的出现使得流程管理技术从工作流转向业务流,基于此的一系列规范也相应被推出。

发展到目前,BPMN 规范最完善,现在主流工作流引擎产品,大多基于 BPMN2.0 规范实现的,这里只介绍 BPMN2.0 规范。
2.1 BPMN2.0 规范
业务流程模型和标记法(BPMN, Business Process Model and Notation)是一套图形化表示法,用于以图形的方式详细说明各种业务流程。
它最初由业务流程管理倡议组织(BPMI, Business Process Management Initiative)开发,名称为”Business Process Modeling Notation”,即“业务流程建模标记法”。BPMI 于 2005 年与对象管理组织(OMG, Object Management Group)合并。2011 年 1 月 OMG 发布 2.0 版本(时至今日,没人会用 1.0 版本了),同时改为现在的名称。
BPMN2.0 规范的实现,实质上是一个按照特定规范编写的 XML 文件,使用特定的 BPMN 设计器,即可以图形化的形式查看和编辑该文件。Camunda,Activiti,Flowable 等主流的 java 开源流程引擎,以代码的形式实现了这套图形化表示法,使任务的流转依赖图形,而非具体的实现代码。
UML vs BPMN
UML 和 BPMN 之间唯一的正式关系是 OMG 维护两个开放标准。
UML(统一建模语言)作为一种可视化的建模语言,其中的活动图也适用于流程建模,但其支持深度不够。
BPMN 诞生时间晚于 UML,据称从某种意义上讲,UML Activity Diagrams 是 BPMN 的一个子集,也是 BPMN 的历史前身。
BPMN2.0,流程主要涉及的对象:


如上图所示,BPMN2.0 规范主要包含了三个部分 Activities(活动)、Gateway(网关)、Event(事件)。
下图在线流程设计器,设计的流程图效果如下:

2.2 流程技术发展历史
流程管理思想及方法论的发展,深刻影响着流程技术的发展,而流程技术的发展也反过来促进了流程管理思想的发展,二者相辅相成,互相促进。流程技术的发展大概经理了三个发展阶段:
工作流技术阶段
工作流技术在以“信息技术驱动的技术流程自动化”管理思想为主导的时代进入了新的热潮。此阶段的主要技术是 OO 技术、Web 1.0 及 ERP、OA 等,而 ERP 及 OA 都是基于工作流技术的应用。
BPM 技术阶段
在“业务流程为主导的管理思想”时期,业务流程管理系统/套件(BPMS)出现了,BPMS 所要解决的问题是怎么以业务流程为中心全面串联企业的经营活动。要达到这个目标,首先要全面梳理和设计企业的所有业务流程,最终通过 BPMS 进行落地实现。在这个时期,出现了 Web 服务,SOA 和 ESB(企业服务总线)等技术。
BPM 治理阶段
为了提高 BPM 实施的成功率及投资回报率而引入了一些新的管理思想和技术,这些管理思想及技术终极目标还是围绕 BPM 的。

流程规范、技术进展技术路线图
3、工作流和 BPM 的区别
啥叫 BPM,来点小科普。讲 BPM,我们首先就要清楚什么叫业务流程,或者说什么是业务,然后才能明白什么叫业务流程管理。
业务流程简单来说就是业务处理流,或者说业务的流转过程。这里重要的不是“流程”二字,而是“业务”二字。注意,类似于请假不能算是企业的“业务”。例如,你去见一个新客户,客户问你,你的公司主要做什么业务?你总不能说我们公司是做“请假”业务的吧?那么到底业务流程关注的是什么样的业务呢?一句话,对顾客产生价值的流程就是我们这里所关注的“业务流程”。
产品和服务的设计与开发
产品和服务的市场营销与销售
产品和服务的交付
客户服务管理
业务流程管理是一种以规范化地构造端到端的卓越业务流程为中心,以持续地提高组织业务绩效为目的的系统化管理方法。
3.1 定义不同
工作流系统是指通过电子版代替纸质版帮助企业处理所有内部事务,实现各种审批工作,支持协同工作中的一部分。
BPM 系统即业务流程是指企业、政府以及其它各种组织,为了达到其业务目标,利用技术实现业务自动化,协助企业业务发展。
3.2 流程架构不同
工作流系统是从企业内部出发,单一只对企业本部门或者本业务的业务需求,部门与部门之间流程无法衔接,信息的共享和传递困难,存在大量流程断点。
而 BPM 系统可以实现各流程之间可以衔接、协调,避免了流程孤岛的产生。同时,在激烈的市场竞争环境下,对提高整个业务流程运行的效率、成本、等满足客户的需求。
3.3 应用不同
工作流系统是为帮助企业解决“办公自动化”、“流程自动化”而诞生的应用技术,却不对业务流程进行优化的,功能较单一。
而 BPM 系统可以对业务全过程进行管理,如分析,整合、协助等,确保工作流能够按计划实施。
3.4 集成功能不同
工作流系统只能对单一业务进行处理。
BPM 可以帮助软件开发人员来集成第三方的应用软件。例如 ERP、PLM、财务软件等可以通过 BPM 平台进行集成。
3.5 流程的持续改进不同
工作流系统由于业务人员对其缺少认识和关注,及工作流系统本身缺少对内部业务的连接,因此很难对流程进行持续改进。
而 BPM 系统由于可以帮助业务人员密切关注信息系统内嵌流程与其它业务流程衔接关系,可以及时进行流程的调整、改进等,最终是为了优化、提升和自动化处理业务流程。
总之,随着信息技术的高速发展,业务不断扩大,工作流技术一直是企业信息化建设不可或缺的一部分。不管是办公自动化 OA 系统,还是企业 ERP 系统的部署,利用工作流系统和 BPM 系统都是可以提高企业运行效率的。


4、市场上工作流厂商分类
只提供工作流产品。这类厂商产品单一,尽管产品质量能够得到保证,但是发展最为困难。技术在这里不是第一竞争力。
提供工作流产品和快速开发平台。这类厂商在工作流的基础上提供开发框架进一步简化编程,相比第一类厂商会更有竞争力,但是其发展受到系统集成商的限制。
提供工作流产品和业务套件/平台,同时自己接项目。与单纯的快速开发平台相比,业务平台显然站在了一个更高的层次上。在软件开发中,最大的浪费往往并不在于技术本身,而是在于对业务的不熟悉,在于核心领域模型的频繁变动。对用户而言,根据需要选择合适业务平台和相关服务无疑能够产生最大的价值。这是目前生存状态比较好的厂商,多是老牌厂商或是有充足的资金。业务套件/平台能够给用户提供最大的价值。在任何时候,直接面对最终用户就是王道。
工作流厂商的机会在哪里?
最重要的就是,将产品面向最终用户。
提供行业应用业务套件。能够做到对某类应用的快速实施,很多功能能够做到开箱即用。
转向 BPMS。这个需要两方面的努力:一是业务方面需要与业务流程咨询公司进行合作;二是产品需要增加 BPMS 特性。
自己做项目。大公司靠财务,小公司靠销售。

5、流程引擎发展趋势
5.1 趋势一:中台化
对于信息化软件的演进,从流程线和开发部署方式两条线来看,分别从轻到重和从重到轻发展,交汇于数字中台。从部署 开发一线来看,传统的开发部署模式时间长、成本高、系统割裂,不能满足企业实现“成本效益”的需求,因而数字中台 转型成为必然的选择。

5.2 趋势二:低代码
需求端的 复杂多变对软件开发提出了新的要求,市场要求软件的开发的速度越快越好、交付时间越来越短,“低代码”应运而生。 BPM 在未来也将充分与低代码相结合,BPM 的低代码化主要包含设计端的应用。开发人员寻找通用的开发活动,然后为 所有环节构建一个基本代码并将它们封装在某个可视化的模块里。基于这些模块,业务人员就可以通过拖拉拽的方式,在 可视化的设计器上像“搭积木”一样,对表单、流程和应用进行搭建。这种方式极大地提高了软件开发的敏捷性,同时实 现了“以客户为中心”,使公司更好的响应市场。
5.3 趋势三:智能化
业务流程管理(BPM)已成为企业内部优化的选择。流程的优化通过节省时间并降低成本为公司带来竞争优势,使员工更 有效地工作。随着市场的成熟度日益提高,各种新兴技术不断发展,BPM 自身也需要与时代结合,不断发展。未来 BPM 将进一步与 RPA(机器人流程自动化)、AI(人工智能)等智能化技术相结合,为企业提供更敏捷、优质的服务。
6、开源流程引擎
目前 java 主流的开源流程引擎,有 jBPM,Activiti,Camunda,Flowable 等。












评论 (1 条评论)