jBPM 4.0 採用模組化配置設計,通過 <import> 機制組合功能切片,實現核心引擎、身份管理、任務服務、作業執行器、事務管理等組件的靈活裝配。本文系統梳理配置文件體系、Hibernate 映射、生命周期配置及解析入口。
| 文件 | 功能域 | 說明 |
|---|---|---|
jbpm.default.cfg.xml | 核心基礎 | 服務註冊、Hibernate 配置、SessionFactory、業務日歷等默認組件 |
jbpm.identity.cfg.xml | 身份管理 | 用戶、組、權限相關服務與數據模型 |
jbpm.jobexecutor.cfg.xml | 作業執行器 | 異步作業、定時器、重試策略配置 |
jbpm.tx.hibernate.cfg.xml | 本地事務 | Hibernate 管理的本地事務邊界 (非 JTA 環境) |
jbpm.tx.jta.cfg.xml | JTA 事務 | JTA 環境下的事務管理 (應用服務器) |
jbpm.jpdl.cfg.xml | 流程語言 | JPDL 活動、事件監聽器、類型轉換器等 |
<?xml version="1.0" encoding="UTF-8"?>
<jbpm-configuration>
<import resource="jbpm.default.cfg.xml" />
<import resource="jbpm.tx.hibernate.cfg.xml" /> <!-- 或 jbpm.tx.jta.cfg.xml -->
<import resource="jbpm.jpdl.cfg.xml" />
<import resource="jbpm.identity.cfg.xml" />
<import resource="jbpm.jobexecutor.cfg.xml" />
<!-- 自定義覆蓋或擴展配置可直接寫在這裡 -->
</jbpm-configuration>
原理:JbpmConfigurationParser 解析頂層文件,遞歸導入 import 資源,合並為完整組件圖。用戶可在導入後覆蓋任意 Bean 定義實現定制化。
jbpm.execution.hbm.xml — 流程實例、執行令牌、變量jbpm.history.hbm.xml — 歷史審計數據jbpm.identity.hbm.xml — 用戶/組/權限jbpm.repository.hbm.xml — 流程部署、版本jbpm.task.hbm.xml — 任務、分配、評論jbpm.jpdl.hbm.xml — JPDL 專用模型所有映射將 Java 領域模型映射至關係數據庫表結構。
| 文件 | 用途 |
|---|---|
jbpm.task.lifecycle.xml | 任務狀態機定義 (創建、分配、完成、刪除等轉換) |
jbpm.variable.types.xml | 變量類型註冊 (基本類型、實體、集合、自定義類型轉換器) |
jbpm.wire.bindings.xml | Wire 容器綁定規則,定義組件實例化策略 (單例、原型、延遲初始化等) |
jbpm.jpdl.activities.xml | 內置活動實現註冊 (決策、分支、合並、服務任務等) |
jbpm.jpdl.eventlisteners.xml | 默認事件監聽器註冊 |
org.jbpm.pvm.internal.env.JbpmConfigurationParsermodules/pvm/src/main/resources/jbpm.wire.bindings.xml 及包 org.jbpm.pvm.internal.wire.bindingWireContext 可訪問的接口,在 jbpm.wire.bindings.xml 註冊綁定,即可注入引擎上下文。運行時構建兩個 WireContext:
openEnvironment() 創建,持有數據庫 Session、事務、各類 DbSession (Repository, Execution, Task, Job, History, Timer, Message) 等短生命周期組件。兩層 Context 壓入 Environment (綁定當前線程),領域模型對象可透過 Environment.getFromCurrent() 獲取服務,實現「充血模型」。