提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Spring Boot + BPMN流程管理引擎实践
前言
本文首先介绍了BPMN基本概念以及为什么要引入BPMN;接着对实现了BPMN标准的开源框架进行了简单介绍和对比;然后重点介绍了Camunda BPMN框架的核心概念、框架及最佳开发实践,同时基于Spring Boot框架结合实际业务场景对Camunda的应用进行了介绍;最后是对于流程引擎集成到业务系统的一些注意事项说明。
以下是本篇文章正文内容,参考博客都加了引用说明,如有侵权请联系我删除
一、什么是BPMN?
1. BPMN标准及其核心组件介绍
BPMN
:Business Process Model and Notation,是国际对象管理组织(OMG)基于BPMI在2011年推出的业务流程建模与标记开放标准。如果对OMG和BPMN的理解还不够直观,另外一个同组织同类型的标准----UML,可能会让你更加清楚OMG及其发布的开放标准是什么。以下是OMG官网关于BPMN介绍的两个截图:
BPMN框架概念介绍:
流对象
它们会展示业务流中的行为,并包含以下内容:
活动:人员或系统执行的工作或任务(显示为圆角矩形)。
事件:流程中发生的事情:开始、中间和终止(以圆圈表示)。
网关:描述流程中的顺序流路径(以菱形表示)。其他细节可以包括决策点。
数据对象
数据对象可以提供流程中数据的信息。数据有四种表现方式:
数据输入是与数据相关的任务(以一个卷角页面和右箭头表示)。只有收集到具体数据才能继续往前推进。
数据输出用于显示流程何时生成数据(以一个卷角的页面和实心右箭头表示)。
数据收集(显示为一个卷角的页面,底部中心带有三条实线)是指流程中所需的任何数据收集行为(例如,调查)。
数据存储(显示为容器),用于存储从流程中收集的任何数据。
连接对象
它们将流对象相互连接,或连接至其他信息,并显示流程:
顺序流(以实心右箭头表示)描述了所执行活动的顺序。
消息流(以左侧带有圆圈的虚线右箭头表示)描述了参与者之间的消息流动和流向。
关联(显示为虚线)可以将文本和人工信息链接到事件。
泳道
这个术语代表“池”和“道”。
池:单个流程的“容器”。
道:将池里面的活动再细分成几个部分,可以是垂直的也可以是水平的,以显示职责和事件的位置。
人工信息
人工信息提供了流程的额外细节。它分为两种类型:
组:以虚线的圆角矩形表示,它们围绕一组元素来显示元素之间的关系。
文本注释:只是简单的备注(前面带有一个左括号),读者无需深入查看就可以轻松了解内容,也称为注解。
2. 为什么要使用BPMN?
在不使用BPMN时,如何实现流程控制:
在业务代码里面加入 Status(状态机) 字段维护流程状态,流程负责的审批人可能也是 Hard Code(硬编码),好处是实现流程刚开始会比较快,但是长远来看会出现几个问题:
- 流程健壮性差,但凡出现人员变动,或者组织结构调整,就需要修改代码,维护成本高
- 定制化开发,流程无法复用,当组织出现新的工作流程,又要重新写一套代码,开发成本非常高
- 流程和业务代码耦合,你中有我,我中有你(并不符合单一职责和解耦的设计原则),业务流程发送变化时,修改成本高
使用BPMN后:
4. 业务逻辑可视化,开发成员内部以及客户沟通无障碍,利于发现流程缺陷、洞察待改善的潜在领域及促进业务理解一致;
5. 同一组织架构或者同类业务模型可高质量复用,提高开发效率同时提升软件质量;
6. 从设计层面对系统架构进行解耦:流程引擎可以和技术栈无关;
7. 有行业规范,遵循行业标准,有较多成熟框架和工具支持,随着项