Activiti数据表结构目录1ACTIVITI数据库表结构 ----------------------------------------------------- 21.1数据库表名说明--------------------------------------------------------- 21.2数据库表结构----------------------------------------------------------- 31.2.1Activiti数据表清单: ------------------------------------------------- 31.2.2表名:ACT_GE_BYTEARRAY (通用的流程定义和流程资源)------------------- 31.2.3表名:ACT_GE_PROPERTY (系统相关属性)-------------------------------- 41.2.4表名:ACT_HI_ACTINST (历史节点表)----------------------------------- 51.2.5表名:ACT_HI_ATTACHMENT (附件信息)---------------------------------- 51.2.6表名:ACT_HI_COMMENT (历史审批意见表)------------------------------- 61.2.7表名:ACT_HI_DETAIL (历史详细信息)---------------------------------- 71.2.8表名:ACT_HI_IDENTITYLINK (历史流程人员表)-------------------------- 71.2.9表名:ACT_HI_PROCINST(历史流程实例信息)核心表----------------------- 81.2.10表名:ACT_HI_TASKINST(历史任务流程实例信息)核心表----------------- 81.2.11表名:ACT_HI_VARINST(历史变量信息)-------------------------------- 91.2.12表名:ACT_ID_GROUP(用户组表)------------------------------------- 101.2.13表名:ACT_ID_INFO (用户扩展信息表)------------------------------- 101.2.14表名:ACT_ID_MEMBERSHIP(用户用户组关联表)------------------------ 111.2.15表名:ACT_ID_USER(用户信息表)------------------------------------ 111.2.16表名:ACT_RE_DEPLOYMENT(部署信息表)------------------------------ 111.2.17表名:ACT_RE_MODEL (流程设计模型部署表) ---------------------------- 121.2.18表名:ACT_RE_PROCDEF (流程定义表)-------------------------------- 131.2.19表名:ACT_RU_EVENT_SUBSCR (运行时事件) ----------------------------- 141.2.20表名:ACT_RU_EXECUTION (运行时流程执行实例)---------------------- 141.2.21表名:ACT_RU_IDENTITYLINK(身份联系)------------------------------ 151.2.22表名:ACT_RU_JOB(运行中的任务)----------------------------------- 151.2.23表名:ACT_RU_TASK(运行时任务数据表) -------------------------------- 161.2.24表名:ACT_RU_VARIABLE(运行时流程变量数据表) ------------------------ 17 2ACTIVITI中主要对象的关系------------------------------------------------- 181Activiti数据库表结构1.1数据库表名说明Activiti工作流总共包含23张数据表,所有的表名默认以“ACT_”开头。
并且表名的第二部分用两个字母表明表的用例,而这个用例也基本上跟Service API匹配。
◆ACT_GE_* : “GE”代表“General”(通用),用在各种情况下;◆ACT_HI_*: “HI”代表“History”(历史),这些表中保存的都是历史数据,比如执行过的流程实例、变量、任务,等等。
Activit默认提供了4种历史级别:➢none: 不保存任何历史记录,可以提高系统性能;➢activity:保存所有的流程实例、任务、活动信息;➢audit:也是Activiti的默认级别,保存所有的流程实例、任务、活动、表单属性;➢full:最完整的历史记录,除了包含audit级别的信息之外还能保存详细,例如:流程变量。
对于几种级别根据对功能的要求选择,如果需要日后跟踪详细可以开启full。
◆ACT_ID_* : “ID”代表“Identity”(身份),这些表中保存的都是身份信息,如用户和组以及两者之间的关系。
如果Activiti被集成在某一系统当中的话,这些表可以不用,可以直接使用现有系统中的用户或组信息;◆ACT_RE_* : “RE”代表“Repository”(仓库),这些表中保存一些‘静态’信息,如流程定义和流程资源(如图片、规则等);◆ACT_RU_*: “RU”代表“Runtime”(运行时),这些表中保存一些流程实例、用户任务、变量等的运行时数据。
Activiti只保存流程实例在执行过程中的运行时数据,并且当流程结束后会立即移除这些数据,这是为了保证运行时表尽量的小并运行的足够快;1.2数据库表结构1.2.1Activiti数据表清单:1.2.2表名:ACT_GE_BYTEARRAY (通用的流程定义和流程资源)用来保存部署文件的大文本数据。
保存流程定义图片和xml、Serializable(序列化)的变量,即保存所有二进制数据,特别注意类路径部署时候,不要把svn等隐藏文件或者其他与流程无关1.2.3表名:ACT_GE_PROPERTY (系统相关属性)1.2.4表名:ACT_HI_ACTINST (历史节点表)历史活动信息。
这里记录流程流转过的所有节点,与HI_TASKINST不同的是,1.2.5表名:ACT_HI_ATTACHMENT (附件信息)(历史审批意见表)1.2.6表名:ACT_HI_COMMENT1.2.7表名:ACT_HI_DETAIL (历史详细信息)历史详情表:流程中产生的变量详细,包括控制流程流转的变量,业务表单1.2.8表名:ACT_HI_IDENTITYLINK (历史流程人员表)1.2.9表名:ACT_HI_PROCINST(历史流程实例信息)核心表1.2.10表名:ACT_HI_TASKINST(历史任务流程实例信息)核心表1.2.11表名:ACT_HI_VARINST(历史变量信息)1.2.12表名:ACT_ID_GROUP(用户组表)1.2.13表名:ACT_ID_INFO (用户扩展信息表)1.2.14表名:ACT_ID_MEMBERSHIP(用户用户组关联表)1.2.15表名:ACT_ID_USER(用户信息表)1.2.16表名:ACT_RE_DEPLOYMENT(部署信息表)1.2.17表名:ACT_RE_MODEL (流程设计模型表)1.2.18表名:ACT_RE_PROCDEF (流程定义:解析表)可能包含多个流程定义文件,每个流程定义文件都会有一条记录在ACT_RE_PROCDEF表内,每个流程定义的数据,都会对于ACT_GE_BYTEARRAY 表内的一个资源文件和PNG图片文件。
和ACT_GE_BYTEARRAY的关联是通过程序用ACT_GE_与ACT_RE__完成的,在数据库表结构中没有体现。
1.2.19表名:ACT_RU_EVENT_SUBSCR (运行时事件)1.2.20表名:ACT_RU_EXECUTION (运行时流程执行实例)1.2.21表名:ACT_RU_IDENTITYLINK(身份联系)1.2.22表名:ACT_RU_JOB(运行中的任务)1.2.23表名:ACT_RU_TASK(运行时任务数据表)1.2.24表名:ACT_RU_VARIABLE(运行时流程变量数据表)2Activiti中主要对象的关系本节主要介绍在工作流中出现的几个对象及其之间的关系,以及在Activiti中各个对象是如何关联的。
在开始之前先看看下图,对整个对象结构有个了解,再结合实例详细介绍理解。
图1.Activiti中几个对象之间的关系我们模拟一个请假的流程进行分析介绍,该流程主要包含以下几个步骤:◆员工申请请假◆部门领导审批◆人事审批◆员工销假ProcessInstance对象员工开始申请请假流程,通过runtimeService.startProcessInstance()方法启动,引擎会创建一个流程实例(ProcessInstance)。
简单来说流程实例就是根据一次(一条)业务数据用流程驱动的入口,两者之间是一对一的关系。
流程引擎会创建一条数据到ACT_RU_EXECUTION表,同时也会根据history的级别决定是否查询相同的历史数据到ACT_HI_PROCINST表。
启动完流程之后业务和流程已经建立了关联关系,第一步结束。
启动流程和业务关联区别:◆对于自定义表单来说启动的时候会传入businessKey作为业务和流程的关联属性◆对于动态表单来说不需要使用businessKey关联,因为所有的数据都保存在引擎的表中◆对于外部表单来说businessKey是可选的,但是一般不会为空,和自定义表单类似Execution对象对于初学者来说,最难理解的地方就是ProcessInstance与Execution之间的关系,要分两种情况说明。
Execution的含义就是一个流程实例(ProcessInstance)具体要执行的过程对象。
不过在说明之前先声明两者的对象映射关系:ProcessInstance(1)→ Execution(N),(其中N >= 1)。