深入Activiti流程引擎:核心原理与高阶实战

978-7-115-60004-2
作者: 贺波胡海琴刘晓鹏
译者:
编辑: 郭泳泽

图书目录:

详情

本书主要介绍业务流程管理的实战落地应用,全书分为4篇:基础理论篇,包含流程的基本概念、业务流程管理的历史、业务流程管理体系;常规应用篇,包含Activiti开发环境准备、使用IDEA和Eclipse开发Activiti工作流、流程设计工具,以及Activiti核心架构、工作流引擎配置、用户管理、流程部署、表单管理等内容;高级实战篇,包含Spring Boot和 Activiti的其他实践和应用;架构扩展篇,包含多引擎架构、性能优化、流程稳定性保障。
本书适合从事业务流程管理的技术人员阅读。

图书摘要

版权信息

书名:深入Activiti流程引擎:核心原理与高阶实战

ISBN:978-7-115-60004-2

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

编  著 贺 波 胡海琴 刘晓鹏

责任编辑 郭泳泽

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e60004”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。

内 容 提 要

本书主要介绍业务流程管理的实战落地应用,全书分为4篇:基础理论篇,包含流程的基本概念、业务流程管理的历史、业务流程管理体系;常规应用篇,包含Activiti开发环境准备、使用IDEA和Eclipse开发Activiti工作流、流程设计工具,以及Activiti核心架构、工作流引擎配置、用户管理、流程部署、表单管理等内容;高级实战篇,包含Spring Boot和 Activiti的其他实践和应用;架构扩展篇,包含多引擎架构、性能优化、流程稳定性保障。

本书适合从事业务流程管理的技术人员阅读。

作者简介

贺 波

国内资深的工作流及BPM领域专家,专注于流程领域十余年,长期致力于BPM技术及相关产品的研发、应用和推广,擅长为国内外中大型企业提供以流程为导向的数字化解决方案。职业生涯中组织领导了多个大型软件平台项目的设计、开发与落地,具备全面的解决方案能力、分析及设计能力、组织实施能力。曾任东华软件股份公司技术总监,从零研发的BPM平台广泛应用于政府、银行、学校和企业等各种不同类型的商业化应用场景。现任滴滴出行高级企业信息化技术专家,流程平台部负责人,从无到有搭建BPM平台,实现了大型互联网综合平台各类差异化业务和复杂流程场景的落地,开创了同类互联网需求的BPM实施先例。

胡海琴

十多年来从事Java EE企业应用开发,曾经参与多个大型企业级项目的设计与开发工作,具有丰富的软件系统设计和开发经验。现就职于滴滴,任资深软件开发工程师,担任BPM功能设计与研发,积累了丰富的BPM开发的实战经验,对BPM技术的应用以及Activiti开源技术有较深刻的理解与认识。

刘晓鹏

拥有10年互联网系统研发、架构设计经验,对高并发、高性能、高可用等方面有丰富的设计经验。现就职于滴滴,任专家工程师,专注于流程领域,具有5年工作流引擎研发和架构设计经验,对Activiti的源码和设计原理有深入理解,负责BPM平台的研发。

推荐辞

我们公司的企业内部信息化团队一直致力于在业务规模化发展的前提下,通过信息化和数字化提升管理效率和员工体验。贺波带领的BPM团队在这个过程中从无到有搭建了完整的流程管理平台,有效支持了公司各类业务场景的快速落地和高效运转,并能通过数据洞察持续促进流程优化。本书立足于基础、着眼于实战,干货满满,是BPM领域一本不可多得的经典好书。

滴滴企业信息化高级总监 李 淼

BPM日渐成为企业不可或缺的基础。贺波先生多年磨一剑,将自己丰富的经验沉淀编写成书,通过深入浅出的结构、缜密的文字把BPM呈现给广大读者。通过阅读本书,读者会全面了解BPM的“道、法、术、器”,也会在实践BPM时得到它的帮助。

滴滴出行杰出工程师 齐 贺

多年前,我所在的企业高速发展,各种系统如雨后春笋般地出现,这带来了审批入口分散、审批不及时、流程难以跟踪、管理混乱等问题。当时我们想构建一套内部统一的BPM流程管理平台,却受限于内部没有专业的BPM人才、市面上没有足够专业详细的实战书籍供参考,只能摸着石头过河,遇到了很大的困难。研发负责人锲而不舍地“三顾茅庐”,终于请到了有丰富BPM实战经验的贺波加盟,BPM的建设才开始步入正轨。贺波在短短一年半内,与团队一起从无到有搭建了业界一流的BPM体系。这本书结合了贺波对BPM理论知识的梳理总结和多年BPM体系建设实战经验。如果你想要通过一本书对BPM的基础理论和实战落地有详细的了解,这本书会适合你。

滴滴产品运营高级总监 Mia

贺波曾是我指导的硕士研究生,学生的成功是老师的骄傲。贺波在学期间表现出极强的技术钻研精神,掌握了流程处理和自动化生成代码等方面的基础技术。在实际工作中,贺波对BPM平台搭建及兼容各种类型的业务需求进行了深入研究和实践,其研发的支持大型互联网公司各类业务的BPM平台在技术指标和应用数据等方面领先,为该领域的技术发展做出了不少贡献。本书系统整理了BPM平台的研发技术,为同行奉献了宝贵的技术指导和实践经验。

北京科技大学副教授 张庆华

业务流程管理是管理软件的灵魂,流程开发技术是软件技术人员的核心技术能力。贺波曾担任东华技术总监,带领产研团队从0到1建设BPM平台,并推动其商业化应用,取得了很可观的成果。他作为一线开发人员开始职业生涯,经过多年历练才成为BPN领域专家,一路走来积累了非常丰富的技术和行业经验。因此,本书理论性、实用性都很强,是难得的BPM技术教程。

东华软件股份公司高级副总裁 董玉锁

组织可以创造社会财富,维护社会秩序,推动社会进步。组织靠什么践行这些使命呢?当然是靠抱负、洞见和强有力的行动。而行动的持续有效依赖规则、流程和体系。在数字化时代,规则、流程和体系需要交给信息系统来管理,BPM应运而生。贺波先生的这本关于BPM的书将深刻的理论洞见和深厚的实践功底融合,我们不仅可以学习观念,而且可以实行“拿来主义”,直接复用作者的经验。

金融街集团CIO 邓遵红

BPM流程引擎是企业应用中常见的基础应用构件,虽然早在十多年前OMG就发布了BPMN 2.0规范,但在国内系统性介绍BPM基础理论,并以企业真实场景为例指导应用落地的专业书籍却少之又少,贺波老师的这本书很好地弥补了这一领域的空白。贺波老师作为这一领域的专家,持续耕耘在BPM理论研究与产品研发一线,书中大量的观点和代码都是作者本人在BPM领域多年研究开发的经验沉淀和最佳实践,对于企业级BPM开发与应用具有非常强的指导意义。难能可贵的是,本书理论与实战相结合,由浅入深,照顾到了不同阶段的学习群体,相信无论是这一领域的理论研究人员还是工程实践从业人员,都会从本书中受益。

鸿泰鼎石资产管理有限责任公司信息科技部总经理 高海涛

企业级系统的构建离不开流程,很多年前成熟的企业级软件包都拥有其内部的、耦合性极强的BPM功能。随着企业级系统需求的发展和变化,独立的专业化BPM产品慢慢产生了,互联网领域也产生了开源的BPM产品Activiti。随着互联网的发展和数字化转型的迫切需要,BPM越来越被重视,成为数字化转型的必备组件。如何构建企业级的BPM系统,打通各系统和各平台?贺波老师这本书以Activiti软件为基础,由浅入深,详细介绍Activiti系统及其使用案例,极具参考价值。期待本书能带您在BPM的海洋遨游。

房车宝集团系统建设总经理 喻继鹏

BPM自引入国内以来,有力支撑了企业的流程管理和组织战略的发展,但市面上缺少对其系统性介绍的技术书籍。本书从实际应用问题出发,通过具体的示例介绍如何使用Activiti解决实际问题,从基础到实战落地,深入浅出地全面介绍了Activiti流程引擎,包含基本的入门知识和大量实践经验,是BPM领域的优质图书。

叮当快药CTO 于庆龙

推荐序一

“根据熵增原理,任何企业管理的政策、制度、文化等因素在运营过程中,都会伴随有效功率的逐步减少、无效功率逐渐增加的情况,企业混乱度逐步增加,企业逐渐向无效、无序和混乱的方向运行,最终进入熵死状态。”这是任正非在《熵减:华为活力之源》中描述企业熵增时的状态。任正非认为,这种熵增源于企业的各种内部矛盾,企业要想生成用于抵消熵增的负熵,则必须通过制度、变革,激活组织与人的竞争与活力。

在21世纪初期,企业内部的生产协同更多依靠流水线作业,上下游衔接紧密,组织结构普遍呈树状结构,员工之间的沟通协作也通常是上下游之间的单点协作。随着互联网和移动互联网的兴起,大量企业为了满足业务需求而进行了线上化和数字化转型,生产模式发生巨大变化的同时,业务节奏显著加快,组织内部的生产协同偏向网状结构,上下游之间的单点协作也演变成各种职能角色之间的复杂协同。在此基础之上,企业通常会通过构建自己的信息化协同能力来抵御这种熵增。

我所在的企业是一家大型互联网公司,为了满足业务需求,从2012年创立开始,大量的业务类系统被搭建,随着时间的推移,业务的复杂度越来越高,各类系统不断被推倒、重构、升级。除了大量支撑业务发展的系统以外,也有大量的支撑运营效率和内部协同效率的系统被搭建。据不完全统计,在2022年,公司的各类系统数量已经超过3000个。伴随着业务的发展和业务系统的建设,组织和人员不断膨胀,组织内部的协同呈现网状结构,协同效率显著下降。2015年,公司成立了效能团队,在此之前,公司就引入了一些OA系统,但简单的OA系统根本无法满足组织内复杂的协同需求。从部门成立伊始,我就一直在思考,是否可以打造一套易用的BPM平台来满足公司复杂的网状协同需求,让大家在统一的平台上完成流程节点任务。它类似一个PaaS平台,可以很方便地让各类系统接入,降低系统重复建设流程功能的成本。当公司需要搭建一个线上化流程时,可以通过简单的低代码或无代码配置快速生成一个流程,进而统一全公司的流程管理语言,通过一个引擎来寻找企业治理过程中的阻塞点,改善企业熵增的情况。

通过反复的论证和调研,我们认为这种想法是可行的,完成这个任务可以分为4步。第一步是招聘一名BPM技术专家并组建包含产品、研发和实施的全功能团队;第二步是构建全公司统一、简单易用的BPM平台;第三步是推动全公司的业务类系统、运营类系统、内部效率类系统接入;第四步是通过工作流引擎中的流程耗时来优化流程,推动企业治理,减少阻塞点。

截至2022年7月,公司内绝大多数系统都已接入了BPM平台来管理流程,平台上线了1.1万余个流程模型,每周发起实例3500万个,累计发起流程实例41.33亿个,累计任务实例数达到427.63亿个,公司全员每周都在使用BPM平台进行协同。团队经受住了考验,我们也验证了最初的想法,公司流程运转效率得到了大幅提升。

回望2017年BPM团队成立伊始,我面试了很多技术专家,但贺波无疑是其中最合适的那个人,他在Activiti框架和技术深度层面经验丰富,对BPM平台在企业内的落地路径有非常深入独到的见解,对产品有自己的思考和规划。BPM平台经历了5年的演进,最后证明了贺波和他带领的团队是非常优秀的。

在接到贺波的邀请写本书的推荐序时,我非常开心,一是因为这本书有大量的干货,二是因为它凝练了贺波和他的团队这些年在BPM领域大量的实战经验积累,这些经验经受住了大平台的考验,这两个特点在BPM领域的其他书籍中是不多见的。

