| 数据表分类 | 描述 |
|---|---|
| ACT_GE_* | 通用数据表 |
| ACT_RE_* | 流程定义存储表 |
| ACT_ID_* | 身份信息表 |
| ACT_RU_* | 运行时数据库表 |
| ACT_HI_* | 历史数据库表, 为了保证运行时数据尽可能少, 流程执行完就会将相关数据迁移到历史表中 |
- 核心引擎: activiti.mysql.create.engine.sql
- 历史数据: activiti.mysql.create.history.sql
- 身份数据: activiti.mysql.create.identity.sql
Activiti 除了核心引擎以外, 其他都是可选的.
首先创建 ACT_GE_PROPERTY 表, 并写入:
schema.version(schema 版本)schema.history(schema 历史)next.dbid(自增 id)
三条记录
1. 通用数据库
| 数据表分类 | 描述 |
|---|---|
| ACT_GE_PROPERTY | 属性表(保存流程引擎的 kv 键值属性) |
| ACT_GE_BYTEARRAY | 资源表(存储流程定义相关的资源, 如 xml, 流程定义图) |
1.1. ACT_GE_PROPERTY
对应实体类 org.activiti.engine.impl.persistence.entity.PropertyEntityImpl

1.2 ACT_GE_BYTEARRAY
对应实体类 org.activiti.engine.impl.persistence.entity.ByteArrayEntityImpl

