首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

jBPM 4.0 配置文件結構與模組化導入機制詳解

     編輯:Java 相關知識

jBPM 4.0 採用模組化配置設計,通過 <import> 機制組合功能切片,實現核心引擎、身份管理、任務服務、作業執行器、事務管理等組件的靈活裝配。本文系統梳理配置文件體系、Hibernate 映射、生命周期配置及解析入口。

核心配置文件清單 (jBPM JAR 內置)

文件功能域說明
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.xmlJTA 事務JTA 環境下的事務管理 (應用服務器)
jbpm.jpdl.cfg.xml流程語言JPDL 活動、事件監聽器、類型轉換器等

標準用戶配置範例 (jbpm.cfg.xml)

<?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 定義實現定制化。

Hibernate 映射文件 (亦內置於 JAR)

  • 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.xmlWire 容器綁定規則,定義組件實例化策略 (單例、原型、延遲初始化等)
jbpm.jpdl.activities.xml內置活動實現註冊 (決策、分支、合並、服務任務等)
jbpm.jpdl.eventlisteners.xml默認事件監聽器註冊

配置解析入口與擴展點

  • 解析器:org.jbpm.pvm.internal.env.JbpmConfigurationParser
  • Wire 綁定:modules/pvm/src/main/resources/jbpm.wire.bindings.xml 及包 org.jbpm.pvm.internal.wire.binding
  • 自定義組件:實現 WireContext 可訪問的接口,在 jbpm.wire.bindings.xml 註冊綁定,即可注入引擎上下文。

環境上下文雙層架構

運行時構建兩個 WireContext:

  1. ProcessEngineContext:全局單例,持有服務類、SessionFactory、緩存等長生命周期組件。
  2. TransactionContext:每次 openEnvironment() 創建,持有數據庫 Session、事務、各類 DbSession (Repository, Execution, Task, Job, History, Timer, Message) 等短生命周期組件。

兩層 Context 壓入 Environment (綁定當前線程),領域模型對象可透過 Environment.getFromCurrent() 獲取服務,實現「充血模型」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved