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

jBPM 4.0 開發指南:第 4 章 架構設計與四大 API 體系

     編輯:Java 相關知識

第 4 章 架構設計與四大 API 體系

4.1 四大核心 API 概覽

四大 API 架構圖

圖 4.1 流程虛擬機四大 API 體系

API用途適用場景
服務 API應用代碼與 PVM 交互持久化模式、事務環境、生產部署(最常用)
客戶端 API直接操作核心模型對象非持久化模式、測試環境、嵌入式執行
活動 API實現活動運行時行為開發自定義 ActivityBehaviour 組件
事件監聽 API處理流程事件橫切關注點:日誌、監控、通知等

4.2 活動 API 詳解

ActivityExecution 暴露流程控制方法:

public interface ActivityExecution extends OpenExecution {
    void waitForSignal();
    void take(String transitionName);
    void execute(String activityName);
    // ...
}

4.3 事件監聽 API

與活動 API 類似,但 無法控制執行流向(轉移已選擇時才觸發):

public interface EventListener extends Serializable {
    void notify(EventListenerExecution execution) throws Exception;
}

4.4 客戶端 API

暴露流程定義與執行的直接管理介面,構建最小化執行環境所需。

4.5 環境機制:多事務環境適配

環境是持久化執行的核心抽象,支援 Java SE、Java EE、Seam、Spring 等事務環境。PVM 僅通過自定義介面調用事務資源(Hibernate Session、JMS Session、Timer Service)。

環境工廠為單例,服務全應用:

EnvironmentFactory environmentFactory = new PvmEnvironmentFactory("environment.cfg.xml");
Environment environment = environmentFactory.openEnvironment();
try {
    // 持久化操作
} finally {
    environment.close();
}

JbpmConfiguration 同時扮演 Configuration、ProcessEngine、EnvironmentFactory 三重角色。

4.6 命令模式:封裝環境操作

public interface Command<T> extends Serializable {
    T execute(Environment environment) throws Exception;
}

4.7 三大核心服務與命令攔截器鏈

服務職責核心方法示例
RepositoryService流程定義資源管理createDeployment(), createProcessDefinitionQuery()
ExecutionService運行時執行管理startProcessInstanceById(), signalExecutionById()
ManagementService系統維護操作createJobQuery(), executeJob()

所有服務方法封裝為 Command,委派給 CommandService 執行:

public interface CommandService {
    <T> T execute(Command<T> command);
}

默認攔截器鏈配置(jbpm.tx.hibernate.cfg.xml):

CommandService 攔截器鏈

圖 4.2 CommandService 攔截器鏈結構

  1. Retry Interceptor:捕獲 Hibernate StaleObjectException(樂觀鎖失敗),自動重試
  2. Environment Interceptor:建立環境塊包裹命令執行
  3. Standard Transaction Interceptor:初始化標準事務,Hibernate Session 作為事務資源

替代配置選項:本地/遠程 EJB 命令服務(容器管理事務)、異步命令服務(消息驅動、獨立事務)。

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