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

jBPM 4 高級圖形化流程構建:循環、子流程、事件與執行線程模型

     編輯:J2EE

7.1 循環活動

活動可基於轉移或組合實現循環,循環可包含等待狀態。為支持多次自動循環,流程虛擬機將尾部遞歸轉換為 while 循環傳播執行。

7.2 子流程

TODO:待補充。

7.3 默認執行行為

Activity 作為行為時,可用以下方法外部控制流程:waitForSignal()、take(Transition)、end()、execute(Activity)、createExecution()。
若無調用傳播方法,則按默認行為:
1. 有默認外向轉移 → 選擇它。
2. 有父活動 → 回退父活動。
3. 否則 → 結束執行。
流程語言可重寫 ExecutionImpl.proceed() 覆蓋默認行為。

7.4 功能活動

活動可作事件監聽器 (功能活動):發送郵件、數據庫更新、生成 PDF、計算平均值等自動活動,不改變執行流向。實現 Activity、EventListener 接口,execute() 與 notify() 均委派 perform(OpenExecution)。OpenExecution 提供當前狀態、變量檢驗、環境信息。perform 完成後按默認行為傳播。

7.5 執行與線程模型

流程虛擬機通過客戶端線程將執行從一等待狀態推進至下一等待狀態。
signal() 默認同步阻塞至下一等待狀態返回。兩種異步補充:異步繼續、異步命令服務。

實例流程:三等待四自動

流程定義 (DSL) 包含:wait 1 (初始) → automatic 1/2/3/4 (Display 打印) → wait 2 → wait 3。
執行軌跡:
1. startProcessInstance() → 定位 wait 1。
2. signal() → 穿透四自動活動 → 定位 wait 2 返回。
3. 再次 signal() → 定位 wait 3 返回。
同一定義可在客戶端模式 (內存) 或持久化模式運行。

持久化模式事務邊界

外部觸發 (紅色) 後計算工作 (綠色) 通常極短 (<1s),等待狀態可能持續數小時/天/年。默認持久化模式下,流程工作在客戶端線程同一事務中完成,直到下一等待狀態。分支/同步路徑亦在同一事務順序執行,無多線程並發問題。

開發者任務:識別自動 vs 等待

業務分析員只需知活動由人/系統響應;開發者必須精確劃分自動活動、等待狀態、線程分配。查找外部觸發器 (等待狀態) 是關鍵,如同 UML 類圖識別名詞動詞。

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