Activiti工作流数据库表结构

2018-11-12 20:20

Activiti数据表结构

USER_ID_ TASK_ID_ 用户ID 任务Id VARCHAR(255) 255 VARCHAR(64) 64 VARCHAR(64) 64 VARCHAR(64) 64 是 是 是 是 PROC_INST_ID_ 流程实例ID PROC_DEF_ID_ 流程定义Id 1.2.22 表名:ACT_RU_JOB(运行中的任务)

运行时定时任务数据表 ACT_RU_JOB(act_ru_job) 是否字段名 主键 是 ID_

REV_ TYPE_ LOCK_EXP_TIME_ LOCK_OWNER_ EXCLUSIVE_ EXECUTION_ID_ 字段描述 ID_ 版本号 TYPE_ LOCK_EXP_TIME_ LOCK_OWNER_ EXCLUSIVE_ EXECUTION_ID_ 数据类型 VARCHAR(64) INT(11) 长度 可空 约束 缺省值 取值说明 64 11 标识 版本 类型 锁定释放时间 挂起者 执行实例ID 流程实例ID 流程定义ID 异常信息ID 异常信息 到期时间 重复 处理类型 标识 是 VARCHAR(255) 255 TIMESTAMP 是 是 是 是 是 是 是 VARCHAR(255) 255 TINYINT(1) VARCHAR(64) 1 64 64 64 11 PROCESS_INSTANCEPROCESS_INSTANCEVARCHAR(64) _ID_ _ID_ PROC_DEF_ID_ PROC_DEF_ID_ VARCHAR(64) RETRIES_ RETRIES_ INT(11) EXCEPTION_STACK_EXCEPTION_STACK_VARCHAR(64) 64 是 ID_ ID_ EXCEPTION_MSG_ EXCEPTION_MSG_ VARCHAR(4000) 4000 是 DUEDATE_ REPEAT_ HANDLER_TYPE_ HANDLER_CFG_ DUEDATE_ REPEAT_ HANDLER_TYPE_ HANDLER_CFG_ TIMESTAMP 是 是 是 VARCHAR(255) 255 VARCHAR(255) 255 VARCHAR(4000) 4000 是 1.2.23 表名:ACT_RU_TASK(运行时任务数据表)

(执行中实时任务)代办任务查询表 ACT_RU_TASK(act_ru_task) 是否字段名 主键

字段描述 数据类型 缺省长度 可空 约束 值 取值说明 Activiti数据表结构

是 ID_ REV_ ID_ 版本号 VARCHAR(64) 64 INT(11) 11 ID_ 乐观锁 执行实例ID 流程实例ID 是 是 是 EXECUTION_ID_ 实例id(外键VARCHAR(64) 64 EXECUTION_ID_) PROC_INST_ID_ 流程实例ID(外VARCHAR(64) 64 键PROC_INST_ID_) PROC_DEF_ID_ 流程定义ID VARCHAR(64) 64 NAME_ 任务名称 VARCHAR(255) 255 VARCHAR(64) 64 是 是 是 流程定义ID 节点定义名称 父节点实例ID 节点定义描述 任务定义的ID 拥有者(一般情况下为空,只有在委托时才有值) 签收人或委托人 委托类型,DelegationState分为两种:PENDING,RESOLVED。如无委托则为空 优先级别,默认为:50 创建时间,CURRENT_TIMESTAMP 耗时 1代表激活 2代表挂起 PARENT_TASK_I父节任务ID D_ DESCRIPTION_ 任务描述 TASK_DEF_KEY_ 任务定义key OWNER_ ASSIGNEE_ DELEGATION_ 所属人(老板) 代理人员 (受让人) 代理团 VARCHAR(40004000 是 ) VARCHAR(255) 255 是 VARCHAR(255) 255 VARCHAR(255) 255 VARCHAR(64) 64 是 是 是

PRIORITY_ 优先权 INT(11) TIMESTAMP DATETIME INT(11) 11 11 是 CREATE_TIME_ 创建时间 DUE_DATE_ 执行时间 是 是 SUSPENSION_ST暂停状态 ATE_ 1.2.24 表名:ACT_RU_VARIABLE(运行时流程变量数据表)

ACT_RU_VARIABLE(act_ru_variable) 是否字段名 主键 是 ID_

REV_ TYPE NAME_ 字段描述 ID_ 版本号 编码类型 变量名称 数据类型 VARCHAR(64) INT(11) 缺省长度 可空 约束 值 64 11 是 是 是 是 是 是 是 备注 主键标识 乐观锁 参见VAR_TYPE_类型说明 变量名称 执行的ID 流程实例ID 节点实例ID(Local) 字节表的ID (ACT_GE_BYTEARRAY) 存储变量类型为Double 存储变量类型为long VARCHAR(255) 255 VARCHAR(255) 255 VARCHAR(64) VARCHAR(64) VARCHAR(64) VARCHAR(64) DOUBLE BIGINT(20) 64 64 64 64 20 EXECUTION_ID_ 执行实例ID PROC_INST_ID_ 流程实例Id TASK_ID_ 任务id BYTEARRAY_ID_ 字节组ID DOUBLE_ LONG_ DOUBLE_ LONG_ Activiti数据表结构