滴滴出行企业服务事业群总经理 蔡晓鸥

2022年7月29日

推荐序二

企业数字化转型升级已经成为企业可持续发展的必要条件,而BPM是企业流程建模和管理的核心技术,可以为企业数字化转型保驾护航。快速构建企业的BPM业务流程管理平台,已经成为企业信息化系统建设中的一个难点。

随着外部环境变化,企业的组织、管理、协作需求不断变化,加上企业所面临的市场竞争不断加剧,简单的流程和业务管理系统已经很难满足企业的需求。因此,需要有更加灵活、更好开放、更具扩展的企业级BPM系统平台。

贺波结合他在滴滴BPM的应用实践,基于Activiti框架的深度研发和系统规划,厚积薄发,深入浅出地为企业BPM平台建设指明了方向。本书是适合产品经理、研发人员和运营管理者的工作流引擎开发的宝典,希望本书能够推动企业业务管理和组织协同的数字化转型升级。

看到贺波和他的团队能将其多年的积累编写成书,我十分欣喜。本书干货满满,诚意十足,是企业级BPM工作流系统架构与研发的好教程。

北京中科汇联科技股份有限公司董事长 游世学

2022年9月19日

推荐序三

首先恭喜贺波同学的新书即将出版发行。此时距离我撰写的《Activiti实战》出版已整7年,从我第一次接触Activiti算起已经经过11年了,非常开心Activiti项目还能如此活跃,而且结合国内互联网公司多年的经验厚积薄发。我虽然因为工作原因已经多年没有使用Activiti,但是还是习惯性关注项目的发展。

Activiti项目经过多年迭代,已是企业BPM技术选型的理想平台(不仅仅是引擎)。在各大社区有很多实践的经验分享,甚至有很多二次开发实现的中国特色的工作流。我之前和Tijs Rademakers(曾担任Activiti项目技术专家)聊过这方面的话题,他表示很难想象在中国会把工作流用于那么复杂的场景。

本书最大的亮点在于除了满足新手快速入门之外,还将滴滴流程平台多年的实践经验倾囊相授,例如如何面对在企业大规模运用后势必会遇到的性能问题(个人认为这也是Activiti面临的一大问题)。此外,本书还通过二次开发实现本土化工作流,满足了复杂场景的需求,包含了BPM运维经验。可以说,书中诸多细节既可“开箱即用”也可再次升华。

本书由浅入深,适合各个阶段各个岗位的技术人员阅读,产品经理、研发人员、运维人员都能找到自己需要了解学习的部分。书中的源代码可谓是“保姆级”讲解,所以本书也可以作为工具书放在工位参考。看得出贺波同学花费了不少心思,在此我向使用Activiti的相关技术人员推荐此书。

《Activiti实战》作者 闫洪磊(咖啡兔)

2022年5月25日于杭州

自  序

当听到出版社编辑老师反馈全部书稿都已通过审核,可以推进后续出版流程时,我难掩心中的激动,回忆起编写这本书籍期间的点点滴滴,思绪万千。

大概在三年前,人民邮电出版社科技出版中心总经理刘涛老师找到我,邀请我编写一本介绍BPM的书,我欣然接受,因为这也是我久藏心底的一个愿望。我已从事BPM领域多年,回想刚接触BPM领域时,JBPM风头正劲,Activiti方兴未艾,基本没有成体系介绍BPM领域的中文版书籍,网络上能找到的相关资料也多为国外相关英文资料的翻译,很多概念语焉不详,甚至有不少纰漏,也没有任何实际使用的范例,导致我走了很多弯路。此外,理论学习与实际落地应用还有很长的一段距离,我在为多家企业提供技术咨询和经验分享时了解到,很多企业在自研BPM方面都存在很大的困难,甚至业界一些知名大厂中也不乏失败案例。

我的职业生涯中有两段工作经历,一段是在传统软件公司作为负责人,从零到一研发BPM平台,并将其应用于多个商业化项目的交付;另一段是加入某知名互联网公司后,作为负责人,从无到有搭建“倚天”BPM平台,支撑公司差异化业务和复杂流程场景的落地应用。这两家公司的实践涵盖不同的业务场景。

正是基于这些经历,我更加坚定了要出一本领域内图书的决心。本书基于我的实践经验并结合理论知识编写而成,希望能对BPM行业发展有所贡献,让相关企业及同行少走一些弯路。

流程、流程管理和流程技术是BPM领域内密不可分的3个专业术语。流程是企业和组织内被管理和支持的对象,承载着企业和组织内的流程;流程管理是管理BPM领域的方法论,主要阐述与流程管理相关的理论、方法、模型等,用以管理企业和组织内的流程;流程技术是流程管理方法论的支撑,指将计算机化流程管理方法论的相关技术。

当今社会高速发展,企业和组织的外部环境瞬息万变,要求企业和组织内部的业务运营能对此快速响应,而其响应速度直接决定了它们的竞争力的强弱。从价值链角度看,企业或组织运营本质上是其众多业务流程运行的过程。因此说,流程是保证企业或组织竞争优势的关键所在。正如麻省理工学院斯隆管理学院莱斯特  •瑟罗教授所说:“在21世纪,持续的竞争将更多地出自新流程技术,而非新产品技术。”既然流程技术如此重要,那么怎么更好地应用流程技术呢?

提到流程技术,人们第一时间会想到工作流或者BPM。工作流技术源自20世纪60年代的办公自动化应用。进入21世纪后,随着互联网、内容管理、移动终端等的广泛应用,BPM理论及其技术体系逐步产生,成为现代中间件体系的重要组成部分。流程管理属于业务领域,流程技术属于IT领域,BPM的出现模糊了业务领域和IT领域的界限,使二者有机结合起来。业务驱动需求,需求驱动技术,技术推动业务,三者形成良性循环。

因此,在本书选题阶段,经过深思熟虑,我最终决定选取受众更广、实战性更强并且我最擅长的方向,锚定以广泛应用的Activiti进行介绍、剖析、应用和扩展,并由此展开企业级BPM的开发应用实战落地。对于本书的内容,我对目录结构和章节内容都做了精心的安排。全书共分为30章,以流程及流程管理作为引子,引出流程技术,聚焦于Activiti的应用与实战。为了照顾BPM领域不同层级的读者,本书分为4篇:基础理论篇、常规应用篇、高级实战篇、架构扩展篇。顾名思义,基础理论篇主要介绍BPM领域的发展历程、思想、理论和行业规范等;常规应用篇主要介绍Activiti的特性和用法;高级实战篇主要介绍Activiti的扩展机制,以及对各种特殊流程场景(特别是本土化流程)需求的扩展实现;架构扩展篇主要从架构层面讲解对大容量、高并发和高稳定业务场景的改造与支持。本书内容较为详尽、覆盖面广、实战性强,结合精心挑选的案例演示,便于读者学习与理解。

关于本书的创作分工,前期的选题和章节设计都是我完成的,同时我三年来共负责了其中20章的编写。由于工作量实在太大,我团队的两位伙伴胡海琴和刘晓鹏接受我的邀请在中后期加入,每人帮我分担了5章的编写。具体分工是这样的:第4、5、7、9、11~20、22~27章由我编写,第10、21、28~30章由刘晓鹏编写,第1~3、6、8章由胡海琴编写。

写书是一件工程量浩大且漫长的过程,我从选题、章节设计、书稿编写到目前已历时三年。由于平时工作颇为繁忙,工作日是没有时间和精力写作的,因此这三年来我所有的周末、节假日基本上都投入这本书的编写了。

本书得以顺利完成,首先我要感谢家人的理解与支持。三年来,节假日我基本上都沉浸在本书的创作之中,忽略了对家庭的照顾和对家人的陪伴。在此要特别感谢我的妻子尹迎,她一直给予我鼓励并对本书充满期待,同时承担起了照顾家庭和教育孩子的责任。记得在本书刚启动编写时,我的儿子还是一个刚上幼儿园的懵懂小婴孩,现在已经长成识几千字且能独立阅读的一年级小学生,这与妻子的悉心培养密不可分。没能在儿子成长过程中给予他更多陪伴,我深感遗憾和愧疚。

同时,感谢人民邮电出版社科技出版中心总经理刘涛老师,他的热忱邀请给了我实现心愿的机会,并且在整个编写过程中给予了各种支持和帮助。感谢人民邮电出版社的编辑张涛和郭泳泽,他们在创作过程中给了我很多的建议和指导,使本书得以顺利出版。对参与本书审校出版的人民邮电出版社其他工作人员,在此一并表示感谢。

此外,还要感谢我团队的胡海琴、刘晓鹏两位伙伴,他们的“火线”加入、鼎力支持,使本书的编写工作提前完成。

特别感谢滴滴出行企业事业服务群总经理蔡晓鸥、北京中科汇联科技股份有限公司董事长游世学和《Activiti实战》作者咖啡兔,他们一直密切关注本书的编写进程,悉心准备了精彩的推荐序言,给予了我莫大的支持和鼓励。同时,还要感谢李淼、齐贺、区觅、张庆华、董玉锁、邓遵红、喻继鹏、高海涛、于庆龙等专家的认可和推荐。另外,中科汇联副总裁周瑞香在本书成书过程中也提供过诸多帮助,在此也表示感谢。

百密终有一疏。虽然本书的编写过程中,我们严格把关质量、反复审阅校对,力求精益求精,但错误及不足之处在所难免,敬请广大读者批评指正。若读者阅读本书时,发现错误或有疑问,可发电子邮件到hebo824@163.com与我联系。

贺 波  

2022年5月14日于北京

前  言

随着社会的发展与进步,企业规模的发展壮大,同行业、跨行业之间相互渗透,竞争日益激烈。在残酷的市场竞争中,为了赢得市场、获取利润,企业必须建立一种快速响应市场变化、降低生产成本、提高生产效率的方法和机制。

在社会化大生产的背景下,人们对工作的分工日益细化,很难有人能掌握所有生产流程和生产工艺。人与人之间必须互相合作,以便高效地组织生产。在生产过程中,信息在人与人之间流转,并分发给需要这些信息的人,人们协同工作,一起完成一项工作或任务。

近年来,随着计算机技术的进步、软件技术的发展,信息化技术在企业的生产、经营和管理过程中发挥着日益重要的作用。在这种背景下,工作流和BPM技术应运而生,实现“业务过程的部分或整体在计算机应用环境下的自动化”,从而“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行”,进而“实现某个预期的业务目标,或者促使此目标实现”。企业采用工作流或BPM技术来组织业务流程、辨别业务逻辑、管理组织结构,很大程度上解决了企业信息化过程中出现的各种问题。

BPM是企业流程建模和流程管理的核心技术之一,是根据企业业务环境的变化,推进人与人之间、人与系统之间、系统与系统之间的整合及调整的经营方法与解决方案的IT工具。BPM通过对企业内部及外部的业务流程整个生命周期进行建模、自动化、管理监控和优化,简化了企业信息化系统的开发流程,实现了企业业务管理的自动化,以快速响应市场变化,提高企业或组织的生产和运行效率,优化业务流程模型,实现企业流程再造。BPM在企业中应用十分广泛,凡是存在业务流程的地方都可以使用BPM进行管理。BPM早期主要应用于OA、CRM等流程审批场景,提高了企业的生产效率;当下主要在电商、金融等领域用于处理复杂的业务形态变化问题,在很多公司的大项目中扮演重要角色。

Activiti是Alfresco发布的BPM框架,覆盖了业务流程管理、工作流、服务协作等领域,是一款开源的、灵活的、易扩展的可执行流程语言框架。Activiti是一款基于Apache许可的开源BPM平台,从基础开始构建,旨在提供对BPMN 2.0标准的支持,包括对OMG的支持,以应对新技术的挑战,提供技术实现,目前已得到广泛应用。借助Activiti,可以将业务系统中复杂的业务流程抽取出来,然后使用建模语言BPMN 2.0对其进行定义。业务流程将按照预先定义的流程执行,这就实现了对系统流程的管理。这可以减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系统的健壮性,降低系统开发维护成本。

