序言
activiti是一个工作流引擎,可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN进行定义(所以我们也需要了解BPMN相关信息),业务流程按照预先定义的流程进行执行。实现了系统的流程由activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作流量,从而提高系统的健壮性,同时也减少了系统开发维护成本。
历史版本的整合方式与基于springboot的整合方式有差异,而且不方便,故此基于spring-boot的方式整合Activiti7
为什么使用工作流引擎,能实现业务流程改变,不用修改代码,流程还能自动推进?
- 我们先来说说为什么流程改变,不用修改代码:我们的工作流引擎都实现了一个规范,这个规范要求我们的流程管理与状态字段无关,始终都是读取业务流程图的下一个节点。当业务更新的时候我们只需要更新业务流程图就行了。这就实现了业务流程改变,不用修改代码。
- 再来说说流程自动推进,这个原理就更简单了,就拿上面的请假模型来说,工作流引擎会用一张表来记录当前处在的节点。当填写完请假单后肯定是要轮到部门经理来审批了,所以我们一旦完成了请假单填写那么这条记录将会被从这张表删除掉,并且会把下一个节点部门经理的信息插入到这张表中,当我们用部门经理的信息去这张表中查询的时候就能查出部门经理相关的审批的信息了,以此类推,这样层层递进,就实现了流程的自动递交了。
参考资料:
- Open Source Business Automation | Activiti ---官网
- https://activiti.gitbook.io/activiti-7-developers-guide/getting-started --官网 readme
- Activiti入门_activiti-explorer-CSDN博客 ----非常详细,通读一遍 轻松应用activiti
BPMN
BPM(Business Process Management)即业务流程管理,是一种规范化的构造端到端的业务流程,以持续提高组织业务效率
BPMN(Business Process Model AndNotation)即业务流程模型和符号,是一套标准的业务流程建模符号,使用 BPMN 提供的符号可以创建业务流程。Activit 就是使用 BPMN 进行流程建模、流程执行管理的
BPMN2.0 是业务流程建模符号 2.0 的缩写,它由 Business Process Management Initiative 这个非营利协会创建并不断发展。BPMN2.0 是使用一些符号来明确业务流程设计流程图的一套符号规范,能增进业务建模时的沟通效率。目前 BPMN2.0 是最新的版本,它用于在 BPM 上下文中进行布局和可视化的沟通
BPMN2.0 的基本符号主要包含
事件 Event
- 开始:表示一个流程的开始
- 中间:发生的开始和结束事件之间,影响处理的流程
- 结束:表示该过程结束
活动 Activities
活动是工作或任务的一个通用术语。一个活动可以是一个任务,还可以是一个当前流程的子处理流程;其次,你还可以为活动指定不同的类型。常见活动如下:
网关 GateWay
用于表示流程的分支与合并,有几种常用网关需要了解(这个就是我们的流程判断条件cuiyaonan2000@163.com):
- 排他网关:只有一条路径会被选择
- 并行网关:所有路径会被同时选择
- 包容网关:可以同时执行多条线路,也可以在网关上设置条件
- 事件网关:专门为中间捕获事件设置的,允许设置多个输出流指向多个不同的中间捕获事件。当流程执行到事件网关后,流程处于等待状态,需要等待抛出事件才能将等待状态转换为活动状态。----即只会激活后面对应的事件处理任务cuiyoanna2000@163.com
流向 Flow
- 流是连接两个流程节点的连线,常见的流向包含以下几种:
- 顺序流:用一个带实心箭头的实心线表示,用于指定活动执行的顺序
- 信息流:用一条带箭头的虚线表示,用于描述两个独立的业务参与者(业务实体/业务角色)之间发送和接受的消息流动
- 关联:用一根带有线箭头的点线表示,用于将相关的数据、文本和其他人工信息与流对象联系起来。用于展示活动的输入和输出
总结
总的来说我们整合Activiti其实就是 创建一个业务流程,Activiti加载该业务流程,然后我们 创建一个该流程的实例,创建的时候同时关联我们的业务信息, 每个节点我们需要在业务代码中调用Activiti接口来告诉Activiti该节点完成了.可以去通知下一个节点来操作了(这里怎么通知呢,一般是我们自己写代码去查询,根据我们传给Activiti的角色信息,角色信息也可以在创建业务流程中注入进去cuiyaonan2000@163.com)