(東北財(cái)經(jīng)大學(xué) 信息工程學(xué)院,遼寧 大連 116025)
摘要:
提出了面向服務(wù)的企業(yè)應(yīng)用與商務(wù)伙伴進(jìn)行業(yè)務(wù)集成需要將基于企業(yè)服務(wù)總線的資源集成基礎(chǔ)設(shè)施和業(yè)務(wù)流程集成方法結(jié)合起來,給出了一個(gè)通用的企業(yè)服務(wù)總線的參考模型,并對(duì)三種業(yè)務(wù)流程集成方法進(jìn)行了分析和比較。通過一個(gè)基于Weblogic面向服務(wù)開發(fā)平臺(tái)構(gòu)建的企業(yè)門戶應(yīng)用中業(yè)務(wù)集成的實(shí)例,驗(yàn)證了基于企業(yè)服務(wù)總線與ebXML、RosettaNet或BPEL交互的可行性和優(yōu)越性。
關(guān)鍵詞:使用電子商務(wù)擴(kuò)展標(biāo)記語(yǔ)言; 絡(luò)世達(dá)網(wǎng); 業(yè)務(wù)流程執(zhí)行語(yǔ)言; 業(yè)務(wù)集成; 企業(yè)服務(wù)總線; 面向服務(wù)
中圖分類號(hào):TP311.5文獻(xiàn)標(biāo)志碼:A
文章編號(hào):10013695(2009)03098403
Research and realization on business integrationwith partners of serviceoriented enterprise applications
GAO Ming
(School of Information Engineering, Dongbei University of Finance Economics, Dalian Liaoning 116025, China)
Abstract:
To support business integration with partners of serviceoriented enterprise applications, this paper combined enterprise service bus (ESB) based resource integration infrastructure and business process management methods. It gave a generalpurpose reference model of ESB along with the reviews of three business process integration protocols. The example enterprise portal application developed by Weblogic serviceoriented platform demonstrates that business process integration based on ESB and ebXML, RosettaNet or BPEL is feasible and superior to legacy solutions.
Key words:ebXML; RosettaNet; business process execution language(BPEL); business integration; ESB; serviceoriented
0引言
面向服務(wù)架構(gòu)(serviceoriented architecture, SOA)是一種面向企業(yè)級(jí)服務(wù)的系統(tǒng)架構(gòu)。其系統(tǒng)中具體應(yīng)用程序的功能是由一些松散耦合且具有統(tǒng)一接口定義方式的組件(服務(wù))組合構(gòu)建起來的,并提供一個(gè)抽象的服務(wù)層(接口),對(duì)服務(wù)使用者隱藏了服務(wù)的實(shí)現(xiàn)細(xì)節(jié),具有可復(fù)用、可擴(kuò)展、靈活、位置透明性以及協(xié)議無(wú)關(guān)性等諸多優(yōu)勢(shì)[1]。
企業(yè)應(yīng)用與商務(wù)伙伴的軟件系統(tǒng)之間的業(yè)務(wù)集成可能很簡(jiǎn)單,也可能很復(fù)雜,這取決于組件與外部信息實(shí)體之間協(xié)作中需要進(jìn)行的業(yè)務(wù)活動(dòng)。在傳統(tǒng)的JavaEE應(yīng)用中,一般直接采用與架構(gòu)緊耦合或特定于某種技術(shù)堆棧的遠(yuǎn)程過程調(diào)用(RPC)及其擴(kuò)展,如JCA、EJB和CORBA等技術(shù);或者基于某種消息中間件產(chǎn)品,如IBM MQ、Sonic MQ等[2]。而在SOA架構(gòu)下,商務(wù)伙伴間業(yè)務(wù)集成趨向于構(gòu)建在基于多協(xié)議、通用、事件驅(qū)動(dòng)架構(gòu)的資源集成基礎(chǔ)設(shè)施之上,即企業(yè)服務(wù)總線(enterprise service bus, ESB)[3]。其中,Web服務(wù)成為主流的交互手段;而業(yè)務(wù)操作趨向于通過各種業(yè)務(wù)流程建模方法[4,5],從較高的層次和粒度構(gòu)建滿足業(yè)務(wù)需要的流程和執(zhí)行環(huán)境。
1資源集成基礎(chǔ)設(shè)施——ESB
ESB是一種體系結(jié)構(gòu)模式,支持通信各方間的服務(wù)交互和管理,充當(dāng)SOA中服務(wù)提供者與請(qǐng)求者之間連接服務(wù)的中間層,因此服務(wù)彼此不直接交互。它是一個(gè)靈活的連接框架,可促進(jìn)可靠而安全的系統(tǒng)集成,并同時(shí)減少應(yīng)用程序接口的數(shù)量、大小和復(fù)雜度[3]。ESB的參考模型如圖1所示。
a)ESB能夠支持企業(yè)的全部連接性需求,支持多種消息交換協(xié)議,如Web服務(wù)、JMS、商業(yè)消息中間件特有格式、FTP、SMTP等;而且能夠提供動(dòng)態(tài)可配置的路由和消息格式的透明轉(zhuǎn)換,如將一個(gè)基于Web服務(wù)接口的調(diào)用透明轉(zhuǎn)換成SMTP,以使用現(xiàn)有的郵件服務(wù)器上的內(nèi)容。
b)ESB可以支持不同類型的服務(wù)交互。單向消息及請(qǐng)求/響應(yīng)、異步調(diào)用及同步調(diào)用、發(fā)布/訂閱模型以及基于事件驅(qū)動(dòng)架構(gòu)(event driven architecture, EDA)的復(fù)雜事件處理;動(dòng)態(tài)發(fā)現(xiàn)服務(wù),決定所需服務(wù)的版本,根據(jù)服務(wù)質(zhì)量(QoS)或服務(wù)級(jí)別合同(service level agreement, SLA)確保關(guān)鍵服務(wù)的可用性和性能需求。
c)ESB應(yīng)該提供足夠強(qiáng)大和易于集成的安全框架、消息日志和系統(tǒng)監(jiān)控手段,提高系統(tǒng)的可管理性。
2業(yè)務(wù)流程集成
2.1ebXML
ebXML(electronic business using extensible markup language)是由聯(lián)合國(guó)貿(mào)易促進(jìn)與電子商務(wù)中心(UN/CEFACT)和結(jié)構(gòu)化信息標(biāo)準(zhǔn)推動(dòng)組織(OASIS)共同推動(dòng)的一項(xiàng)電子商務(wù)架構(gòu)標(biāo)準(zhǔn)[6]。它提出一套完整的技術(shù)規(guī)范,制定電子商務(wù)中各種功能標(biāo)準(zhǔn),包括商業(yè)流程的建立、信息的發(fā)掘、信息的包裝與傳輸?shù)龋淠康氖且谷蚱髽I(yè),無(wú)論其規(guī)模大小,都可以透過因特網(wǎng)進(jìn)行電子商務(wù)交易。
ebXML運(yùn)作流程可分為design time和run time兩個(gè)階段。在design time的階段,公司可將商業(yè)流程文件(business process)與協(xié)同作業(yè)協(xié)議(collaborationprotocol profile, CPP)注冊(cè)于注冊(cè)機(jī)制與儲(chǔ)存庫(kù)系統(tǒng)中。交易雙方可根據(jù)注冊(cè)機(jī)制中的CPP協(xié)商產(chǎn)生共同遵守的協(xié)同作業(yè)協(xié)議(collaboration protocol agreement, CPA)作為交易的準(zhǔn)則。之后,雙方即可進(jìn)入run time的階段,建立各自的商業(yè)接口并進(jìn)行信息的交換。
2.2RosettaNet
RosettaNet是用于高科技行業(yè)及制造行業(yè)的公認(rèn)的供應(yīng)鏈集成標(biāo)準(zhǔn)和解決方案,它確立了一種通用語(yǔ)言,即電子化業(yè)務(wù)信息共享標(biāo)準(zhǔn)程序,要求與客戶及合作伙伴間進(jìn)行標(biāo)準(zhǔn)化業(yè)務(wù)運(yùn)作[7]。
RosettaNet是一種開放的流程和消息框架,由三個(gè)標(biāo)準(zhǔn)組件構(gòu)成,即合作伙伴接口流程(PIP)、字典(dictionary)、RosettaNet實(shí)現(xiàn)框架(RNIF)。企業(yè)能夠以PIP的形式獲取行業(yè)最優(yōu)方法來處理業(yè)務(wù)流程,大大縮短了啟動(dòng)業(yè)務(wù)合作伙伴對(duì)話的準(zhǔn)備時(shí)間。使用RosettaNet進(jìn)行電子商務(wù)對(duì)話的方式為:合作伙伴雙方都需要遵循RNIF,電子商務(wù)對(duì)話的準(zhǔn)備時(shí)期合作伙伴約定使用哪一種RosettaNet的PIP,然后它們就可以在Internet上通過交換安全的基于XML的消息來開始進(jìn)行對(duì)話。
2.3業(yè)務(wù)流程執(zhí)行語(yǔ)言
業(yè)務(wù)流程執(zhí)行語(yǔ)言(BPEL)是用于 Web服務(wù)編制、工作流和組合的 WSFL和 XLANG協(xié)議的合并[8]。WSDL消息和XML Schema類型定義提供了BPEL流程所需要的所有數(shù)據(jù)模型,而所有需要的外部資源和伙伴都被描述為WSDL服務(wù)。它的特點(diǎn)包括:
a) BPEL擁有傳統(tǒng)編程語(yǔ)言的一些基本特性,如賦值、循環(huán)、選擇、遠(yuǎn)程調(diào)用、錯(cuò)誤捕捉、錯(cuò)誤拋出操作等。
b) BPEL支持遠(yuǎn)程調(diào)用的同步和異步處理。它還提供了補(bǔ)償?shù)牟僮髦С郑@類似于DBMS中的ROLLBACK操作,只不過在數(shù)據(jù)庫(kù)系統(tǒng)中是微觀執(zhí)行的,而在BPEL中是宏觀執(zhí)行的。
c) BPEL實(shí)現(xiàn)的分布式系統(tǒng)具有更高的靈活性,各個(gè)節(jié)點(diǎn)機(jī)可以為異構(gòu)系統(tǒng),可以在運(yùn)行時(shí)動(dòng)態(tài)選擇節(jié)點(diǎn)機(jī)進(jìn)行處理;可以采用各種通信協(xié)議進(jìn)行通信,只要符合SOAP協(xié)議;它提供基于Internet的并行。
d) BPEL本身并不執(zhí)行任何業(yè)務(wù)操作,這些操作必須由相應(yīng)的Web服務(wù)來執(zhí)行。
2.4評(píng)價(jià)和比較
有的文獻(xiàn)將ebXML描述為橫向B2B標(biāo)準(zhǔn),意思是一組用于所有電子商務(wù)的規(guī)范,是通用的而不針對(duì)任何特殊部門或行業(yè)。RosettaNet是一個(gè)縱向標(biāo)準(zhǔn),它關(guān)注特定行業(yè)的需要(如電子部件制造商)以及供應(yīng)鏈自動(dòng)化和優(yōu)化的業(yè)務(wù)范疇。兩個(gè)項(xiàng)目創(chuàng)建各自標(biāo)準(zhǔn)中的規(guī)范存在著某些重復(fù)和交叉,讓這些標(biāo)準(zhǔn)彼此適應(yīng)的最佳方式是考慮把 RosettaNet(縱向)插入到 ebXML(橫向)中,如可以使用ebXML BPSS(business process specification schema)來描述 RosettaNet PIPs。
在RosettaNet中,電子商務(wù)對(duì)話是用UML活動(dòng)圖、文本表和XML文檔進(jìn)行定義的。而BPEL是從某一方(合作伙伴)的角度對(duì)電子商務(wù)對(duì)話進(jìn)行編碼,提供了一些RosettaNet不具有的高級(jí)功能:在對(duì)話中包含多個(gè)伙伴來合成大型電子商務(wù)情景;提供靈活的、健壯的、復(fù)雜的業(yè)務(wù)流程,可以根據(jù)特定的情況改變流程;能夠?qū)⒑蠖讼到y(tǒng)連接到業(yè)務(wù)流程中。RosettaNet和BPEL非常適于以強(qiáng)大的組合形式一起進(jìn)行使用,即用BPEL定義電子商務(wù)流程,用RosettaNet創(chuàng)建標(biāo)準(zhǔn)化的電子商務(wù)對(duì)話語(yǔ)義。
3基于Weblogic面向服務(wù)平臺(tái)的案例實(shí)現(xiàn)
此案例是基于Weblogic面向服務(wù)開發(fā)平臺(tái)和Workshop集成開發(fā)環(huán)境構(gòu)建的企業(yè)門戶應(yīng)用。該門戶具有四層結(jié)構(gòu),即可定制的門戶用戶界面、門戶服務(wù)層(Portlet應(yīng)用程序和基于Web服務(wù)的遠(yuǎn)程Portlet調(diào)用)、業(yè)務(wù)邏輯和組件層(EJB和POJO服務(wù))、基于ESB的企業(yè)資源集成層。
在本案例中創(chuàng)建的一個(gè)B2B流程如圖2所示。
外部業(yè)務(wù)集成的實(shí)現(xiàn)使用了Weblogic ESB和Weblogic Integration,它提供了大量用于商務(wù)伙伴集成和商務(wù)伙伴管理的組件,可以自動(dòng)化并管理與企業(yè)合作伙伴的關(guān)系,這樣就能夠沿著供應(yīng)鏈精簡(jiǎn)企業(yè)與用戶、廠商、分銷商及其他合作伙伴之間的業(yè)務(wù)流程,并最終獲得業(yè)務(wù)事務(wù)的一個(gè)自頂向下視圖。
該企業(yè)如果要獲取多個(gè)商務(wù)伙伴關(guān)于某產(chǎn)品的報(bào)價(jià)信息,則發(fā)送一個(gè)報(bào)價(jià)請(qǐng)求到ESB的消息代理,此類消息保存在預(yù)設(shè)的消息代理通道(channel)中,按照預(yù)定的時(shí)間和目標(biāo)進(jìn)行轉(zhuǎn)發(fā)到相應(yīng)的訂閱這些消息的私有請(qǐng)求者(如私有請(qǐng)求者A、B和C)。門戶中需要與廠商合作伙伴交互的私有請(qǐng)求者則通過對(duì)應(yīng)的公共請(qǐng)求者來實(shí)現(xiàn)消息服務(wù)。
不同的廠商合作伙伴(如廠商A、B、C)用他們特有的通信協(xié)議與本企業(yè)進(jìn)行業(yè)務(wù)消息的交互,門戶中定義了他們的私有廠商接口(如私有廠商A、B、C)來配合交互,在這個(gè)基礎(chǔ)上又定制了公共的廠商接口(如公共廠商A、B、C),來封裝一些共同的屬性。最重要的是將消息統(tǒng)一轉(zhuǎn)換成標(biāo)準(zhǔn)的商務(wù)消息交換格式(如ebXML或RosettaNet)。這里采用了ebXML。
最后,公共廠商和公共請(qǐng)求者直接進(jìn)行面對(duì)面的ebXML交互,完成B2B流程。
3.1商務(wù)伙伴的配置文件
Weblogic Integration的B2B組件需要維持一個(gè)商務(wù)伙伴配置文件,該配置文件包含與某個(gè)商務(wù)伙伴進(jìn)行交互時(shí)所要求的所有必需信息,包含通信信息(如協(xié)議綁定和安全設(shè)置)、基本信息(如電子郵件等聯(lián)系細(xì)節(jié)),以及任何可以被存儲(chǔ)在姓名/值屬性對(duì)中的定制信息。在詳細(xì)的商務(wù)伙伴配置文件的基礎(chǔ)上,可以操作配置文件數(shù)據(jù)的規(guī)則,從而以正確的方式將消息動(dòng)態(tài)路由給商務(wù)伙伴。
這里定義兩個(gè)商務(wù)伙伴(trading partner),test_ TradingPartner1和test_ TradingPartner2,分別用TP1id和TP2id來標(biāo)志。其中:TP1id代表公共請(qǐng)求者A;TP2id代表公共廠商A。
商務(wù)伙伴配置的詳細(xì)信息包括合作伙伴ID、合作伙伴類型、聯(lián)系信息、協(xié)議綁定(ebXML和RosettaNet)、數(shù)字證書等。圖3是公共廠商A綁定的ebXML2.0協(xié)議的詳細(xì)信息,商務(wù)伙伴終點(diǎn)(EndPoint URL)被配置為監(jiān)聽127.0.0.1:7001。
3.2商務(wù)伙伴之間交互ebXML消息
公共請(qǐng)求者A的流程定義如圖4所示。
公共請(qǐng)求者A需要與公共廠商A交換ebXML消息,這些消息使用XML Schema來定義,包括QuoteRequestDocument和QuoteResponseDocument,在發(fā)送消息之前和接收消息之后自動(dòng)進(jìn)行轉(zhuǎn)換。
QuoteRequestDocument的XML Schema定義:
〈xs:element name=\"QuoteRequest\"〉
〈xs:annotation〉
〈xs:documentation〉 Standard document to send a request for quote
〈/xs:annotation〉
〈xs:complexType〉
〈xs:sequence〉
〈xs:element name=\"ProductSKU\" type=\"xs:int\"/〉
〈xs:element name=\"QuantityRequested\" type=\"xs:nonNegativeInteger\"/〉
〈xs:element name=\"ExpectedArrivalDate\" type=\"xs:date\"/〉
〈xs:element name=\"ProductType\" type=\"xs:string\"/〉
〈xs:element name=\"RequesterID\" type=\"xs:string\"/〉
〈xs:element name=\"correlationID\" type=\"xs:string\"/〉
〈/xs:sequence〉
〈/xs:complexType〉
〈/xs:element〉
QuoteResponseDocument的XML Schema定義類似,此處省略。
流程中對(duì)ebXML事件的處理包括應(yīng)答、錯(cuò)誤、定時(shí)訪問商務(wù)伙伴配置文件,如圖5所示。
該流程接收一份報(bào)價(jià)請(qǐng)求文檔,通過ebXML協(xié)議將該文檔發(fā)送給公共廠商A,等待來自該商務(wù)伙伴的響應(yīng):公共廠商A中定義的getQuoteRequest流程接收公共請(qǐng)求者A發(fā)送的ebXML消息,調(diào)用私有廠商A,私有廠商A流程接收quoteRequestDocument消息,調(diào)用本地私有的業(yè)務(wù)方法,與廠商進(jìn)行特定消息類型的交互;然后把結(jié)果轉(zhuǎn)換成quoteResponseDocument返回給公共廠商A;最后結(jié)果返回為一個(gè)ebXML響應(yīng)。如果超時(shí)或者發(fā)生錯(cuò)誤,流程將會(huì)向?qū)?yīng)的商務(wù)伙伴發(fā)送一條錯(cuò)誤消息,然后結(jié)束流程實(shí)例。
在這個(gè)案例中,公共流程通過調(diào)用私有流程來間接執(zhí)行具體的方法,如果業(yè)務(wù)邏輯或文檔發(fā)生變化,該變化將發(fā)生在私有流程中而不會(huì)影響到公共流程,影響范圍小。
4結(jié)束語(yǔ)
本文討論了面向服務(wù)架構(gòu)下企業(yè)應(yīng)用如何與商務(wù)伙伴進(jìn)行商務(wù)集成的原則和方法,給出了一個(gè)通用的企業(yè)服務(wù)總線的參考模型,并對(duì)主要的幾種業(yè)務(wù)流程集成方法進(jìn)行了比較和分析;最后通過一個(gè)基于Weblogic面向服務(wù)開發(fā)平臺(tái)構(gòu)建的企業(yè)門戶應(yīng)用中業(yè)務(wù)集成的實(shí)例,驗(yàn)證了基于企業(yè)服務(wù)總線和ebXML交互的可行性和優(yōu)越性。雖然該案例只實(shí)現(xiàn)了基于ebXML的業(yè)務(wù)集成,但是根據(jù)Weblogic平臺(tái)提供的其他組件和第三方組件,不難實(shí)現(xiàn)基于RosettaNet和BPEL的業(yè)務(wù)集成[11]。但是該應(yīng)用考慮的業(yè)務(wù)集成問題較為簡(jiǎn)單,還處于概念和架構(gòu)的驗(yàn)證階段,在實(shí)際應(yīng)用中有更為復(fù)雜的資源集成和業(yè)務(wù)集成問題,如跨企業(yè)和跨流程的角色及權(quán)限管理如何實(shí)施,如何更好地與企業(yè)現(xiàn)有的單點(diǎn)登錄系統(tǒng)集成;來自不同定義的流程集成中存在的事務(wù)管理需要一個(gè)統(tǒng)一的事務(wù)管理模型,傳統(tǒng)的分布式事務(wù)(XA)有很大的限制,而BPEL中引入的基于補(bǔ)償?shù)氖聞?wù)模型[8]、基于save point的SAGAS事務(wù)模型[9]和WSTX規(guī)范[10]給出了很有意義的啟發(fā),需要進(jìn)一步的研究。
參考文獻(xiàn):
[1]
PAPAZOGLOU M, HEUVEL W J van den.Service oriented architectures: approaches, technologies and research issues[J]. The VLDB Journal,2007, 16(3): 389415.
[2]ARSANJANI A. Introduction to the special issue on developing and integrating enterprise components and services[J]. Communications of the ACM, 2002, 45(10): 3034.
[3]SCHMIDT M, HUTCHISON B, LAMBROS P, et al. The enterprise service bus: making serviceoriented architecture real[J]. IBM Systems Journal, 2005, 44(4): 781798.
[4]TSAI W T, CHEN Yinong, FAN Chun. PESOI: process embedded serviceoriented architecture[J]. Journal of Software, 2006, 17(6): 14701483.
[5]方江雄,何紅波,李義兵.基于SOA和BPM的ERP系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用, 2007, 27(5): 12641267.
[6]OASIS. ebXML technical architecture specification v1.04 [EB/OL]. (20010216).http://www.ebxml.org/specs/ebTA.pdf.
[7]Rosettanet. RNIF specification v02.00.01 [EB/OL]. (20021204). http://www.rosettanet.org/standards.
[8]IBM. Business process execution language for Web services version 1.1[EB/OL]. (20020730). http://www.ibm.com/developerworks/library/specification/wsbpel/.
[9]HECTOR G,KENNETH S. SAGAS [J]. ACM SIGMOD, 1987, 16(3): 249259.
[10]OASIS. Web services atomic transaction (WSAtomicTransaction)[EB/OL]. [20070712]. http://docs.oasisopen.org/wstx/wstxwsat1.1specerrataos.pdf.
[11]陸劍峰,張浩,馬玉敏.基于業(yè)務(wù)流程管理的企業(yè)應(yīng)用集成框架及其實(shí)現(xiàn)[J].計(jì)算機(jī)集成制造系統(tǒng), 2007, 13(7): 13441349.