本书依据BPMN 2.0规范,贯彻基于业务流程开发的思想和方法,重点讲解Activiti的基础知识、开发技能,以及使用技巧,以使读者能够快速、高效、全面地掌握Activiti从入门到高级应用的相关知识。

本书主要内容

本书共包含4篇:基础理论篇(包括第1~3章),主要介绍BPM的发展历程、行业规范、管理和技术体系等,让读者建立对BPM的基本认识;常规应用篇(包括第4~20章),主要介绍Activiti各种功能和特性的配置和使用,让读者掌握Activiti的基础用法;高级实战篇(包括第21~27章),立足实战,主要介绍如何基于Activiti的扩展特性实现对多种复杂流程场景和能力的支持;架构扩展篇(包括第28~30章),主要介绍提高Activiti性能和增大其容量的措施,并提出一套多引擎架构方案来支撑大容量、高并发和高稳定流程场景。

全书共分为30章,概要如下。

第1章主要介绍流程的基本概念,包括流程和流程管理的由来与定义、流程的构成要素与特征、流程分类与分层方法等,还简要介绍了流程管理的现状,帮助读者建立对流程及流程管理的基本认识。

第2章主要介绍BPM技术的发展历程。该章先详细介绍了BPM核心组件工作流技术,包括工作流技术的发展历程、参考模型、管理系统及常见的开源框架;然后详细介绍了工作流领域的BPMN 2.0规范,让读者更深入地了解BPM技术的发展历程及现状。

第3章主要介绍BPM管理体系构建方法论、BPM产品构成,以及流程全生命周期管理各个阶段相应的方法、策略、原则等理论知识。这些知识都是BPM管理体系发展历程中总结的宝贵经验,可为现代企业实施BPM提供一些参考和指引。

第4章主要介绍Activiti开发前的基础准备工作,包括JDK的安装与配置、MySQL的下载与安装、Tomcat的安装与配置,以及Activiti的安装与配置,最后通过一个简单流程的配置和运行向读者初步展示Activiti工作流引擎的使用方法。

第5章主要介绍在IDEA和Eclipse中集成安装Activiti流程设计插件的过程,并讲解了用流程设计插件绘制流程图的方法。

第6章主要介绍Activiti的核心架构。该章先详细介绍了Activiti架构、数据库设计及其设计模式,然后讲解了流程部署、流程启动、节点流转、网关控制等核心代码,以期帮助读者初步了解Activiti的工作机制和原理。

第7章主要介绍Activiti工作流引擎的配置方法,包含数据库配置、事务配置、历史级别配置和Activiti内置服务配置等,并通过一个项目示例,引领读者掌握Acitiviti的配置和使用。

第8章主要介绍Activiti核心接口的功能及用法。Activiti中的流程部署、流程发起、任务创建与办理等重要操作都是通过这些核心接口提供的服务来实现的。熟练掌握Activiti各个核心接口的用法,能够帮助读者更好地学习和应用Activiti框架。

第9章主要介绍Activiti内置的用户、组及其关系,以及使用IdentityService服务接口对用户和组进行操作的方法和技巧。

第10章主要介绍Activiti加载资源文件进行流程部署的过程,以及流程定义信息的各类操作,并通过具体示例详细介绍了它们的用法。

第11章主要介绍Activiti支持的开始事件和结束事件。该章详细介绍了各种事件的基本信息、应用场景和使用过程中的注意事项,并通过项目示例演示了其用法。

第12章主要介绍Activiti支持的BPMN 2.0规范中定义的边界事件和中间事件,以及它们的特点和适用场景。边界事件是依附在流程活动上的“捕获型”事件,中间事件用来处理流程执行过程中抛出、捕获的事件。

第13章主要介绍Activiti的3种任务节点——用户任务、手动任务、接收任务,并展示相关应用场景。用户任务用于表示需要人工参与完成的工作,手动任务是会自动执行的一种任务,接收任务是会使流程处于等待状态并需要触发的任务,3种任务可以用于实现不同场景的流程建模。

第14章主要介绍Activiti的另3种任务节点——服务任务、脚本任务、业务规则任务,并展示相关应用场景。服务任务、脚本任务和业务规则任务都是无须人工参与的自动化任务,其中服务任务可自动执行一段Java程序,脚本任务可用于执行一段脚本代码,而业务规则任务可用于执行一条或多条规则。

第15章主要介绍Activiti扩展任务,如邮件任务、Web Service任务、Camel任务、Mule任务和Shell任务,以及它们的特性和应用场景。

第16章主要介绍顺序流和网关这两种BPMN元素。顺序流是连接两个流程节点的连线,流程执行完一个节点后,会沿着节点的所有外出顺序流继续执行;网关(gateway)是工作流引擎中重要的一个路径决策,用来控制流程中的流向,常用于拆分或合并复杂的流程流场景。

第17章主要介绍流程拆解和布局的3种方式:子流程、调用活动和泳池泳道。可以通过子流程或者调用活动将不同的阶段规划为一个子流程作为主流程的一部分,或通过泳池泳道对流程节点进行区域划分。

第18章主要介绍Activiti监听器及其适用场景。执行监听器、任务监听器允许在流程、任务执行的过程中,在发生对应的流程、任务相关事件时执行特定的Java程序或者表达式,而全局事件监听器是引擎范围的事件监听器,可以监听到所有Activiti的操作事件,并且可以判断事件类型,进而执行不同的业务逻辑。

第19章主要介绍内置表单和外置表单。这两种表单只是在表单定义方式上有所差别,流程的运转机制完全相同。它们各有优缺点,可根据具体场景灵活选用。

第20章主要介绍多实例的概念和配置,以及其应用场景,并结合具体案例介绍了多实例的使用方法。

第21章主要介绍Spring Boot的优点,并对Spring Boot的配置解析和starter做了详细讲解,实现了Spring Boot与Activiti的集成。

第22章主要介绍Activiti Modeler集成到已有Web应用系统中的详细过程,从而能够支持技术或业务人员基于浏览器在线进行流程设计。

第23章主要介绍自定义ProcessEngineConfiguration扩展、自定义流程元素属性、自定义流程活动行为、自定义事件和自定义流程校验等多种自定义扩展Activiti引擎的方式。

第24章主要介绍替换Activiti身份认证服务、适配国产数据库和自定义查询等多种扩展Activiti引擎的方式。

第25章主要介绍自定义流程活动、更换默认Activiti流程定义缓存和手动创建定时任务等多种扩展Activiti引擎的方式。

第26章主要介绍通过对Activiti进行扩展封装,从而使其支持动态跳转、任务撤回和流程撤销等各类本土化业务流程场景的方法。这种方法在实际应用中很有代表性。

第27章主要介绍通过对Activiti进行扩展封装,从而使其支持通过代码创建流程模型、为流程实例动态增加临时节点、流程节点自动跳过、会签加签和会签减签等各类本土化业务流程场景的方法。

第28章主要介绍Activiti的性能和容量瓶颈及其解决方案。该章从历史数据异步化、自定义ID生成器和基于MQ的定时器这3个方面,对Activiti底层逻辑进行了调整和优化,以提高Activiti的性能和增大其容量。

第29章主要介绍Activiti在大数据、高并发场景下的问题,以及传统分库分表方式在流程领域的局限性,并创造性地提出基于Activiti的多引擎架构方案,通过流程建模服务、路由表和网关服务,完成一个初阶多引擎架构的实现。

第30章主要介绍初阶版多引擎架构问题和解决方案。

本书约定

本书有如下约定。

本书的示例代码均在JDK1.8中运行,使用的数据库均为H2或MySQL数据库。

本书的示例代码基于IntelliJ IDEA构建,使用Maven管理JAR包依赖,使用Junit管理测试用例,通过Lombok注解简化Java类样板代码(如Getter&Setter、构造函数和日志配置等)。

本书中列举的Java源码省略了通过import导入指定包下的类或接口的部分,完整内容参见本书配套资源。

本书中列举的XML源码(包括但不限于Maven配置文件、Activiti配置文件、Spring配置文件和流程模型文件等)如非特殊需要,均省略了命名空间配置,完整内容参见本书配套资源。

本书示例程序源代码

本书所有示例程序的源代码均以配套资源的方式提供,可通过异步社区下载(参见“资源与支持”页)。每章的示例代码均对应一个独立的IDEA项目,导入IDEA后即可使用。

贺 波  

2022年5月于北京

资源与支持

本书由异步社区出品,社区(www.epubit.com)为您提供相关资源和后续服务。

您还可以扫码二维码, 关注【异步社区】微信公众号,回复“e60004”直接获取,同时可以获得异步社区15天VIP会员卡,近千本电子书免费畅读。

配套资源

本书提供示例程序源代码。

请在异步社区搜索页输入“60004”,点击“搜索产品”跳转到本书详情页面。点击“配套资源”标签并按提示操作,即可获取配套资源下载链接。

提交勘误

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,点击“发表勘误”,输入勘误信息,点击“提交勘误”按钮即可(见下图)。本书的作者和编辑会对您提交的勘误信息进行审核,确认并接受您的建议后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

扫码关注本书

扫描下方二维码,您将会在异步社区微信服务号中看到本书信息及相关的服务提示。

与我们联系

我们的联系邮箱是contact@ptpress.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频或者参与技术审校等工作,可以直接发邮件给本书的责任编辑。

如果您来自学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接通过邮件发给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

关于异步社区和异步图书

“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网。

“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端和网络技术等。

异步社区

微信服务号

第一篇 基础理论篇

第1章 流程的基本概念

程在企业中无处不在,研发有研发的流程,生产有生产的流程,销售有销售的流程,财务有财务的流程。企业的管理系统包含大量的业务流程管理工作。流程与流程管理在现代企业中已经普及,成为一种企业提升管理规范和经营业绩的有效方法。

本章将以通俗易懂的语言来对流程与流程管理、企业流程分类与分层、企业战略与流程和它们的组织关系等进行系统阐述,帮助读者全面认识、深入理解及高效运用流程。

1.1 流程与流程管理

流程是企业为达成某一特定结果而进行的一系列作业活动的组合,这些作业活动集合所需人员、设备、材料,并应用特定作业方法,达成为客户创造价值的目的。企业的成功离不开优秀的流程,而优秀的流程离不开优秀的流程管理。流程没有一成不变的。市场环境的变化或企业战略的调整,都要求企业及时对流程进行调整,以降低业务处理成本,提高业务处理效率,快速回应市场和客户的需求。这正是流程管理的工作和其意义。

1.1.1 流程的由来与定义

流程并不是一个全新的概念,这一概念早已存在。流程的思想可以追溯到20世纪初由有着“科学管理之父”和“工业工程之父”之称的弗雷德里克·温斯洛·泰勒(Frederick Winslow Taylor)提出的“方法和过程分析”,它倡导对工作流程进行系统分析,去除多余操作,改善必要操作,规范操作流程,从而追求工作流程的最高效率(这后来成为工业工程的主要思想)。流程在当时主要用于工业工程领域的加工、装配等工业活动的组织。随着这种流程思想的萌芽,一系列流程管理技术也逐渐发展起来。

随着第三次工业革命浪潮的兴起,信息技术得到飞速地发展。20世纪60年代到20世纪80年代末,信息技术在企业中得到广泛应用。从最初的手工作业自动化到各部门间的协调工作,再到整个企业内部分公司间的协调工作,信息技术驱动企业对传统业务过程进行自动化改造。业务流程自动化推动流程管理思想的进一步发展,产生“价值链”“并行工程”等一系列流程管理思想。

20世纪90年代,迈克尔·哈默(Michael Hammer)与詹姆斯·钱皮(James A. Champy)在《企业再造》(Reengineering the Corporation)一书中正式提出业务流程的概念:“我们定义某一组活动为一个业务流程(business process),这组活动有一个或多个输入,输出一个或多个结果,这些结果对客户来说是一种增值。”简言之,业务流程是企业中一系列创造价值的活动的组合。

这里倡导的是业务流程再造(Business Process Reengineering,BPR),其核心是从根本上反思和重构企业的业务流程,以实现在成本、质量、服务和效率等关键绩效上的突破性进展。然而,BPR对业务流程进行彻底改造的激进性导致其实施的失败率高达70%,业务流程改进(Business Process Improvement,BPI)应运而生。BPI只是将激进型的BPR变为了渐进型的逐步改进,本质上都是以流程信息化为主,而忽略了对流程的管理。

随着社会信息化程度的不断提高,对于21世纪的企业来说,IT系统已不再是企业的奢侈品,而是维持正常运营的必需品。第三代流程管理思想的倡导者霍华德·史密斯(Howard Smith)和彼得·芬格尔(Peter Fingar)提出:“IT不再是企业的竞争优势,业务流程比IT更为重要,企业竞争优势的根本是其卓越的业务流程体系。”至此,以业务流程为主导的管理思想正式诞生。业务流程管理(Business Process Management,BPM)是一种以规范化构造端到端卓越业务流程为中心,以持续提高组织业务绩效为目的的系统化方法。

目前,BPM正处于飞速发展阶段,日趋成熟与完善。企业正在认识到,全面而可靠地理解自己的流程是实现绩效目标的基础。越来越多的企业把BPM当作解决自身业务困境和实现自身战略目标的系统方法。

1.1.2 企业流程管理的目的

企业存在的意义就是为客户创造价值,而流程是企业中一系列创造价值的活动的组合,是企业价值的体现。流程之于企业的意义在于:

规范作业流程、把个人的优秀推广到组织,有利于提高企业的核心竞争力;

消除重复劳动、精简烦琐环节,有利于企业降低成本、缩减生产时间、提高工作效率;

专业化分工、提高工人的专业技能,有利于企业提高服务质量和客户满意度;

规范管理、明确权责,有利于消除职务空白地带、消除“扯皮”现象、解放管理者。

在实际工作中,流程只是保证工作顺利开展的第一步。接下来,还需要企业建立相应的管理制度、构造规范化的流程管理体系、持续对业务流程进行优化。只有这样,流程才能真正发挥作用。而这些正是业务流程管理的主要内容。业务流程管理从企业战略出发、从满足客户需求出发、从业务出发,进行流程规划与建设,建立流程组织机构,明确流程管理责任,监控与评审流程运行绩效,适时进行流程变革。

企业进行流程管理的目的在于:

保证业务流程面向客户,为客户创造价值;

保证管理流程面向企业目标,实现企业战略目标的落地;

保证流程中的活动均为增值活动,都是实现企业目标的一部分;

保证流程持续优化,与时俱进,使企业的价值不断得到提升。

1.1.3 流程构成要素及特征

从流程的定义可知,一个完整的业务流程应该包括输入资源、若干活动、相互作用、输出结果、客户、价值6个要素(图1.1),具备目标性、普遍性、整体性、动态性、层次性、结构性6个主要特征。

图1.1 流程构成六要素

流程构成六要素介绍如下。

输入资源是流程运作过程中不可或缺的组成部分,将被有效地消耗、利用和转化,并最终对输出结果产生影响。常见的输入资源包括客户订单、顾客需求、经营计划、物料、设备、资金、信息、行政指令、会议纪要等。

若干活动是为了满足客户需求,按照一定秩序执行的一系列活动的组合,是流程运作过程不可缺失的、有增值作用的环节。要尽可能减少没有增值作用的环节,使流程路径最短、效率最高。

一个流程通常包含多项活动,这些活动之间有着严格的前后顺序和逻辑关系,即活动之间存在某种相互作用。一个活动的产出是其后一个活动的输入。活动之间的相互作用可以串联整个流程。

输出结果可能是有形的产品,也可能是无形的服务。输出结果承载着流程的价值。输出结果是否合格,最终要由客户判断。

客户是流程的服务对象,在进行流程设计时,必须先明确流程的客户是谁、客户的最终需求是什么。而要明确这些内容并不容易,需要我们认真思考。

价值是流程过程运作为客户带来的好处、创造的价值等,通过输出结果承载。很多情况下,价值可能不是直接用货币来衡量的,它可以表现为提高了效率、降低了成本等。

流程主要特征介绍如下。

目标性指制定流程时应有明确的输出。这个输出可以是一次满意的客户服务,也可以是一次及时的产品送达等。只有明确了流程的目标,企业在制定流程时,才能做到有的放矢,否则最终制定的流程可能不仅不能产生任何价值,而且会给企业造成损失。

普遍性指流程存在于任何企业的任何经营活动之中。任何经营活动都可以描述为“输入了什么资源,中间经过了一系列怎样的活动,输出了什么结果,为谁创造了怎样的价值”。因此,可以说企业的经营活动就是流程的组合体。

整体性指企业内部不同的流程之间应有统一的指导思想,形成共同的目标导向,不能相互冲突。指导思想可以由企业的战略发展目标细化得出,也可以根据企业的实际经营需要提炼得出。企业流程追求的不是个体的、局部的最优,而是整体的、全局的最优。

动态性指流程运行过程中需要进行动态调整、优化,甚至重新设计,以适应外界因素的变化。这些因素包括企业发展战略的变化、组织职能的调整、企业信息化技术的提升、外部市场行情的变化等。

层次性指组成流程的活动本身也可以是一个流程,这个嵌套的“子流程”可以继续分解为若干活动。企业可以根据自身的需要对流程进行层次划分。上级流程为下级流程提供指引,下级流程为上级流程提供支撑。

结构性指流程往往具备某种表现形式,如串联、并联和反馈等。不同形式的流程结构往往会导致十分不同的流程运作效率和运作质量。一般来说,串联结构有助于对流程节点和信息的控制,并联结构有助于流程节点的协同工作,从而提高运行效率,而反馈结构则有助于系统部分环节的改善和调整。

1.2 流程分类

企业经营管理中包含大量的流程,如研发流程、生产流程、销售流程、财务流程等。企业为了高效管理这些流程,有必要对其进行分类,从整体上把握不同类别流程的定位及作用,从而更好地设计企业的流程体系。良好的流程分类体系是企业做好流程管理的基础。企业要设计出适合自身的流程分类体系,最好的方法就是参考权威的流程分类框架或者业内标杆企业采用的流程分类方法,然后结合企业自身的实际业务调整。

1.2.1 安东尼模型

关于企业流程分类,最早出现的是安东尼模型。安东尼模型是1965年由以罗伯特·N. 安东尼(Robert N. Anthony)为代表的企业管理专家通过对欧美制造型企业长达15年的观察和验证而创立的制造业经营管理业务流程及其信息系统构架理论。该理论包含和考虑了企业内外部的环境因素,以及它们之间的相互关系和影响,正确反映了企业内外部供应链的物流、资金流、信息流的流向和规律,以及企业管理的本质,可谓现代企业管理信息系统的“开山鼻祖”。

如图1.2所示,在安东尼模型中,企业经营管理业务活动可分为以下3个层次:

战略规划层(Strategic Planning Layer,SPL);

战术决策层(Tactics Decision Layer,TDL);

业务处理层(Business Treatment Layer,BTL)。

1.战略规划层

战略规划层是企业最高层次的管理活动,负责企业整体战略目标的制定与变更,并为实现战略目标进行资源规划、预算制定等活动。

战略规划层主要负责解决以下两个问题:

“企业应该从事何种业务”,即根据企业外部环境的变化及企业内部条件,确定企业的使命与任务、产品与市场领域;

“企业怎样管理这些业务”,即在企业内不同的战略单元之间,如何分配资源及明确发展方向等,以实现企业整体的战略目标。

战略规划层流程以客户/市场需求为输入资源,以企业经营/战略目标实现为输出结果,规划企业所有业务活动,并明确它们之间的关系、规则和目标。

2.战术决策层

战术决策层位于中间管理层(又称管理控制层),负责制定一系列的方法、技术和手段等内容,用以实现企业战略规划层所制定的战略目标。

图1.2 安东尼模型示意图

战略规划层主要解决“做什么”的问题,面向企业未来长期发展;战术决策层主要解决“如何干”的问题,面向短期行动方案的制定。

战术决策层流程是面向市场和顾客制定的策略、计划和行动方案。

3.业务处理层

业务处理层位于下层管理层(又称运行控制层),主要保证某项特定业务能够高效执行,从而使企业战略目标和战术决策得到具体落实。

业务处理层关注的是,怎样才能卓有成效地开展工作,聚焦于提高企业资源利用率。

业务处理层流程比战术决策层流程更为详细、具体,是最终交给员工执行的业务流程,涉及各种具体事务,如人事、采购、生产、营销、财务等。

1.2.2 APQC流程分类框架

安东尼模型之后,关于企业流程分类最权威的莫过于美国生产力与质量中心(American Productivity and Quality Center,APQC)开发的流程分类框架(Process Classification Framework,PCF)了。APQC自1991年开始研究和开发流程分类框架,通过整理全美各行业的业务流程,推出了适用于各行业的通用跨行业流程框架。基础版APQC流程分类框架致力于适用所有行业。后来,为了适应不同行业的管理特征,诸多针对特定行业的流程分类框架陆续推出。目前,流程分类框架已被全球众多企业所认可。

基础版APQC流程分类框架于2019年发布7.2.1版本。该版本将企业流程分为两大类——运营流程(operating process)、管理及支持流程(management and support process),并拆解出13个企业级流程类别(见图1.3),每个流程类别分别包含多个流程群组,所有作业流程与相关作业活动超过1800个。

1.运营流程

运营流程是企业的主价值链,包含从形成产品到创造价值的相关活动,共分为以下6个流程组:

愿景与战略的制定;

产品与服务的开发和管理;

产品与服务的市场和销售;

产品的交付;

服务的交付;

客户服务管理。

2.管理及支持流程

管理及支持流程,是与人力资源、财务、后勤、IT等职能部门相关的管理流程,是主价值链的支撑部分,共分为以下7个流程组:

人力资源开发与管理;

信息技术管理;

财务管理;

资产的获取、建设与管理;

企业风险、合规和应变能力管理;

外部关系管理;

业务能力开发与管理。

图1.3 APQC流程分类框架的类别

1.2.3 IBM的流程分类

IBM是一家历经百年而依然位于行业前沿的优秀企业,这主要得益于其精密的流程和体系运作。在IBM的流程管理体系中,流程主要划分为业务流程和管理流程两大类。

1.业务流程

业务流程指业务之间的传递或转移等动态过程。业务流程面向市场与客户,是直接为客户创造价值的流程,能够被外部客户看到或感知。业务流程从客户提出需求开始,到满足客户需求结束,如客户开户流程、售后服务流程等。业务流程是水平的,横向跨越多个部门,流程横向协调难度相对较高,是企业竞争力的根本所在,也是企业流程管理与改善的重点。

2.管理流程

管理流程指管理之间动态传递或转移的过程。管理流程支撑业务流程,为业务流程提供服务,面向内部管理,以提升效益为中心,如人事管理流程、资金管理流程、财务管理流程等。管理流程一般是纵向的,在职能部门内部,流程横向协调的难度相对较低。在进行管理流程设计时,要以业务流程为目的,帮助提升业务流程的效率与效益。

1.3 流程层级

企业内部的流程成百上千,如果不分级,执行起来很容易陷入混乱,使我们迷失在细节中。对流程进行分级是为了更好地建立企业流程管理体系,从而支持企业的持续成功。

