Skip to content
一、Activiti-数据源配置
  • 缺省配置默认,使用H2内存数据库。

  • 配置JDBC属性,使用mybatis提供的连接池。

    基本配置具体描述
    jdbcUrl数据库连接地址
    jdbcDriver数据驱动类
    jdbcUsername数据库用户名
    jdbcPassword数据库用户密码
    连接池配置描述
    jdbcMaxActiveConnections在数据库连接池内最大的活跃连接数,默认值为 10 。
    jdbcMaxldleConnections连接池最大的空闲连接数。
    jdbcMaxCheckoutTime当连接池内的连接耗尽,外界向连接池请求连接时,创建连接的等待时间, 单位为 ms ,默认值为20000, 即20s 。
    jdbcMaxWaitTime当整个连接池需要重新获取连接时,设置的等待时间,单位为ms, 默认值为20000 ,即20s 。
  • 配置DataSource,可自选第三方实现。

    • Druid

      • 为监控而生的数据库连接池 来自阿里
    • DBCP

      • Apache提供的一个数据源,老牌数据库连接池,稳定可靠,
    • C3P0

      • C3P0是一个开放源代码的JDBC连接池,Hibernate的发行包中默认使用此连接池,性能也不错。
    • HikariCP

      • 来自日本的极速数据源连接池,Spring默选
  • 配置data.baseType

    • 没有指定值时, databaseType 为 null
  • 指定 databaseType 属性,目的是为了确定执行创建( 或删除)表的 SQL 脚本。

    • 如果没有配置 databaseType 属性, Activiti 会使用 Connection 的 getMetaData 方法获取数据库元数据,但是一旦配置了 databaseType 属性,将会以该值为准。
    数据库类型数据库连接简单描述
    h2jdbc:h2:tcp://localhost/activitiActiviti 默认支持 H2数据库, H2是一个开源的嵌入式数据库,使用 Java 语言编写而成。
    mysqljdbc:mysql://localhost:3306/activiti主流数据库之一, 它是一个开源的小型关系型数据库, 由于它体积小、速度快, 免费的。
    oraclejdbc:oracle:thin:@localhost:1521:xe目前世界上最流行的商业数据库 , 价格昂贵, 但拥有性能高效和可靠的数据管理的优势。
    postgresjdbc:postsql://local:5432/activiti开源的数据库。
    db2jdbc:db2://local:50000/activiti由 IBM 公司研发的一款关系型数据库, 其良好的伸缩性和数据库的高效性, 让它成为继 Oracle之后, 又一款应用广泛的商业数据库。
    mssqljdbc:sqlserver://local:1433;databaseName=activiti微软研发的一款数据库产品,目前也支持在 Linux下使用。
  • 数据库策略配置databaseSchemaUpdate,该属性可以设置流程引擎启动和关闭时数据库执行的策略。

    • false: 为默认值, Activiti 在启动时, 会对比数据库表中保存的版本,如果没有表或者版本不匹配,将在启动时抛出异常。

    • true:启动时自动检查并更新数据库表,不存在会自动创建。

    • create-drop:启动时创建数据库结构,结束时删除表结构。如果想要 Activiti 执行“ drop ”操作,必须调用

      ProcessEngine 的 close 方法,否则将不会删除表。

    • drop-create:create-drop 类似,会在流程引擎启动时,先将原来全部的数据表删除,再进行创建。与 create-drop 不同的是,不管是否调用 ProcessEngine 的 close 方法 ,都会执行 create 操作

  • 具体配置

    • 默认配置

      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.StandaloneInMemProcessEngineConfiguration">
              <property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000;MVCC=TRUE" />
              <property name="jdbcDriver" value="org.h2.Driver" />
              <property name="jdbcUsername" value="sa" />
              <property name="jdbcPassword" value="" />
          </bean>
      </beans>
    • 修改连接数据库配置

      • 依赖

        xml
        <dependency>
            <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
      • 配置:activiti_mysql.cfg.xml

        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">
        
            <!--数据连接修改成mysql-->
          <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
                <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false" />
                <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
                <property name="jdbcUsername" value="root" />
                <property name="jdbcPassword" value="root" />
        <!--        <property name="databaseSchemaUpdate" value="create-drop"/>-->
                <property name="databaseSchemaUpdate" value="true"/>
            </bean>
        </beans>
    • Druid数据源连接池

      • 依赖

        xml
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.22</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
      • 配置:activiti_druid.cfg.xml

        xml
          <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
            <!-- 参照的数据源 -->
            <property name="dataSource" ref="dataSource"></property>
            <!-- 数据库配置 -->
            <property name="databaseSchemaUpdate" value="drop-create" />
          </bean>
        
          <!-- 被参照的数据源 -->
          <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/activiti"/>
            <property name="username" value="root"/>
            <property name="password" value="root"/>
            <property name="initialSize" value="1"/>
            <property name="maxActive" value="20"/>
            <property name="filters" value="stat,slf4j"/>
          </bean>
    • Hikar数据源配置

      • 依赖

        xml
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.0.RELEASE</version>
            <relativePath/>
        </parent>
        或者
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>3.1.0</version>
        </dependency>
      • 配置:activiti_hikar.cfg.xml

        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.StandaloneInMemProcessEngineConfiguration">
                <property name="dataSource" ref="dataSourceHikar"/>
                <property name="databaseSchemaUpdate" value="true"/>
            </bean>
        
            <bean id="dataSourceHikar" class="com.zaxxer.hikari.HikariDataSource">
                <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false" />
                <property name="driverClassName" value="com.mysql.jdbc.Driver" />
                <property name="username" value="root" />
                <property name="password" value="root" />
                <property name="maximumPoolSize" value="20"/>
            </bean>
        </beans>
    • DBCP数据源配置

      • 依赖

        xml
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
      • 配置:activiti_dbcp.cfg.xml

        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.StandaloneInMemProcessEngineConfiguration">
                <property name="dataSource" ref="dataSource"/>
                <property name="databaseSchemaUpdate" value="true"/>
            </bean>
        
                <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
                    <property name="url" value="jdbc:mysql://localhost:3306/activiti?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false" />
                    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
                    <property name="username" value="root" />
                    <property name="password" value="root" />
                    <property name="initialSize" value="1"/>
                    <property name="maxActive" value="10"/>
                </bean>
        </beans>
    • C3P0数据源配置

      • 依赖

        xml
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>
      • 配置:activiti_c3p0.cfg.xml

        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.StandaloneInMemProcessEngineConfiguration">
                <property name="dataSource" ref="dataSource"/>
                <property name="databaseSchemaUpdate" value="true"/>
            </bean>
        
                <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
                    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false" />
                    <property name="driverClass" value="com.mysql.jdbc.Driver" />
                    <property name="user" value="root" />
                    <property name="password" value="root" />
                </bean>
        </beans>
二、具体测试代码
java
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @ClassName ConfigDBTest
 * @Description DB配置
 * @Author eastern
 * @Date 2020/6/27 下午10:55
 * @Version 1.0
 **/
public class ConfigDBTest {

	private static final Logger logger = LoggerFactory.getLogger(ConfigDBTest.class);

	@Test
	public void testConfg1() {
		ProcessEngineConfiguration configuration =
				ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault();
		logger.info("configuration = {}", configuration);
		ProcessEngine processEngine = configuration.buildProcessEngine();
		logger.info("获取流程引擎 {}", processEngine.getName());
		processEngine.close();
	}

	@Test
	public void testConfg2() {
		ProcessEngineConfiguration configuration =
				ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti_druid.cfg.xml");

//		ProcessEngineConfiguration configuration =
//				ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti_mysql.cfg.xml");

//		ProcessEngineConfiguration configuration =
//				ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti_hikar.cfg.xml");

//		ProcessEngineConfiguration configuration =
//				ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti_dbcp.cfg.xml");

//		ProcessEngineConfiguration configuration =
//				ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti_c3p0.cfg.xml");
		logger.info("configuration = {}", configuration);
		ProcessEngine processEngine = configuration.buildProcessEngine();
		logger.info("获取流程引擎 {}", processEngine.getName());
		processEngine.close();
	}
}

Released under the MIT License.