为什么要使用工作流引擎

工作流引擎实际上是放大了状态管理的功能,它根据既有流程图(基于BPMN2规范)的指示,指定每一次状态跃迁的处理角色,在状态变更时持久化评论、表单、附件等数据,保存了完整处理轨迹。

BPMN2.0规范简介

BPMN2.0规范的实现,实质上是一个按照特定规范编写的XML文件,使用特定的BPMN设计器,即可以图形化的形式查看和编辑该文件。Activiti以代码的形式实现了这套图形化表示法,使任务的流转依赖图形,而非具体的实现代码。

image.png

如上图所示,BPMN2.0规范包含了三个部分Gateway(网关)、Event(事件)、Activities(活动)。

BPMN2.0规范包含了三个部分在文件中都有体现:

Gateway(网关):exclusiveGateway-排他网关,在做判断时使用,除了排他网关还有几个其它类型的网关。
Event(事件):startEvent-开始事件、endEvent-结束事件,规范要求一个完整流程图必须包含这两个部分。
Activities(活动):task-任务、sequenceFlow-连接线,活动是流程的主体部分,内部包含的类型相对较多。

Activiti核心API

Activiti中包含了几个核心的Service接口,它们是开发者调用Activiti API的入口。
image.png

完成一次流程的处理,常见步骤以及他们使用的Service如下图所示:

image.png

排他网关:必须要有一条分支可走

并行网关允许将流程分成多条分支,也可以把多条分支汇聚到一起,并行网关的功能是基于进 入和外出顺序流的:
fork 分支:
并行后的所有外出顺序流,为每个顺序流都创建一个并发分支。
join 汇聚:
所有到达并行网关,在此等待的进入分支, 直到所有进入顺序流的分支都到达以后, 流程就会通过汇聚网关。
注意,如果同一个并行网关有多个进入和多个外出顺序流, 它就同时具有分支和汇聚功能。 这时, 网关会先汇聚所有进入的顺序流,然后再切分成多个并行分支。

与其他网关的主要区别是,并行网关不会解析条件。 即使顺序流中定义了条件,也会被忽略

参考链接

Activiti快速入门
工作流引擎Activiti快速入门