1.3.1 按APQC流程分类框架分级

我们可以参考APQC流程分类框架对企业内部流程进行分级。图1.3是一个基础版流程分类框架,图中列出的是经典的企业第一级流程。每一类流程又继续向下拆解,通常细分到第五级流程,才能真正形成针对具体工作岗位的操作规范与要求,如图1.4所示。

图1.4 APQC流程分类框架分级示意

1.第一级:流程类别(category)

流程类别是APQC流程分类框架中的最高级别,如客户服务管理、供应链管理、财务管理、人力资源管理等。这个级别是从管理的角度对业务进行分类。

2.第二级:流程组(process group)

流程组是流程类别的下一级,代表一组流程,如售后、采购、应付款管理、招聘等。

3.第三级:流程(process)

流程是一系列将输入资源转化为输出结果的相互关联的活动。流程消耗资源并且需要制订可重复执行的标准。流程需要遵从一个面向质量、速度、成本绩效要求的控制系统。

4.第四级:活动(activity)

活动是运行流程必须完成的关键事项。如接收客户请求、处理客户投诉、采购合同洽谈等。

5.第五级:任务(task)

任务是“活动”的下一级。任务通常粒度更细,并且不同行业的差异很大,如创建业务计划、获得资助、设计识别与奖励方法等。

1.3.2 按组织职能分级

按组织职能分级是流程分级中常见的方法之一。企业的组织职能具备严密的层次性,流程按组织职能可以划分为集团级流程(跨业务板块或跨公司流程)、公司级流程(跨部门流程)、部门级流程(跨岗位流程)、岗位级流程(岗位操作流程)这4级。如果是非集团企业也可以划分为公司级流程(跨部门流程)、部门级流程(跨岗位流程)、岗位级流程(岗位操作流程)这3级。

企业需要结合自身的实际情况灵活应用,并没有标准统一的答案。

1.3.3 按企业管理层级分级

另外一种常见的流程分级方法,是按企业管理层级分级。通常企业将管理划分为战略、战术、战斗3个层级,对应地,将企业员工划分为高层、中层、基层3个层级。高层负责战略层面的工作,中层负责战术层面的工作,基层则负责执行层面的工作。

基于上述管理层级,可以将企业流程分为高阶、中阶、低阶3个层级:

高阶流程是企业的整体管理体系,以客户/市场需求为输入资源,以企业经营/战略目标实现为输出结果;

中阶流程是相对完整的子流程体系,是从最终用户提出需求开始,到满足最终用户需求结束;

低阶流程则是已经分解到岗位,有了责任人,有了执行主体的可执行层面的流程。

1.4 企业战略、流程与组织的关系

企业战略是企业目标与愿景的定位,是企业的发展方向。企业需要根据环境变化,依据自身资源和实力选择适合的经营领域、产品或服务,形成自己的核心竞争力,通过一系列综合的、协调的约定和行动,获取竞争优势。

业务流程是为实现特定价值目标而由多人共同完成的一系列活动的集合。这些活动之间不仅有严格的先后顺序限定,而且活动的内容、方式、责任等也都有明确的安排和界定,以保证业务有序、顺利地执行。

组织结构是企业为实现战略目标而在管理中采取的一种分工协作体系,用以明确组织中各种职务的责任、权利等。

1.4.1 战略决定业务流程

企业战略决定“要做什么”,业务流程研究“该怎么做”,战略是目标,流程是手段,目标决定手段。因此,企业战略决定了业务流程。

1.企业战略决定流程的客户

流程是企业输入原料、资金、信息到输出能满足客户需求的产品和服务的过程。因此,提供满足客户需求的产品和服务是流程的首要目的。在制定流程时,先要分析企业战略,明确企业发展目标、客户及客户需求,进而明确业务流程需要为谁提供服务。

2.企业战略决定流程的期望输出结果

企业所处的外界环境是不断变化的,因此,企业在不同时期的战略是不同的,有时强调快速应对市场变化,有时强调压缩成本。因此,即使是同一业务流程,在不同的企业战略下,也会有不同的期望输出结果。

企业战略与流程密不可分。如果企业战略无法明确,业务流程就无法细化。脱离了企业战略的流程是无效的流程,偏离企业战略的流程是低效的流程,只有紧扣企业战略的流程才能称为高效的流程。好的企业战略会引导好的流程,好的流程会促进企业战略的顺利实现。

1.4.2 业务流程决定流程组织

迈克尔·哈默曾说“流程决定组织架构”。这是因为为客户创造价值的是流程,组织只是创造价值的手段,目标决定了手段。

业务流程是为实现企业战略服务的,而组织则是为业务流程顺利实现服务的。流程型组织结构是一种20世纪60年代才出现的组织结构形式,是一种以客户为导向,通过业务流程搭建的企业组织结构。相较传统形式的组织结构,流程型组织结构更加适应多变的市场环境。从这种意义上讲,业务流程决定企业的组织架构。即使生产相同产品的企业,由于其各自内部运作流程的不同,企业组织结构也存在很大的差异。

1.4.3 企业战略、业务流程与组织的关系

在企业中,企业战略决定企业做正确的事,组织决定企业正确地做事,而流程则帮助企业高效、低成本、低风险地做事,三者密不可分。

企业战略是业务流程运作和组织管理的根基,决定了企业的价值目标,直接影响和决定了流程和组织的最终输出结果。

流程是企业的价值目标的产出过程,是企业内部的横向管理线路。流程直面客户,能够打破部门壁垒,更注重整体运作、企业价值的实现和效率的提升。

组织是企业战略实现和业务流程实施的平台,能明确企业内部成员的岗位职责、角色、任务,是企业内部的纵向管理线路。组织通过职责体系串联企业最高经营者与普通员工。

组织和流程构成了企业内部的纵向和横向管理线路,纵向管理线路明确了组织成员的分工,横向管理线路明确了组织成员的协作。两者共同构成了企业的经营管理模式。

如果将企业看作人体,则战略就是人的大脑,决定做什么;组织就是人体的各个器官,在人体内起着不同的作用,实现特定的功能;流程就是遍布全身的血管和神经,连接各个器官,使各个器官之间产生的物质可以进行有效循环,从而维持人体系统的正常运行。

1.5 业务流程管理现状

近年来,流程管理思想在我国普及,企业对流程管理的重视程度也越来越高。但是许多企业并未真正理解流程管理的内涵,流程管理仍停留在技术层面,企业内部仍然以组织职能为基础开展工作,无法有效解决跨部门的业务问题。对于大多数企业员工来说,流程管理仍是一个比较陌生的事物,参与度不足,导致流程管理流于形式。

想要真正地推动流程管理,必须让企业内部员工建立共同的流程管理理念、价值观,提升对流程管理的关注度和重视度,不断优化完善业务流程,建立流程管理的长效机制。

1.5.1 业务流程管理

业务流程管理是一种以规范化构造端到端卓越业务流程为中心,以持续提高组织业务绩效为目的的系统化方法。从业务流程管理定义可以看出,业务流程管理的管理对象是流程,业务流程管理的核心是构造卓越的业务流程,流程管理的过程是坚持以顾客需求为导向、不断改进或改造能够创造和传递客户价值的业务流程的过程,其结果是提高企业的效率和效益,为实现企业的战略目标服务。

业务流程管理的主要内容包括流程管理制度和在流程管理制度之下的流程挖掘和梳理、流程开发和实施、流程资源管理、流程执行、流程监管、流程优化等。

业务流程管理将给企业带来以下价值。

规范管理,明确职责。业务流程管理可以明确业务操作的规范要求,让员工清楚地知道执行某项活动所需的所有材料和准备工作,避免因准备不充分而出现的反复沟通。业务流程按既定的环节流转,员工各司其职、相互配合,每个环节的职责清晰明了,即使是跨部门的协作也能轻松应对。

精简工作,提升效率。业务流程管理能够对管理过程进行有效梳理和执行,精简工作中的烦琐环节,减少反复沟通、消除重复劳动,提升业务流转速度,从而最大限度地帮助企业提升生产效率及产品质量,降低生产成本。

积累经验,提升组织能力。企业应该有效地将个人优秀的工作经验、企业经营理念等融入企业的标准工作流程,并在实践中不断完善和优化。将个人的优秀变成多人的优秀,进而转变为企业的能力。优秀的企业必然具备卓越的业务流程。

全面监管,控制风险。业务流程管理做得好,风险就能大体控制得住,面对风险时,也有据可查。如果企业的内部管理和业务开展过程都通过业务流程管理来实施,那么任何决策和执行过程都会记录在案,企业管理者可以随时了解和掌握这些信息,并对业务的开展过程进行监管。一旦某个事项出现问题,可以快速追溯哪个环节出了问题。

1.5.2 业务流程优化

企业内外部环境是不断变化的,因此企业的战略也会随之不断调整。战略的变化决定了业务流程也要相应进行调整和优化。业务流程优化就是根据战略或环境的变化,对现有业务流程进行定期回顾和分析,并不断完善业务流程,使其更加精简与高效,从而提升业务流程绩效,保持企业竞争优势的过程。

然而,企业的业务流程成百上千,如果一一优化、面面俱到,则工作量过于庞大。那么,流程优化应该从哪里着手呢?答案是关键业务流程,也就是能切实见效的地方。

可以从与企业核心业务相关的活动,或者企业出现问题最多的活动,或者占用资源最多的活动中,筛选需要重点优化的业务流程。在这之后,还需要对业务流程优化可能取得的效益和可能带来的风险进行评估,根据风险和收益的对比分析,明确需要优化的具体业务流程。

高收益、低风险的业务流程才是需要进行业务流程优化的关键业务流程。如果没有筛选关键业务流程,而是直接进行业务流程优化,即使耗费了大量人力物力,仍然可能导致业务流程优化失败。

确定业务流程优化的目标后,如何有效地进行业务流程优化呢?我们需要遵循以下原则:

清除业务流程内多余的非增值活动,如活动间的等待、重复的活动等。即通过精简和压缩业务流程的过程来实现业务流程优化;

简化业务流程中的表格、操作、程序等。许多表格在业务流程中没有任何实际意义,或存在许多重复的内容。简化表格,可以减少相关任务负责人的工作量;

整合一系列的简单活动,交由一人完成,减少交接次数、缩短工作时间,使业务流程更顺畅连贯;

自动化采集和传输业务流程上的信息流,实现信息的无缝传递和交流,保障信息畅通,消除使信息滞留或阻塞的环节;

实行并行工程,改善作业顺序、消除瓶颈、提高效率。

1.6 本章小结

本章简单介绍了流程的起源、构成、分类及发展现状。企业实施流程管理、优化和再造的过程中,最不易掌握的就是流程的分类和分级,而这部分恰好是企业流程管理的基础。因此,本章专门介绍了流程分类、分级的标准框架,企业可以参考标准框架,并结合自身的情况灵活运用,制定适合自身特点的流程分类、分级体系。在对流程及流程管理有了基本的了解之后,我们将一起探索BPM的“前世今生”。

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e60004”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。

第2章 BPM的“前世今生”

BPM不仅包括业务流程管理思想及其方法论,还包括业务流程管理相关技术。第1章介绍了流程管理思想的发展历程,本章将介绍BPM技术的发展历程。经常有人将BPM技术与工作流技术混淆,或者认为BPM只是工作流技术的演进。事实上,BPM不仅包括工作流,而且包括表单、报表、接口、门户、组织用户等其他组件。工作流是BPM的核心组件之一,单独的工作流不能构成BPM。BPM是支持业务流程设计、实施、控制、分析和优化的软件及技术的集合,是一个融合人、组织、应用、文件和其他信息的综合性管理平台。

2.1 工作流基础

工作流(workflow)起源于生产组织和办公自动化领域,是业务过程的整体或部分在计算机应用环境下的自动化,是计算机支持的协同工作的一部分。

2.1.1 基本定义

工作流管理联盟(Workflow Management Coalition,WfMC)对工作流的定义如下:“工作流指一类能够完全或者部分自动执行的经营过程,能根据一系列过程规则,使文档、信息或任务在不同的执行者之间进行传递或执行”。

简单说,工作流就是一系列相互衔接、自动进行的业务活动或任务。一个工作流包括一组业务活动及它们的相互顺序关系、流程及活动的启动和终止条件,以及对每个活动的描述。例如,在日常工作中,填写好请假申请表后,需要将其提交给领导进行审批,有时还需要提交给更上一级领导进行审批。这样一个请假申请文档就会在多人之间顺序或同时传递。对于这样的场景,可以使用工作流技术来控制和管理文档在各个计算机之间自动传递。文档自动化处理只是工作流技术的一种简单应用,在现实生活中工作流技术还能够完成更多更复杂的任务,如企业内部各种数据或信息的自动处理,多种业务流程的整合,企业之间的数据交换,甚至跨地域数据传输和处理等。

2.1.2 发展历程

20世纪70年代,信息技术飞速发展,当时的流程管理研究者们普遍相信,利用信息技术可以实现工作流程的自动化,从而带来办公效率的巨大改善。工作流技术正是发端于这个时期。由于当时个人计算机与网络技术尚未普及,所以工作流技术发展较为缓慢。

20世纪80年代,图像处理领域和电子邮件领域相继出现了含有工作流特征的商用系统。图像处理领域利用工作流进行图像的流转和跟踪。电子邮件领域利用工作流将点对点的邮件流转改进为依照某种流程流转的形式。这些早期的工作流系统只有极少数获得了成功。

20世纪90年代,随着工作流相关技术条件的逐渐成熟,工作流系统的开发与研究进入新的阶段。工作流技术被广泛应用于企业管理、软件工程、制造业、金融业、科学试验和卫生保健等领域。1993年WfMC成立,标志着工作流技术逐步走向成熟。1994年,WfMC发布了工作流参考模型,并相继制定了一系列工业标准。这些标准的制定,进一步促进了工作流技术的发展。

进入21世纪后,随着Web服务技术的兴起,多个标准化组织相继制定了与工作流技术相关的Web服务标准。2002年,IBM、Microsoft等企业联合发布了业务流程执行语言(Business Process Execution Language,BPEL)规范。BPEL是一种基于XML、描写业务过程的编程语言,可以将一组现有的服务组合起来,从而定义一个新的大型的复杂Web服务,实现控制流、异步协作、事务支持等功能。随着分布式系统和面向服务的架构的崛起,BPEL成为当时流行的工作流语言之一。

2004年,业务流程管理倡议组织(Business Process Management Initiative,BPMI)发布了业务流程建模标记法(Business Process Modeling Notation,BPMN)。这是一种工作流中特定业务流程的图形化表示法。2005年,该组织并入对象管理组织(Object Management Group,OMG),此后BPMN由OMG维护。OMG对BPMN进行了重新定义,于2011年发布了BPMN 2.0标准。

BPMN 2.0是一套图形化的标准方法,用于业务流程建模和详细说明业务流程。它能直观地表现复杂的流程语义,便于业务分析师、技术开发者、流程经理、用户等人理解与使用。BPMN 2.0的出现结束了多种工作流Web服务标准多年的竞争。目前,BPMN 2.0已成为BPM及工作流的主流建模语言标准之一。

2.2 工作流技术概述

工作流技术是当今一项飞速发展的技术,能够结合人工和机器行为,特别是能够与应用程序和工具进行交互,从而完成业务过程的自动化处理。WfMC颁布的一系列工作流产品标准,包括工作流参考模型、工作流管理系统等,奠定了工作流技术的基础。

2.2.1 工作流参考模型

工作流参考模型(workflow reference model)是1995年由WfMC提出的工作流管理系统体系结构模型,标识了工作流管理系统的基本组件和这些组件的交互接口,如图2.1所示。其中的组件包括工作流执行服务、工作流引擎、流程定义工具、工作流客户端应用、调用应用及管理和监控工具。

图2.1 工作流参考模型的组件和接口

工作流执行服务由一个或多个工作流引擎组成,用于创建、管理和执行工作流实例的软件服务。

工作流引擎是为流程实例提供运行时执行环境的软件服务。

流程定义工具用于提供工作流定义服务,可以以图形方式显示并操作复杂的流程定义,并输出可被工作流引擎识别的工作流定义。

工作流客户端应用是一种通过请求的方式与工作流执行服务交互的应用。也可以说,工作流客户端应用调用工作流执行服务。

调用应用是被工作流执行服务调用的应用,调用应用与工作流执行服务交互,协作完成一个流程实例的执行。

管理和监控工具是管理和监控工作流管理系统的工具,包括用户管理、角色管理、审计管理、资源管理、流程监控等。

此外,工作流参考模型还定义了5个接口,用于定义以上组件间的交互接口规范。

接口1:工作流定义接口。此接口的规范有WPDL、XPDL、BPEL等,用于为用户提供一种可视化的、可以对实际业务进行建模的工具,并生成可被计算机处理的业务过程形式化描述。

接口2:工作流客户应用接口。此接口的规范为WAPI(代表workflow application programming interface)。它提供了一种手段,使用户可以处理流程运行过程中需要人工干预的任务[实际上就是工作项(workitem)],工作流管理系统负责维护这个工作项列表。

接口3:工作流调用应用接口。此接口的规范为WAPI。工作流引擎调用外部业务应用的规范,如在流程执行过程中调用业务系统提供的接口处理业务数据等。

接口4:工作流引擎协作接口。此接口的规范为Wf-XML 2.0,是不同的工作流引擎之间进行协作的接口规范。

接口5:管理和监控接口。此接口的规范为CWAD(代表common workflow audit data)。该接口监控工作流管理系统中所有实例的状态,如组织机构管理、实例监控管理、统计分析管理等。

工作流参考模型目前已成为工作流软件系统设计的权威参考标准。它提供了一个规范的工作流术语表,使在一般意义上讨论工作流系统体系结构成为了可能。它还为工作流管理系统的关键组件提供了独立于特定产品或技术实现的功能与交互描述。此外,它从功能的角度定义5个关键组件的交互接口,推动信息交换标准化,使不同产品间的交互成为可能。

2.2.2 工作流管理系统

早期办公自动化系统通常采用硬编码的方式来处理业务、公文的流转。然而,随着业务和公文愈发复杂,需求的不断变更,这种方式显然已难以满足现实的需求,工作流管理系统应运而生。

工作流管理系统(Workflow Management System, WfMS)是一款用于定义和管理工作流,并按照在计算机中预先定义好的工作流逻辑推进工作流实例执行的软件系统。WfMS通过分析、抽象业务、公文流转过程,解决业务交互逻辑、业务处理逻辑及参与者的问题。

业务交互逻辑对应业务流转过程。WfMS通过工作流引擎、工作流设计、流程操作等功能解决业务交互逻辑的问题。

业务处理逻辑对应业务流转过程中表单、文档等的处理。WfMS通过表单设计工具与表单的集成等功能解决业务处理逻辑的问题。

参与者对应流转过程中各环节中的人或程序。WfMS通过与应用程序的集成解决参与者的问题。

WfMS为方便修改业务交互逻辑、业务处理逻辑及参与者提供了可视化流程设计及表单设计工具,为实现WfMS的扩展提供了一系列接口,其产品结构如图2.2所示。

完整的WfMS通常由工作流引擎、工作流设计器、流程操作、工作流客户端程序、流程监控、表单设计器、与表单的集成,以及与应用程序的集成8个部分组成。

工作流引擎作为WfMS的核心部分,主要提供对工作流定义文件的解析及流程流转的支持。工作流定义文件描述了业务的交互逻辑,由工作流引擎解析并按照业务交互逻辑进行业务的流转。工作流引擎通常通过参考某种模型进行设计,通过流程调度算法进行流程流转(如流程的启动、终止、挂起、恢复等),通过各种环节调度算法实现环节的流转(如环节的合并、分叉、选择、条件选择等)。

流程设计工具一般是可视化的,用户可以以拖放元素的方式来绘制流程,并通过环节配置实现对环节操作、环节表单、环节参与者的配置。流程设计工具的好坏决定了WfMS是否易用。

流程操作指工作流支持的针对流程环节的操作,如启动、终止、挂起、分支、合并等,工作流引擎直接支持上述操作。而在实际需求中,通常需要自由操作流程,如回退、跳转、加签、减签等,对于这些操作,工作流引擎不直接支持,用户必须单独实现。是否支持流程操作直接决定了WfMS是否实用。

工作流客户端程序是WfMS的工作界面,通常以Web方式展现,通过提供待办列表和已办列表、执行流程操作、查看流程历史信息等内容,展现WfMS的功能。

流程监控以图形化方式监控流程执行过程,包括流程运转状况、每个环节耗费的时间等,流程监控数据是流程优化的依据。

表单设计工具一般是可视化的,用户可以以拖放元素的方式绘制业务所需的表单,并绑定表单数据。表单设计工具的好坏也会决定WfMS是否易用。

图2.2 WfMS产品结构

通常业务流转需要表单来表达实际的业务,因此需要与表单进行集成来实现业务意义。与表单的集成通常包括表单数据的自动获取、存储、修改,表单域的权限控制,流程相关数据的维护,以及流程环节表单的绑定。与表单的集成程度直接决定WfMS对开发效率的提升效果。

与应用程序的集成用于完善WfMS的业务意义,主要涉及与权限系统及组织机构的集成。流程环节需要绑定相应的执行角色,而流程操作需要关联权限系统、组织机构。

2.2.3 工作流开源框架

目前市面上主流的工作流开源框架有4个,分别是jBPM、Activiti、Camunda和Flowable。其中,Activiti、Camunda和Flowable均是基于jBPM 4.0的框架,它们之间的关系如图2.3所示。

图2.3 jBPM、Activiti、Camunda、Flowable

jBPM 4.0是JBoss公司推出的一款工作流开源框架,后来由于团队内部出现分歧,部分团队核心人员离开JBoss公司加入Alfresco公司,很快Alfresco公司推出了新的基于jBPM 4.0的开源工作流框架Activiti 5.0。

Activiti 5.0以jBPM 4.0为基础,继承了jBPM 4.0强大的可扩展能力,同时增强了流程可视化与管理能力。而JBoss公司的产品jBPM 5.0则完全抛弃了jBPM 4.0的架构,以Drools Flow为基础彻底重构了工作流引擎核心架构,因此,jBPM 5.0与jBPM 4.0是两款完全不同的产品。许多jBPM的老用户都转向了Activiti 5.0框架。目前,jBPM 5.0及其以后的版本的国内市场占有远不如Activiti。

Camunda和Flowable的诞生与Acitiviti如出一辙。目前Camunda和Flowable已经推出了各自的商业版本和开源版本,而Activiti则持续开源。虽然Camunda和Flowable这两位后起之秀都足够优秀,不但修复了Activiti 5.0的很多漏洞,在产品功能上也更加的完善,但是对于一家公司来说,从Activiti向Camunda或Flowable迁移代价太大。

本书选用Activiti来讲解企业级BPM开发与应用的实现,一方面是因为它免费开源、稳定可靠、应用广泛,另一方面是因为Activti有着十分优秀的设计思想及代码风格,易于入门。

2.3 BPM相关标准

BPM的发展过程中,在基于Web服务的XML执行语言方面进行过很多探索,如BPEL、BPMN等语言标准。BPEL是一种基于XML的、用于描写业务过程的编程语言,是一种用于产品间交换的标准。业务过程中的各步骤则由Web服务实现。BPMN是一种基于流程图的通用可视化标准,提供通用、易于理解的流程符号。BPMN在业务流程设计与业务流程实现之间搭建了一座标准化桥梁。目前,国内市场上的BPM产品多采用的BPMN 2.0标准。

