Activiti7工作流引擎:基础篇 数据库表结构
Posted vbirdbest
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activiti7工作流引擎:基础篇 数据库表结构相关的知识,希望对你有一定的参考价值。
内卷: 一般用于形容某个领域中发生了过度的竞争,导致人们进入了互相倾轧、内耗的状态,也就是非理性的内部竞争。
更宽泛一点说,任何无实质意义的消耗都可称为“内卷”。
Activiti7的数据库表名以ACT_
作为前缀,字段都是以下划线_
结尾的,第二个前缀表示业务类每个表都会有一个字段REV_
表示乐观锁版本号和业务没有任何关系,每次操作都会加1。
一:GE
1.1 act_ge_property 通用属性表
用于定义系统属性。
- next.dbid 流程实例id:初始化值为1,启动第一个流程实例值为
2501
。 - schema 版本号:7.0.0。
1.2 act_ge_bytearray 通用字节数组表
用于存储.bpmn文件和.png文件。
字段名 | 数据类型 | 注释 |
---|---|---|
NAME_ | varchar(255) | 资源名称 |
DEPLOYMENT_ID_ | varchar(64) | 部署id:act_re_deployment.id |
BYTES_ | longblob | .bpmn或者.png文件对应的二进制文件 |
GENERATED_ | tinyint(4) | 生成方式,0:用户上传,1:系统自动生成 |
Activiti7中.bpmn文件本质上是一种.xml文件,可以可以通过解析XML获取流程定义文件中的每个节点信息。
/**
* 查询流程定义内容
*/
public void queryProcessDefinitionElement()
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
.processDefinitionKey("offwork")
.singleResult();
BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
if (bpmnModel != null)
Collection<FlowElement> flowElements = bpmnModel.getMainProcess().getFlowElements();
for (FlowElement flowElement : flowElements)
if (flowElement instanceof UserTask)
// 可以根据Assignee关联act_hi_identitylink找到负责人
System.out.println(flowElement.getClass().getSimpleName() + "-"
+ flowElement.getId() + "-" + flowElement.getName() + "-" + ((UserTask)flowElement).getAssignee());
// UserTask-_3-请假申请-$apply
// UserTask-_4-项目经理-$pm
// UserTask-_5-人事-$hr
二:RE
每部署一次就会往act_re_deployment、act_re_procdef、act_ge_bytearray插入一条记录。
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
Deployment deploy = processEngine.getRepositoryService()
.createDeployment()
.addClasspathResource("bpmn/offwork.bpmn")
.name("请假流程")
.deploy();
2.1 act_re_deployment 资源部署表
字段名 | 数据类型 | 注释 |
---|---|---|
NAME_ | varchar(255) | 流程定义名字,对应于.bpmn中的Name属性 |
KEY_ | varchar(255) | 键值 |
DEPLOY_TIME_ | timestamp | 部署时间 |
2.2 act_re_procdef 资源流程定义表
act_re_deployment 和 act_re_procdef 是一对一关系。但注意:同一个.bpmn流程可以部署多次。
字段名 | 数据类型 | 注释 |
---|---|---|
NAME_ | varchar(255) | 流程定义名字,对应于.bpmn中的Name属性 |
KEY | varchar(255) | 流程定义唯一关键字,每个流程定义都不允许重复,对应.bpmn中的Id 属性 |
VERSION_ | int(11) | 版本号 |
DEPLOYMENT_ID_ | varchar(64) | 部署id:act_re_deployment.id |
RESOURCE_NAME_ | varchar(4000) | .bpmn文件名字 |
DGRM_RESOURCE_NAME_ | varchar(4000) | .png文件名字 |
DESCRIPTION_ | varchar(4000) | 流程定义描述 |
SUSPENSION_STATE_ | int(11) | 挂起状态 1:激活,2:挂起(暂停) |
三:RU 运行时
启动流程实例:
- act_ru_execution:插入2条记录,第一条为流程实例记录,第二条为执行流记录(即UserTask任务节点)。
- act_ru_task:插入一条记录,为流程定义的第一个UserTask。
- act_ru_identitylink:每个UserTask对应一条记录,任务办理人。
- act_ru_variable:运行时所需的所有变量。
public void startProcessInstance()
Map<String, Object> assignees = new HashMap<>();
assignees.put("apply", "张三");
assignees.put("pm", "傻经理");
assignees.put("hr", "狗人事");
String businessKey = "1";
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
ProcessInstance processInstance = processEngine.getRuntimeService()
.startProcessInstanceByKey("offwork", businessKey, assignees);
3.1 act_ru_execution 流程实例表
第一次插入两条(一条流程实例对象ProcessInstance
、一条执行流对象Execution
),以后每次插入一条执行流对象。
字段名 | 数据类型 | 注释 |
---|---|---|
PROC_INST_ID_ | varchar(64) | 流程实例Id |
BUSINESS_KEY_ | varchar(255) | 业务Key |
PARENT_ID_ | varchar(64) | |
BUSINESS_KEY_ | varchar(255) | 业务Key |
PROC_DEF_ID_ | varchar(64) | 流程定义id:act_re_procdef.id |
ROOT_PROC_INST_ID_ | varchar(64) | 根流程实例id,PARENT_ID_=null |
ACT_ID_ | varchar(255) | 活动id |
IS_ACTIVE_ | tinyint(4) | 是否激活 1:激活 |
IS_SCOPE_ | tinyint(4) | 是否流程实例:流程实例和子流程都为1 |
IS_CONCURRENT_ | tinyint(4) | 是否并行分支 |
SUSPENSION_STATE_ | int(11) | 挂起状态 1:激活,2:挂起 |
START_TIME_ | datetime | 开始时间 |
START_USER_ID_ | varchar(255) | 启动流程的用户id |
3.2 act_ru_task 任务表
- 每启动一个流程实例就会将第一个任务节点插入该表,即同一个流程定义可以被不同的申请人发起多次,task表中同样有多条任务。
- 每个任务完成后会自动删除数据,同时将下一个任务插入到该表中。
字段名 | 数据类型 | 注释 |
---|---|---|
EXECUTION_ID_ | varchar(64) | 执行id |
PROC_INST_ID_ | varchar(64) | 流程实例Id |
PROC_DEF_ID_ | varchar(64) | 流程定义id:act_re_procdef.id |
NAME_ | varchar(255) | UserTask对应的任务名称Name |
TASK_DEF_KEY_ | varchar(255) | UserTask节点对应的Id 属性 |
ASSIGNEE_ | varchar(255) | 任务负责人,对应于UserTask中的Assignee属性 |
PRIORITY_ | int(11) | 优先级 |
CREATE_TIME_ | timestamp | 创建时间 |
DUE_TIME_ | timestamp | 到期时间 |
CLAIM_TIME_ | timestamp | 拾起时间 |
SUSPENSION_STATE_ | int(11) | 挂起状态 1:激活,2:挂起 |
3.3 act_ru_identitylink 参与人
字段名 | 数据类型 | 注释 |
---|---|---|
TYPE_ | varchar(64) | participant参与者、candidate候选人 |
USER_ID_ | varchar(255) | 用户id,对应于UserTask中的Assignee |
PROC_INST_ID_ | varchar(64) | 流程实例id |
PROC_DEF_ID_ | varchar(64) | 流程定义id:act_re_procdef.id |
3.4 act_ru_variable 流程变量
运行时所需的所有变量。流程完成后相关变量会被删除。
字段名 | 数据类型 | 注释 |
---|---|---|
TYPE_ | varchar(64) | 数据类型 |
NAME_ | varchar(255) | 变量名 |
EXECUTION_ID_ | varchar(64) | 执行id |
PROC_INST_ID_ | varchar(64) | 流程实例id |
BYTEARRAY_ID_ | varchar(64) | act_re_bytearray.id_ |
DOUBLE_ | double | double变量值 |
LONG_ | bigint(20) | long变量值 |
TEXT_ | varchar(4000) | 存储String类型的值 |
TEXT2_ | varchar(4000) | 变量值 |
四:HI
4.1 act_hi_procinst
字段名 | 数据类型 | 注释 |
---|---|---|
PROC_INST_ID_ | varchar(64) | 流程实例id |
BUSINESS_KEY_ | varchar(64) | 业务key |
PROC_DEF_ID_ | varchar(255) | 流程定义id |
START_TIME_ | datetime | 流程开始时间 |
END_TIME_ | datetime | 流程结束时间 |
DURATION_ | bigint | 持续时间 |
START_USER_ID_ | varchar | 开始用户id |
START_ACT_ID_ | varchar(255) | 开始活动id |
END_ACT_ID_ | varchar(255) | 结束活动ID,如果此值不为空表示整个流程已经结束了 |
SUPER_PROCESS_INSTANCE_ID_ | varchar(64) | 父流程实例id |
DELETE_REASON_ | varchar(4000) | 删除原因 |
NAME_ | varchar(255) | 父流程实例名称 |
4.2 act_hi_taskinst和act_hi_actinst
TASK_DEF_KEY:对应于.bpmn文件中的每个符号的Id
,所以Id一般不要使用生成的数字,改成有意义的名字更加直观。
ACT_HI_TASKINST和ACT_HI_ACTINST有什么区别?
- ACT_HI_TASKINST 和 ACT_HI_ACTINST 90%的字段相同。
- ACT_HI_TASKINST 只存储历史
任务
相关的数据。 - ACT_HI_ACTINST 存储所有活动节点数据,活动包含事件Event(开始、结束)、各种Task、网关Gateway等。
4.3 act_hi_identitylink 参与人
TYPE_:participant、candidate、assignee、owner、starter。
4.4 act_hi_varinst 历史变量
4.5 act_hi_comment 历史审核意见表
字段名 | 数据类型 | 注释 |
---|---|---|
TYPE_ | varchar(64) | 类型:event (事件),comment (意见),也可以自定义类型 |
TIME_ | datetime | 填写时间 |
USER_ID_ | varchar(255) | 填写人 |
TASK_ID_ | varchar(64) | 任务id |
PROC_INST_ID_ | varchar(64) | 流程实例id |
ACTION_ | varchar(255) | 动作:AddUserLink (指定负责人)、DeleteUserLink、AddGroupLink、DeleteGroupLink、AddComment (填写意见)、AddAttachment、DeleteAttachement |
MESSAGE_ | varchar(4000) | 基本内容, 用于存放流程产生的信息,比如审批意见,常存储JSON字符串 |
FULL_MSG_ | longblob | 附件,存储附件文件 |
五:其它文章
以上是关于Activiti7工作流引擎:基础篇 数据库表结构的主要内容,如果未能解决你的问题,请参考以下文章