jBPM 4 4 fork和join的乙個例子

2021-05-24 09:26:32 字數 915 閱讀 9169

現在,有這樣乙個需求:

1、真正開始執行實際業務之前,因為要和多方進行互動(遠端通訊),需要對對外部各方進行一系列的鑑權;

2、對外部各方之間進行鑑權,存在一定的先後順序;

3、如果某乙個鑑權步驟失敗,整個流程終止;

4、全部鑑權完畢後,需要收集一些資料(組裝報文),為後續的業務呼叫提供組裝報文的資料。

通過jbpm的fork和join可以很好地實現上述的需求,我們定義的流程,如下圖所示:

上述流程對應的流程定義檔案multiple-fork-join-process.jpdl.xml內容如下所示:

上述流程簡要描述如下:

2、校驗提供商品的商戶(checkmer),校驗提供支付的銀行(也就是支付商,checkbank),校驗提供的商品(checkgoods),這幾項是可以並行進行的(不過,貌似jbpm啟動流程執行fork的時候,只能單執行緒執行,而無法多執行緒並行校驗);

3、校驗商戶支付商關係(checkmerbank),校驗商品支付商關係(checkgoodsbank)。由於商戶支付商關係鑑權依賴於商戶和支付商的校驗,商品支付商關係鑑權依賴於商品和支付商的校驗,所以在checkbank結點進行了fork,然後分別和checkmer、checkgoods做了乙個join操作;

4、校驗提供商品的商戶(checkmer)與校驗提供支付的銀行(checkbank)都完成後,需要將在發起遠端支付交易的請求中資料都匯集,join後,在aggregatedata中進行處理(例如內部報文到內部報文的轉換操作)。

對於每個結點(這裡只上述流程定義中的custom對應的處理類)要進行的處理,完全可以自己模擬,例如,我的com.umpay.ubp.jbpm.handler.printinfohandler的繼承關係如下所示:

在abstracthandler中,對業務流程處理進行了抽象。

上述流程對應的測試用例如下所示:

explicit 在建構函式中使用和乙個例子

關鍵字explicit,可以阻止不應該允許的經過轉換建構函式進行的隱式轉換的發生。宣告為explicit的建構函式不能在隱式轉換中使用。c 中,乙個引數的建構函式 或者除了第乙個引數外其餘引數都有預設值的多參建構函式 承擔了兩個角色。1 是個構造器 2 是個預設且隱含的型別轉換操作符。所以,有時候在...

sql關於游標和游標 儲存過程結合的乙個例子

關於游標的用法 定義 transact sql 伺服器游標的特性,例如游標的滾動行為和用於生成游標對其進行操作的結果集的查詢。declare cursor 接受基於 sql 92 標準的語法和使用一組 transact sql 擴充套件的語法。fetch status 返回被 fetch 語句執行的...

fabric使用例項 發布web包的乙個例子

1 usr bin env python2 coding utf 8 3 新增中文注釋的編碼 4 fabfile.py 5from fabric.api import 67 env.user root 8 env.hosts 192.168.1.100 9 遠端伺服器的密碼,這個建議不要填寫,寧願在...