2.3.1 BPMN 2.0概述

BPMN 2.0是OMG于2011年推出的一种业务流程建模通用语言标准,是对BPMN 1.0的重定义。BPMN 2.0相对于BPMN 1.0、XPDL、BPML及BPEL等规范最大的区别是定义了规范的执行语义和格式,利用标准图元描述真实业务发生过程,保证同一业务流程在不同的工作流引擎下的执行结果是一致的。制定BPMN 2.0标准的一个目的是提供一种能够创建简单易懂业务流程模型的机制,以处理复杂的业务流程。为此,BPMN 2.0定义了丰富的元素,并对这些元素进行了分类,使用户能够轻松识别,从而读懂并理解模型。掌握了BPMN 2.0基本元素,就掌握了BPMN 2.0的核心。BPMN 2.0基本元素分类及符号如表2.1和表2.2所示。

表2.1 BPMN 2.0基本元素分类

基本元素分类

基本元素

Flow Object(流对象)

Event(事件)、Activitie(活动)、Gateway(网关)

Data(数据)

Data Object(数据对象)、Data Input(数据输入)、Data Output(数据输出)、Data Store(数据存储)

Connecting Object(连接对象)

Sequence Flow(顺序流)、Message Flow(消息流)、Association(关联)、Data Association(数据关联)

Swimlane(泳道)

Pool(池)、Lane(通道)

Artifact(工件)

Group(组)、Text Annotation(文本标注)

表2.2 BPMN 2.0基本元素符号

基本元素

说明

Event(事件)

Event用于表明流程整个生命周期中发生了什么,如流程的启动、结束、边界条件等;

基于发生时间对流程的影响,包含start event(开始事件)、intermediate event(中间事件)、boundary event(边界事件)和end event(结束事件),其中边界事件可看作一种特殊的中间事件;

Event表示为具有开放中心的闭合圆圈,通过内部标记区分不同的事件

Activity(活动)

Activity是流程中执行的工作或任务,工作流中所有具备生命周期状态的操作都可以称为“Activity”;

Activity可以是原子的[如用户任务(user task)],也可以是复合的[如子流程(sub process)];

Activity表示为圆角矩形

Gateway(网关)

Gateway决定流程流转指向,可以作为条件分支或聚合,也可以作为并行执行或基于事件的排他性条件判断;

Gateway控制流程和编排中顺序流的发散和收敛,决定了路径的分支、分叉、合并和连接;

Gateway表示为菱形图形,内部标记用于区分不同行为的网关

Sequence Flow(顺序流)

Sequence Flow描述活动在流程和编排中执行的顺序;

Sequence Flow表示为实心箭头

Message Flow(消息流)

Message Flow用于显示两个参与者之间的消息流动

Association(关联)

Association是用于连接信息和活动的图形元素;

文本注释和其他活动都可以以这种图形元素连接;

Association上的箭头方向代表流的方向

Pool(池)

Pool是协作中参与者的图形表示,还充当“泳道”和图形容器,用于从其他池中划分一组活动;

Pool中可以有内部细节,包含将要执行的进程,也可以没有内部细节,作为一个“黑匣子”

Lane(通道)

Lane是Process或Pool中的子分区,用于在横向或纵向延长整个流程,常用于组织和分类活动

Data Object(数据对象)

Data Object提供活动所需的信息,或者活动产生的信息;

Data Object可以表示单个对象或对象的集合

Message(消息)

Message用于描述两个参与者之间的通信内容

Group(组)

Group将同一类别的一组图形元素直观地显示在流程图上,主要用于分析或文档化流程,不影响组内的序列流

Text Annotation(文本标注)

Text Annotation是建模者为流程图的阅读者提供的附加文本信息

图2.4使用BPMN 2.0中的图形符号创建了一个简单请假流程示例,主要由事件、活动、网关、顺序流这4种基本元素构成。

图2.4 简单请假流程示例

流程定义文件扩展名一般为.bpmn.xml或者.bpmn20.xml,可以看出BPMN 2.0实际上基于XML表示业务流程。使用文本编辑器可以打开该请假流程示例的流程定义文件,其中内容如下:

