Activiti工作流总共包含23张数据表,所有的表名默认以“ACT_”开头。
并且表名的第二部分用两个字母表明表的用例,而这个用例也基本上跟Service API匹配。
u ACT_GE_* : “GE”代表“General”(通用),用在各种情况下;
u ACT_HI_* : “HI”代表“History”(历史),这些表中保存的都是历史数据,比如执行过的流程实例、变量、任务,等等。Activit默认提供了4种历史级别:
Ø none: 不保存任何历史记录,可以提高系统性能;
Ø activity:保存所有的流程实例、任务、活动信息;
Ø audit:也是Activiti的默认级别,保存所有的流程实例、任务、活动、表单属性;
Ø full:最完整的历史记录,除了包含audit级别的信息之外还能保存详细,例如:流程变量。
对于几种级别根据对功能的要求选择,如果需要日后跟踪详细可以开启full。
u ACT_ID_* : “ID”代表“Identity”(身份),这些表中保存的都是身份信息,如用户和组以及两者之间的关系。如果Activiti被集成在某一系统当中的话,这些表可以不用,可以直接使用现有系统中的用户或组信息;
u ACT_RE_* : “RE”代表“Repository”(仓库),这些表中保存一些‘静态’信息,如流程定义和流程资源(如图片、规则等);
u ACT_RU_* : “RU”代表“Runtime”(运行时),这些表中保存一些流程实例、用户任务、变量等的运行时数据。Activiti只保存流程实例在执行过程中的运行时数据,并且当流程结束后会立即移除这些数据,这是为了保证运行时表尽量的小并运行的足够快;
1.2.1 Activiti数据表清单:
用来保存部署文件的大文本数据。
保存流程定义图片和xml、Serializable(序列化)的变量,即保存所有二进制数据,特别注意类路径部署时候,不要把svn等隐藏文件或者其他与流程无关的文件也一起部署到该表中,会造成一些错误(可能导致流程定义无法删除)。
ACT_GE_BYTEARRAY(act_ge_bytearray)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
可空
|
约束
|
缺省值
|
取值说明
|
是
|
ID_
|
主键ID,资源文件编号,自增长
|
VARCHAR(64)
|
|
REV_
|
版本号
|
INT(11)
|
是
|
Version
|
NAME_
|
部署的文件名称,
|
VARCHAR(255)
|
是
|
mail.bpmn、mail.png 、mail.bpmn20.xml
|
DEPLOYMENT_ID_
|
来自于父表ACT_RE_DEPLOYMENT的主键
|
VARCHAR(64)
|
是
|
部署的ID
|
BYTES_
|
大文本类型,存储文本字节流
|
LONGBLOB
|
是
|
GENERATED_
|
是否是引擎生成。
|
TINYINT(4)
|
是
|
0为用户生成
1为Activiti生成
|
属性数据表。存储这个流程引擎级别的数据。
ACT_GE_PROPERTY(act_ge_property)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
取值说明
|
是
|
NAME_
|
属性名称
|
VARCHAR(64)
|
64
|
schema.version
schema.history
next.dbid
|
VALUE_
|
属性值
|
VARCHAR(300)
|
300
|
是
|
5.*
create(5.*)
|
REV_INT
|
版本号
|
INT(11)
|
11
|
是
|
历史活动信息。这里记录流程流转过的所有节点,与HI_TASKINST不同的是,taskinst只记录usertask内容。
ACT_HI_ACTINST(act_hi_actinst)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
可空
|
约束
|
取值说明
|
是
|
ID_
|
ID_
|
VARCHAR(64)
|
|
PROC_DEF_ID_
|
流程定义ID
|
VARCHAR(64)
|
|
PROC_INST_ID_
|
流程实例ID
|
VARCHAR(64)
|
|
EXECUTION_ID_
|
流程执行ID
|
VARCHAR(64)
|
|
ACT_ID_
|
活动ID
|
VARCHAR(255)
|
|
节点定义ID
|
TASK_ID_
|
任务ID
|
VARCHAR(64)
|
是
|
任务实例ID 其他节点类型实例ID在这里为空
|
CALL_PROC_INST_ID_
|
请求流程实例ID
|
VARCHAR(64)
|
是
|
调用外部流程的流程实例ID'
|
ACT_NAME_
|
活动名称
|
VARCHAR(255)
|
是
|
节点定义名称
|
ACT_TYPE_
|
活动类型
|
VARCHAR(255)
|
|
如startEvent、userTask
|
ASSIGNEE_
|
代理人员
|
VARCHAR(64)
|
是
|
节点签收人
|
START_TIME_
|
开始时间
|
DATETIME
|
|
2013-09-15 11:30:00
|
END_TIME_
|
结束时间
|
DATETIME
|
是
|
2013-09-15 11:30:00
|
DURATION_
|
时长,耗时
|
BIGINT(20)
|
是
|
毫秒值
|
ACT_HI_ATTACHMENT(act_hi_attachment)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
取值说明
|
是
|
ID_
|
ID_
|
VARCHAR(64)
|
64
|
主键ID
|
REV_
|
REV_
|
INT(11)
|
11
|
是
|
Version
|
USER_ID_
|
用户id
|
VARCHAR(255)
|
255
|
是
|
用户ID
|
NAME_
|
名称
|
VARCHAR(255)
|
255
|
是
|
附件名称
|
DESCRIPTION_
|
描述
|
VARCHAR(4000)
|
4000
|
是
|
描述
|
TYPE_
|
类型
|
VARCHAR(255)
|
255
|
是
|
附件类型
|
TASK_ID_
|
任务Id
|
VARCHAR(64)
|
64
|
是
|
节点实例ID
|
PROC_INST_ID_
|
流程实例ID
|
VARCHAR(64)
|
64
|
是
|
流程实例ID
|
URL_
|
连接
|
VARCHAR(4000)
|
4000
|
是
|
附件地址
|
CONTENT_ID_
|
内容Id
字节表的ID
|
VARCHAR(64)
|
64
|
是
|
ACT_GE_BYTEARRAY的ID
|
ACT_HI_COMMENT(act_hi_comment)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
取值说明
|
是
|
ID_
|
ID_
|
VARCHAR(64)
|
64
|
主键ID
|
TYPE_
|
意见记录类型,为comment时,为处理意见
|
VARCHAR(255)
|
255
|
是
|
类型:event(事件)
comment(意见)
|
TIME_
|
记录时间
|
DATETIME
|
填写时间
|
USER_ID_
|
用户Id
|
VARCHAR(255)
|
255
|
是
|
填写人
|
TASK_ID_
|
任务Id
|
VARCHAR(64)
|
64
|
是
|
节点实例ID
|
PROC_INST_ID_
|
流程实例Id
|
VARCHAR(64)
|
64
|
是
|
流程实例ID
|
ACTION_
|
行为类型。
为addcomment时,为处理意见
|
VARCHAR(255)
|
255
|
是
|
值为下列内容中的一种: AddUserLink、DeleteUserLink、AddGroupLink、DeleteGroupLink、AddComment、AddAttachment、DeleteAttachment
|
MESSAGE_
|
处理意见
|
VARCHAR(4000)
|
4000
|
是
|
用于存放流程产生的信息,比如审批意见
|
FULL_MSG_
|
全部消息
|
LONGBLOB
|
是
|
历史详情表:流程中产生的变量详细,包括控制流程流转的变量,业务表单中填写的流程需要用到的变量等。
ACT_HI_DETAIL(act_hi_detail)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
取值说明
|
是
|
ID_
|
ID_
|
VARCHAR(64)
|
64
|
主键
|
TYPE_
|
数据类型
|
VARCHAR(255)
|
255
|
类型:
FormProperty, //表单
VariableUpdate //参数
|
PROC_INST_ID_
|
流程实例ID
|
VARCHAR(64)
|
64
|
是
|
流程实例ID
|
EXECUTION_ID_
|
执行实例Id
|
VARCHAR(64)
|
64
|
是
|
执行实例ID
|
TASK_ID_
|
任务Id
|
VARCHAR(64)
|
64
|
是
|
任务实例ID
|
ACT_INST_ID_
|
活动实例Id
|
VARCHAR(64)
|
64
|
是
|
ACT_HI_ACTINST表的ID
|
NAME_
|
名称
|
VARCHAR(255)
|
255
|
名称
|
VAR_TYPE_
|
变量类型
|
VARCHAR(255)
|
255
|
是
|
参见VAR_TYPE_类型说明
|
REV_
|
REV_
|
INT(11)
|
11
|
是
|
Version
|
TIME_
|
创建时间
|
DATETIME
|
创建时间
|
BYTEARRAY_ID_
|
字节数组Id
|
VARCHAR(64)
|
64
|
是
|
ACT_GE_BYTEARRAY表的ID
|
DOUBLE_
|
DOUBLE_
|
DOUBLE
|
是
|
存储变量类型为Double
|
LONG_
|
LONG_
|
BIGINT(20)
|
20
|
是
|
存储变量类型为long
|
TEXT_
|
值
|
VARCHAR(4000)
|
4000
|
是
|
存储变量值类型为String
|
TEXT2_
|
值2
|
VARCHAR(4000)
|
4000
|
是
|
此处存储的是JPA持久化对象时,才会有值。此值为对象ID
|
备注:VAR_TYPE_类型说明: jpa-entity、boolean、bytes、serializable(可序列化)、自定义type(根据你自身配置)、 CustomVariableType、date、double、integer、long、null、short、string
任务参与者数据表。主要存储历史节点参与者的信息。
ACT_HI_IDENTITYLINK(act_hi_identitylink)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
取值说明
|
是
|
ID_
|
ID_
|
VARCHAR(64)
|
64
|
ID_
|
GROUP_ID_
|
用户组ID
|
VARCHAR(255)
|
255
|
是
|
组ID
|
TYPE_
|
用户组类型
|
VARCHAR(255)
|
255
|
是
|
类型,主要分为以下几种:
assignee、
candidate、
owner、starter 、participant
|
USER_ID_
|
用户ID
|
VARCHAR(255)
|
255
|
是
|
用户ID
|
TASK_ID_
|
任务Id
|
VARCHAR(64)
|
64
|
是
|
节点实例ID
|
PROC_INST_ID_
|
流程实例Id
|
VARCHAR(64)
|
64
|
是
|
流程实例ID
|
ACT_HI_PROCINST(act_hi_procinst)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
备注
|
是
|
ID_
|
ID_
|
VARCHAR(64)
|
64
|
PROC_INST_ID_
|
流程实例ID
|
VARCHAR(64)
|
64
|
BUSINESS_KEY_
|
业务Key
|
VARCHAR(255)
|
255
|
是
|
PROC_DEF_ID_
|
流程定义Id
|
VARCHAR(64)
|
64
|
START_TIME_
|
开始时间
|
DATETIME
|
END_TIME_
|
结束时间
|
DATETIME
|
是
|
DURATION_
|
时长
|
BIGINT(20)
|
20
|
是
|
START_USER_ID_
|
发起人员Id
|
VARCHAR(255)
|
255
|
是
|
START_ACT_ID_
|
开始节点
|
VARCHAR(255)
|
255
|
是
|
END_ACT_ID_
|
结束节点
|
VARCHAR(255)
|
255
|
是
|
SUPER_PROCESS_INSTANCE_ID_
|
超级流程实例Id
|
VARCHAR(64)
|
64
|
是
|
DELETE_REASON_
|
删除理由
|
VARCHAR(4000)
|
4000
|
是
|
ACT_HI_TASKINST(act_hi_taskinst)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
备注
|
是
|
ID_
|
ID_
|
VARCHAR(64)
|
64
|
主键ID
|
PROC_DEF_ID_
|
流程定义Id
|
VARCHAR(64)
|
64
|
是
|
流程定义ID
|
TASK_DEF_KEY_
|
任务定义Key
|
VARCHAR(255)
|
255
|
是
|
节点定义ID
|
PROC_INST_ID_
|
流程实例ID
|
VARCHAR(64)
|
64
|
是
|
流程实例ID
|
EXECUTION_ID_
|
执行ID
|
VARCHAR(64)
|
64
|
是
|
执行实例ID
|
NAME_
|
名称
|
VARCHAR(255)
|
255
|
是
|
名称
|
PARENT_TASK_ID_
|
父任务iD
|
VARCHAR(64)
|
64
|
是
|
父节点实例ID
|
DESCRIPTION_
|
描述
|
VARCHAR(4000)
|
4000
|
是
|
描述
|
OWNER_
|
实际签收人 任务的拥有者
|
VARCHAR(255)
|
255
|
是
|
签收人(默认为空,只有在委托时才有值)
|
ASSIGNEE_
|
代理人
|
VARCHAR(255)
|
255
|
是
|
签收人或被委托
|
START_TIME_
|
开始时间
|
DATETIME
|
开始时间
|
CLAIM_TIME_
|
提醒时间
|
DATETIME
|
是
|
提醒时间
|
END_TIME_
|
结束时间
|
DATETIME
|
是
|
结束时间
|
DURATION_
|
时长
|
BIGINT(20)
|
20
|
是
|
耗时
|
DELETE_REASON_
|
删除理由
|
VARCHAR(4000)
|
4000
|
是
|
删除原因(completed,deleted)
|
PRIORITY_
|
优先级
|
INT(11)
|
11
|
是
|
优先级别
|
DUE_DATE_
|
应完成时间
|
DATETIME
|
是
|
过期时间,表明任务应在多长时间内完成
|
FORM_KEY_
|
表单key
|
VARCHAR(255)
|
255
|
是
|
desinger节点定义的
form_key属性
|
ACT_HI_VARINST(act_hi_varinst)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
备注
|
是
|
ID_
|
ID_
|
VARCHAR(64)
|
64
|
ID_
|
PROC_INST_ID_
|
流程实例ID
|
VARCHAR(64)
|
64
|
是
|
流程实例ID
|
EXECUTION_ID_
|
执行ID
|
VARCHAR(64)
|
64
|
是
|
执行实例ID
|
TASK_ID_
|
任务Id
|
VARCHAR(64)
|
64
|
是
|
任务实例ID
|
NAME_
|
名称
|
VARCHAR(255)
|
255
|
参数名称(英文)
|
VAR_TYPE_
|
变量类型
|
VARCHAR(100)
|
100
|
是
|
参见VAR_TYPE_类型说明
|
REV_
|
REV_
|
INT(11)
|
11
|
是
|
Version
|
BYTEARRAY_ID_
|
字节数组ID
|
VARCHAR(64)
|
64
|
是
|
ACT_GE_BYTEARRAY表的主键
|
DOUBLE_
|
DOUBLE_
|
DOUBLE
|
是
|
存储DoubleType类型的数据
|
LONG_
|
LONG_
|
BIGINT(20)
|
20
|
是
|
存储LongType类型的数据
|
TEXT_
|
TEXT_
|
VARCHAR(4000)
|
4000
|
是
|
存储变量值类型为String,如此处存储持久化对象时,值jpa对象的class
|
TEXT2_
|
TEXT2_
|
VARCHAR(4000)
|
4000
|
是
|
此处存储的是JPA持久化对象时,才会有值。此值为对象ID
|
用来存储用户组信息。
ACT_ID_GROUP(act_id_group)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
备注
|
是
|
ID_
|
用户组ID
|
VARCHAR(64)
|
64
|
REV_
|
版本号
|
INT(11)
|
11
|
是
|
NAME_
|
用户组描述信息
|
VARCHAR(255)
|
255
|
是
|
TYPE_
|
用户组类型
|
VARCHAR(255)
|
255
|
是
|
用户扩展信息表。目前该表未用到。
ACT_ID_INFO(act_id_info)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
备注
|
是
|
ID_
|
VARCHAR(64)
|
64
|
REV_
|
版本号
|
INT(11)
|
11
|
是
|
USER_ID_
|
用户ID
|
VARCHAR(64)
|
64
|
是
|
TYPE_
|
类型
|
VARCHAR(64)
|
64
|
是
|
KEY_
|
formINPut名称
|
VARCHAR(255)
|
255
|
是
|
VALUE_
|
值
|
VARCHAR(255)
|
255
|
是
|
PASSWORD_
|
密码
|
LONGBLOB
|
是
|
PARENT_ID_
|
父节点
|
VARCHAR(255)
|
255
|
是
|
用来保存用户的分组信息
ACT_ID_MEMBERSHIP(act_id_membership)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
备注
|
是
|
USER_ID_
|
用户Id
|
VARCHAR(64)
|
64
|
是
|
GROUP_ID_
|
用户组Id
|
VARCHAR(64)
|
64
|
ACT_ID_USER(act_id_user)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
备注
|
是
|
ID_
|
ID_
|
VARCHAR(64)
|
64
|
REV_
|
版本号
|
INT(11)
|
11
|
是
|
FIRST_
|
用户名称
|
VARCHAR(255)
|
255
|
是
|
LAST_
|
用户姓氏
|
VARCHAR(255)
|
255
|
是
|
EMAIL_
|
邮箱
|
VARCHAR(255)
|
255
|
是
|
PWD_
|
密码
|
VARCHAR(255)
|
255
|
是
|
PICTURE_ID_
|
头像Id
|
VARCHAR(64)
|
64
|
是
|
用来存储部署时需要持久化保存下来的信息
ACT_RE_DEPLOYMENT(act_re_deployment)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
备注
|
是
|
ID_
|
部署编号,自增长
|
VARCHAR(64)
|
64
|
NAME_
|
部署包的名称
|
VARCHAR(255)
|
255
|
是
|
CATEGORY_
|
类型
|
VARCHAR(255)
|
255
|
是
|
|
TENANT_ID_
|
租户
|
VARCHAR(255)
|
255
|
是
|
|
多租户通常是在软件需要为多个不同组织服务时产生的概念
|
|
DEPLOY_TIME_
|
部署时间
|
TIMESTAMP
|
CURRENT_TIMESTAMP
|
创建流程的设计模型时,保存在该数据表中。
ACT_RE_MODEL(act_re_model)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
备注
|
是
|
ID_
|
ID_
|
VARCHAR(64)
|
64
|
ID_
|
REV_
|
INT(11)
|
11
|
是
|
乐观锁
|
NAME_
|
模型的名称:
比如:收文管理
|
VARCHAR(255)
|
255
|
是
|
名称
|
KEY_
|
模型的关键字,流程引擎用到。
比如:FTOA_SWGL
|
VARCHAR(255)
|
255
|
是
|
分类,例如:
http://www.mossle.com/docs/activiti/
|
CATEGORY_
|
类型,用户自己对流程模型的分类。
|
VARCHAR(255)
|
255
|
是
|
分类
|
CREATE_TIME_
|
创建时间
|
TIMESTAMP
|
是
|
创建时间
|
LAST_UPDATE_TIME_
|
最后修改时间
|
TIMESTAMP
|
是
|
最新修改时间
|
VERSION_
|
版本,从1开始。
|
INT(11)
|
11
|
是
|
版本
|
META_INFO_
|
数据源信息,比如:
{"name":"FTOA_SWGL","revision":1,"description":"丰台财政局OA,收文管理流程"}
|
VARCHAR(4000)
|
4000
|
是
|
以json格式保存流程定义的信息
|
DEPLOYMENT_ID_
|
部署ID
|
VARCHAR(64)
|
64
|
是
|
部署ID
|
EDITOR_SOURCE_VALUE_ID_
|
编辑源值ID
|
VARCHAR(64)
|
64
|
是
|
是 ACT_GE_BYTEARRAY 表中的ID_值。
|
EDITOR_SOURCE_EXTRA_VALUE_ID_
|
编辑源额外值ID(外键ACT_GE_BYTEARRAY )
|
VARCHAR(64)
|
64
|
是
|
是 ACT_GE_BYTEARRAY 表中的ID_值。
|
|
TENANT_ID_
|
租户
|
VARCHAR(255)
|
255
|
是
|
|
|
|
流程解析表,解析成功了,在该表保存一条记录。业务流程定义数据表
ACT_RE_PROCDEF(act_re_procdef)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省
|
备注
|
是
|
ID_
|
流程ID,由“流程编号:流程版本号:自增长ID”组成
|
VARCHAR(64)
|
64
|
ID_
|
REV_
|
版本号
|
INT(11)
|
11
|
是
|
乐观锁
|
CATEGORY_
|
流程命名空间(该编号就是流程文件targetNamespace的属性值)
|
VARCHAR(255)
|
255
|
是
|
流程定义的Namespace就是类别
|
NAME_
|
流程名称(该编号就是流程文件process元素的name属性值)
|
VARCHAR(255)
|
255
|
是
|
名称
|
KEY_
|
流程编号(该编号就是流程文件process元素的id属性值)
|
VARCHAR(255)
|
255
|
流程定义ID
|
VERSION_
|
流程版本号(由程序控制,新增即为1,修改后依次加1来完成的)
|
INT(11)
|
11
|
版本
|
DEPLOYMENT_ID_
|
部署编号
|
VARCHAR(64)
|
64
|
是
|
部署表ID
|
RESOURCE_NAME_
|
资源文件名称
|
VARCHAR(4000)
|
4000
|
是
|
流程bpmn文件名称
|
DGRM_RESOURCE_NAME_
|
图片资源文件名称
|
VARCHAR(4000)
|
4000
|
是
|
png流程图片名称
|
DESCRIPTION_
|
描述信息
|
VARCHAR(4000)
|
4000
|
是
|
描述
|
HAS_START_FORM_KEY_
|
是否从key启动
|
TINYINT(4)
|
4
|
是
|
start节点是否存在formKey
0否 1是
|
SUSPENSION_STATE_
|
是否挂起
|
INT(11)
|
11
|
是
|
1激活 2挂起
|
注:此表和ACT_RE_DEPLOYMENT是多对一的关系,即,一个部署的bar包里可能包含多个流程定义文件,每个流程定义文件都会有一条记录在ACT_RE_PROCDEF表内,每个流程定义的数据,都会对于ACT_GE_BYTEARRAY表内的一个资源文件和PNG图片文件。和ACT_GE_BYTEARRAY的关联是通过程序用ACT_GE_BYTEARRAY.NAME与ACT_RE_PROCDEF.NAME_完成的,在数据库表结构中没有体现。
ACT_RU_EVENT_SUBSCR(act_ru_event_subscr)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
备注
|
是
|
ID_
|
ID
|
VARCHAR(64)
|
64
|
REV_
|
版本号
|
INT(11)
|
11
|
是
|
EVENT_TYPE_
|
事件类型
|
VARCHAR(255)
|
255
|
EVENT_NAME_
|
事件名称
|
VARCHAR(255)
|
255
|
是
|
EXECUTION_ID_
|
流程执行ID
|
VARCHAR(64)
|
64
|
是
|
PROC_INST_ID_
|
流程实例ID
|
VARCHAR(64)
|
64
|
是
|
ACTIVITY_ID_
|
活动ID
|
VARCHAR(64)
|
64
|
是
|
CONFIGURATION_
|
配置信息
|
VARCHAR(255)
|
255
|
是
|
CREATED_
|
创建时间
|
TIMESTAMP
|
CURRENT_TIMESTAMP
|
核心,我的代办任务查询表
ACT_RU_EXECUTION(act_ru_execution)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
备注
|
是
|
ID_
|
ID_
|
VARCHAR(64)
|
64
|
ID_
|
REV_
|
版本号
|
INT(11)
|
11
|
是
|
乐观锁
|
PROC_INST_ID_
|
流程实例编号
|
VARCHAR(64)
|
64
|
是
|
流程实例ID
|
BUSINESS_KEY_
|
业务编号
|
VARCHAR(255)
|
255
|
是
|
业务主键ID
|
PARENT_ID_
|
父执行流程
|
VARCHAR(64)
|
64
|
是
|
父节点实例ID
|
PROC_DEF_ID_
|
流程定义Id
|
VARCHAR(64)
|
64
|
是
|
流程定义ID
|
SUPER_EXEC_
|
VARCHAR(64)
|
64
|
是
|
ACT_ID_
|
实例id
|
VARCHAR(255)
|
255
|
是
|
节点实例ID即
ACT_HI_ACTINST中ID
|
IS_ACTIVE_
|
激活状态
|
TINYINT(4)
|
4
|
是
|
是否存活
|
IS_CONCURRENT_
|
并发状态
|
TINYINT(4)
|
4
|
是
|
是否为并行(true/false)
|
IS_SCOPE_
|
|
TINYINT(4)
|
4
|
是
|
|
IS_EVENT_SCOPE_
|
|
TINYINT(4)
|
4
|
是
|
|
SUSPENSION_STATE_
|
暂停状态_
|
INT(11)
|
11
|
是
|
挂起状态 1激活 2挂起
|
CACHED_ENT_STATE_
|
缓存结束状态_
|
INT(11)
|
11
|
是
|
主要存储当前节点参与者的信息,任务参与者数据表。
ACT_RU_IDENTITYLINK(act_ru_identitylink)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
取值说明
|
是
|
ID_
|
ID_
|
VARCHAR(64)
|
64
|
|
REV_
|
版本号
|
INT(11)
|
11
|
是
|
|
GROUP_ID_
|
用户组ID
|
VARCHAR(255)
|
255
|
是
|
|
TYPE_
|
用户组类型
|
VARCHAR(255)
|
255
|
是
|
主要分为以下几种:assignee、candidate、
owner、starter、participant。即:受让人,候选人,所有者、起动器、参与者
|
USER_ID_
|
用户ID
|
VARCHAR(255)
|
255
|
是
|
|
TASK_ID_
|
任务Id
|
VARCHAR(64)
|
64
|
是
|
|
PROC_INST_ID_
|
流程实例ID
|
VARCHAR(64)
|
64
|
是
|
|
PROC_DEF_ID_
|
流程定义Id
|
VARCHAR(64)
|
64
|
是
|
|
运行时定时任务数据表
ACT_RU_JOB(act_ru_job)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
取值说明
|
是
|
ID_
|
ID_
|
VARCHAR(64)
|
64
|
标识
|
REV_
|
版本号
|
INT(11)
|
11
|
是
|
版本
|
TYPE_
|
TYPE_
|
VARCHAR(255)
|
255
|
类型
|
LOCK_EXP_TIME_
|
LOCK_EXP_TIME_
|
TIMESTAMP
|
是
|
锁定释放时间
|
LOCK_OWNER_
|
LOCK_OWNER_
|
VARCHAR(255)
|
255
|
是
|
挂起者
|
EXCLUSIVE_
|
EXCLUSIVE_
|
TINYINT(1)
|
1
|
是
|
|
EXECUTION_ID_
|
EXECUTION_ID_
|
VARCHAR(64)
|
64
|
是
|
执行实例ID
|
PROCESS_INSTANCE_ID_
|
PROCESS_INSTANCE_ID_
|
VARCHAR(64)
|
64
|
是
|
流程实例ID
|
PROC_DEF_ID_
|
PROC_DEF_ID_
|
VARCHAR(64)
|
64
|
是
|
流程定义ID
|
RETRIES_
|
RETRIES_
|
INT(11)
|
11
|
是
|
|
EXCEPTION_STACK_ID_
|
EXCEPTION_STACK_ID_
|
VARCHAR(64)
|
64
|
是
|
异常信息ID
|
EXCEPTION_MSG_
|
EXCEPTION_MSG_
|
VARCHAR(4000)
|
4000
|
是
|
异常信息
|
DUEDATE_
|
DUEDATE_
|
TIMESTAMP
|
是
|
到期时间
|
REPEAT_
|
REPEAT_
|
VARCHAR(255)
|
255
|
是
|
重复
|
HANDLER_TYPE_
|
HANDLER_TYPE_
|
VARCHAR(255)
|
255
|
是
|
处理类型
|
HANDLER_CFG_
|
HANDLER_CFG_
|
VARCHAR(4000)
|
4000
|
是
|
标识
|
(执行中实时任务)代办任务查询表
ACT_RU_TASK(act_ru_task)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
取值说明
|
是
|
ID_
|
ID_
|
VARCHAR(64)
|
64
|
ID_
|
REV_
|
版本号
|
INT(11)
|
11
|
是
|
乐观锁
|
EXECUTION_ID_
|
实例id(外键EXECUTION_ID_)
|
VARCHAR(64)
|
64
|
是
|
执行实例ID
|
PROC_INST_ID_
|
流程实例ID(外键PROC_INST_ID_)
|
VARCHAR(64)
|
64
|
是
|
流程实例ID
|
PROC_DEF_ID_
|
流程定义ID
|
VARCHAR(64)
|
64
|
是
|
流程定义ID
|
NAME_
|
任务名称
|
VARCHAR(255)
|
255
|
是
|
节点定义名称
|
PARENT_TASK_ID_
|
父节任务ID
|
VARCHAR(64)
|
64
|
是
|
父节点实例ID
|
DESCRIPTION_
|
任务描述
|
VARCHAR(4000)
|
4000
|
是
|
节点定义描述
|
TASK_DEF_KEY_
|
任务定义key
|
VARCHAR(255)
|
255
|
是
|
任务定义的ID
|
OWNER_
|
所属人(老板)
|
VARCHAR(255)
|
255
|
是
|
拥有者(一般情况下为空,只有在委托时才有值)
|
ASSIGNEE_
|
代理人员
(受让人)
|
VARCHAR(255)
|
255
|
是
|
签收人或委托人
|
DELEGATION_
|
代理团
|
VARCHAR(64)
|
64
|
是
|
委托类型,DelegationState分为两种:PENDING,RESOLVED。如无委托则为空
|
PRIORITY_
|
优先权
|
INT(11)
|
11
|
是
|
优先级别,默认为:50
|
CREATE_TIME_
|
创建时间
|
TIMESTAMP
|
创建时间,CURRENT_TIMESTAMP
|
DUE_DATE_
|
执行时间
|
DATETIME
|
是
|
耗时
|
SUSPENSION_STATE_
|
暂停状态
|
INT(11)
|
11
|
是
|
1代表激活 2代表挂起
|
ACT_RU_VARIABLE(act_ru_variable)
|
是否主键
|
字段名
|
字段描述
|
数据类型
|
长度
|
可空
|
约束
|
缺省值
|
备注
|
是
|
ID_
|
ID_
|
VARCHAR(64)
|
64
|
主键标识
|
REV_
|
版本号
|
INT(11)
|
11
|
是
|
乐观锁
|
TYPE
|
编码类型
|
VARCHAR(255)
|
255
|
参见VAR_TYPE_类型说明
|
NAME_
|
变量名称
|
VARCHAR(255)
|
255
|
变量名称
|
EXECUTION_ID_
|
执行实例ID
|
VARCHAR(64)
|
64
|
是
|
执行的ID
|
PROC_INST_ID_
|
流程实例Id
|
VARCHAR(64)
|
64
|
是
|
流程实例ID
|
TASK_ID_
|
任务id
|
VARCHAR(64)
|
64
|
是
|
节点实例ID(Local)
|
BYTEARRAY_ID_
|
字节组ID
|
VARCHAR(64)
|
64
|
是
|
字节表的ID
(ACT_GE_BYTEARRAY)
|
DOUBLE_
|
DOUBLE_
|
DOUBLE
|
是
|
存储变量类型为Double
|
LONG_
|
LONG_
|
BIGINT(20)
|
20
|
是
|
存储变量类型为long
|
TEXT_
|
TEXT_
|
VARCHAR(4000)
|
4000
|
是
|
存储变量值类型为String
如此处存储持久化对象时,值jpa对象的class
|
TEXT2_
|
TEXT2_
|
VARCHAR(4000)
|
4000
|
是
|
此处存储的是JPA持久化对象时,才会有值。此值为对象ID
|
本节主要介绍在工作流中出现的几个对象及其之间的关系,以及在Activiti中各个对象是如何关联的。
在开始之前先看看下图,对整个对象结构有个了解,再结合实例详细介绍理解。
图1.Activiti中几个对象之间的关系
我们模拟一个请假的流程进行分析介绍,该流程主要包含以下几个步骤:
u 员工申请请假
u 部门领导审批
u 人事审批
u 员工销假
ProcessInstance对象
员工开始申请请假流程,通过runtimeService.startProcessInstance()方法启动,引擎会创建一个流程实例(ProcessInstance)。
简单来说流程实例就是根据一次(一条)业务数据用流程驱动的入口,两者之间是一对一的关系。流程引擎会创建一条数据到ACT_RU_EXECUTION表,同时也会根据history的级别决定是否查询相同的历史数据到ACT_HI_PROCINST表。
启动完流程之后业务和流程已经建立了关联关系,第一步结束。
启动流程和业务关联区别:
u 对于自定义表单来说启动的时候会传入businessKey作为业务和流程的关联属性
u 对于动态表单来说不需要使用businessKey关联,因为所有的数据都保存在引擎的表中
u 对于外部表单来说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) 值不相等的情况:
不相等的情况目前只会出现在子流程中(包含:嵌套、引入),例如一个购物流程中除了下单、出库节点之外可能还有一个付款子流程,在实际企业应用中付款流程通常是作为公用的,所以使用子流程作为主流程(购物流程)的一部分。
当任务到达子流程时引擎会自动创建一个付款流程,但是这个流程有一个特殊的地方,在数据库可以直观体现,如下图。
图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服务(JavaServiceTask)等,在实际流程运行中只不过面向对象不同,用户任务(UserTask)需要有人为参与完成(complete),Java服务需要由系统自动执行(execution)。
图4. 表ACT_RU_TASK
Task是在流程定义中看到的最大单位,每当一个Task完成的时候引擎会把当前的任务移动到历史中,然后插入下一个任务插入到表ACT_RU_TASK中。结合请假流程来说就是让用户点击“完成”按钮提交当前任务是的动作,引擎自动根据任务的顺序流或者排他分支判断走向。
HistoryActivity(历史活动)
图5. 表ACT_HI_ACTINST
Activity包含了流程中所有的活动数据,例如开始事件(图5表中的第1条数据)、各种分支(排他分支、并行分支等,图5表中的第2条数据)、以及刚刚提到的Task执行记录(如图5表中的第3、4条数据)。
有些人认为Activity和Task是多对一关系,其实不是,从上图中可以看出来根本没有Task相关的字段。
结合请假流程来说,如Task中提到的当完成流程的时候所有下一步要执行的任务(包括各种分支)都会创建一个Activity记录到数据库中。例如领导审核节点点击“同意”按钮就会流转到人事审批节点,如果“驳回”那就流转到调整请假内容节点,每一次操作的Task背后实际记录更详细的活动(Activity)。