Flowable入门指引

一、基本概念*

二、Flowable核心数据库表

三、集成绘制工作流插件

四、7大Service介绍

五、代码演示

六、总结与优化

Flowable入门指引

一、基本概念*

工作流的重中之重就是先了解概念是什么?认清楚了三个概念,才能了解它的整个工作机制。(不懂请反复的读)
1.在Flowable术语中,我们将其称为一个流程定义(process definition)。一个流程定义可以启动多个流程实例(process instance)。流程定义可以看做是重复执行流程的蓝图。 在这个例子中,流程定义定义了请假的各个步骤,而一个流程实例对应某个雇员提出的一个请假申请。而请假的每个领导就是任务节点
Flowable入门指引

换句话说,就是我们定义了这么一个请假流程(流程定义),所有人来请假,都得走这样的一个流程,但是每个人走的流程(流程实例)都不互相影响。所以就是一个流程定义可以启动多个流程实例。而每个流程实例走的节点就是一个任务,例如上图就有五个任务节点(包括开始节点和结束节点)

二、Flowable核心数据库表

数据表分类 描述
ACT_GE_* 通用数据表
ACT_RE_* 流程定义存储表
ACT_ID_* 身份信息表
ACT_RU_* 运行时数据库表
ACT_HI_* 历史数据库表

1.具体所有的核心表,可以参考这篇博客
2.而我个人认为主要数据库表是这几张,在我的项目中,也主要是这五张表在操作。

数据表分类 描述 用途
ACT_RE_DEPLOYMENT 流程部署表 主要用来查看部署了哪些流程定义
ACT_RU_TASK 用户任务表 用来查看现在流程实例走到哪个位置,在谁的手上
ACT_HI_TASKINST 历史任务表 用来查看整个流程实例的,做过了哪些任务,目前在哪
ACT_HI_COMMENT 评论表 用来完成任务或者退回的时候添加一些意见
ACT_RU_EXECUTION 流程实例与分支执行表 用来查看流程实例

三、集成绘制工作流插件

1.添加flowable插件(强烈推荐该方法),参考博客
ecplise安装flowable插件步骤:
Help ---- > Install New Software ---- > add, 然后添加的弹窗中输入以下信息:

Name: Flowable BPMN 2.0 designer

Location: http://flowable.org/designer/update/

Flowable入门指引
添加完成后,点击File–>new---->other—>Flowable---->Flowable Diagram
出现该界面表示安装成功。
Flowable入门指引

Flowable入门指引
Flowable入门指引
2.如何绘制一个简单流程呢?
首先使用startEvent作为开始
Flowable入门指引
然后new一个任务出来
Flowable入门指引
Flowable入门指引
然后点击结束事件
Flowable入门指引
添加下个节点处理人
Flowable入门指引

绘制完成
Flowable入门指引
3.如何运用绘制的流程图?
例如:我们刚刚绘制的图名字是test.bpmn
我们需要将其改名为test.bpmn20.xml,这个样子就可以了
Flowable入门指引

然后将其丢到项目的resource底下。
再使用启动流程定义的代码启动流程实例。
Flowable入门指引

调用接口后,数据库会出现一条流程定义
Flowable入门指引

四、7大Service介绍

参考博客
RuntimeService:主要用来控制工作流的整体流动,例如启动流程实例
RepositoryService:查询部署和流程定义。
TaskService(最重要的Service): 一般用来提交任务或者其他操作。提交任务taskService.complete()。
RuntimeService:用来部署和查看流程实例runtimeService.startProcessInstanceById()。
HistoryService :查询各种历史数据
ManagementService:查询数据库表信息和表的元数据

五、代码演示

1.在上面中我们部署了一个流程定义
Flowable入门指引
id为:4f3c2e6f-1ce3-11eb-bbb1-005056c00008

2.启动测试流程定义的一个实例(多次调用接口就会启动多个流程实例)
Flowable入门指引
调用接口后,返回实例Id:7e9acc8e-1ce3-11eb-a136-005056c00008
Flowable入门指引
所以此时act_hi_taskinst、act_ru_task数据库各自出现一条数据。
Flowable入门指引
Flowable入门指引
同时获得了act_ru_task的Id:7ea04ad4-1ce3-11eb-a136-005056c00008

3.完成任务
当你知道了act_ru_task表里ProcessInstanceId对应的Id,那么只需要传入下一个节点的处理人是谁就行了
Flowable入门指引
可以看到数据库的act_hi_taskinst表已经变成了两条,一条是之前的,一条是目前节点的。而act_ru_task还是保持一条的记录,不过节点跳到了下一个节点
Flowable入门指引
Flowable入门指引
4.退回
因为项目原因不便展示,所以只给出退回的方法
主要方法:flowInstanceService.backService()

六、总结与优化

优化1:本人在处理工作流的时候,是通过Mybatis的****,生成了Flowable我需要的几张表,再维护这几张我需要表的信息,这也就是为什么我在前面认为只需要几张核心的表。
Flowable入门指引
优化2:因为Flowable与业务并不能实际和贴合,所以就需要自己维护一些信息,例如我维护了act_hi_task里的REV_字段,作为标记流程走到哪一步,原来REV_字段的作用为表示数据库表更新次数,对我来说作用不大,于是进行控制维护。除了REV_字段以外,还维护了退回标识等标记。
Flowable入门指引
总结:
本人花了国庆8天的时间对Flowable进行上手,将近一个月才对Flowable有些自己的理解。如果想要入门,可以先学习activity两者差不多,可以先理解activity再上手flowable,因为activity作为老牌,资料视频相对较多,整体学习还是挺容易,就是得多花时间。
b站activity学习视频

相关文章: