0
点赞
收藏
分享

微信扫一扫

Activiti7工作流引擎:基础篇(三) 数据库表结构


内卷: 一般用于形容某个领域中发生了过度的竞争,导致人们进入了互相倾轧、内耗的状态,也就是非理性的内部竞争。

更宽泛一点说,任何无实质意义的消耗都可称为“内卷”。

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文件。

Activiti7工作流引擎:基础篇(三) 数据库表结构_数据类型_02

字段名

数据类型

注释

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 资源部署表

Activiti7工作流引擎:基础篇(三) 数据库表结构_数据类型_03

字段名

数据类型

注释

NAME_

varchar(255)

流程定义名字,对应于.bpmn中的Name属性

KEY_

varchar(255)

键值

DEPLOY_TIME_

timestamp

部署时间

2.2 act_re_procdef 资源流程定义表

act_re_deployment 和 act_re_procdef 是一对一关系。但注意:同一个.bpmn流程可以部署多次。

Activiti7工作流引擎:基础篇(三) 数据库表结构_ci_04

字段名

数据类型

注释

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:挂起(暂停)

Activiti7工作流引擎:基础篇(三) 数据库表结构_database_05

三: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),以后每次插入一条执行流对象。

Activiti7工作流引擎:基础篇(三) 数据库表结构_ci_06


Activiti7工作流引擎:基础篇(三) 数据库表结构_ci_07

Activiti7工作流引擎:基础篇(三) 数据库表结构_数据库_08

字段名

数据类型

注释

PROC_INST_ID_

varchar(64)

流程实例Id

BUSINESS_KEY_

varchar(255)

业务Key

PARENT_ID_

varchar(64)

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表中同样有多条任务。
  • 每个任务完成后会自动删除数据,同时将下一个任务插入到该表中。
  • Activiti7工作流引擎:基础篇(三) 数据库表结构_ci_09


字段名

数据类型

注释

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 参与人

Activiti7工作流引擎:基础篇(三) 数据库表结构_数据库_10

字段名

数据类型

注释

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 流程变量

运行时所需的所有变量。流程完成后相关变量会被删除。

Activiti7工作流引擎:基础篇(三) 数据库表结构_ci_11

字段名

数据类型

注释

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

Activiti7工作流引擎:基础篇(三) 数据库表结构_字段名_12


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 参与人

Activiti7工作流引擎:基础篇(三) 数据库表结构_ci_13


TYPE_:participant、candidate、assignee、owner、starter。

4.4 act_hi_varinst 历史变量

Activiti7工作流引擎:基础篇(三) 数据库表结构_数据类型_14

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

附件,存储附件文件

五:其它文章

Activiti 数据库表结构参考




举报

相关推荐

0 条评论