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

jBPM 4 核心架構深度解析:API、環境、命令與服務層

     編輯:J2EE

四大核心 API

流程虛擬機 (PVM) 提供四種整合 API,覆蓋不同執行模式:

PVM 四大 API 架構圖
API用途特點
Service API應用程式與 PVM 交互事務性持久化模式,基於資料庫,最常用
Client API直接操作流程定義與執行對象無持久化,暴露核心模型方法
Activity API實作活動運行時行為實作 ActivityBehaviour,可控制執行流向
Event Listener API處理流程事件(進入/離開活動)類似 Activity API 但不可控制執行流向

核心介面定義

// ActivityBehaviour
public interface ActivityBehaviour extends Serializable {
    void execute(ActivityExecution execution) throws Exception;
}

// ActivityExecution - 控制執行流向
public interface ActivityExecution extends OpenExecution {
    void waitForSignal();
    void take(String transitionName);
    void execute(String activityName);
}

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

環境與命令模式

Environment:抽象事務資源(Hibernate Session、JMS、Timer),支援 Java SE/EE、Spring、Seam 等環境。使用 EnvironmentFactory 建立,以 try-finally 區塊管理生命週期。

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

Command:封裝在環境區塊中執行的操作單元。

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

三大核心服務

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

CommandService 攔截器鏈

CommandService 攔截器鏈

預設鏈(由內而外):

  1. standard-transaction-interceptor:初始化標準事務,綁定 Hibernate Session。
  2. environment-interceptor:建立環境區塊。
  3. retry-interceptor:捕獲 StaleObjectException(樂觀鎖失敗)並重試。

可替換為 Local/Remote EJB 命令服務、非同步訊息佇列等配置。

配置檔案

  • jbpm.default.cfg.xml:服務啟用配置
  • jbpm.tx.hibernate.cfg.xml:CommandService 攔截器鏈配置
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved