周小琳
(1中國移動通信集團(tuán)遼寧有限公司沈陽分公司,遼寧沈陽 110011;2中國聯(lián)合網(wǎng)絡(luò)通信有限公司沈陽市分公司,遼寧 沈陽 110002;3中國郵政集團(tuán)總公司遼寧省分公司信息技術(shù)局,遼寧 沈陽 110013)
隨著移動通信業(yè)務(wù)的發(fā)展,增值業(yè)務(wù)市場也呈快速發(fā)展的趨勢,增值市場規(guī)模逐年增長。用戶對業(yè)務(wù)的需求也呈現(xiàn)出多樣化的趨勢,移動通信運(yùn)營商在激烈的市場競爭中,利用現(xiàn)有的業(yè)務(wù)平臺及資源,靈活組合,適時(shí)推出用戶所需的各種新業(yè)務(wù),將會極大地增加運(yùn)營商的市場競爭能力。然而傳統(tǒng)的服務(wù)實(shí)現(xiàn)使用不同的語言和技術(shù),并且運(yùn)行于不同平臺和操作系統(tǒng)之上。因此,各個(gè)系統(tǒng)相互孤立,難以進(jìn)行通信,并且其內(nèi)部信息處理手段的差異較大,數(shù)據(jù)存在不一致性,彼此之間難以進(jìn)行信息、數(shù)據(jù)的交換和共享?,F(xiàn)在,隨著SOA(service-oriented architecture,面向服務(wù)的架構(gòu))技術(shù)的出現(xiàn)和快速發(fā)展,可以很好地解決該問題。SOA架構(gòu)以服務(wù)為基本單元,通過把不同應(yīng)用封裝成統(tǒng)一的Web服務(wù)來屏蔽系統(tǒng)間的差異性;以服務(wù)作為構(gòu)建時(shí)的基礎(chǔ)組件,通過服務(wù)組合技術(shù)對散列的組件進(jìn)行組合,從而解決服務(wù)間數(shù)據(jù)的交互和共享,以松耦合的方式實(shí)現(xiàn)跨機(jī)構(gòu)的協(xié)作業(yè)務(wù)流程;通過服務(wù)組合技術(shù)對業(yè)務(wù)流程的全過程進(jìn)行監(jiān)管,實(shí)現(xiàn)流程的簡化和優(yōu)化。
SOA是以服務(wù)為基礎(chǔ)的組件模型。服務(wù)作為封裝特定功能的實(shí)體,以業(yè)務(wù)為其核心理念,通過定義良好的接口的契約彼此間進(jìn)行聯(lián)系。同時(shí),服務(wù)是中立的,可以獨(dú)立于特定的技術(shù)和平臺。服務(wù)具有可重用性,一個(gè)定義良好的服務(wù)可以在多個(gè)業(yè)務(wù)流程的組裝中使用。也正是因?yàn)镾OA中所有應(yīng)用都是服務(wù),基于SOA的系統(tǒng)平臺可以采用服務(wù)組合技術(shù)將單獨(dú)的、中立的、封裝完善的服務(wù)組合成新的、復(fù)雜的服務(wù),從而實(shí)現(xiàn)數(shù)據(jù)共享。又因?yàn)榉?wù)之間的交互是通過標(biāo)準(zhǔn)定義的接口進(jìn)行的,基于SOA的系統(tǒng)平臺可以屏蔽由于平臺、操作系統(tǒng)以及實(shí)現(xiàn)語言不同而造成的差異。
基于SOA的IT架構(gòu)以一系列執(zhí)行業(yè)務(wù)功能的服務(wù)為基礎(chǔ),通過服務(wù)的形式重用企業(yè)現(xiàn)有資產(chǎn)。同時(shí),通過服務(wù)的不同組合不僅實(shí)現(xiàn)異構(gòu)環(huán)境中的消息、數(shù)據(jù)的交互和共享,還可以使業(yè)務(wù)流程變得更加靈活,從而迅捷有效地滿足現(xiàn)實(shí)生活中快速變化的業(yè)務(wù)需求??梢?,要使搭建的架構(gòu)靈活多變,就要考慮服務(wù)構(gòu)建、數(shù)據(jù)模型和服務(wù)編排這三方面采用何種技術(shù)來實(shí)現(xiàn)。如圖1所示為SOA關(guān)鍵技術(shù)及其關(guān)系。
本文重點(diǎn)研究服務(wù)組合技術(shù)。SOA架構(gòu)中的服務(wù)組合編排模型不僅要滿足異構(gòu)、松耦合的要求,還要是敏捷的,因此與Web服務(wù)關(guān)聯(lián)的服務(wù)組合技術(shù)BPEL(Business Process Execution Language)以其基于服務(wù)、松耦合、高度敏捷等特點(diǎn)成為構(gòu)建SOA架構(gòu)的首選服務(wù)編排模型。BPEL的描述文件是WSDL,不僅支持Web服務(wù),也可以更好地支持SCA定義的服務(wù)。同時(shí),BPEL規(guī)范可以把其定義的流程本身暴露為Web服務(wù)對外提供服務(wù)。同時(shí)由XML Schema定義的BPEL規(guī)范可以直接把SDO定義引入到自己的變量到中,作為其變量進(jìn)行操作??傊?,BPEL是SOA服務(wù)編排的核心技術(shù),同時(shí)也是具體業(yè)務(wù)流程的體現(xiàn)。
圖1 SOA關(guān)鍵技術(shù)及其關(guān)系
圖2 BPEL規(guī)范與相關(guān)技術(shù)標(biāo)準(zhǔn)的關(guān)系示意圖
圖3 BPEL流程規(guī)范分類示意圖
BPEL技術(shù)規(guī)范即業(yè)務(wù)流程執(zhí)行語言規(guī)范,是以Web服務(wù)、XML為基礎(chǔ)的諸多規(guī)范上提出的一種新型的業(yè)務(wù)流程的定義語言規(guī)范。它的靈感來源于IBM的WSFL以及微軟的XLANG。其中,WSFL是一種以圖為基礎(chǔ)的流程模型,其特點(diǎn)是靈活、直觀;XLANG即工作流程描述語言,它以過程代數(shù)為基礎(chǔ),具有結(jié)構(gòu)化構(gòu)造的優(yōu)勢。BPEL作為兩者結(jié)合的產(chǎn)物,以用Web服務(wù)接口標(biāo)準(zhǔn)描述的伙伴和業(yè)務(wù)流程的交互為基礎(chǔ),定義了描述業(yè)務(wù)流程的語法規(guī)范,主要用于業(yè)務(wù)流程建模。作為一個(gè)Web服務(wù)組合標(biāo)準(zhǔn),BPEL可以直接描述一組Web服務(wù)的操作順序,以及服務(wù)間交互時(shí)共享的數(shù)據(jù),還可以處理Web服務(wù)使用過程中發(fā)生的異常;作為執(zhí)行流程的建模語言,BPEL可以組合現(xiàn)有的服務(wù),從而生成一個(gè)新的更為復(fù)雜的Web服務(wù)。
BPEL是一個(gè)基于開放標(biāo)準(zhǔn)的技術(shù)規(guī)范,這些技術(shù)規(guī)范為BPEL流程的執(zhí)行提供環(huán)境。圖2展示了BPEL規(guī)范與其相關(guān)技術(shù)標(biāo)準(zhǔn)的關(guān)系。
BPEL規(guī)范描述的是各成員服務(wù)何時(shí)、為何、以何種順序被調(diào)用,還為服務(wù)提供錯(cuò)誤處理和補(bǔ)償機(jī)制。因此,基于BPEL規(guī)范的流程定義總體可分為三個(gè)部分,這三部分之間的關(guān)系如圖3所示。
基于BPEL的服務(wù)組合方法可歸納為兩個(gè)部分,一是為業(yè)務(wù)流程中涉及的每個(gè)活動設(shè)定一個(gè)抽象服務(wù),形成抽象服務(wù)流程定義;二是執(zhí)行前通過中間環(huán)節(jié)進(jìn)行服務(wù)匹配和綁定,將每個(gè)抽象服務(wù)替換成一個(gè)實(shí)體服務(wù),將抽象服務(wù)轉(zhuǎn)換成實(shí)際的符合BPEL規(guī)范的業(yè)務(wù)流程文檔,此部分是整個(gè)方法實(shí)現(xiàn)的核心。
由于BPEL業(yè)務(wù)流程通過WSDL技術(shù)規(guī)范對其與成員服務(wù)之間交互的接口進(jìn)行描述,相關(guān)活動的實(shí)現(xiàn)要發(fā)布成WSDL文件描述的服務(wù)。這些生成的WSDL文件即為抽象服務(wù)流程定義。在本文中Web服務(wù)是基于Axis2框架搭載Tomcat服務(wù)器發(fā)布實(shí)現(xiàn)的,把Axis2與平臺開發(fā)環(huán)境進(jìn)行整合,整合后開發(fā)好的類直接在Tomcat服務(wù)器上發(fā)布即可通過在瀏覽器中鍵入網(wǎng)址獲得相應(yīng)的WSDL描述。
在BPEL流程中,流程與成員服務(wù)之間的交互是通過伙伴鏈接調(diào)用WSDL描述的服務(wù)接口實(shí)現(xiàn)的,因此,服務(wù)接口的調(diào)用是對伙伴鏈接的定義。在實(shí)際執(zhí)行過程中,難免會發(fā)生錯(cuò)誤或者異常,需要對其進(jìn)行處理以及進(jìn)行一些必要的補(bǔ)償操作。使用流程處理器可以提高服務(wù)質(zhì)量,增強(qiáng)BPEL流程的健壯性。在業(yè)務(wù)流程中,可能發(fā)生人工審批和業(yè)務(wù)取消同時(shí)操作并生效的錯(cuò)誤,此時(shí)需要添加錯(cuò)誤處理器捕獲錯(cuò)誤和補(bǔ)償處理器添加補(bǔ)償措施。
[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工作流引擎的研究與實(shí)現(xiàn)[D].北京:北京工業(yè)大學(xué),2009.