网站建设是系统工程,怎样建立自己的网站卖东西,工业信息部网站备案,科技服务网站建设内容BPMN2.0规范及流程引擎选型方案一、基本概念二、BPMN意义三、主要元素3.1 活动任务子流程调用活动事件子流程事务3.2 网关排他网关包容网关并行网关事件网关3.3 事件开始事件结束事件中间事件3.4 辅助泳道图注释与组数据存储四、图类型4.1 编排图4.2 会话图五、技术选型5.1 前端…
BPMN2.0规范及流程引擎选型方案一、基本概念二、BPMN意义三、主要元素3.1 活动任务子流程调用活动事件子流程事务3.2 网关排他网关包容网关并行网关事件网关3.3 事件开始事件结束事件中间事件3.4 辅助泳道图注释与组数据存储四、图类型4.1 编排图4.2 会话图五、技术选型5.1 前端BPMN.JSLogicFlow[AntV X6](https://github.com/antvis/X6)5.2 后台ActivitiFlowableCompileflow六、总结大家好我是比特桃。本文主要简明扼要的介绍了BPMN2.0规范的内容可让读者快速度的了解BPMN2.0所涵盖的主要内容和图形样式。也较为详细的阐述了如何绘制标准的流程图以及在软件层面中如何实现业务流程功能和技术选型。一、基本概念
我们生活中存在了大量的业务流程大到结婚买房小到请假买票。都需要按照规定的流程办事如果流程比较简单我们可以通过画点草图来让大家理解。但当业务过于复杂的时候如果没有一个业务流程图的规范恐怕很难让人和机器看懂。为了让全球各种业务流程图能统一就出现了BPMNBusiness Process Model and Notation标准该标准已经成为了ISO标准之一标准下载。 BPMN2.0主要规范了图形像UML图一样也就是我们看到图就明白这个业务流的逻辑。那实际系统如何去根据图形去实现控制运转这是属于工作流引擎要做的事情像工作流运行中的控制模式就得参考Control-Flow Patterns。需要重点说明的是现在知名工作流引擎Activiti、Flowable、Camunda还有国内的炎黄盈动等都是自称支持BPMN2.0规范。实际他们的运行逻辑、属性标识、存储结构都是大致相同但略有区别是不能跨流程引擎通用的。比如符合BPMN2.0规范的开始事件的XML格式一般叫startEvent但网关的引擎内部定义就不太一样了有的工作流引擎甚至不会采用XML格式而是JSON格式存储。所以流程引擎所谓的支持BPMN2.0只是功能及外观遵循了标准。实际软件层面的实现是可以根据自身需求来的。对于第一次接触BPMN2.0规范的来说区分这个概念至关重要。
二、BPMN意义
使用图形规范的意义就是为了让所有能看懂就和我们现实中的语言一样。除此之外在这样一个信息化的时代我们有太多软件业务去处理现实中复杂的流程了。比如OA办公系统、WMS仓库管理系统、TMS物流管理系统、OMS、SRM、CRM订单管理系统等等。这些业务流程通常非常复杂如果不通过规范去约束用我们自己的符号去绘制。恐怕很容易踩坑并且也不容易形成业务层面的标准和经验积累。那通过BPMN2.0规范我们可以极大程度的对流程图进行治理、风险把控与合规性检查。 上图是一个简单的BPMN模型实例该流程是一个招聘职位的模型。根据我们的观察不难理解其中含义虽然你可能不知道这个图中每个模块的专业名词但能看懂理解这个图的流程是什么。所以BPMN在可视化理解方面还是做的挺不错的也就是我所推崇的最好的产品就是没有说明书的产品。
三、主要元素
在BMPN2.0中组件主要分为四类活动、网关、事件、辅助。这里分享一个业务过程模型和符号规范总结图便于你快速了解。
3.1 活动
活动相当于实体可以说流程图的实体模型定义主要就是由活动组成的。组件如下图所示
任务
最常用的活动就是任务了。为了区分各种类型的任务通常会在任务组件中加入图标用以说明 组件的颜色、样式及图标并没有统一的规范在开发的时候可以根据系统的主色调进行适配。只要保持大致的形状即可。
子流程
但我们的流程过于复杂就需要对流程图进行抽象。这样可以将细枝末节并相对独立的部分抽取到一个单独的流程里在总体流程中再进行引入。
调用活动
一般子流程和任务它们属于流程图的一部分不能单独使用。然而在多数情况下一个活动应该在多个流程图中都可以复用。BPMN为此提供了调用活动的构造。当一个全局的活动或子流程被调用时候用粗边框进行表示。
事件子流程
与普通流程不同时间子流程不是序列流触发的。而是由程序执行期间消息流所触发的事件而设计的流程。
事务
和数据库里的事务概念一样一项事务可以全部执行也可以全部不执行。如果出现问题则必须回滚事务。
3.2 网关
网关相当于业务处理组件活动实体只是来说明有什么网关则可以通过与活动的连线来定义其规则。组件如下图所示
排他网关
依序判断执行第一个为Ture的分支其它分支不判断不执行。
包容网关
选择或合并一条或多条路径比如我们选择多个标签来筛选列表。
并行网关
顾名思义并行网关是指可以分叉同时并行执行的网关。
事件网关
上面三种网关是基于数据的独占 (XOR) 网关但对于正在处理的数据走不同路径我们就需要事件网关。即基于事件的网关该网关不基于数据进行路由而是根据接下来发生的事件进行路由。请考虑这样一个业务流我们订购比萨饼并等待它送达。我们只能在收到披萨后才能吃饭但是如果 60 分钟后披萨还没有送来怎么办我们会打一个焦虑的电话就是这样我们可以使用事件网关对此进行建模
3.3 事件
流程图只能用来描述静态的业务流程但现实世界是由各种不确定性因素所所叠加的。当执行一个流程时它将使用并创建数据、信息、文件、文档等。从一个活动到另一个活动的序列流通常伴随着数据传递。而数据的不同会造成不同的事件我们要像编写程序一样捕获各种各样的事件这样才能保证系统的完整性和可靠性。 在绘图的时候需要考虑两个方面事件的原因触发器以及事件在流程图中的影响。 最常用的事件是以下三种其中开始事件和结束事件最关键也是每个流程图都需要具备的元素中间事件根据所需添加。需要注意的是三种事件图标中间会填充的不同符号用来表达不同的意思。 事件的类型很多所以这里用一个实际的例子来观察
开始事件
条件事件即条件为真的时候所触发的流程信号事件指的是全局广播事件的监听多重事件是指组合了多个事件只要其中一个事件发生就会被启动并行多重事件需要所有事件都必须发生才会启动。
结束事件
默认结束事件就是一个加重的黑圈里面是空白的消息事件信封符号会被填充为黑色终止结束事件则是纯黑色该事件不仅删除了单个令牌而是终止了整个流程。
中间事件
中间事件可以发送和接收信号通常在以下两种情况下使用中间事件
在流程中触发与其他事件相关的事件例如发送消息或信号对流程中的事件有所相应例如当接收到消息或达到某一时间点。
3.4 辅助
BPMN2.0规范中最常用的图形就是上述的活动、网关、事件。但为了让复杂的业务更加清晰的表达BPMN也提出了一些辅助组件的使用。注意这些辅助组件只是为了更好的表达业务模型并不是必须的。
泳道图
泳道图如下图所示可以将不同的业务流拆分成不同的道。他们类似于将游泳池划分为不同得道游泳比赛的每位参赛者只能在自己道里游泳。
注释与组
注释主要是为了流程图做一些补充说明我们可以按照自己喜欢的方式应用注释和组甚至可以跨越池边界。注释和组不会影响执行语义因此不要将它们与子流程等混淆。注可用颜色区分。
数据存储
流程图在运行时如想突出其数据流的走向可以通过数据对象和数据库来表达。 下图为数据流的例子
四、图类型
本节主要介绍面对复杂场景的时候如何构建清晰的流程模型。
4.1 编排图
当需要多个公司进行交互互作的时候如多家公司以一种能够完全自动化下达和履行订单以及其他业务事务的方式连接其信息系统每家公司需要对自己的流程负责。 上图为一个协作图但没有办法表达更为详细的表达消息流中的事件和逻辑顺序。编排图就是为了重点突出消息交换本身如下图所示 编排图分为了三栏上下两栏分别表示了参与者。例图中深色为接收方白色为发起方。
4.2 会话图
会话图概述了某个区域的哪些参与者在哪些任务上进行合作。在下图中可以看到三个会话。在处理广告订单时一个客户与一个广告代理商和几个饭计师一起工作。另一方面客户和广告代理商可以共同开展广告活动。为此他们与几家媒介合作。设计师还可以是另一家公司的活动的一部分与出版商一起设计师处理插图的订单。
五、技术选型
目前BPMN2.0应用最广泛的地方就是流程引擎了。人们通过标准所规定的符号画出全球公认的流程图。然后在自身系统中进行运行实现复杂的业务逻辑的可视化。下面罗列出实现业务流程需要的前后端技术可根据自身项目情况进行选型
5.1 前端
BPMN.JS
BPMN 2.0 渲染工具包和 web 建模器。它是用 JavaScript 编写的将 BPMN 2.0 图表嵌入在浏览器中, 并独立于后端, 这也使得将其嵌入到任务 Web 应用程序中变得很容易: 可以独立使用也可以集成到你的应用中。
LogicFlow
滴滴开源的LogicFlow 是一款流程图编辑框架提供了一系列流程图交互、编辑所必需的功能和简单灵活的节点自定义、插件等拓展机制方便我们快速在业务系统内满足类流程图的需求。专注于业务自定义的流程图编辑框架支持实现脑图、ER图、UML、工作流等各种图编辑场景。
AntV X6
阿里开源的X6 是 AntV 旗下的图编辑引擎。提供简单易用的节点定制能力和开箱即用的交互组件方便我们快速搭建流程图、DAG 图、ER 图等图应用。
5.2 后台
Activiti
针对商务人员、开发人员和系统管理员的轻量级工作流和业务流程管理 (BPM) 平台。它的核心是用于 Java 的超快速且坚如磐石的 BPMN 2 流程引擎。它是开源的并在 Apache 许可下分发。 Activiti 可以在任何 Java 应用程序、服务器、集群中部署使用。
Flowable
面向开发人员、系统管理员和业务用户的紧凑且高效的工作流和业务流程管理 (BPM) 平台。Flowable是用Java编写的开源工作流引擎可以执行BPMN 2.0中描述的业务流程。它是Activiti的一个积极维护的分支。
Compileflow
compileflow是一个非常轻量、高性能、可集成、可扩展的流程引擎。该引擎是淘宝工作流TBBPM引擎之一是专注于纯内存执行无状态的流程引擎通过将流程文件转换生成java代码编译执行简洁高效。当前是阿里业务中台交易等多个核心系统的流程引擎。compileflow能让开发人员通过流程编辑器设计自己的业务流程将复杂的业务逻辑可视化为业务设计人员与开发工程师架起了一座桥梁。
六、总结
最后说点我自己关于BPMN规范的想法工具也好规范也罢。都是为了满足我们实际所需的需求在进行开发实现的时候我们不要过于死板。要根据实际情况完善、优化和扩充。比如在BPMN规范中是不允许多个数据流连到一个活动上多脚针除外中间需要有网关的角色。但实际开发过程中发现网关太多以至于影响图形的可视化和可读性的时候我们就可以通过技术性手段去简化优化相关规范。所以我不建议为了遵守规范而遵守规范而要根据实际情况适当调整方可开发出更有实际意义的产品。