OFBIZ流程操作使用過程
1 流程定義
一般用JaWe進行流程定義。根據尋找的資料,使用JaWe產生的xpdl檔案和workflow engine有少許不相容的情況,摘抄總結如下:
1)JAWE產生DataFields會和ofbiz Implementation Tool裡的ActualParameter衝突, 導致runtime data不能正常的擷取, 如果你的Tool需要ActualParameter的話,直接輸入即可,不需要把它定義成為workflow relevant data.
2)在Activity的TransitionRef部分, 由於FK的緣故,不能import到db
修改方法1: 注釋掉 XpdlReader readTransitionRestriction 最後讀取readTransitionRefs的代碼(由於ofbiz workflow engine沒有用到TransitionRefs, 故可以直接注釋掉)
修改方法2:修改entity定義檔案: WorkflowTransitionRef with WorkflowTransition's relationship type to "one-nofk"
3)在Activity的TransitionRestriction部分,如果Join/Split transition只有唯一情況,JAWE是不會組建定義Join/Split Type的
修改方法1:手工加上:<Join Type="XOR"/> <Split Type="XOR"/>
修改方法2:修改 XpdlReader 代碼,使其預設為XOR
2流程裝載
ofbiz提供頁面來實現流程裝載,如下:
圖 流程裝載
3 流程使用
ofbiz沒有提供自己的工具來說明流程的使用方法,要求開發人員找到相應的api來調用;另外,ofbiz的orderMgr模組,使用了工作流程引擎,但不是純工作流程引擎的應用,它包含了自己的獨立的複雜的商務邏輯。
大致的流程使用步驟如下:
1)啟動流程
首先,擷取實體引擎和服務引擎,一般從頁面的request中擷取;然後,調用實體引擎建立工作流程記錄;最後,調用服務引擎啟動流程。
2)擷取工作列表
首先,用EntityExpr類構造約束List;然後,將約束List作為參數傳遞給實體引擎尋找合格記錄;對於尋找本部門的或本角色的或指定到本人的工作列表都採用同樣的方法。
3)執行活動
首先,調用工作流程引擎判斷任務是否由該使用者操作或是否已經被其他使用者accept;其次,調用WorkflowClient類來擷取流程執行個體號,定位流程;然後,調用實體引擎擷取該流程執行個體號的資料;最後,按流程定義調用工作流程引擎
擷取活動資訊並執行相應的活動。