一、Activiti 数据表介绍
Activiti 后台是有数据库支持的,一共产生23张边,所有的表都以ACT_开头。第二部分是表示表的用途的两个字母标识。用途也和服务的API 对应。Activiti 默认使用 MyBatis 数据连接池。通过导入 activit-engine 依赖可以清楚看到 Activiti 依赖于 MyBatis。
ACT_RE_* :'RE' 表示 repository(存储库)。资源库流程规则表。这个前缀的表包含了流程定义和流程静态资源(图片、规则 等)。
act_re_deployment | 部署信息表 |
act_re_model | 流程设计模型部署表 |
act_re_prodef | 流程定义数据表 |
ACT_RU_* :'RU’ 表示 runtime(运行时)。运行时数据库表。这些运行时的表,包含流程实例、任务、变量、异步任务 等运行中的数据。这样运行时表可以一直很小数据很快。
act_ru_execution | 运行时流程执行实例表 |
act_ru_identitylink | 运行时流程人员表, 主要存储任务节点与参与者的相关信息。 |
act_ru_lask | 运行时任务节点表 |
act_ru_variable | 运行时流程变量数据表 |
ACT_ID_* :'ID' 表示 identity(身份)。组织机构表。这些表包含了身份信息,比如用户、组 等。
act_id_group | 用户组信息表 |
act_id_info | 用户扩展信息表 |
act_id_membership | 用户与用户组对应信息表 |
act_id_user | 用户信息表 |
ACT_HI_* :'HI' 表示 history(历史)。历史数据库表。这些表包含历史数据,比如历史流程实例,变量、任务 等。
act_hi_actinst | 历史节点表 |
act_hi_attachment | 历史附件表 |
act_hi_comment | 历史意见表 |
act_hi_identitylink | 历史流程人员表 |
act_hi_detail | 历史详情表,提供历史变量查询 |
act_hi_procinst | 历史流程实例表a |
act_hi_tasking | 历史任务实例表 |
act_hi_varinst | 历史变量表 |
ACT_GE_* :'GE' 表示 general(普遍的)。通用数据表。用于不同场景下,如存放资源文件。
act_ge_bytearry | 二进制数据表 |
act_ge_property | 属性数据表, 存储整个流程引擎级别的数据,初始化表 |
二、activiti.cfg.xml 配置文件
Activiti 核心配置文件,配置流程引擎创建工具的基本参数和数据库连接池参数。
定义数据库配置参数:
- jdbcUrl:数据库的JDBC URL。
- jdbcDriver:对应不同数据库类型的驱动。
- jdbcUsername:连接数据库的用户名。
- jdbcPassword:连接数据库的密码。
基于JDBC 参数配置的数据库连接,会使用默认的 MyBatis 连接池。下面的参数可以用来配置连接池(来自MyBatis参数):
- jdbcMaxActiveConnections:连接池中处于被使用状态的连接的最大值,默认为10。
- jdbcMaxIdleConnections:连接池处于空闲状态的连接最大值。
- jdbcMaxCheckoutTime:连接被取出使用的最长时间。超过时间会被强制回收。默认为20000(20秒)。
- jdbcMaxWaitTime:这是一个底层配置,让连接池可以在长时间无法获得连接时,打印一条日志,并重新尝试获取一个连接,避免因为错误配置导致操作失败,默认为20000(20秒)。
配置文件示例:
<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="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti_test?createDatabaseIfNotExist=true"></property>
<property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
<property name="jdbcUsername" value="root" />
<property name="jdbcPassword" value="root" />
<!-- 建表策略
databaseSchemaUpdate: 设置流程引擎启动和关闭时如何处理数据库表
false(默认):检查数据库表的版本和依赖库的版本,如果版本不匹配就抛出异常。不能自动创建表,需要表存在,手动创建。
true: 构建流程引擎时,执行检查,如果需要就执行更新,如果表不存在就创建。先删除表再创建表。
create-drop: 构建流程引擎时创建数据库表,关闭流程引擎时,删除这些表。如果表不存在,自动创建表。
-->
<property name="databaseSchemaUpdate" value="true" />
<!-- 是否启动任务调度 -->
<property name="jobExecutorActivate" value="false" />
<!-- 邮件服务器配置 -->
<property name="mailServerHost" value="mail.my-corp.com" />
<property name="mailServerPort" value="5025" />
</bean>
</beans>
Activiti 底层操作数据库默认是使用 MyBatis 操作。
Activiti 工作流的表是用来存放流程数据的,而业务数据都需要用户自己来创建和维护。一定需要业务去关联流程,才能开发工作流系统。