jBPM學習筆記

最近通過學習JBPM4瞭解了JBPM的功能和設計理念,下面用筆記

概述:
jBPM4是一套提供了包括流程引擎、數據庫腳本、web流程定義工具、eclipse流程定義工具以及流程操作API的工作流產品。
架構和設計理念:
jBPM4通過實現了PVM(流程引擎)的概念,使得用戶可以用自定義流程語言運行在jbpm上,目前支持jpdl、bpel以及seamflow。

jBPM4的結構特點:

  • 嵌入式流程引擎
  • 可插拔的體系架構:採用模塊化的架構設計,採用IOC的設計理念。各模塊都可以很方便地解耦以及替換實現方式,例如持久化、事務處理、身份認證、日誌服務等。
  • 易擴展的流程語言
  • jbpm仍基於uml acitvity diagram的概念
  • 提供了可定製的Event-Listener觀察者模式來處理事務觸發。
  • 提供了靈活的EL條件表達式機制,輔助條件解析、簡單業務邏輯腳本處理。
  • 可擴展的task及任務分配機制。

jbpm的execution機制
一個流程實例在運行過程中,運動到的當前活動指針叫execution,併發時可以有多個execution


jBPM4的jpdl活動定義元素
1、只能有一個start元素,可以有多個end元素,設置end的屬性ends="execution"可以設置當運行到該end活動時,其他仍活躍的併發活動也結束。設置end的state屬性(string類型),可以通過獲取processInstance.getState獲得結束狀態,另外還有end-cancel和end-error活動。
2、state類型活動,運行到該類型活動時,需要執行executionService.signalExecutionById(xxx)才能讓流程繼續往下跑。
3、使用decision和不使用decision都可以流出多條分支,區別在於:
如果decision後的分支沒有一個得到滿足,則流程實例無法運行下去,拋出異常。
如果沒有使用decision,即使state後沒有一個條件的分支被滿足,也默認走第一條分支。
跟fork活動的區別:fork活動後可以同時運行多條分支,但使用decision只能流程一條。
4、join活動通過multiplicity設置流程多少條分支後觸發匯聚活動。要動態設置只能通過賦值流程便利方式設置。
5、task活動:通過設置task活動的assignee屬性設置活動的執行人(可以是用戶或用戶組)。也可以通過candidate-groups和candidate-users設置候選用戶。但設置的用戶和用戶組必須通過identityService註冊。
通過assignment-handler可以設置動態獲取執行人。
6、流程變量有流程級別、活動級別以及event-listener級別的,活動和eventlistener級別的在流程實例是看不到的。
7、同步異步執行機制:默認方式是工作流引擎會在客戶端發起的線程中同步執行流程的所有工作,直到陷入等待狀態或流程結束狀態。可以通過活動的continue屬性(sync|async|exclusive)設置是否異步執行。流程一旦進入異步執行方式,一個異步消息(通過job機制發送消息)會被作爲當前事務的一部分發送出去,然後當前事務會立即自動提交。
exclusive獨佔性異步執行方式:爲每一個異步消息啓動一個新的事務,以確保同一個流程實例中的每個“異步job”都是絕對排他的、非同時執行的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章