有两种方式来配置Activiti引擎将使用的数据库。
第一种方式:是定义数据库的JDBC属性:
-
jdbcUrl:数据库的JDBC URL
-
jdbcDriver:数据库的驱动类
-
jdbcUsername:用户名
-
jdbcPassword:密码
基于提供的JDBC属性构建的数据源将具有默认的MyBatis连接池设置。可以选择设置以下属性来调整连接池(取自MyBatis文档):
-
jdbcMaxActiveConnections:连接池在任何时间最多可以包含的活动连接数。缺省值是10。
-
jdbcMaxIdleConnections:连接池在任何时间最多可以包含的空闲连接数。
-
jdbcMaxCheckoutTime:连接被取出使用的最长时间,超过时间会被强制回收。默认值是20000(20秒)。
-
jdbcMaxWaitTime::这是一个底层配置,让连接池可以在长时间无法获得连接时,打印一条日志,并重新尝试获取一个连接。Default是20000(20秒)。
示例:
<property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" /> <property name="jdbcDriver" value="org.h2.Driver" /> <property name="jdbcUsername" value="sa" /> <property name="jdbcPassword" value="" />
第二种方式:使用DataSource
我们的基准测试表明,在处理大量并发请求时,MyBatis连接池不是最有效或最有弹性的。因此,建议向我们提供一个javax.sql.DataSource
实现并将其注入到流程引擎配置中(例如DBCP,C3P0,Hikari,Tomcat连接池等):
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" > <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/activiti" /> <property name="username" value="activiti" /> <property name="password" value="activiti" /> <property name="defaultAutoCommit" value="false" /> </bean> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="dataSource" ref="dataSource" /> ...
无论您使用的是JDBC还是数据源方法,都可以设置以下属性:
-
databaseType:通常不需要指定该属性,因为它是从数据库连接元数据中自动分析的。只应在自动检测失败的情况下指定。可能的值:{h2,mysql,oracle,postgres,mssql,db2}。此设置将决定使用哪些创建/删除脚本和查询。请参阅该支持的数据库部分用于哪些类型支持的概述。
-
databaseSchemaUpdate:允许设置策略来处理流程引擎启动和关闭时的数据库模式。
-
false
(默认值):在创建流程引擎时DB schema的版本,并在版本不匹配时引发异常。 -
true
:在构建流程引擎时,将执行检查,并在必要时执行DB schema的更新。如果DB schema不存在,则会创建。 -
create-drop
:在创建流程引擎时DB schema,并在流程引擎关闭时DB schema。
-
支持的数据库:
数据库类型 | JDBC URL | Notes |
---|---|---|
h2 |
jdbc:h2:tcp://localhost/activiti |
Default configured database |
mysql |
jdbc:mysql://localhost:3306/activiti?autoReconnect=true |
Tested using mysql-connector-java database driver |
oracle |
jdbc:oracle:thin:@localhost:1521:xe |
|
postgres |
jdbc:postgresql://localhost:5432/activiti |
|
db2 |
jdbc:db2://localhost:50000/activiti |
|
mssql |
jdbc:sqlserver://localhost:1433;databaseName=activiti (jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver) OR jdbc:jtds:sqlserver://localhost:1433/activiti (jdbc.driver=net.sourceforge.jtds.jdbc.Driver) |
Tested using Microsoft JDBC Driver 4.0 (sqljdbc4.jar) and JTDS Driver |