<?xml version='1.0' encoding='UTF-8'?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:activiti="http://activiti.org/bpmn"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"
typeLanguage="http://www.w3.org/2001/XMLSchema"
expressionLanguage="http://www.w3.org/1999/XPath"
targetNamespace="http://www.activiti.org/processdef"> <process id="process_simple" name="请假流程" isExecutable="true"> <startEvent id="startEvent1"/> <userTask id="leave_apply" name="请假申请" activiti:assignee="${initiator}"
activiti:formKey="simple_form"/> <sequenceFlow id="sf1" sourceRef="startEvent1" targetRef="leave_apply"/> <userTask id="leader_approval" name="领导审批" activiti:assignee="${leader}"
activiti:formKey="simple_form"/> <sequenceFlow id="sf2" sourceRef="leave_apply" targetRef="leader_approval"/> <exclusiveGateway id="gateway1"/> <sequenceFlow id="sf3" sourceRef="leader_approval" targetRef="gateway1"/> <serviceTask id="holiday_management" name="假期管理"/> <endEvent id="endEvent1"/> <sequenceFlow id="sf4" sourceRef="holiday_management" targetRef="endEvent1"/> <sequenceFlow id="sf5" name="通过" sourceRef="gateway1"
targetRef="holiday_management"> <conditionExpression xsi:type="tFormalExpression"> <![CDATA[${task_领导审批_outcome=='agree'}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="sf6" name="驳回" sourceRef="gateway1" targetRef="leave_apply"> <conditionExpression xsi:type="tFormalExpression"> <![CDATA[${task_领导审批_outcome=='disagree'}]]></conditionExpression> </sequenceFlow> </process> <bpmndi:BPMNDiagram id="BPMNDiagram_qj"> <bpmndi:BPMNPlane bpmnElement="qj" id="BPMNPlane_qj"> <bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1"> <omgdc:Bounds height="30.0" width="30.0" x="100.0" y="163.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="leave_apply" id="BPMNShape_leave_apply"> <omgdc:Bounds height="80.0" width="100.0" x="175.0" y="138.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="leader_approval" id="BPMNShape_leader_approval"> <omgdc:Bounds height="80.0" width="100.0" x="320.0" y="138.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="gateway1" id="BPMNShape_gateway1"> <omgdc:Bounds height="40.0" width="40.0" x="465.0" y="158.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="holiday_management" id="BPMNShape_holiday_management"> <omgdc:Bounds height="80.0" width="100.0" x="570.0" y="138.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="endEvent1" id="BPMNShape_endEvent1"> <omgdc:Bounds height="28.0" width="28.0" x="715.0" y="164.0"/> </bpmndi:BPMNShape> <bpmndi:BPMNEdge bpmnElement="sf5" id="BPMNEdge_sf5"> <omgdi:waypoint x="504.57089552238807" y="178.42910447761193"/> <omgdi:waypoint x="570.0" y="178.18587360594796"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sf1" id="BPMNEdge_sf1"> <omgdi:waypoint x="130.0" y="178.0"/> <omgdi:waypoint x="175.0" y="178.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sf4" id="BPMNEdge_sf4"> <omgdi:waypoint x="670.0" y="178.0"/> <omgdi:waypoint x="715.0" y="178.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sf2" id="BPMNEdge_sf2"> <omgdi:waypoint x="275.0" y="178.0"/> <omgdi:waypoint x="320.0" y="178.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sf6" id="BPMNEdge_sf6"> <omgdi:waypoint x="485.5" y="158.5"/> <omgdi:waypoint x="485.5" y="110.0"/> <omgdi:waypoint x="225.0" y="110.0"/> <omgdi:waypoint x="225.0" y="138.0"/> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sf3" id="BPMNEdge_sf3"> <omgdi:waypoint x="420.0" y="178.2164502164502"/> <omgdi:waypoint x="465.4130434782609" y="178.41304347826087"/> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions>

流程定义文件的根元素是definitions,该元素至少需要包含xmlns和targetNamespace两个属性,xmlns用于声明默认命名空间,targetNamespace用于声明目标命名空间。这些属性值通常表示为固定的URI。每个流程定义文件都必须要包含这些属性。此外,每个流程定义文件都包含BPMN业务流程和流程图形化展示两部分,分别对应根元素definitions的两个子元素:process和BPMNDiagram。

子元素process代表一个真正的业务流程定义。definitions可以包含多个process,不过建议只包含一个,以简化流程定义开发和维护的难度。process元素有3个属性:id、name和isExecutable。属性id是必填项,是业务流程的标识,用以启动一个流程实例;属性name用于定义业务流程名称;属性isExecutable用于定义流程是否可执行。

使用BPMN定义的元素都包含在process元素下,在上述请假流程示例的流程定义文件中,process元素包括1个开始事件(startEvent)、2个用户任务(userTask)、1个排他网关(exclusiveGateway)、1个服务任务(serviceTask)、1个结束事件(endEvent)和6个顺序流(sequenceFlow)。工作流引擎在执行业务流程时会读取这部分内容来获取业务流程规则。

BPMNDiagram定义了业务流程模型的布局,包括每个BPMN元素的位置和大小等信息。流程设计工具可以根据BPMNDiagram中的描述信息绘制可视化流程图,让用户直观地理解业务流程。

2.3.2 BPMN 2.0结构

在BPMN 2.0基本元素中,要重点掌握事件、活动、网关这3类流对象。它们是BPMN 2.0的核心结构,如图2.5所示。

图2.5 BPMN 2.0核心结构

1.事件

事件主要分为开始事件、中间事件、边界事件和结束事件。

开始事件是流程的起点,定义流程如何启动,以及显示的图标类型。在流程定义文件中,开始事件类型由子元素声明定义。根据不同的触发条件,可将开始事件分为不同类型,如表2.3所示。

表2.3 依触发条件划分的开始事件类型

触发条件

说明

详细介绍

none(无)

未指定启动流程实例触发器的开始事件

参阅11.3.1小节

timer(定时器)

定时器开始事件:在指定时间创建流程实例。在流程只需启动一次,或者需在特定时间间隔重复启动时,可以使用定时器开始事件

参阅11.3.2小节

signal(信号)

使用具名信号启动流程实例

参阅11.3.3小节

message(消息)

使用具名消息启动流程实例

参阅11.3.4小节

error(错误)

错误开始事件总是中断,可用于触发事件子流程,不能用于启动流程实例

参阅11.3.5小节

结束事件标志着流程或子流程中其一个分支结束。结束事件总是抛出型事件。这意味着当流程执行到达结束事件时,会抛出一个结果,结果类型由事件内部自带的填充图标表示。在流程定义文件中,结束事件类型由子元素声明定义。根据不同的触发条件,可将结束事件分为不同类型,如表2.4所示。

表2.4 依触发条件划分的结束事件类型

触发条件

说明

详细介绍

none(无)

空的结束事件意味着当流程执行到这个事件时,无指定地抛出结果。工作流引擎除结束当前执行分支之外,不做任何操作

参阅11.4.1小节

error(错误)

当流程执行到错误结束事件时,结束执行当前分支,并抛出错误,这个错误可以由匹配的错误边界中间事件捕获。如果找不到匹配的错误边界事件,则会抛出异常

参阅11.4.2小节

cancel(取消)

取消结束事件只能与BPMN事务子流程同时使用。当流程执行到取消结束事件时,会抛出取消事件,且必须由取消边界事件捕获。取消边界事件将取消BPMN事务,并触发补偿

参阅11.4.3小节

terminate(终止)

当流程执行到终止结束事件时,当前流程实例或子流程会被终止

参阅11.4.4小节

开始事件和结束事件之间发生的事件统称为中间事件。中间事件会影响流程的流转路径,但不会启动或直接终止流程。按照其特性,中间事件可以分为中间捕获事件和中间抛出事件两类。当流程执行到中间捕获事件时,它会一直处于待触发状态,直到接收特定信息时被触发;当流程执行到中间抛出事件时,它会被自动触发并抛出相应的结果或者信息。中间事件类型如表2.5所示。

表2.5 中间事件类型

类型

说明

详细介绍

定时器中间捕获事件
(timer intermediate catching event)

当流程执行到定时器中间捕获事件时,启动定时器;当定时器触发后(如间隔一段时间后触发),沿定时器中间捕获事件的外出顺序流继续执行

参阅12.2.1小节

信号中间捕获事件
(signal intermediate catching event)

用于捕获与其引用的信号定义具有相同信号名称的信号。与其他事件如错误事件不同,信号在被信号中间捕获事件捕获后不会被消耗。如果两个激活的信号中间捕获事件同时捕获了相同的信号,则这两个事件都会被触发,即使它们并不处于同一个流程实例中

参阅12.2.2小节

信号中间抛出事件
(signal intermediate throwing event)

用于抛出流程中的定义信号

参阅12.2.2小节

消息中间捕获事件
(message intermediate catching event)

用于捕获特定名称的消息

参阅12.2.3小节

补偿中间抛出事件
(compensate intermediate throwing event)

用于触发补偿。当执行到补偿中间抛出事件时,会触发该流程已完成活动的边界补偿事件

参阅12.2.4小节

空中间抛出事件
(intermediate throwing none event)

用于指示流程已经处于某种状态

参阅12.2.5小节

边界事件是一种特殊的中间事件,依附在活动上。边界事件永远不会抛出。这意味着当活动运行时,边界事件将监听特定类型的触发器。当工作流引擎捕获到边界事件时,会终止活动,并沿该事件的外出顺序流继续执行。根据不同的触发条件,可将边界事件分为不同类型,如表2.6所示。

表2.6 依触发条件划分的边界事件类型

触发条件

说明

详细介绍

timer(定时器)

当流程执行到边界事件所依附的活动时,将启动定时器。定时器触发后(如间隔特定时间后触发),会中断活动,并沿着边界事件的外出顺序流继续执行

参阅12.1.1小节

signal(信号)

依附在活动边界上的信号中间捕获事件,用于捕获与其信号定义具有相同名称的信号

参阅12.1.2小节

message(消息)

依附在活动边界上的消息中间捕获事件,用于捕获与其消息定义具有相同名称的消息

参阅12.1.3小节

error(错误)

依附在活动边界上的错误中间捕获事件,捕获其所依附的活动范围内抛出的错误。在嵌入式子流程或者调用活动上定义错误边界事件最有意义,因为子流程活动范围包括其中的所有活动。错误可以由错误结束事件抛出。错误会逐层向其上级活动范围传播,直到活动找到一个匹配错误事件定义的错误边界事件。当捕获错误边界事件时,会销毁错误边界事件定义所在的活动,同时销毁其中所有当前执行活动(如并行活动、嵌套子流程等)。流程将沿着错误边界事件的外出顺序流继续执行

参阅12.1.4小节

cancel(取消)

依附在事务子流程边界上的取消中间捕获事件,在事务取消时触发。当取消边界事件触发后,先会中断当前活动范围内所有活动的执行,然后,启动事务活动范围内所有有效补偿边界事件。补偿会同步执行,也就是说,在离开事务前,边界事件会等待补偿完成。当补偿完成后,流程沿取消边界事件的任何外出顺序流离开事务子流程

参阅12.1.5小节

compensation(补偿)

依附在活动边界上的补偿中间捕获事件,用于为活动附加补偿处理器。补偿边界事件必须使用直接关联方式引用单个补偿处理器。补偿边界事件与其他边界事件的活动策略有所不同。其他边界事件,如信号边界事件,在其依附的活动启动时激活,当该活动结束时结束,并取消相应的事件订阅。补偿边界事件在其依附的活动成功完成时激活,同时创建补偿边界事件的相应订阅。当补偿边界事件被触发或者相应的流程实例结束时,才会移除相应的订阅

参阅12.1.6小节

2.活动

活动是业务流程定义的核心元素,是业务流程中执行的工作或任务的统称。在工作流中所有具备生命周期状态的元素可以称为“活动”。

活动既可以是流程的基本处理单元(如人工任务、服务任务等),也可以是组合单元(如调用活动、嵌套子流程等)。

活动表示为圆角矩形。活动类型如表2.7所示。

表2.7 活动类型

类型

说明

详细介绍

用户任务(user task)

也称为人工任务,指对需要人工执行的任务进行建模。当流程执行到用户任务时,会在指派到该任务的用户或组的任务列表中创建一个新任务

参阅13.1节

手动任务
(manual task)

手动任务在流程中几乎不做任何操作,只是在流程历史记录中留下一点痕迹,表明流程走过哪些节点。对工作流引擎而言,手动任务是作为直接通过的活动处理的,流程执行到此会自动继续执行

参阅13.2节

接收任务
(receive task)

接收任务是一个简单的任务,等待某个消息的到来。当流程执行到接收任务时,流程将一直保持等待状态,工作流引擎接收到特定消息时,会触发流程继续执行接收任务

参阅13.3节

服务任务
(service task)

一个自动化任务。当流程执行到服务任务时,调用某些服务(如网页服务、Java服务等),然后继续执行后继任务

参阅14.1节

脚本任务
(script task)

一个自动化任务。当流程执行到脚本任务时,会自动执行编写的脚本,然后继续执行后继任务。Activiti支持的脚本语言有Groovy、JavaScript、BeanShell等

参阅14.2节

业务规则任务(business rule task)

用于同步执行一个或多个规则,可以通过制定一系列规则来实现流程自动化。Activiti使用Drools Expert和Drool规则引擎来执行业务规则

参阅14.3节

邮件任务

(mail task)

服务任务的一种扩展任务,旨在向外部参与者(相对于流程)发送邮件。一旦邮件被发送,任务就完成了

参阅15.1节

Web Service任务
(Web Service task)

服务任务的一种扩展任务,可以通过Web Service通信技术同步调用外部Web服务

参阅15.2节

Camel任务

(Camel task)

服务任务的一种扩展任务,可以向Camel(一种基于规则路由和中介引擎)发送和接收消息

参阅15.3节

Mule任务

(Mule task)

服务任务的一种扩展任务,可以向Mule(一款轻量级的企业服务总线和集成平台)发送消息

参阅15.4节

Shell任务

(Shell task)

服务任务的一种扩展任务,可以在流程执行过程中运行Shell脚本与命令

参阅15.5节

子流程

(sub process)

一个可以包含其他活动、分支、事件等的活动,经常用于分解大的复杂的业务流程

参阅17.1节

调用活动

(call activity)

可以在一个流程定义中调用另一个独立的流程定义

参阅17.2节

3.网关

网关用于控制顺序流在流程中的汇聚和发散。从其名称可以看出,它具备网关门控机制。网关与活动一样,能够使用或生成额外的令牌,可以有效控制给定流程的执行语义。两者的主要区别在于,网关不代表正在完成的“工作”,它对正在执行的流程的运行成本、时间等的影响为零。

网关可以定义所有类型的业务流程序列流行为,如决策/分支(独占、包含和复杂)、合并、分叉和加入等。网关表示为菱形,虽然菱形传统上用于表示排他性决策,但BPMN 2.0扩展了菱形行为,所有类型的网关都有一个内部指示器或标记来表明正在使用的网关类型。网关类型如表2.8所示。

表2.8 网关类型

类型

说明

详细介绍

排他网关
(exclusive gateway)

用于对流程中的决策进行建模。当流程执行到该网关时,会按照所有外出顺序流定义的顺序对它们进行计算,选择第一个条件计算结果为true的顺序流继续执行

参阅16.2.1小节

并行网关
(parallel gateway)

可以将执行分支(fork)为多条路径,也可以合并(join)多条入口路径的执行。并行网关与其他网关类型有一个重要区别:并行网关不计算条件。如果连接到并行网关的顺序流上定义了条件,会直接忽略该条件

参阅16.2.2小节

包容网关
(inclusive gateway)

可以看作排他网关与并行网关的组合。与排他网关一样,可以在包容网关的外出顺序流上定义条件,包容网关会自动计算条件。两者的主要区别在于,包容网关类似并行网关,可以同时选择多外出顺序流

参阅16.2.3小节

基于事件的网关
(event-based gateway)

提供了基于事件的选择方式。网关的每一条外出顺序流都需要连接到一个中间捕获事件。当流程执行到基于事件的网关时,与等待状态类似,该网关会暂停执行,并且为每一条外出顺序流创建一个事件订阅

参阅16.2.4小节

2.4 BPM技术的应用

BPM作为重量级企业信息化管理解决方案,主要为中大型企业提供系统的流程管理、集成中台和数字化转型方案,极大地提升了企业工作效率,降低了企业运营成本。

2.4.1 应用现状概述

BPM在制造业、金融业、建筑业、零售业和物流运输业等对流程化、信息化要求较高的行业有着广泛的运用。BPM主要为这些行业中体量较大的企业客户服务。BPM厂商为这些公司提供从生产营销到合作管理的全项目式解决方案,包括战略规划、财务资金管理、绩效管理、人力资源管理、供应链与物流管理等。BPM可以整合客户、管理层、财务和法律、运营、IT、合作伙伴和供应商等板块,提供跨组织的端到端的流程管理组件。

根据信息化工具的演进历程和当今市场特性,平台化和低代码成为未来BPM主流发展方向。同时,BPM的智能化成为未来产品优化的必然选择。BPM可以通过与机器人流程自动化(Robotic Process Automation,RPA)、人工智能(Artificial Intelligence,AI)等智能技术深度融合,进一步提高自身的性能和效率。此外,BPM厂商还需要在行业服务能力方面继续增强自身竞争力。

2.4.2 国内应用概况

21世纪初,BPM正式引入我国,但一方面国内企业的关注重点还在于市场的拓展和投融资方面,对BPM还不甚了解,另一方面国产BPM产品技术非常不成熟,客户体验很糟糕,所以当时国内市场上的BPM提供商多是国际服务商,如K2、Ultimus、IBM、Oracle等。

2010年以后,国内企业对BPM的关注度逐年提升,推动BPM市场快速发展,国产BPM产品在技术上有了质的飞跃,炎黄盈动、奥哲H3 BPM、天翎、联科等国产品牌开始为中国移动、浦发银行、沃尔玛、华为和政府部门等大型客户提供专业的BPM服务。

2019年,国内BPM市场规模已达到30亿~35亿元,年增长率超过30%。在利润方面,根据客户量级和供应商商业模式不同,BPM利润从几万到几百万元不等,行业毛利率为30%~40%。

随着越来越多的厂商进入BPM市场,国内供应商的市场份额逐年增加,目前已占据国内BPM市场的主导地位。伴随着需求的增长和技术壁垒的消除,国内BPM市场将迎来新的增长。

2.5 本章小结

工作流是BPM的核心组件之一。本章简单介绍了工作流的定义、发展历程,以及工作流参考模型和WfMS,重点介绍了工作流领域的BPMN 2.0规范,该规范为工作流应用提供了语言及图形标准。BPMN 2.0规范是后续章节的基础。

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e60004”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。

相关图书

YOLO目标检测
YOLO目标检测
Serverless核心技术和大规模实践
Serverless核心技术和大规模实践
深入浅出Windows API程序设计:编程基础篇
深入浅出Windows API程序设计:编程基础篇
Spring Cloud微服务架构实战
Spring Cloud微服务架构实战
读源码学架构:系统架构师思维训练之道
读源码学架构:系统架构师思维训练之道
设计模式之美
设计模式之美

相关文章

相关课程