了解23张表
Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。
- ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
- ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
- ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。
- ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
- ACT_GE_*: 通用数据, 用于不同场景下。
流程和表的关系
一、部署流程定义相关表
/*
* 部署发布流程
*/
@Test
public void deploy(){
//获取流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
//获取流程仓库服务,定义和部署流程有关
RepositoryService repositoryService = processEngine.getRepositoryService();
//创建流程部署发布对象
DeploymentBuilder deploymentBuilder = repositoryService.createDeployment();
deploymentBuilder.name("hello流程");
//添加流程
deploymentBuilder.addClasspathResource("diagrams/MyProcess.bpmn");
deploymentBuilder.addClasspathResource("diagrams/MyProcess.png");
//发布
Deployment deployment =deploymentBuilder.deploy();
System.out.println(deployment.getName());
}
- 先获取流程引擎对象:在创建时会自动加载classpath下的activiti.cfg.xml
- 首先获得默认的流程引擎,通过流程引擎获取了一个RepositoryService对象(仓库对象)
- 由仓库的服务对象产生一个部署对象配置对象,用来封装部署操作的相关配置。
- 在部署配置对象中设置显示名,上传流程定义规则文件
- 向数据库表中存放流程定义的规则信息。
- 这一步在数据库中将操作三张表:
-
act_re_deployment(部署对象表)
存放流程定义的显示名和部署时间,每部署一次增加一条记录
字段名称 |
字段描述 |
数据类型 |
主键 |
为空 |
取值说明 |
ID_ |
ID_ |
nvarchar(64) |
√ |
主键ID |
|
NAME_ |
部署名称 |
nvarchar(255) |
√ |
部署文件名 |
|
CATEGORY_ |
分类 |
nvarchar(255) |
√ |
类别 |
|
DEPLOY_TIME_ |
部署时间 |
datetime |
√ |
部署时间 |
-
act_re_procdef(流程定义表)
存放流程定义的属性信息,部署每个新的流程定义都会在这张表中增加一条记录。
注意:当流程定义的key相同的情况下,使用的是版本升级
字段名称 |
字段描述 |
数据类型 |
主键 |
为空 |
取值说明 |
ID_ |
ID_ |
nvarchar(64) |
√ |
key+版本+随机数 |
|
REV_ |
乐观锁 |
int |
√ |
乐观锁 |
|
CATEGORY_ |
分类 |
nvarchar(255) |
√ |
流程定义的Namespace就是类别 |
|
NAME_ |
名称 |
nvarchar(255) |
√ |
名称 |
|
KEY_ |
定义的KEY |
nvarchar(255) |
流程定义ID |
||
VERSION_ |
版本 |
int |
默认version为1。之后每次部署都会在当前最高版本号上加1 |
||
DEPLOYMENT_ID_ |
部署表ID |
nvarchar(64) |
√ |
部署表ID |
|
RESOURCE_NAME_ |
bpmn文件名称 |
nvarchar(4000) |
√ |
流程bpmn文件名称 |
|
DGRM_RESOURCE_NAME_ |
png图片名称 |
nvarchar(4000) |
√ |
流程图片名称 |
|
DESCRIPTION_ |
描述 |
nvarchar(4000) |
√ |
描述 |
|
HAS_START_FORM_KEY_ |
是否存在开始节点formKey |
tinyint |
√ |
start节点是否存在formKey 0否 1是 |
|
SUSPENSION_STATE_ |
是否挂起 |
tinyint |
√ |
1 激活 2挂起 |
-
act_ge_bytearray(资源文件表)
存储流程定义相关的部署信息。即流程定义文档的存放地。每部署一次就会增加两条记录,一条是关于bpmn规则文件的,一条是图片的(如果部署时只指定了bpmn一个文件,activiti会在部署时解析bpmn文件内容自动生成流程图)。两个文件不是很大,都是以二进制形式存储在数据库中。
字段名称 |
字段描述 |
数据类型 |
主键 |
为空 |
取值说明 |
ID_ |
ID_ |
nvarchar(64) |
√ |
主键ID |
|
REV_ |
乐观锁 |
int |
√ |
Version(版本) |
|
NAME_ |
名称 |
nvarchar(255) |
√ |
部署的文件名称,如:mail.bpmn、mail.png 、mail.bpmn20.xml |
|
DEPLOYMENT_ID_ |
部署ID |
nvarchar(64) |
√ |
部署表ID |
|
BYTES_ |
字节 |
varbinary(max) |
√ |
部署文件 |
|
GENERATED_ |
是否是引擎生成 |
tinyint |
√ |
0为用户生成 1为Activiti生成 |
-
act_ge_property:主键生成策略表
二、流程实例、任务的执行有关的表
-
ct_ru_execution :正在执行的执行对象表
这里需要注意 执行对象ID和流程实例ID是不一样的概念
1.如果是单例流程(没有分支和聚合),执行对象ID等于流程实例ID的值
2.一个流程只能有一个流程实例。可以有多个执行对象
字段名称 |
字段描述 |
数据类型 |
主键 |
为空 |
取值说明 |
ID_ |
ID_ |
nvarchar(64) |
√ |
ID_ |
|
REV_ |
乐观锁 |
int |
√ |
乐观锁 |
|
PROC_INST_ID_ |
流程实例ID |
nvarchar(64) |
流程实例ID |
||
BUSINESS_KEY_ |
业务主键ID |
nvarchar(255) |
√ |
业务主键ID |
|
PARENT_ID_ |
父节点实例ID |
nvarchar(64) |
√ |
父节点实例ID |
|
PROC_DEF_ID_ |
流程定义ID |
nvarchar(64) |
√ |
流程定义ID |
|
SUPER_EXEC_ |
SUPER_EXEC_ |
nvarchar(64) |
√ |
SUPER_EXEC_ |
|
ACT_ID_ |
节点实例ID |
nvarchar(255) |
√ |
节点实例ID即 ACT_HI_ACTINST中ID |
|
IS_ACTIVE_ |
是否存活 |
tinyint |
√ |
是否存活 |
|
IS_CONCURRENT_ |
是否并行 |
tinyint |
√ |
是否为并行(true/false) |
|
IS_SCOPE_ |
IS_SCOPE_ |
tinyint |
√ |
IS_SCOPE_ |
|
IS_EVENT_SCOPE_ |
IS_EVENT_SCOPE_ |
tinyint |
√ |
IS_EVENT_SCOPE_ |
|
SUSPENSION_STATE_ |
是否挂起 |
tinyint |
√ |
挂起状态 1激活 2挂起 |
|
CACHED_ENT_STATE_ |
int |
√ |
-
act_hi_procinst:流程实例历史记录表
字段名称 |
字段描述 |
数据类型 |
主键 |
为空 |
取值说明 |
ID_ |
ID_ |
nvarchar(64) |
√ |
主键ID |
|
PROC_INST_ID_ |
流程实例ID |
nvarchar(64) |
流程实例ID |
||
BUSINESS_KEY_ |
业务主键 |
nvarchar(255) |
√ |
业务主键,业务表单的ID |
|
PROC_DEF_ID_ |
流程定义ID |
nvarchar(64) |
流程定义ID |
||
START_TIME_ |
开始时间 |
datetime |
开始时间 |
||
END_TIME_ |
结束时间 |
datetime |
√ |
结束时间 |
|
DURATION_ |
耗时 |
Numeric(19) |
√ |
耗时 |
|
START_USER_ID_ |
起草人 |
nvarchar(255) |
√ |
起草人 |
|
START_ACT_ID_ |
开始节点ID |
nvarchar(255) |
√ |
起草环节ID |
|
END_ACT_ID_ |
结束节点ID |
nvarchar(255) |
√ |
结束环节ID |
|
SUPER_PROCESS _INSTANCE_ID_ |
父流程实例ID |
nvarchar(64) |
√ |
父流程实例ID |
|
DELETE_REASON_ |
删除原因 |
nvarchar(4000) |
√ |
删除原因 |
-
act_ru_task:正在执行的任务信息
只有节点是usertask时该表中才有值
字段名称 |
字段描述 |
数据类型 |
主键 |
为空 |
取值说明 |
ID_ |
ID_ |
nvarchar(64) |
√ |
ID_ |
|
REV_ |
乐观锁 |
int |
√ |
乐观锁 |
|
EXECUTION_ID_ |
执行实例ID |
nvarchar(64) |
√ |
执行实例ID |
|
PROC_INST_ID_ |
流程实例ID |
nvarchar(64) |
√ |
流程实例ID |
|
PROC_DEF_ID_ |
流程定义ID |
nvarchar(64) |
√ |
流程定义ID |
|
NAME_ |
节点定义名称 |
nvarchar(255) |
√ |
节点定义名称 |
|
PARENT_TASK_ID_ |
父节点实例ID |
nvarchar(64) |
√ |
父节点实例ID |
|
DESCRIPTION_ |
节点定义描述 |
nvarchar(4000) |
√ |
节点定义描述 |
|
TASK_DEF_KEY_ |
节点定义的KEY |
nvarchar(255) |
√ |
任务定义的ID |
|
OWNER_ |
实际签收人 |
nvarchar(255) |
√ |
拥有者(一般情况下为空,只有在委托时才有值) |
|
ASSIGNEE_ |
签收人或委托人 |
nvarchar(255) |
√ |
签收人或委托人 |
|
DELEGATION_ |
委托类型 |
nvarchar(64) |
√ |
备注8 |
|
PRIORITY_ |
优先级别 |
int |
√ |
优先级别,默认为:50 |
|
CREATE_TIME_ |
创建时间 |
datetime |
√ |
创建时间 |
|
DUE_DATE_ |
过期时间 |
datetime |
√ |
耗时 |
|
SUSPENSION_STATE_ |
是否挂起 |
int |
√ |
1代表激活 2代表挂起 |
-
act_hi_taskinst:任务实例历史记录表
只有节点是usertask时该表中才有值
字段名称 |
字段描述 |
数据类型 |
主键 |
为空 |
取值说明 |
ID_ |
ID_ |
nvarchar(64) |
√ |
主键ID |
|
PROC_DEF_ID_ |
流程定义ID |
nvarchar(64) |
√ |
流程定义ID |
|
TASK_DEF_KEY_ |
节点定义ID |
nvarchar(255) |
√ |
节点定义ID |
|
PROC_INST_ID_ |
流程实例ID |
nvarchar(64) |
√ |
流程实例ID |
|
EXECUTION_ID_ |
执行实例ID |
nvarchar(64) |
√ |
执行实例ID |
|
NAME_ |
名称 |
varchar(255) |
√ |
名称 |
|
PARENT_TASK_ID_ |
父节点实例ID |
nvarchar(64) |
√ |
父节点实例ID |
|
DESCRIPTION_ |
描述 |
nvarchar(400) |
√ |
描述 |
|
OWNER_ |
实际签收人 任务的拥有者 |
nvarchar(255) |
√ |
签收人(默认为空,只有在委托时才有值) |
|
ASSIGNEE_ |
签收人或被委托 |
nvarchar(255) |
√ |
签收人或被委托 |
|
START_TIME_ |
开始时间 |
datetime |
开始时间 |
||
CLAIM_TIME_ |
提醒时间 |
datetime |
√ |
提醒时间 |
|
END_TIME_ |
结束时间 |
datetime |
√ |
结束时间 |
|
DURATION_ |
耗时 |
numeric(19) |
√ |
耗时 |
|
DELETE_REASON_ |
删除原因 |
nvarchar(4000) |
√ |
删除原因(completed,deleted) |
|
PRIORITY_ |
优先级别 |
int |
√ |
优先级别 |
|
DUE_DATE_ |
过期时间 |
datetime |
√ |
过期时间,表明任务应在多长时间内完成 |
|
FORM_KEY_ |
节点定义的 formkey |
nvarchar(255) |
√ |
desinger节点定义的 form_key属性 |
-
act_hi_actinst:所有活动节点的历史记录表
字段名称 |
字段描述 |
数据类型 |
主键 |
为空 |
取值说明 |
ID_ |
ID_ |
nvarchar(64) |
√ |
||
PROC_DEF_ID_ |
流程定义ID |
nvarchar(64) |
|||
PROC_INST_ID_ |
流程实例ID |
nvarchar(64) |
|||
EXECUTION_ID_ |
执行实例ID |
nvarchar(64) |
|||
ACT_ID_ |
节点ID |
nvarchar(225) |
节点定义ID |
||
TASK_ID_ |
任务实例ID |
nvarchar(64) |
√ |
任务实例ID 其他节点类型实例ID在这里为空 |
|
CALL_PROC_INST_ID_ |
调用外部的流程实例ID |
nvarchar(64) |
√ |
调用外部流程的流程实例ID' |
|
ACT_NAME_ |
节点名称 |
nvarchar(225) |
√ |
节点定义名称 |
|
ACT_TYPE_ |
节点类型 |
nvarchar(225) |
如startEvent、userTask |
||
ASSIGNEE_ |
签收人 |
nvarchar(64) |
√ |
节点签收人 |
|
START_TIME_ |
开始时间 |
datetime |
2013-09-15 11:30:00 |
||
END_TIME_ |
结束时间 |
datetime |
√ |
2013-09-15 11:30:00 |
|
DURATION_ |
耗时 |
numeric(19,0) |
√ |
毫秒值 |
三 流程变量相关的表
-
act_ru_variable 流程变量
字段名称 |
字段描述 |
数据类型 |
主键 |
为空 |
取值说明 |
ID_ |
ID_ |
nvarchar(64) |
√ |
主键标识 |
|
REV_ |
乐观锁 |
int |
√ |
乐观锁 |
|
TYPE_ |
类型 |
nvarchar(255) |
备注9 |
||
NAME_ |
名称 |
nvarchar(255) |
变量名称 |
||
EXECUTION_ID_ |
执行实例ID |
nvarchar(64) |
√ |
执行的ID |
|
PROC_INST_ID_ |
流程实例ID |
nvarchar(64) |
√ |
流程实例ID |
|
TASK_ID_ |
节点实例ID |
nvarchar(64) |
√ |
节点实例ID(Local) |
|
BYTEARRAY_ID_ |
字节表ID |
nvarchar(64) |
√ |
字节表的ID (ACT_GE_BYTEARRAY) |
|
DOUBLE_ |
DOUBLE_ |
float |
√ |
存储变量类型为Double |
|
LONG_ |
LONG_ |
numeric(19) |
√ |
存储变量类型为long |
|
TEXT_ |
TEXT_ |
nvarchar(4000) |
√ |
'存储变量值类型为String 如此处存储持久化对象时,值jpa对象的class |
|
TEXT2_ |
TEXT2_ |
nvarchar(4000) |
√ |
此处存储的是JPA持久化对象时,才会有值。此值为对象ID |
-
act_hi_varinst 流程变量历史表
字段名称 |
字段描述 |
数据类型 |
主键 |
为空 |
取值说明 |
ID_ |
ID_ |
nvarchar(64) |
√ |
ID_ |
|
PROC_INST_ID_ |
流程实例ID |
nvarchar(64) |
√ |
流程实例ID |
|
EXECUTION_ID_ |
执行实例ID |
nvarchar(255) |
√ |
执行实例ID |
|
TASK_ID_ |
任务实例ID |
nvarchar(64) |
√ |
任务实例ID |
|
NAME_ |
名称 |
nvarchar(64) |
参数名称(英文) |
||
VAR_TYPE_ |
参数类型 |
varchar(255) |
√ |
备注5 |
|
REV_ |
乐观锁 |
nvarchar(64) |
√ |
乐观锁 Version |
|
BYTEARRAY_ID_ |
字节表ID |
nvarchar(400) |
√ |
ACT_GE_BYTEARRAY表的主键 |
|
DOUBLE_ |
DOUBLE_ |
nvarchar(255) |
√ |
存储DoubleType类型的数据 |
|
LONG_ |
LONG_ |
nvarchar(255) |
√ |
存储LongType类型的数据 |
|
TEXT_ |
TEXT_ |
datetime |
√ |
备注6 |
|
TEXT2_ |
TEXT2_ |
datetime |
√ |
此处存储的是JPA持久化对象时,才会有值。此值为对象ID |