有兩種方式來配置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 |