一、表生成

当我们使用Activty时候,其后台是有数据库的支持,所有的表都以ACT_开头。 

创建一个maven 项目,导入以下依赖,


    <dependencies>
        <!--日志包,方便看sql语句-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.4</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <!--mysql驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.37</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-engine</artifactId>
            <version>5.22.0</version>
        </dependency>

        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring</artifactId>
            <version>5.22.0</version>
        </dependency>
    </dependencies>

测试类中写一个方法,生成数据库表,代码如下

 /**
     * 使用代码生成Activity需要的表
     */
    @Test
    public void createTable() {
        ProcessEngineConfiguration processEngineConfiguration =
                ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();
        processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");
        processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/db_stuleave?characterEncoding=utf-8");
        processEngineConfiguration.setJdbcUsername("root");
        processEngineConfiguration.setJdbcPassword("root");
        /*参数可选项:
        1.DB_SCHEMA_UPDATE_TRUE如果表不存在则自动创建表
        2.DB_SCHEMA_UPDATE_FALSE不能自动创建表  需要表存在
        3.删除表再创建表
         */
        processEngineConfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
        //流程引擎对象
        ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();
        System.out.println(processEngine);
    }

运行之后,可以看本地数据库已经生成相应的二十多张表

上面是通过代码创建的流程数据表,下面我们通过配置文件创建,Activiti核心配置文件,配置流程引擎创建工具的基本参数和数据库连接池参数。定义数据库配置参数:

  1. jdbcUrl: 数据库的JDBC URL。
  2. jdbcDriver: 对应不同数据库类型的驱动。
  3. jdbcUsername: 连接数据库的用户名。
  4. jdbcPassword: 连接数据库的密码。

基于JDBC参数配置的数据库连接 会使用默认的MyBatis连接池。 下面的参数可以用来配置连接池(来自MyBatis参数):

  1. jdbcMaxActiveConnections: 连接池中处于被使用状态的连接的最大值。默认为10。
  2. jdbcMaxIdleConnections: 连接池中处于空闲状态的连接的最大值。
  3. jdbcMaxCheckoutTime: 连接被取出使用的最长时间,超过时间会被强制回收。 默认为20000(20秒)。

jdbcMaxWaitTime: 这是一个底层配置,让连接池可以在长时间无法获得连接时, 打印一条日志,并重新尝试获取一个连接。(避免因为错误配置导致沉默的操作失败)。 默认为20000(20秒)。

activiti.cfg.xml如下

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">


    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">

        <!-- 连接数据的配置 -->

        <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property>

        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_stuleave?useUnicode=true&characterEncoding=utf8"></property>

        <property name="jdbcUsername" value="root"></property>

        <property name="jdbcPassword" value="root"></property>

        <!-- 没有表创建表 -->

        <property name="databaseSchemaUpdate" value="true"></property>

    </bean>

</beans>

测试代码

 @Test

    public void createTable2() {

        ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");

        ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();

        System.out.println(processEngine);


    }

也可以使用javax.sql.DataSource。 (比如,Apache Commons的DBCP):

<bean id="dbcpdataSource" class="org.apache.commons.dbcp.BasicDataSource">

        <!--配置连接池属性-->

        <property name="driverClassName" value="${jdbc.driver}"/>

        <property name="url" value="${jdbc.url}"/>

        <property name="username" value="${jdbc.username}"/>

        <property name="password" value="${jdbc.password}"/>

    </bean>

    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">

       <property name="dataSource"  ref="dataSource"></property>

        <property name="databaseSchemaUpdate" value="true"></property>

    </bean>

备注:

a、虽然一个系统中所有的数据库都可放在一个库中,但是为了业务等处理清晰,建议系统中使用单独的库存储工作流数据表

b、需要说明的是activiti每个版本生成表的数量是不一样的,这里activiti是5.22会生成25张表

二、表介绍

资源库流程规则表

act_re_deployment 部署流程定义时需要被持久化保存下来的信息

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) 主键ID
NAME_部署名称nvarchar(255) 部署文件名
CATEGORY_分类nvarchar(255) 类别
DEPLOY_TIME_部署时间datetime 部署时间

act_re_model   流程设计器设计流程后,保存数据到该表。

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) ID_
REV_乐观锁int 乐观锁
NAME_名称nvarchar(255) 名称
KEY_KEY_nvarchar(255) 分类
CATEGORY_分类nvarchar(255) 分类
CREATE_TIME_创建时间datetime 创建时间
LAST_UPDATE_TIME_最新修改时间datetime 最新修改时间
VERSION_版本int 版本
META_INFO_META_INFO_nvarchar(255) 以json格式保存流程定义的信息
DEPLOYMENT_ID_部署IDnvarchar(255) 部署ID
EDITOR_SOURCE_VALUE_ID_ datetime  
EDITOR_SOURCE_EXTRA_VALUE_ID_ datetime  

act_re_procdef   业务流程定义数据表。此表和 ACT_RE_DEPLOYMENT 是多对一的关系,即,一个部署的bar包里可能包含多个流程定义文件,每个流程定义文件都会有一条记录在 ACT_REPROCDEF 表内,每个流程定义的数据,都会对于 ACT_GE_BYTEARRAY 表内的一个资源文件和 PNG 图片文件。和 ACT_GE_BYTEARRAY 的关联是通过程序用ACT_GE_BYTEARRAY.NAME 与 ACT_RE_PROCDEF.NAME 完成的,在数据库表结构中没有体现。

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) ID_
REV_乐观锁int 乐观锁
CATEGORY_分类nvarchar(255) 流程定义的Namespace就是类别
NAME_名称nvarchar(255) 名称
KEY_定义的KEYnvarchar(255)  流程定义ID
VERSION_版本int  版本
DEPLOYMENT_ID_部署表IDnvarchar(64) 部署表ID
RESOURCE_NAME_bpmn文件名称nvarchar(4000) 流程bpmn文件名称
DGRM_RESOURCE_NAME_png图片名称nvarchar(4000) 流程图片名称
DESCRIPTION_描述nvarchar(4000) 描述
HAS_START_FORM_KEY_是否存在开始节点formKeytinyint start节点是否存在formKey 0否 1是
SUSPENSION_STATE_是否挂起tinyint 1 激活 2挂起

运行时数据库表

act_ru_execution 运行时流程执行实例表

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) ID_
REV_乐观锁int 乐观锁
PROC_INST_ID_流程实例IDnvarchar(64)  流程实例ID
BUSINESS_KEY_业务主键IDnvarchar(255) 业务主键ID
PARENT_ID_父节点实例IDnvarchar(64) 父节点实例ID
PROC_DEF_ID_流程定义IDnvarchar(64) 流程定义ID
SUPER_EXEC_SUPER_EXEC_nvarchar(64) SUPER_EXEC_
ACT_ID_节点实例IDnvarchar(255) 节点实例ID即ACT_HI_ACTINST中ID
IS_ACTIVE_是否存活tinyint 是否存活
IS_CONCURRENT_是否并行tinyint 是否为并行(true/false)
IS_SCOPE_IS_SCOPE_tinyint IS_SCOPE_
IS_EVENT_SCOPE_IS_EVENT_SCOPE_tinyint IS_EVENT_SCOPE_
SUSPENSION_STATE_是否挂起tinyint 挂起状态 1激活 2挂起
CACHED_ENT_STATE_ int  

act_ru_identitylink 运行时流程人员表,主要存储任务节点与参与者的相关信息

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) ID_
REV_乐观锁int 乐观锁
GROUP_ID_组IDnvarchar(64) 组ID
TYPE_类型nvarchar(255) 备注7
USER_ID_用户IDnvarchar(64) 用户ID
TASK_ID_节点实例IDnvarchar(64) 节点实例ID
PROC_INST_ID_流程实例IDnvarchar(64) 流程实例ID
PROC_DEF_ID_流程定义IDnvarchar(255) 流程定义ID

act_ru_task 运行时任务节点表

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) ID_
REV_乐观锁int 乐观锁
EXECUTION_ID_执行实例IDnvarchar(64) 执行实例ID
PROC_INST_ID_流程实例IDnvarchar(64) 流程实例ID
PROC_DEF_ID_流程定义IDnvarchar(64) 流程定义ID
NAME_节点定义名称nvarchar(255) 节点定义名称
PARENT_TASK_ID_父节点实例IDnvarchar(64) 父节点实例ID
DESCRIPTION_节点定义描述nvarchar(4000) 节点定义描述
TASK_DEF_KEY_节点定义的KEYnvarchar(255) 任务定义的ID
OWNER_实际签收人nvarchar(255) 拥有者(一般情况下为空,只有在委托时才有值)
ASSIGNEE_签收人或委托人nvarchar(255) 签收人或委托人
DELEGATION_委托类型nvarchar(64) 备注8
PRIORITY_优先级别int 优先级别,默认为:50
CREATE_TIME_创建时间datetime 创建时间
DUE_DATE_过期时间datetime 耗时
SUSPENSION_STATE_是否挂起int 1代表激活 2代表挂起

act_ru_job 运行时定时任务数据表

字段名称字段描述数据类型主键为空取值说明
ID_标识nvarchar(64) 标识
REV_版本int 版本
TYPE_类型nvarchar(255)  类型
LOCK_EXP_TIME_锁定释放时间datetime 锁定释放时间
LOCK_OWNER_挂起者nvarchar(255) 挂起者
EXCLUSIVE_ bit  
EXECUTION_ID_执行实例IDnvarchar(64) 执行实例ID
PROCESS_INSTANCE_ID_流程实例IDnvarchar(64) 流程实例ID
PROC_DEF_ID_流程定义IDnvarchar(64) 流程定义ID
RETRIES_ int  
EXCEPTION_STACK_ID_异常信息IDnvarchar(64) 异常信息ID
EXCEPTION_MSG_异常信息nvarchar(4000) 异常信息
DUEDATE_到期时间datetime 到期时间
REPEAT_重复nvarchar(255) 重复
HANDLER_TYPE_处理类型nvarchar(255) 处理类型
HANDLER_CFG_ nvarchar(4000) 标识

act_ru_variable 运行时流程变量数据表

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) 主键标识
REV_乐观锁int 乐观锁
TYPE_类型nvarchar(255)  备注9
NAME_名称nvarchar(255)  变量名称
EXECUTION_ID_执行实例IDnvarchar(64) 执行的ID
PROC_INST_ID_流程实例IDnvarchar(64) 流程实例ID
TASK_ID_节点实例IDnvarchar(64) 节点实例ID(Local)
BYTEARRAY_ID_字节表IDnvarchar(64) 字节表的ID(ACT_GE_BYTEARRAY)
DOUBLE_DOUBLE_float 存储变量类型为Double
LONG_LONG_numeric(19) 存储变量类型为long
TEXT_TEXT_nvarchar(4000) ‘存储变量值类型为String 如此处存储持久化对象时,值jpa对象的class
TEXT2_TEXT2_nvarchar(4000) 此处存储的是JPA持久化对象时,才会有值。此值为对象ID

ACT_RU_EVENT_SUBSCR

字段名称字段描述数据类型主键为空取值说明
ID_事件IDnvarchar(64) 事件ID
REV_版本int 乐观锁Version
EVENT_TYPE_事件类型nvarchar(255)  事件类型
EVENT_NAME_事件名称nvarchar(255) 事件名称
EXECUTION_ID_执行实例IDnvarchar(64) 执行实例ID
PROC_INST_ID_流程实例IDnvarchar(64) 流程实例ID
ACTIVITY_ID_活动实例IDnvarchar(64) 活动实例ID
CONFIGURATION_配置nvarchar(255) 配置
CREATED_是否创建datetime  默认值 当前系统时间戳CURRENT_TIMESTAMP

历史数据库表

act_hi_actinst 历史节点表 历史活动信息。这里记录流程流转过的所有节点,与HI_TASKINST不同的是,taskinst只记录usertask内容

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64)  
PROC_DEF_ID_流程定义IDnvarchar(64)   
PROC_INST_ID_流程实例IDnvarchar(64)   
EXECUTION_ID_执行实例IDnvarchar(64)   
ACT_ID_节点IDnvarchar(225)  节点定义ID
TASK_ID_任务实例IDnvarchar(64) 任务实例ID 其他节点类型实例ID在这里为空
CALL_PROC_INST_ID_调用外部的流程实例IDnvarchar(64) 调用外部流程的流程实例ID’
ACT_NAME_节点名称nvarchar(225) 节点定义名称
ACT_TYPE_节点类型nvarchar(225)  如startEvent、userTask
ASSIGNEE_签收人nvarchar(64) 节点签收人
START_TIME_开始时间datetime  2013-09-15 11:30:00
END_TIME_结束时间datetime 2013-09-15 11:30:00
DURATION_耗时numeric(19,0) 毫秒值

act_hi_attachment 历史附件表

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) 主键ID
REV_乐观锁integer Version
USER_ID_用户IDnvarchar(255) 用户ID
NAME_名称nvarchar(255) 附件名称
DESCRIPTION_描述nvarchar(4000) 描述
TYPE_类型nvarchar(255) 附件类型
TASK_ID_任务实例IDnvarchar(64) 节点实例ID
PROC_INST_ID_流程实例IDnvarchar(64) 流程实例ID
URL_URL_nvarchar(4000) 附件地址
CONTENT_ID_字节表的IDnvarchar(64) ACT_GE_BYTEARRAY的ID

act_hi_comment 历史意见表

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) 主键ID
TYPE_类型nvarchar(255) 类型:event(事件)comment(意见)
TIME_时间datetime  填写时间’
USER_ID_用户IDnvarchar(64) 填写人
TASK_ID_节点任务IDnvarchar(64) 节点实例ID
PROC_INST_ID_流程实例IDnvarchar(255) 流程实例ID
ACTION_行为类型nvarchar(64) 见备注1
MESSAGE_基本内容nvarchar(4000) 用于存放流程产生的信息,比如审批意见
FULL_MSG_全部内容varbinary(max) 附件地址

act_hi_identitylink 历史流程人员表 任务参与者数据表。主要存储历史节点参与者的信息

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) ID_
GROUP_ID_组IDnvarchar(255) 组ID
TYPE_类型nvarchar(255) 备注4
USER_ID_用户IDnvarchar(255) 用户ID
TASK_ID_节点实例IDnvarchar(64) 节点实例ID
PROC_INST_ID_流程实例IDnvarchar(64) 流程实例ID

act_hi_detail 历史详情表,提供历史变量的查询

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) 主键
TYPE_类型nvarchar(255)  见备注2
PROC_INST_ID_流程实例IDnvarchar(64) 流程实例ID
EXECUTION_ID_执行实例IDnvarchar(64) 执行实例ID
TASK_ID_任务实例IDnvarchar(64) 任务实例ID
ACT_INST_ID_节点实例IDnvarchar(64) ACT_HI_ACTINST表的ID
NAME_名称nvarchar(255)  名称
VAR_TYPE_参数类型nvarchar(255) 见备注3
REV_乐观锁int Version
TIME_时间戳datetime  创建时间
BYTEARRAY_ID_字节表IDnvarchar ACT_GE_BYTEARRAY表的ID
DOUBLE_DOUBLE_double precision 存储变量类型为Double
LONG_LONG_numeric 存储变量类型为long
TEXT_TEXT_nvarchar 存储变量值类型为String
TEXT2_TEXT2_nvarchar 此处存储的是JPA持久化对象时,才会有值。此值为对象ID

act_hi_procinst 历史流程实例表

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) 主键ID
PROC_INST_ID_流程实例IDnvarchar(64)  流程实例ID
BUSINESS_KEY_业务主键nvarchar(255) 业务主键,业务表单的ID
PROC_DEF_ID_流程定义IDnvarchar(64)  流程定义ID
START_TIME_开始时间datetime  开始时间
END_TIME_结束时间datetime 结束时间
DURATION_耗时Numeric(19) 耗时
START_USER_ID_起草人nvarchar(255) 起草人
START_ACT_ID_开始节点IDnvarchar(255) 起草环节ID
END_ACT_ID_结束节点IDnvarchar(255) 结束环节ID
SUPER_PROCESS_INSTANCE_ID_父流程实例IDnvarchar(64) 父流程实例ID
DELETE_REASON_删除原因nvarchar(4000) 删除原因

act_hi_taskinst 历史任务实例表

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) 主键ID
PROC_DEF_ID_流程定义IDnvarchar(64) 流程定义ID
TASK_DEF_KEY_节点定义IDnvarchar(255) 节点定义ID
PROC_INST_ID_流程实例IDnvarchar(64) 流程实例ID
EXECUTION_ID_执行实例IDnvarchar(64) 执行实例ID
NAME_名称varchar(255) 名称
PARENT_TASK_ID_父节点实例IDnvarchar(64) 父节点实例ID
DESCRIPTION_描述nvarchar(400) 描述
OWNER_实际签收人 任务的拥有者nvarchar(255) 签收人(默认为空,只有在委托时才有值)
ASSIGNEE_签收人或被委托nvarchar(255) 签收人或被委托
START_TIME_开始时间datetime  开始时间
CLAIM_TIME_提醒时间datetime 提醒时间
END_TIME_结束时间datetime 结束时间
DURATION_耗时numeric(19) 耗时
DELETE_REASON_删除原因nvarchar(4000) 删除原因(completed,deleted)
PRIORITY_优先级别int 优先级别
DUE_DATE_过期时间datetime 过期时间,表明任务应在多长时间内完成
FORM_KEY_节点定义的formkeynvarchar(255) desinger节点定义的form_key属性

act_hi_varinst 历史变量表

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) ID_
PROC_INST_ID_流程实例IDnvarchar(64) 流程实例ID
EXECUTION_ID_执行实例IDnvarchar(255) 执行实例ID
TASK_ID_任务实例IDnvarchar(64) 任务实例ID
NAME_名称nvarchar(64)  参数名称(英文)
VAR_TYPE_参数类型varchar(255) 备注5
REV_乐观锁nvarchar(64) 乐观锁 Version
BYTEARRAY_ID_字节表IDnvarchar(400) ACT_GE_BYTEARRAY表的主键
DOUBLE_DOUBLE_nvarchar(255) 存储DoubleType类型的数据
LONG_LONG_nvarchar(255) 存储LongType类型的数据
TEXT_TEXT_datetime 备注6
TEXT2_TEXT2_datetime 此处存储的是JPA持久化对象时,才会有值。此值为对象ID

组织机构表

act_id_group 用户组信息表

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) 主键ID
REV_乐观锁int 乐观锁Version
NAME_名称nvarchar(255) 组名称
TYPE_类型nvarchar(255) 类型

act_id_info 用户扩展信息表

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) 主键ID
REV_乐观锁int 乐观锁Version
USER_ID_用户IDnvarchar(64)  
TYPE_类型nvarchar(64)  
KEY_ nvarchar(255)  
VALUE_ nvarchar(255)  
PASSWORD_ Image  
PARENT_ID_ nvarchar(255)  

act_id_membership 用户与用户组对应信息表 用来保存用户的分组信息。

字段名称字段描述数据类型主键为空取值说明
USER_ID用户IDnvarchar(64)  
GROUP_ID用户组IDnvarchar(64) 

act_id_user 用户信息表

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64) 主键ID
REV_乐观锁int 乐观锁Version
FIRST_nvarchar(255)  
LAST_nvarchar(255)  
EMAIL_EMAIL_nvarchar(255)  
PWD_密码nvarchar(255)  
PICTURE_ID_图片IDnvarchar(64)  

这四张表很常见,基本的组织机构管理,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足

通用数据表

act_ge_bytearray

二进制数据表,存储通用的流程定义和流程资源。(act_ge_bytearray)

保存流程定义图片和xml、Serializable(序列化)的变量,即保存所有二进制数据,特别注意类路径部署时候,不要把svn等隐藏文件或者其他与流程无关的文件也一起部署到该表中,会造成一些错误(可能导致流程定义无法删除)

字段名称字段描述数据类型主键为空取值说明
ID_ID_nvarchar(64)Y 主键ID
REV_乐观锁int YVersion(版本)
NAME_名称nvarchar(255) Y部署的文件名称,如:leave.bpmn.png,leave.bpmn20.xml
DEPLOYMENT_ID_部署IDnvarchar(64) Y部署表ID
BYTES_字节varbinary(max) Y部署文件
GENERATED_是否是引擎生成tinyint Y0为用户生成,1为activiti生成

act_ge_property 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录

字段名称字段描述数据类型主键为空取值说明
NAME_名称nvarchar(64) schema.versionschema.historynext.dbid
VALUE_nvarchar(300) 5.create(5.)
REV_乐观锁int version
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