TEXT_ TEXT_ VARCHAR(4000) 4000 是 存储变量值类型为String 如此处存储持久化对象时,值jpa对象的class 此处存储的是JPA持久化对象时,才会有值。此值为对象ID TEXT2_ TEXT2_ VARCHAR(4000) 4000 是

2 Activiti中主要对象的关系

本节主要介绍在工作流中出现的几个对象及其之间的关系,以及在Activiti中各个对象是如何关联的。

在开始之前先看看下图,对整个对象结构有个了解,再结合实例详细介绍理解。

图1. Activiti中几个对象之间的关系

我们模拟一个请假的流程进行分析介绍,该流程主要包含以下几个步骤: ? 员工申请请假 ? 部门领导审批 ? 人事审批 ? 员工销假

ProcessInstance对象

Activiti数据表结构

员工开始申请请假流程,通过runtimeService.startProcessInstance()方法启动,引擎会创建一个流程实例(ProcessInstance)。

简单来说流程实例就是根据一次(一条)业务数据用流程驱动的入口,两者之间是一对一的关系。流程引擎会创建一条数据到ACT_RU_EXECUTION表,同时也会根据history的级别决定是否查询相同的历史数据到ACT_HI_PROCINST表。

启动完流程之后业务和流程已经建立了关联关系,第一步结束。 启动流程和业务关联区别:

?

对于自定义表单来说启动的时候会传入businessKey作为业务和流程的关联属性

?

对于动态表单来说不需要使用businessKey关联,因为所有的数据都保存在引擎的表中

?

对于外部表单来说businessKey是可选的,但是一般不会为空,和自定义表单类似

Execution对象

对于初学者来说,最难理解的地方就是ProcessInstance与Execution之间的关系,要分两种情况说明。Execution的含义就是一个流程实例(ProcessInstance)具体要执行的过程对象。 不过在说明之前先声明两者的对象映射关系:

ProcessInstance(1)→ Execution(N),(其中N >= 1)。 1) 值相等的情况:

除了在流程中启动的子流程之外,流程启动之后在表ACT_RU_EXECUTION中的字段ID_和PROC_INST_ID_字段值是相同的。

图2. ID_和PROC_INST_ID_相等

2) 值不相等的情况:

Activiti数据表结构

不相等的情况目前只会出现在子流程中(包含:嵌套、引入),例如一个购物流程中除了下单、出库节点之外可能还有一个付款子流程,在实际企业应用中付款流程通常是作为公用的,所以使用子流程作为主流程(购物流程)的一部分。 当任务到达子流程时引擎会自动创建一个付款流程,但是这个流程有一个特殊的地方,在数据库可以直观体现,如下图。

图3. ID_和PROC_INST_ID_不相等

上图中有两条数据,第二条数据(嵌入的子流程)的PARENT_ID_等于第一条数据的ID_和PROC_INST_ID_,并且两条数据的PROC_INST_ID_相同。

上图中还有一点特殊的地方,字段IS_ACTIVE_的值分别是0和1,说明正在执行子流程主流程挂起。

Task对象

前面说了ProcessInstance和业务是一对一关联的,和业务数据最亲密;而Task则和用户最亲密的(UserTask),用户每天的待办事项就是一个个的Task对象。

从图1中看得出Execution和Task是一对一关系,Task可以是任何类型的Task实现,可以是用户任务(UserTask)、Java服务(Java ServiceTask)等,在实际流程运行中只不过面向对象不同,用户任务(UserTask)需要有人为参与完成(complete),Java服务需要由系统自动执行(execution)。

图4. 表ACT_RU_TASK

Task是在流程定义中看到的最大单位,每当一个Task完成的时候会引擎会把当前的任务移动到历史中,然后插入下一个任务插入到表ACT_RU_TASK中。结

Activiti数据表结构

合请假流程来说就是让用户点击“完成”按钮提交当前任务是的动作,引擎自动根据任务的顺序流或者排他分支判断走向。

HistoryActivity(历史活动)

图5. 表ACT_HI_ACTINST

Activity包含了流程中所有的活动数据,例如开始事件(图5表中的第1条数据)、各种分支(排他分支、并行分支等,图5表中的第2条数据)、以及刚刚提到的Task执行记录(如图5表中的第3、4条数据)。

有些人认为Activity和Task是多对一关系,其实不是,从上图中可以看出来根本没有Task相关的字段。

结合请假流程来说,如Task中提到的当完成流程的时候所有下一步要执行的任务(包括各种分支)都会创建一个Activity记录到数据库中。例如领导审核节点点击“同意”按钮就会流转到人事审批节点,如果“驳回”那就流转到调整请假内容节点,每一次操作的Task背后实际记录更详细的活动(Activity)。


Activiti工作流数据库表结构.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:南京理工大学考研有机答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: