(二)Activiti之用activiti.cfg.xml配置文件初始化表

本文介绍如何使用Activiti 5.19.0.2版本进行工作流引擎的部署及配置。通过引入必要的Maven依赖,设置数据库连接,并配置activiti.cfg.xml文件来实现表的自动生成。该版本共生成25张表,涵盖流程定义、运行时数据、身份信息、历史数据和通用数据等方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、案例

  • 本章案例使用activiti 5.19.0.2版本

  1.1  引入maven依赖

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>


        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-engine</artifactId>
            <version>5.19.0.2</version>
        </dependency>

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

        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-model</artifactId>
            <version>5.19.0.2</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.0</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>

 

  1.2  初始化

public class App 
{
  
    @Test
    public void testCreateTable() {
        ProcessEngineConfiguration pec=ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
        ProcessEngine pe=pec.buildProcessEngine();
    }
}

 

  1.3  配置activiti.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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">
 
  <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
 
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_activiti" />
    <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
    <property name="jdbcUsername" value="root" />
    <property name="jdbcPassword" value="" />
 <!-- 配置模式  true 自动创建和更新表 -->
    <property name="databaseSchemaUpdate" value="true" />
 
  </bean>
 
</beans>

 

  1.4  执行以及结果

  • 如图activiti 5.19.0.2版本的共生成了25张表,6.0.0好像会生成28张表。
  • 上图中表的用途:
  • ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
  • ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
  • ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。
  • ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
  • ACT_GE_*: 'GE'表示general。通用数据, 用于不同场景下,如存放资源文件。

 

转载于:https://www.cnblogs.com/shyroke/p/7988430.html

&lt;think&gt;我们正在解决Activiti启动时报数据库缺失异常的问题,特别是关于&quot;Tables missing for component engine history identity&quot;的异常。 根据用户上一次的问题和回答,我们知道可以通过配置`databaseSchemaUpdate`和`dbIdentityUsed`参数来解决。 关键点: 1. `databaseSchemaUpdate`:控制Activiti在启动时如何管理数据库结构。 2. `dbIdentityUsed`:控制是否使用Activiti内置的身份(ACT_ID_*)。 异常信息提示缺少历史(history)和身份(identity),因此我们需要: - 设置`databaseSchemaUpdate`为`true`(或`create-drop`)来自动创建缺失的(包括历史)。 - 如果我们不使用Activiti的身份管理功能,可以设置`dbIdentityUsed`为`false`来避免对身份的检查。 配置方式取决于我们使用的配置文件。根据引用[1]和引用[2],有两种常见的配置方式: - 在Spring项目中,通常通过`application.properties`(或`application.yml`)进行配置。 - 在传统的Activiti配置文件中(如`activiti.cfg.xml`)进行配置。 下面分别给出两种配置方式: 一、Spring Boot项目(使用application.properties或application.yml) 在`application.properties`中添加以下配置: ```properties # 自动更新数据库结构 spring.activiti.database-schema-update=true # 禁用身份(如果不需要使用身份) spring.activiti.db-identity-used=false ``` 或者,在`application.yml`中: ```yaml spring: activiti: database-schema-update: true db-identity-used: false ``` 、传统Activiti配置文件activiti.cfg.xml) 在`activiti.cfg.xml`中,配置ProcessEngineConfiguration的bean,设置属性: ```xml &lt;bean id=&quot;processEngineConfiguration&quot; class=&quot;org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration&quot;&gt; &lt;!-- 其他配置(如数据源) --&gt; &lt;property name=&quot;databaseSchemaUpdate&quot; value=&quot;true&quot; /&gt; &lt;property name=&quot;dbIdentityUsed&quot; value=&quot;false&quot; /&gt; &lt;/bean&gt; ``` 注意:在传统配置中,`dbIdentityUsed`参数默认是`true`,示使用身份。如果不需要,则设置为`false`。 三、解释: - `databaseSchemaUpdate`设置为`true`后,Activiti启动时会检查数据库是否存在,如果不存在则自动创建。这样就能解决历史(act_hi_*)缺失的问题。 - `dbIdentityUsed`设置为`false`后,Activiti将不会使用身份(ACT_ID_*),因此也不会检查这些是否存在,从而避免因身份缺失而抛出的异常。 四、注意事项: - 在生产环境中,不建议一直使用`databaseSchemaUpdate=true`,因为自动更新结构可能存在风险。建议在首次初始化后,将其改为`false`,或者使用专门的数据库迁移工具(如Flyway)来管理结构变更。 - 如果确实需要使用身份管理功能(即ACT_ID_*),那么就不能设置`dbIdentityUsed=false`,此时需要确保身份存在(可以通过设置`databaseSchemaUpdate=true`来创建)。 五、如果问题仍然存在: - 检查数据库连接配置是否正确,确保应用能够连接到数据库。 - 检查数据库用户是否有创建的权限。 - 检查日志中是否有更详细的错误信息。 通过以上配置,应该能够解决&ldquo;Tables missing for component engine history identity&rdquo;异常。 相关问题: 1. 如何设置Activiti的历史记录级别(history level)? 2. 在生产环境中,如何安全地升级Activiti版本? 3. 如何手动创建Activiti所需的数据库&lt;/think&gt;要解决 Activiti 启动时报 **&quot;Tables missing for component engine history identity&quot;** 异常,需在配置文件中调整 `databaseSchemaUpdate` 和 `dbIdentityUsed` 参数。以下是具体解决方案: ### 解决方案步骤 1. **定位配置文件** 根据引用[1]和[2],配置通常位于以下位置: - Spring 项目:`application.properties` 或 `application.yml` - XML 配置:`activiti.cfg.xml`(需在 Spring 配置中引入 `&lt;import resource=&quot;classpath:/activiti/activiti.cfg.xml&quot;/&gt;`) 2. **修改关键参数** 在配置文件中添加/修改: ```properties # 自动创建缺失(核心参数) spring.activiti.database-schema-update=true # 禁用身份检查(辅助参数) spring.activiti.db-identity-used=false ``` ```xml &lt;!-- activiti.cfg.xml 配置示例 --&gt; &lt;bean id=&quot;processEngineConfiguration&quot; class=&quot;org.activiti.spring.SpringProcessEngineConfiguration&quot;&gt; &lt;property name=&quot;databaseSchemaUpdate&quot; value=&quot;true&quot; /&gt; &lt;property name=&quot;dbIdentityUsed&quot; value=&quot;false&quot; /&gt; &lt;/bean&gt; ``` 3. **完整配置示例** `application.properties`: ```properties # 数据库连接 spring.datasource.url=jdbc:mysql://localhost:3306/activiti_db spring.datasource.username=root spring.datasource.password=123456 # Activiti 管理 spring.activiti.database-schema-update=true # 自动创建缺失 spring.activiti.db-identity-used=false # 跳过身份检查 spring.activiti.history-level=audit # 设置历史记录级别 ``` ### 参数作用说明 | 参数 | 值 | 作用 | |------|----|------| | **`databaseSchemaUpdate`** | `true` | 自动创建缺失(如 `act_hi_*` 历史)[^1] | | **`dbIdentityUsed`** | `false` | 禁用身份(`ACT_ID_*`)检查,避免因未使用身份功能导致的异常[^2] | ### 注意事项 1. **首次启动后** 生产环境建议在首次初始化结构后,将 `databaseSchemaUpdate` 改为 `false`: ```properties spring.activiti.database-schema-update=false ``` 2. **权限检查** 确保数据库用户有 **CREATE TABLE** 权限,否则自动建会失败。 3. **结构验证** 启动后检查数据库是否生成以下关键: ```sql SHOW TABLES LIKE &#39;act_hi_%&#39;; -- 历史 SHOW TABLES LIKE &#39;act_ge_%&#39;; -- 通用数据 ``` &gt; 通过此配置,Activiti 启动时将自动处理历史和身份缺失问题,避免 `Tables missing` 异常[^1][^2]。 --- ### 相关问题 1. 如何查看 Activiti 当前使用的数据库模式版本? 2. 生产环境中如何用 Flyway 管理 Activiti 结构变更? 3. `history-level` 参数设置为 `none` 会对流程运行产生什么影响? [^1]: 控制数据库结构的初始化策略 [^2]: 解决因身份缺失导致的启动异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值