一、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 属性,将会以该值为准。
数据库类型 数据库连接 简单描述 h2 jdbc:h2:tcp://localhost/activiti Activiti 默认支持 H2数据库, H2是一个开源的嵌入式数据库,使用 Java 语言编写而成。 mysql jdbc:mysql://localhost:3306/activiti 主流数据库之一, 它是一个开源的小型关系型数据库, 由于它体积小、速度快, 免费的。 oracle jdbc:oracle:thin:@localhost:1521:xe 目前世界上最流行的商业数据库 , 价格昂贵, 但拥有性能高效和可靠的数据管理的优势。 postgres jdbc:postsql://local:5432/activiti 开源的数据库。 db2 jdbc:db2://local:50000/activiti 由 IBM 公司研发的一款关系型数据库, 其良好的伸缩性和数据库的高效性, 让它成为继 Oracle之后, 又一款应用广泛的商业数据库。 mssql jdbc: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&characterEncoding=utf-8&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&characterEncoding=utf-8&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&characterEncoding=utf-8&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&characterEncoding=utf-8&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();
}
}