默認加載類路徑下 activiti.cfg.xml,根元素 <beans>,核心 Bean id="processEngineConfiguration"。
| 類名 | 適用場景 |
|---|---|
StandaloneProcessEngineConfiguration | 獨立模式,Activiti 自管事務,啟動時檢測數據庫 |
StandaloneInMemProcessEngineConfiguration | 測試專用,H2 內存庫,啟動建表關閉刪表 |
SpringProcessEngineConfiguration | Spring 整合模式(最常用) |
JtaProcessEngineConfiguration | 分布式事務(JTA)環境 |
方式一:內置連接池(僅測試)
<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(生產必用,推薦 DBCP/C3P0/Druid)
<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"/>
...
</bean>
databaseType:通常自動檢測,支持 h2/mysql/oracle/postgres/mssql/db2databaseSchemaUpdate:true(啟動自動建表/更新)、false、create-drop// 從默認資源加載
ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault().buildProcessEngine();
// 指定資源/Bean 名
ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml", "myConfig").buildProcessEngine();
// 零配置(不推薦生產)
ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
.setJdbcUrl("jdbc:h2:mem:my-db;DB_CLOSE_DELAY=1000")
.setAsyncExecutorEnabled(true)
.buildProcessEngine();
運行 DbSchemaCreate 或手動執行 SQL(JAR 包 org/activiti/db/create 下)。
三大類表(生產常只需 engine + history):
MySQL 5.5~5.6.3 避坑:timestamp/datetime 無毫秒精度,建表會報錯。解決:升級 ≥5.6.4 或使用 5.5 版本 SQL 腳本。
雖支持代碼式配置,但生產強烈建議 XML 外部化:便於運維修改、權限隔離、版本管理、非開發人員可維護。