【Activiti工作流引擎】数据库分析

这篇博客详细分析了Activiti工作流引擎在初始化、部署流程、启动流程、完成任务及完成流程时对数据库的操作。涉及表包括ACT_GE_PROPERTY、ACT_RE_PROCDEF、ACT_GE_BYTEARRAY、ACT_RE_DEPLOYMENT等,阐述了各步骤中的增删改查操作,并举例说明了变量、任务实例和流程实例的变更情况。
摘要由CSDN通过智能技术生成

基于上一篇的demo做了测试

初始化引擎

会创建25张表
其中ACT_GE_PROPERTY默认会有3条数据
系统相关属性表

09:44:59,105 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - SQL: insert into ACT_GE_PROPERTY 
values ('schema.version', '5.22.0.0', 1)
09:44:59,109 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - SQL: insert into ACT_GE_PROPERTY 
values ('schema.history', 'create(5.22.0.0)', 1)
09:44:59,109 [main] DEBUG org.activiti.engine.impl.db.DbSqlSession  - SQL: insert into ACT_GE_PROPERTY 
values ('next.dbid', '1', 1)
NAME_   VALUE_  REV_
next.dbid   1   1
schema.history  create(5.22.0.0)    1
schema.version  5.22.0.0    1

这个next.dbid的VALUE_每次部署新流程的时候会变化,默认递增2500
REV_默认递增为1

部署流程

需要操作4张表

ACT_GE_PROPERTY

系统相关属性表

NAME_       VALUE_  REV_
next.dbid   2501    2

解析xml或者bpmn文件

ACT_RE_PROCDEF

已部署的流程定义表

INSERT INTO `activiti`.`act_re_procdef`(`ID_`, `REV_`, `CATEGORY_`, `NAME_`, `KEY_`, `VERSION_`, `DEPLOYMENT_ID_`, `RESOURCE_NAME_`, `DGRM_RESOURCE_NAME_`, `DESCRIPTION_`, `HAS_START_FORM_KEY_`, `HAS_GRAPHICAL_NOTATION_`, `SUSPENSION_STATE_`, `TENANT_ID_`) VALUES ('onboarding:1:4', 1, 'http://www.activiti.org/processdef', 'Onboarding', 'onboarding', 1, '1', 'onboarding.bpmn20.xml', 'onboarding.onboarding.png', NULL, 0, 1, 1, '');

重点的几个字段:

ID onboarding:1:4
key onboarding
version 1

key相同的认为是一样的流程,使用不同的ID和version区分,默认启动流程的时候会使用最新版本

ACT_GE_BYTEARRAY

通用的流程定义和流程资源表

ID_ REV_    NAME_   DEPLOYMENT_ID_  BYTES_  GENERATED_
2   1   onboarding.bpmn20.xml   1   (BLOB) 6.67 KB  0
3   1   onboarding.onboarding.png   1   (BLOB) 9.54 KB  1

资源文件的路径,DEPLOYMENT_ID_和ACT_RE_PROCDEF关联

ACT_RE_DEPLOYMENT

部署单元信息表
用来存储部署时需要持久化保存下来的信息

INSERT INTO `activiti`.`act_re_deployment`(`ID_`, `NAME_`, `CATEGORY_`, `TENANT_ID_`, `DEPLOY_TIME_`) VALUES ('1', NULL, NULL, '', '2018-05-07 01:46:41.780');

这里的ID就是ACT_RE_PROCDEF的DEPLOYMENT_ID_

启动流程

涉及9张表,5张历史表,4张执行表

ACT_HI_VARINST
历史的流程运行中的变量信息
启动的时候会有一个initiator
通过EXECUTION_ID_绑定

INSERT INTO `activiti`.`act_hi_varinst`(`ID_`, `PROC_INST_ID_`, `EXECUTION_ID_`, `TASK_ID_`, `NAME_`, `VAR_TYPE_`, `REV_`, `BYTEARRAY_ID_`, `DOUBLE_`, `LONG_`, `TEXT_`, `TEXT2_`, `CREATE_TIME_`, `LAST_UPDATED_TIME_`) VALUES ('6', '5', '5', NULL, 'initiator', 'null', 0, NULL, NULL, NULL, NULL, NULL, '2018-05-07 01:55:17.056', '2018-05-07 01:55:17.056');

ACT_HI_TASKINST
历史的任务实例

INSERT INTO `activiti`.`act_hi_taskinst`(`ID_`, `PROC_DEF_ID_`, `TASK_DEF_KEY_`, `PROC_INST_ID_`, `EXECUTION_ID_`, `NAME_`, `PARENT_TASK_ID_`, `DESCRIPTION_`, `OWNER_`, `ASSIGNEE_`, `START_TIME_`, `CLAIM_TIME_`, `END_TIME_`, `DURATION_`, `DELETE_REASON_`, `PRIORITY_`, `DUE_DATE_`, `FORM_KEY_`, `CATEGORY_`, `TENANT_ID_`) VALUES ('9', 'onboarding:1:4', 'enterOnboardingData', '5', '5', 'Enter Data', NULL, NULL, NULL, NULL, '2018-05-07 01:55:17.181', NULL, NULL, NULL, NULL, 50, NULL, NULL, NULL, '');

