第 2 章 流程虛擬機
為了通過插件方式容納多種流程語言和活動,jBPM基於了流程虛擬機。 本質上,流程虛擬機是一個特定的可執行圖形的框架。 一個流程定義表現為一個執行流, 它擁有可以表現為圖形的一種結構。
流程虛擬機將流程定義從活動行為中切分了出來。 流程虛擬機從一個活動到下一個獲得獲取可執行的流程, 並將活動的行為委派給可插拔的Java類。 這裡有一個API(ActivityBehaviour)用來作為 流程虛擬機和活動行為代碼的接口。像jPDL這類的語言僅僅是 一系列活動行為的實現和解析器。
圖 2.1. 流程定義實例
一般來說流程定義都是靜態的。一個流程定義由活動和轉移組成。 一個活動運行時的行為被封裝在一起, 它是來自流程圖形結果的一部分。
圖 2.2. 流程結構類圖
流程虛擬機沒有包含任何活動實現。 它只提供了執行環境和活動API, 可以當做Java組件來編寫ActivityBehaviour的實現。 活動也可以使等待狀態。 這意味著活動的控制流會來自於流程系統的外部。 比如一個人工任務或者異步服務調用。當執行處於等待狀態, 執行的運行時狀態可以保存到一個數據庫中。
一個流程定義可以啟動多個執行。 一個執行是一個指向當前活動的指針。
圖 2.3. 執行實例
為了展示執行的同步路徑, 這裡是一個父子繼承關系, 這樣一個流程實例可以復制執行的同步路徑。
圖 2.4. 執行類圖