1、管理流程定义主要涉及到以下的4张表:
-- 流程部署相关的表
SELECT * FROM ACT_GE_BYTEARRAY # 通用字节资源表
SELECT * FROM ACT_GE_PROPERTY # 通用属性表,可以生成部署id
SELECT * FROM ACT_RE_DEPLOYMENT #部署表
SELECT * FROM ACT_RE_PROCDEF # 流程定义表
2、流程实例与任务执行的常用表有以下几个:
-- 流程实例与任务
SELECT * FROM ACT_RU_EXECUTION # 流程执行对象信息
SELECT * FROM ACT_RU_TASK # 正在运行的任务表
SELECT * FROM ACT_HI_PROCINST # 历史流程实例表
SELECT * FROM ACT_HI_TASKINST # 历史流程任务表
这里就简单简述一下流程实例与流程对象的区别:
(1)如果是单例流程,执行对象ID就是流程实例ID
(2)如果一个流程有分支和聚合,那么执行对象ID和流程实例ID就不相同
(3)一个流程中,流程实例只有1个,执行对象可以存在多个。
3、流程变量涉及到的数据库表:
SELECT * FROM ACT_RU_VARIABLE #正在执行的流程变量表
SELECT * FROM ACT_HI_VARINST #流程变量历史表
流程变量在工作流中扮演着一个非常重要的角色。例如:请假流程中有请假天数、请假原因等一些参数都为流程变量的范围。流程变量的作用域范围是只对应一个流程实例。也就是说各个流程实例的流程变量是不相互影响的。流程实例结束完成以后流程变量还保存在数据库中(存放到流程变量的历史表中)。
4、用户角色涉及的数据库表:
SELECT * FROM ACT_ID_GROUP #角色表
SELECT * FROM ACT_ID_USER #用户表
SELECT * FROM ACT_ID_MEMBERSHIP #用户角色表
数据库中,自动生成了activiti的相关表,根据实际使用,往表中插入数据,有些会是常驻,有些是有时效性的,如图所示:
5、流程图连线
流程图任务之间的连接线可以做处理的,这里可以设置变量,如下:
需要注意的是,表达式的结果必须是布尔型:
#{variable=='value'}
${variable==value}
6、流程图排他网关
当该变量不符合任何的条件时,我们也有一条默认的路。我们不设置条件,那就是默认的连接线。
排他判断开始,匹配条件,如果A,B都不符合,则默认走特批C。如图所示:
7、流程图并行网关
并行判断开始,A或者B执行完后,还需等待另一个执行完。之后,才会进入到下一步,如图所示:
8、重要的属性,如指定人员,群组权限去执行该任务等,如图所示:
9、一个流程图的核心元素节点,如图所示:
界面编辑可以操作基本属性,连线和条件,如果还需要细节调整,可以打开编辑文档,如下所示:
流程图的设计,重点在sourceRef,targetRef的衔接,组合使用,
网关的并行处理,case处理等,
任务的顺序/跳过/终止执行等。