了解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 |