引言
基於WebService,採用SOA(Service Oriented Architecture)架構建立企業業務系統解決方案時,分析明晰企業的商務程序並以適合粒度定義出Web服務。當涉及到跨部門、端對端的商務程序動態集成時,需要把這些Web服務按順序組合以實現商務程序整合的方法和技術。故在SOA架構下,以BPEL作為商務程序執行語言,對企業部門之間商務程序動態集成的實現方法進行研究。
1 BPEL和商務程序編排
該研究採用IBM關於SOA的方法論、行業解決方案和相關的技術產品,所以關於BPEL的研究符合IBM關於SOA的核心構件標準SCA/SDO(Service Component Architecture/Service Data Object)。SDO是一種API(API),可簡化和統一對異構資料的訪問;SCA是一種全新的、跟語言無關的編程模型,提供了一種統一的調用方式,從而使得客戶可以把不同的組件類型通過一種標準的介面來封裝和調用。結合SDO的資料模型,這種服務元件的編程模型可簡化程式員編程,提高應用的靈活性。該sCA/sDo標準的分層與關係如圖1。
其中Business Processes(BPC)是滿足SCA規範的組件,SCA通過統一的組件規範實現服務元件層,對內可以是JavaBeans,BPEL—Processes等。 雖然在SCA/SDO標準中,BPC只是其中的一個SCA組件,但是在構建商務程序時不可避免的要和其它SCA組件(如:Human Tasks、Business Rules等)互動,所以不能孤立地研究BPC組件。
標準的BPEL規範是從傳輸、訊息、服務發現、QOS(Quality Of Service)和商務程序編排(Business Process Choreography)等方面給出定義,主要關注商務程序編排。在進行商務程序的編排和實現時,首先需要對商務程序進行建模,真實還原當前的業務情境(稱為as.is);然後根據營運目標,實現商務程序的最佳化(稱為to-be),再根據實際啟動並執行結果,進行下一輪的最佳化。這是一個迴圈迭代的過程,符合SOA的生命週期:建模(model)一裝配(assemble)一部署(deploy)一管理(manager),而商務程序編排完全貫穿於整個SOA生命週期。
定義BPC組件時,組件介面和引用必須遵循SCA組件規範,可定義Java Interface/Reference或Interface/Reference,而組件的具體實現為Business Processes如圖2。
根據BPEL規範,實現BPC組件時,流程的每一步稱為一個活動,存在以下基本活動:調用某個Web服務的操作(invoke);等待一條訊息來響應由某人從外部進行調用服務介面的操作(receive);產生輸入/輸出操作的響應(reply);等待一段時間(wait);把資料從一個地方複製到另一個地方(assign);指明某個地方出錯(throw);終止整個服務執行個體(terminate);或者什麼也不做(empty)。通過使用BPEL語言所提供的結構化活動,可將這些原語活動組合成更複雜的演算法。這些結構化活動提供的能力包括:定義一組步驟有序的序列(sequence);使用“case.statement”方法來產生分支(switch);定義一個迴圈(while);執行幾條可選路徑中的一條(pick);指明一組應該並存執行的步驟(flow);在並存執行的一組活動中,可通過使用連結(1ink)來指明執行順序的約束,並允許遞迴地組合結構化活動,以表達任意複雜的演算法,這些演算法表示了服務的實現。
2 服務裝配
使用IBM Websphere Integration Development6.0.1(簡稱WID)完成SOA Life—style中的服務裝配(Service Assemble)。上述的基本活動、結構化活動在WID中得到了一定程度的封裝和細節屏蔽,通過WID提供的圖形化編輯器完成BPEL流程的編排,如圖3。