第9部分: 面向靈活性和可配置性的商務程序並行現用模式
這個文章系列主要介紹了組合商務服務 (CBS) 的開發,本文是其中的第 9 部分。可以通 過組合現有的 SOA 服務得到 CBS,或者作為一個新的服務建立 CBS,它們的目的都是提供可 配置性。本文介紹了用於為 CBS 設計商務程序執行語言 (BPEL) 流程的並行現用模式。本文 提供了一個銀行用例樣本,該用例實現了這種模式,以便在從 CBS 構建的簡單應用程式中創 建靈活的、可配置的商務程序。本文描述了一個利用 BPEL 並行活動來實現實際用例的解決 方案。可以執行個體化多個並發流程,並發流程的數目是不確定的,可以由業務對象在運行時指 定。本文首先簡單介紹了並行現用模式,然後提供了一個貸款請求用例,通過這個用例您將 瞭解如何使用並行現用模式以實現靈活性和可配置性。
回顧貸款請求用例
您可以查看本系列中的其他文章以獲得到目前為止有關這個用例情境的詳細資料。在這個 情境中,貸款請求用例是在某個銀行客戶使用該銀行的 入口網站申請貸款產品時觸發的。來 自銀行的、基於 Web 的使用者介面的貸款應用程式的提交操作,將調用貸款審批 BPEL 流程。 這個流程將從該客戶的設定檔中檢索他的社會保險號,並使用這個編號來調用一個信用檢 查 BPEL 流程,從而實現了並行現用模式。信用檢查 BPEL 從多個代理處獲得一份信用評分 的列表,並將該列表返回給貸款審批次程序。根據信用檢查 BPEL 流程所返回的列表中的實際 信用評分,可以自動地拒絕或批准這個貸款請求,或者將其轉寄以便進行人工審核。根據信 用檢查 BPEL 流程所返回的列表計算平均信用評分,通過一組基於這個評分的商務規則作出 相應的決策。
當一個貸款請求需要人工審核時,貸款審批次程序將調用另一個 BPEL 子流程,其中包括人 工任務的使用。將信用評分列錶轉發到這個 BPEL 子流程。該銀行將檢查這個信用評分列表 以及與申請者相關的附加資訊,並決定是否應該批准這個貸款請求。
使用並行現用模式
在開始設計 BPEL 流程時,您可以使用任何模式,如同步模式 、基於狀態模式、或者並行現用模式的不同類型(請參見參考資料)。這個部分介紹了一種 並行現用模式,這種模式在進行 BPEL 設計的時候不需要知道並行活動的數目。對於直到運 行時才能確定要調用的執行個體數目的情況,這種模式可以並發地調用多個 BPEL 流程執行個體。這 種模式還可以確保在工作流程結束之前完成所有的流程執行個體。即將推出的 WS-BPEL 2.0 規範中 計劃包含這種並行現用模式,其中使用了一個新的 BPEL forEach 活動,以及子流程並行調 用的一個關聯標誌。本文描述了如何遵循並行現用模式並使用現有的 WebSphere® Integration Developer 6.0 工具來實現其中每項活動的功能。圖 1 闡釋了這個模式:
圖 1. 並行現用模式
名為 MultiInvokeRun 的父 BPEL 流程(如圖 1 中的上半部分所示)使用一個名為 InvokeAll的迴圈元素(如圖 1 中的左上部分所示)進行重複的、單向的(非同步)調用。第 二個迴圈稱為 WaitReplies(如圖 1 中的右上部分所示),它並行地運行,並且在子流程( 如圖 1 的下半部分中描述的 MultiInvokeChild 流程)完成時用於接收通知。在第一次調用 之前,對於每次迴圈,都會在 MultiInvokeRun 流程的 SetUpCounters 活動中初始化一個計 數器。可以在運行時通過這個計數器來協助指定子流程的數目。直到接收到來自所有子流程 的通知,WaitReplies 迴圈才會結束。當 WaitReplies 迴圈結束時,父 BPEL 流程 MultiInvokeRun 也就完成了。