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

jBPM 4 基礎活動實現 (上):ActivityBehaviour、ExternalActivity 與等待狀態

     編輯:J2EE

5.1 ActivityBehaviour:純 Java 實現運行時行為

PVM 庫不含完整流程結構,運行時行為委派給 ActivityBehaviour 接口:
void execute(ActivityExecution execution)。
調用時擁有執行傳播完全控制權:可用 execution.take(Transition) 選轉移、execution.waitForSignal() 進等待。若無調用傳播方法,按默認行為 (見 7.3 節)。

5.2 ActivityBehaviour 實例:Hello World

Display 類實現 ActivityBehaviour,構造函數接收 message,execute() 打印。
流程:a (Display "hello") → b (Display "world")。
啟動執行:控制台輸出 hello、world。
關鍵:屬性配置 (message) 實現活動復用;無傳播調用時按默認選首個轉移或結束,故兩節點皆執行並在 b 結束。

5.3 ExternalActivityBehaviour:處理外部觸發

外部活動 = 等待狀態。執行到達時調用 execute(),通常傳遞外部響應 (如人工任務) 後調用 waitForSignal() 進等待。
接口擴展 Activity,新增:
void signal(Execution execution, String signal, Map parameters)。
外部觸發調用 signal() 時,委派給當前活動的 ExternalActivityBehaviour.signal(),通常用 signal 名稱選轉移、參數作變量。

5.4 ExternalActivity 實例:WaitState

WaitState 實現 ExternalActivity:
- execute():直接 waitForSignal()。
- signal():execution.take(signalName),以 signal 名選轉移 (無名選首個)。
流程:a (WaitState) → b (WaitState)。
啟動 → 定位 a。
signal() → 委派 a 的 signal → 選無名轉移 → 到達 b → 執行 b 的 WaitState → 等待 → signal 返回。
斷言執行位於 b。

核心概念圖解

  • ActivityBehaviour:自動活動 (無等待),默認鏈式執行。
  • ExternalActivity:等待狀態,需外部 signal 推進。
  • ProcessFactory:Fluent DSL 構建流程圖形。
  • 執行軌跡:同步阻塞至下一等待狀態。

給開發者的建議

精準區分自動活動與等待狀態是建模關鍵。業務分析師關注「人/系統響應」;開發者必須映射為「自動/等待」,並理解線程與事務邊界 (持久化模式下同步執行至下一等待)。

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