背景
BPM“通过建模、自动化、管理和优化流程,打破跨部门跨系统业务过程依赖、打破信息孤岛,提高业务效率和效果”,通俗一点讲,就是工作流引擎。在进行流程设计时,需要将流程的元素进行定义,并按照一定的格式、标准运行,这就需要一套业务规范,这套规范就是BPM。
工作流与BPM其实是两个概念,不过现在已经融合为一了,工作流顾名思义基于人的工作的流程,因为只有人才会工作work,当然机器也会工作,因此BPM(业务流程管理)的概念更进一步了,已经不管是人和机器,都是基于业务流程本身的一种管理,业务流程需要人工完成,那么人工必须完成任务;而业务流程需要机器完成,机器应该会自动完成,这个自动完成不是直接执行SQL操作数据库,而是基于服务之间的调用流程,是服务的组合完成,比如有一个数据库注册服务A和邮件服务B,如果需求要求注册后发送邮箱确认,那么使用流程实现服务A+服务B,而且能够每次用户注册都会执行这个流程。
BPMN的发展
BPMN最初由业务流程管理倡议组织(BPMI)开发。他们于2004年5月向公众发布了1.0版本,2005年6月,BPMI与OMG(对象管理组)合并。OMG在2006年2月布BPMN的20版本对BPMN进行了重新定义,该版本从2010年开始开发,于2013年12月正式发布。BPMN的最新版本(2.0.2)已由ISO正式发布为2013标准:ISO/IEC19510。
BPMN1.0:
“业务流程建模标注”,从语义上我们就能理解,BPMN1.0就是将流程定义标准化的一套规则、规范。提出这套标准化的就是OMG(国际性、开放式会员制的非盈利技术标准联盟),这套标准是独立于企业的标准。
BPMN2.0:
BPMN2.0相对于BPMN1.0最大的区别就是定义、规范了流程引擎的执行语义和格式,利用标准的图元描述真实的业务发生过程,保证相同的流程在不同的流程引擎中得到一致的执行结果。
BPMN 2.0 元素和模型
BPMN代表业务流程模型与符号。它是一套流程建模的标准,主要目标是提供一套被业务用户容易理解的符号,支持从创建流程轮廓的业务分析到这些流程的最终实现设终用户的管理监控。BPMN提供了清晰而精准的执行语义来描述元素的操作规范还确保设计为业务流程执行的XML语言(如WS-BPEL),能够用这套以业务符萨号进行可视化表示。BPMN的相应说明文档可以从OMG官网获取
BPMN定义了5个基础的元素类别
(1)流对象(Flow Object):用来操作数据流的对象,包括事件(Event)、活动(Activiti)、网关(Gateway)3种流对象,是BPMN中的核心元素。
(2)数据(Data):用于描述活动所需要或者产生的数据,包括数据对象(Data Object)\ 输入数据(DataInput)、输出数据(Data Output)和数据存储区(Data Store)4种元素
(3)连接对象(Connecting Object):将流程对象连接起来组成业务流程的结构,有种连接对象,分别是序列流(Sequence Flow)、消息流(Message Flow)和关联(Association)
(4)泳道(Swimlane):用以区分不同的参与者、功能和职责,有两种类型的泳道分别是池(Pool)和道(Lane)。
(5)描述对象(Artifact):为了扩展基本符号,提供描述额外的上下文,包括组(Group)、注释(Annotation).
BPMN基本模型
(1)协作流程模型:又称协作流程图、共有流程,用池的方式描述两个或更多业务实体(流程)之间可视活动的交互作用。
(2)独立流程模型:又称私有流程、内部业务流程,用泳道表示特定组织内部的独立私有业务流程。
(3)组合流程:又称公共流程,表示私有业务流程与其他流程或参与者之间的交互。
BPMN的学习和使用
BPMN(业务流程管理)是一种用于捕获、设计、执行、记录、测量、监控和控制自动化以及非自动化流程,以满足公司的目标和业务策略的系统方法。
通过BPMN,流程可以与业务战略保持一致,藉由业务部门内部甚至超越公司边界的流程优化,有助于提高公司的运转效率。
相关规范的具体内容可以参看官方说明文档,多个软件工具已经将BPMN2.0规范实在软件功能中。
BPMN在国内的应用很广泛。但很多企业花费大价钱购买了第三方的流程平台,却没有得到相应的收益;其根本原因还是在于对BPMN本身的理解不足——它远没有看上去那么简单,仅仅是BPMN2.0版本规范文档就已经达到了500页。
因此,要想顺利的实施BPMN,一个对它有透彻理解的设计者是必不可少的;同时,设计者还需要兼具业务思维、管理思维,和一定的技术思维。
BPMN更是落地规范,里面的符号非常繁琐复杂,所以,如果没有特定的业务场景,技术人员记不住,也不愿意记忆,另外在国内落地困难,另外一个原因,就是BPMN本身看上去很复杂(毕竟要落地),另外国内的审批流程比较变态,所以出现水土不服的情况。
其实BPMN是个好东西,但是基本功比较消耗时间,还不见得能够立即有回报,所以一般人不愿花功夫,性价比相对不高,不过长远来看,特别是对于企业数字化建设来讲,还是特别需要的,其中的很多思想值得借鉴。
另外,如何学习,业务分析是基础,然后是基本的项目管理,再就是流程构建,相关技术的学习,最后是流程的落地环节才是BPMN(Activiti JAVA版实现以及C# 的Activiti实现)的实现,当然要配合低代码协作构建业务表单。其实这一切都来源于现实的业务场景,所以跟着我的节奏基本不会出现问题,理解其上下文,BPMN还是蛮简单的符号。
关于使用,是在理解BPMN并且在这个基础上,再进一步超越BPMN和做一些创新来匹配国内的特色需求。
下一节,会使用业务流程和BPMN流程的一个简单例子,对其有感性认知。