ACT_HI_PROCINST
(历史流程实例信息)核心表
有启动和结束时间
刚启动的时候只有启动时间和启动节点

INSERT INTO `activiti`.`act_hi_procinst`(`ID_`, `PROC_INST_ID_`, `BUSINESS_KEY_`, `PROC_DEF_ID_`, `START_TIME_`, `END_TIME_`, `DURATION_`, `START_USER_ID_`, `START_ACT_ID_`, `END_ACT_ID_`, `SUPER_PROCESS_INSTANCE_ID_`, `DELETE_REASON_`, `TENANT_ID_`, `NAME_`) VALUES ('5', '5', NULL, 'onboarding:1:4', '2018-05-07 01:55:17.062', NULL, NULL, NULL, 'startOnboarding', NULL, NULL, NULL, '', NULL);

ACT_HI_ACTINST
历史活动信息。这里记录流程流转过的所有节点,与HI_TASKINST不同的是,taskinst只记录usertask内容。
就是一个流程整个过程的所有节点都会记录
初始化的时候有startOnboarding和enterOnboardingData

INSERT INTO `activiti`.`act_hi_actinst`(`ID_`, `PROC_DEF_ID_`, `PROC_INST_ID_`, `EXECUTION_ID_`, `ACT_ID_`, `TASK_ID_`, `CALL_PROC_INST_ID_`, `ACT_NAME_`, `ACT_TYPE_`, `ASSIGNEE_`, `START_TIME_`, `END_TIME_`, `DURATION_`, `TENANT_ID_`) VALUES ('7', 'onboarding:1:4', '5', '5', 'startOnboarding', NULL, NULL, 'Start', 'startEvent', NULL, '2018-05-07 01:55:17.063', '2018-05-07 01:55:17.156', 93, '');
INSERT INTO `activiti`.`act_hi_actinst`(`ID_`, `PROC_DEF_ID_`, `PROC_INST_ID_`, `EXECUTION_ID_`, `ACT_ID_`, `TASK_ID_`, `CALL_PROC_INST_ID_`, `ACT_NAME_`, `ACT_TYPE_`, `ASSIGNEE_`, `START_TIME_`, `END_TIME_`, `DURATION_`, `TENANT_ID_`) VALUES ('8', 'onboarding:1:4', '5', '5', 'enterOnboardingData', '9', NULL, 'Enter Data', 'userTask', NULL, '2018-05-07 01:55:17.159', NULL, NULL, '');

ACT_HI_IDENTITYLINK
任务参与者数据表。主要存储历史节点参与者的信息。
enterOnboardingData的参与者就是managers

INSERT INTO `activiti`.`act_hi_identitylink`(`ID_`, `GROUP_ID_`, `TYPE_`, `USER_ID_`, `TASK_ID_`, `PROC_INST_ID_`) VALUES ('10', 'managers', 'candidate', NULL, '9', NULL);

ACT_RU_EXECUTION
核心,我的代办任务查询表
现在待办就是enterOnboardingData
这个ID_就是后面的EXECUTION_ID_

INSERT INTO `activiti`.`act_ru_execution`(`ID_`, `REV_`, `PROC_INST_ID_`, `BUSINESS_KEY_`, `PARENT_ID_`, `PROC_DEF_ID_`, `SUPER_EXEC_`, `ACT_ID_`, `IS_ACTIVE_`, `IS_CONCURRENT_`, `IS_SCOPE_`, `IS_EVENT_SCOPE_`, `SUSPENSION_STATE_`, `CACHED_ENT_STATE_`, `TENANT_ID_`, `NAME_`, `LOCK_TIME_`) VALUES ('5', 1, '5', NULL, NULL, 'onboarding:1:4', NULL, 'enterOnboardingData', 1, 0, 1, 0, 1, 2, '', NULL, NULL);

ACT_RU_TASK
运行时任务数据表
(执行中实时任务)代办任务查询表
这个ID_就是后面的TASK_ID_

INSERT INTO `activiti`.`act_ru_task`(`ID_`, `REV_`, `EXECUTION_ID_`, `PROC_INST_ID_`, `PROC_DEF_ID_`, `NAME_`, `PARENT_TASK_ID_`, `DESCRIPTION_`, `TASK_DEF_KEY_`, `OWNER_`, `ASSIGNEE_`, `DELEGATION_`, `PRIORITY_`, `CREATE_TIME_`, `DUE_DATE_`, `CATEGORY_`, `SUSPENSION_STATE_`, `TENANT_ID_`, `FORM_KEY_`) VALUES ('9', 1, '5', '5', 'onboarding:1:4', 'Enter Data', NULL, NULL, 'enterOnboardingData', NULL, NULL, NULL, 50, '2018-05-07 01:55:17.161', NULL, NULL, 1, '', NULL);

ACT_RU_IDENTITYLINK
主要存储当前节点参与者的信息,任务参与者数据表
TASK_ID_就是ACT_RU_TASK的ID_

INSERT INTO `activiti`.`act_ru_identitylink`(`ID_`, `REV_`, `GROUP_ID_`, `TYPE_`, `USER_ID_`, `TASK_ID_`, `PROC_INST_ID_`, `PROC_DEF_ID_`) VALUES ('10', 1, 'managers', 'candidate', NULL, '9', NULL, NULL);<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值