其中 GENERATED_ 字段标识该资源文件是自动生成还是人工上传
如果不想添加身份信息相关数据库和历史数据相关数据库, 可以在配置中显式指定
1 | <bean id="processEngineConfiguration" |
2. 流程定义存储表
| 数据表分类 | 描述 |
|---|---|
| ACT_RE_DEPLOYMENT | 流程部署记录表 |
| ACT_RE_PROCDEF | 流程定义信息表 |
| ACT_RE_MODEL | 模型信息表(用于 web 设计器) |
| ACT_PROCDEF_INFO | 流程定义动态改变信息表 |
2.1. ACT_RE_DEPLOYMENT
对应实体 org.activiti.engine.impl.persistence.entity.DeploymentEntityImpl
| 关键字段 | 描述 |
|---|---|
| ID_ | 主键 |
| NAME_ | 名称 |
| CATEGORY_ | 分类 |
| TENANT_ID_ | 多租户标志 |
| DEPLOY_TIME_ | 部署时间 |
| KEY_ | 标志 key |
| ENGINE_VERSION_ | 兼容版本, 如果使用 Activiti5, 在升级到6后会有特殊标志 |
2.2 ACT_RE_PROCDEF
对应实体 org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntityImpl
| 关键字段 | 描述 |
|---|---|
| DEPLOYMENT_ID_ | 关联部署 id |
| RESOURCE_NAME_ | 流程定义资源名称 |
| DGRM_RESOURCE_NAME_ | 流程图片资源名称 |
| HAS_START_FORM_KEY_ | 是否存在开始表单标志 |
| HAS_GRAPHICAL_NOTATION_ | 是否有图形信息 |
| SUSPENSION_STATE_ | 挂起状态 1 正常, 2 挂起 |
2.3. 测试代码
1 |
|
ACT_RE_DEPLOYMENT 表内容:
mysql> select * from ACT_RE_DEPLOYMENT \G;
*************************** 1. row ***************************
ID_: 1
NAME_: 二次审批流程
CATEGORY_: NULL
KEY_: NULL
TENANT_ID_:
DEPLOY_TIME_: 2018-12-11 09:11:27.538
ENGINE_VERSION_: NULL
ACT_RE_PROCDEF 表内容:
mysql> select * from ACT_RE_PROCDEF \G;
*************************** 1. row ***************************
ID_: SecondApprove:1:4
REV_: 1
CATEGORY_: http://www.activiti.org/test
NAME_: 二级审批
KEY_: SecondApprove
VERSION_: 1
DEPLOYMENT_ID_: 1
RESOURCE_NAME_: org/destiny/activiti/SecondApprove.bpmn20.xml
DGRM_RESOURCE_NAME_: org/destiny/activiti/SecondApprove.SecondApprove.png
DESCRIPTION_: NULL
HAS_START_FORM_KEY_: 0
HAS_GRAPHICAL_NOTATION_: 1
SUSPENSION_STATE_: 1
TENANT_ID_:
ENGINE_VERSION_: NULL
可以看到, 其中 HAS_START_FORM_KEY_ 为 0, DESCRIPTION_ 为 NULL, 二者都需要去流程定义文件中设置
HAS_START_FORM_KEY_需要在 startEvent 中设置 actviti:formKey;DESCRIPTION需要设置 documentation
修改流程定义文件:
1 |
|
然后重新部署即可看到:
mysql> select * from ACT_RE_PROCDEF \G;
*************************** 1. row ***************************
ID_: SecondApprove:1:4
REV_: 1
CATEGORY_: http://www.activiti.org/test
NAME_: 二级审批
KEY_: SecondApprove
VERSION_: 1
DEPLOYMENT_ID_: 1
RESOURCE_NAME_: org/destiny/activiti/SecondApprove.bpmn20.xml
DGRM_RESOURCE_NAME_: org/destiny/activiti/SecondApprove.SecondApprove.png
DESCRIPTION_: NULL
HAS_START_FORM_KEY_: 0
HAS_GRAPHICAL_NOTATION_: 1
SUSPENSION_STATE_: 1
TENANT_ID_:
ENGINE_VERSION_: NULL
*************************** 2. row ***************************
ID_: SecondApprove:2:2504
REV_: 1
CATEGORY_: http://www.activiti.org/test
NAME_: 二级审批
KEY_: SecondApprove
VERSION_: 2
DEPLOYMENT_ID_: 2501
RESOURCE_NAME_: org/destiny/activiti/SecondApprove.bpmn20.xml
DGRM_RESOURCE_NAME_: org/destiny/activiti/SecondApprove.SecondApprove.png
DESCRIPTION_: 审批流程描述
HAS_START_FORM_KEY_: 0
HAS_GRAPHICAL_NOTATION_: 1
SUSPENSION_STATE_: 1
TENANT_ID_:
ENGINE_VERSION_: NULL
ACT_RE_PROCDEF 是基于 KEY_ 去升级版本号, 当原有的 key 已经存在, 就会升级版本号, 其中 KEY_, VERSION_, TENANT_ID_ 共同组成一个唯一键
3. 身份数据表设计
| 数据表设计 | 描述 |
|---|---|
| ACT_ID_USER | 用户的基本信息 |
| ACT_ID_INFO | 用户的扩展信息 |
| ACT_ID_GROUP | 群组 |
| ACT_ID_MEMBERSHIP | 用户与群组关系 |
3.1. 用户信息表
对应实体 org.activiti.engine.impl.persistence.entity.UserEntityImpl
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| ID_ | varchar(64) | NO | PRI | NULL | |
| REV_ | int(11) | YES | | NULL | |
| FIRST_ | varchar(255) | YES | | NULL | |
| LAST_ | varchar(255) | YES | | NULL | |
| EMAIL_ | varchar(255) | YES | | NULL | |
| PWD_ | varchar(255) | YES | | NULL | |
| PICTURE_ID_ | varchar(64) | YES | | NULL | |
+-------------+--------------+------+-----+---------+-------+
3.2. 用户扩展信息
对应实体 org.activiti.engine.impl.persistence.entity.IdentityInfoEntityImpl
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| ID_ | varchar(64) | NO | PRI | NULL | |
| REV_ | int(11) | YES | | NULL | |
| USER_ID_ | varchar(64) | YES | | NULL | |
| TYPE_ | varchar(64) | YES | | NULL | |
| KEY_ | varchar(255) | YES | | NULL | |
| VALUE_ | varchar(255) | YES | | NULL | |
| PASSWORD_ | longblob | YES | | NULL | |
| PARENT_ID_ | varchar(255) | YES | | NULL | |
+------------+--------------+------+-----+---------+-------+
- USER_ID_: 关联用户 id
- TYPE_: 类型(固定值)
- KEY_: 属性名
- VALUE_: 属性值
- PASSWORD_: 密码(未使用)
- PARENT_ID_: 上级关联(不建议使用)
3.3. ACT_ID_GROUP
对应实体 org.activiti.engine.impl.persistence.entity.GroupEntityImpl
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| ID_ | varchar(64) | NO | PRI | NULL | |
| REV_ | int(11) | YES | | NULL | |
| NAME_ | varchar(255) | YES | | NULL | |
| TYPE_ | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
3.4. 用户组关系表
对应实体 org.activiti.engine.impl.persistence.entity.MembershipEntityImpl
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| USER_ID_ | varchar(64) | NO | PRI | NULL | |
| GROUP_ID_ | varchar(64) | NO | PRI | NULL | |
+-----------+-------------+------+-----+---------+-------+
测试代码:
1 |
|
4. 运行时流程数据表
| 数据表分类 | 描述 |
|---|---|
| ACT_RU_EXECUTION | 流程实例与分支执行信息 |
| ACT_RU_TASK | 用户任务信息 |
| ACT_RU_VARIABLE | 变量信息 |
| ACT_RU_IDENTITYLINK | 参与者相关信息 |
| ACT_RU_EVENT_SUBSCR | 事件监听表 |
| ACT_RU_JOB | 作业表 |
| ACT_RU_TIMER_JOB | 定时器表 |
| ACT_RU_SUSPENDED_JOB | 暂停作业表 |
| ACT_RU_DEADLETTER_JOB | 死信表 |
4.1. ACT_RU_EXECUTION
对应实体类 org.activiti.engine.impl.persistence.entity.ExecutionEntityImpl
| 关键字段 | 描述 |
|---|---|
| PROC_INST_ID_ | 流程实例 ID |
| BUSINESS_KEY_ | 业务标志 |
| PARENT_ID_ | 父执行信息 |
| PROC_DEF_ID_ | 流程定义 ID |
| SUPER_EXEC_ | 父流程实例对应的执行 |
| ACT_ID_ | 流程定义节点 ID |
| IS_ACTIVE | 是否活动的执行 0-非活动, 1-活动 |
| IS_CONCURRENT_ | 是否并行分支 0-非, 1-是 |
| IS_SCOPE_ | 是否全局流程执行 0-非, 1-是 |
| IS_EVENT_SCOPE_ | 是否激活状态 |
| SUSPENSION_STATE | 挂起状态 1-正常, 2-挂起 |
| LOCK_TIME_ | 锁定时间 |
4.2. ACT_RU_TASK
对应实体类 org.activiti.engine.impl.persistence.entity.TaskEntityImpl
| 关键字段 | 描述 |
|---|---|
| EXECUTION_ID_ | 执行流 id |
| PROC_INST_ID_ | 流程实例 ID |
| PROC_DEF_ID_ | 流程定义 ID |
| PARENT_TASK_ID_ | 父任务 |
| TASK_DEF_KEY_ | 任务定义 ID |
| NAME_ | 任务定义名称 |
| OWNER_ | 拥有人 |
| ASSIGNEE_ | 代理人 |
| DELEGATION_ | 委托状态 PENDING-委托中, RESOLVED 已处理 |
| PRIORITY_ | 优先级 |
| DUE_DATE_ | 过期时间 |
| FORM_KEY_ | 表单标志 |
4.3. ACT_RU_VARIABLE
对应实体类 org.activiti.engine.impl.persistence.entity.VariableInstanceEntityImpl
| 关键字段 | 描述 |
|---|---|
| TYPE_ | 变量名称(integer, string, double, json) |
| NAME_ | 变量名 |
| BYTEARRAY_ID_ | 资源表 id |
| DOUBLE_ | 浮点值 |
| LONG_ | 长整型数值 |
| TEXT_ | 文本值 |
4.4. ACT_RU_IDENTITYLINK
对应实体类 org.activiti.engine.impl.persistence.entity.IdentityInfoEntityImpl
当用户和流程建立关系的时候, 就会在此表中插入记录
| 关键字段 | 描述 |
|---|---|
| ID_ | 主键 |
| GROUP_ID_ | 用户组 ID |
| TYPE_ | 类型 assignee, candidate, owner, starter… |
| USER_ID_ | 用户 ID |
| TASK_ID_ | 任务 ID |
| PROC_INST_ID_ | 流程实例 |
4.5. ACT_RU_EVENT_SUBSCR
对应实体类 org.activiti.engine.impl.persistence.entity.EventSubscriptionEntityImpl
| 关键字段 | 描述 |
|---|---|
| EVENT_TYPE_ | 事件类型 message, signal |
| EVENT_NAME_ | 事件名称 |
| EXECUTION_ID_ | 流程执行 ID |
| PROC_INST_ID_ | 流程实例 ID |
| ACTIVITY_ID_ | 流程定义节点 ID |
| CONFIGURATION_ | 配置 |
4.6. ACT_RU_JOB
对应实体类 org.activiti.engine.impl.persistence.entity.JobEntityImpl
| 关键字段 | 描述 |
|---|---|
| TYPE_ | 类型 |
| LOCK_EXP_TIME_ | 锁定过期时间 |
| LOCK_OWNER_ | 锁定接点 |
| EXCLUSIVE_ | 是否唯一 |
| RETRIES_ | 重试次数3 |
| REPEAT_ | 重复表达式 R5/PT10S |
| EXCEPTION_STACK_ID_ | 异常堆栈(资源表 ID) |
| EXCEPTION_MSG_ | 异常信息 |
| DUEDATE_ | 过期时间 |
| HANDLER_TYPE_ | 处理器类型 |
| HANDLER_CFG | 处理器配置 |
| EXECUTION_ID_ | 流程执行表 ID |
4.7 测试代码
1 |
|
4.7.1 ACT_RU_EXECUTION 表
执行完成后, ACT_RU_EXECUTION 表会生成如下两条记录, 流程启动和用户任务
1 | *************************** 1. row *************************** |
- 两条记录的
PROC_DEF_ID_相同, 说明是同一个流程的实例. - 第一条记录的
ID_是5, 第二条记录的PARENT_ID_是 5, 说明第二条是第一条生成的. - 第二条记录的
ACT_ID_值为 submitApprove, 代表 userTask 的一个节点 - 第二条记录的
IS_SCOPE值为 0, 代表不是一个全局的执行流, 而第一条是一个全局执行流.
4.7.2 ACT_RU_TASK 表
1 | *************************** 1. row *************************** |
PROC_DEF_ID_为 SecondApprove:1:4
4.7.3. ACT_RU_VARIABLE 表
保存启动时候设置的变量
1 | *************************** 1. row *************************** |
执行设置所属人的代码:
1 |
|
4.7.4 ACT_RU_IDENTITYLINK
*************************** 1. row ***************************
ID_: 2501
REV_: 1
GROUP_ID_: NULL
TYPE_: participant
USER_ID_: destiny
TASK_ID_: NULL
PROC_INST_ID_: 5
PROC_DEF_ID_: NULL
而此时在 ACT_RU_TASK 表, 对应的 task 的 OWNER_ 字段已经赋值为 destiny
4.7.5 ACT_RU_TASK
*************************** 1. row ***************************
ID_: 10
REV_: 2
EXECUTION_ID_: 7
PROC_INST_ID_: 5
PROC_DEF_ID_: SecondApprove:1:4
NAME_: 填写申请信息
PARENT_TASK_ID_: NULL
DESCRIPTION_: NULL
TASK_DEF_KEY_: submitApprove
OWNER_: destiny
ASSIGNEE_: NULL
DELEGATION_: NULL
PRIORITY_: 50
CREATE_TIME_: 2018-12-12 07:19:33.134
DUE_DATE_: NULL
CATEGORY_: NULL
SUSPENSION_STATE_: 1
TENANT_ID_:
FORM_KEY_: NULL
CLAIM_TIME_: NULL
5. 历史流程数据表
| 数据表分类 | 描述 |
|---|---|
| ACT_HI_PROCINST | 历史流程实例表 |
| ACT_HI_ACTINST | 历史节点信息表, 执行过程中每经过一个节点就会插入一条记录 |
| ACT_HI_TASKINST | 历史任务表 |
| ACT_HI_VARINST | 历史变量 |
| ACT_HI_IDENTITYLINK | 历史参与者 |
| ACT_HI_DETAIL | 历史变更, 当使用 FormService 提交表单时, 表单的属性就会存储在该表, 以及变量的更改 |
| ACT_HI_ATTACHMENT | 附件 |
| ACT_HI_COMMENT | 评论 |
| ACT_EVT_LOG | 事件日志 |
5.1 ACT_HI_PROCINST
| 关键字段 |
