周小琳
(1中國移動通信集團遼寧有限公司沈陽分公司,遼寧沈陽 110011;2中國聯合網絡通信有限公司沈陽市分公司,遼寧 沈陽 110002;3中國郵政集團總公司遼寧省分公司信息技術局,遼寧 沈陽 110013)
隨著移動通信業務的發展,增值業務市場也呈快速發展的趨勢,增值市場規模逐年增長。用戶對業務的需求也呈現出多樣化的趨勢,移動通信運營商在激烈的市場競爭中,利用現有的業務平臺及資源,靈活組合,適時推出用戶所需的各種新業務,將會極大地增加運營商的市場競爭能力。然而傳統的服務實現使用不同的語言和技術,并且運行于不同平臺和操作系統之上。因此,各個系統相互孤立,難以進行通信,并且其內部信息處理手段的差異較大,數據存在不一致性,彼此之間難以進行信息、數據的交換和共享。現在,隨著SOA(service-oriented architecture,面向服務的架構)技術的出現和快速發展,可以很好地解決該問題。SOA架構以服務為基本單元,通過把不同應用封裝成統一的Web服務來屏蔽系統間的差異性;以服務作為構建時的基礎組件,通過服務組合技術對散列的組件進行組合,從而解決服務間數據的交互和共享,以松耦合的方式實現跨機構的協作業務流程;通過服務組合技術對業務流程的全過程進行監管,實現流程的簡化和優化。
SOA是以服務為基礎的組件模型。服務作為封裝特定功能的實體,以業務為其核心理念,通過定義良好的接口的契約彼此間進行聯系。同時,服務是中立的,可以獨立于特定的技術和平臺。服務具有可重用性,一個定義良好的服務可以在多個業務流程的組裝中使用。也正是因為SOA中所有應用都是服務,基于SOA的系統平臺可以采用服務組合技術將單獨的、中立的、封裝完善的服務組合成新的、復雜的服務,從而實現數據共享。又因為服務之間的交互是通過標準定義的接口進行的,基于SOA的系統平臺可以屏蔽由于平臺、操作系統以及實現語言不同而造成的差異。
基于SOA的IT架構以一系列執行業務功能的服務為基礎,通過服務的形式重用企業現有資產。同時,通過服務的不同組合不僅實現異構環境中的消息、數據的交互和共享,還可以使業務流程變得更加靈活,從而迅捷有效地滿足現實生活中快速變化的業務需求。可見,要使搭建的架構靈活多變,就要考慮服務構建、數據模型和服務編排這三方面采用何種技術來實現。如圖1所示為SOA關鍵技術及其關系。
本文重點研究服務組合技術。SOA架構中的服務組合編排模型不僅要滿足異構、松耦合的要求,還要是敏捷的,因此與Web服務關聯的服務組合技術BPEL(Business Process Execution Language)以其基于服務、松耦合、高度敏捷等特點成為構建SOA架構的首選服務編排模型。BPEL的描述文件是WSDL,不僅支持Web服務,也可以更好地支持SCA定義的服務。同時,BPEL規范可以把其定義的流程本身暴露為Web服務對外提供服務。同時由XML Schema定義的BPEL規范可以直接把SDO定義引入到自己的變量到中,作為其變量進行操作。總之,BPEL是SOA服務編排的核心技術,同時也是具體業務流程的體現。

圖1 SOA關鍵技術及其關系

圖2 BPEL規范與相關技術標準的關系示意圖

圖3 BPEL流程規范分類示意圖
BPEL技術規范即業務流程執行語言規范,是以Web服務、XML為基礎的諸多規范上提出的一種新型的業務流程的定義語言規范。它的靈感來源于IBM的WSFL以及微軟的XLANG。其中,WSFL是一種以圖為基礎的流程模型,其特點是靈活、直觀;XLANG即工作流程描述語言,它以過程代數為基礎,具有結構化構造的優勢。BPEL作為兩者結合的產物,以用Web服務接口標準描述的伙伴和業務流程的交互為基礎,定義了描述業務流程的語法規范,主要用于業務流程建模。作為一個Web服務組合標準,BPEL可以直接描述一組Web服務的操作順序,以及服務間交互時共享的數據,還可以處理Web服務使用過程中發生的異常;作為執行流程的建模語言,BPEL可以組合現有的服務,從而生成一個新的更為復雜的Web服務。
BPEL是一個基于開放標準的技術規范,這些技術規范為BPEL流程的執行提供環境。圖2展示了BPEL規范與其相關技術標準的關系。
BPEL規范描述的是各成員服務何時、為何、以何種順序被調用,還為服務提供錯誤處理和補償機制。因此,基于BPEL規范的流程定義總體可分為三個部分,這三部分之間的關系如圖3所示。
基于BPEL的服務組合方法可歸納為兩個部分,一是為業務流程中涉及的每個活動設定一個抽象服務,形成抽象服務流程定義;二是執行前通過中間環節進行服務匹配和綁定,將每個抽象服務替換成一個實體服務,將抽象服務轉換成實際的符合BPEL規范的業務流程文檔,此部分是整個方法實現的核心。
由于BPEL業務流程通過WSDL技術規范對其與成員服務之間交互的接口進行描述,相關活動的實現要發布成WSDL文件描述的服務。這些生成的WSDL文件即為抽象服務流程定義。在本文中Web服務是基于Axis2框架搭載Tomcat服務器發布實現的,把Axis2與平臺開發環境進行整合,整合后開發好的類直接在Tomcat服務器上發布即可通過在瀏覽器中鍵入網址獲得相應的WSDL描述。
在BPEL流程中,流程與成員服務之間的交互是通過伙伴鏈接調用WSDL描述的服務接口實現的,因此,服務接口的調用是對伙伴鏈接的定義。在實際執行過程中,難免會發生錯誤或者異常,需要對其進行處理以及進行一些必要的補償操作。使用流程處理器可以提高服務質量,增強BPEL流程的健壯性。在業務流程中,可能發生人工審批和業務取消同時操作并生效的錯誤,此時需要添加錯誤處理器捕獲錯誤和補償處理器添加補償措施。
[1]Web Service and Service-Oriented Architectures[EB/OL].http://www.Service-architecture.
[2]Loosely Coupled-connecting with Web service[EB/OL].http://looselycoupled.
[3]王曉艷.基于SOA工作流引擎的研究與實現[D].北京:北京工業大學,2009.