陳真理 俞東進(jìn) 劉其群
摘 要: 在進(jìn)行企業(yè)應(yīng)用集成過程中,企業(yè)服務(wù)總線技術(shù)經(jīng)常被用于組織內(nèi)部或跨組織邊界的不同應(yīng)用系統(tǒng)的連接,以達(dá)到在不改變已有應(yīng)用的情況下最大限度地簡化業(yè)務(wù)流程的目的?;谄髽I(yè)服務(wù)總線技術(shù)提出了一個支持跨系統(tǒng)數(shù)據(jù)交換和業(yè)務(wù)交互的綜合業(yè)務(wù)處理平臺的設(shè)計(jì)方案。該平臺基于Mule ESB、Apache Drools等開源軟件實(shí)現(xiàn),其中Mule ESB用于構(gòu)建企業(yè)服務(wù)總線,Apache Drools用于構(gòu)建規(guī)則引擎。初步實(shí)驗(yàn)結(jié)果驗(yàn)證了該平臺的有效性。
關(guān)鍵詞: 企業(yè)服務(wù)總線; 企業(yè)應(yīng)用集成; 綜合業(yè)務(wù)處理平臺; 開放源碼
中圖分類號:TP311 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2013)08-08-03
0 引言
企業(yè)應(yīng)用集成(Enterprise Application Integration,EAI)泛指連接、管理和組合企業(yè)間和企業(yè)內(nèi)應(yīng)用,使其能以統(tǒng)一的方式進(jìn)行互聯(lián)和互操作,以支持業(yè)務(wù)過程自動化的技術(shù)。從應(yīng)用的角度上講,它包含了兩個方面的內(nèi)容:數(shù)據(jù)交換和業(yè)務(wù)交互。其中,數(shù)據(jù)交換為參與應(yīng)用集成的多個系統(tǒng)提供了一個統(tǒng)一的數(shù)據(jù)視圖;而業(yè)務(wù)交互則實(shí)現(xiàn)了跨系統(tǒng)的、粗粒度的、自治業(yè)務(wù)的實(shí)時調(diào)用。
隨著信息化建設(shè)的不斷推進(jìn),企、事業(yè)單位內(nèi)的信息系統(tǒng)規(guī)模不斷擴(kuò)展而變得越來越復(fù)雜。信息化發(fā)展的階段性、標(biāo)準(zhǔn)不統(tǒng)一以及各種認(rèn)識上的誤區(qū),經(jīng)常會導(dǎo)致所謂的“信息孤島”現(xiàn)象,從而產(chǎn)生各種數(shù)據(jù)孤島(不同部門的信息不能共享)、系統(tǒng)孤島(不同系統(tǒng)彼此獨(dú)立而無法共用)、業(yè)務(wù)孤島(不能實(shí)現(xiàn)跨部門、跨業(yè)務(wù)的業(yè)務(wù)流轉(zhuǎn)和協(xié)同)、管控孤島(不能實(shí)現(xiàn)信息系統(tǒng)的集成化管理)等。
解決“信息孤島”問題有各種對策,例如:統(tǒng)一進(jìn)行信息資源規(guī)劃、理順組織內(nèi)的數(shù)據(jù)流等。但是這些方法往往意味著需要對現(xiàn)有各個遺留系統(tǒng)進(jìn)行重構(gòu),甚至重新設(shè)計(jì)和開發(fā),成本巨大,見效緩慢。通過構(gòu)建集成化的綜合業(yè)務(wù)處理平臺實(shí)現(xiàn)不同應(yīng)用系統(tǒng)的集成則是一種更為人們所接受的解決“信息孤島”問題的方法。這里,平臺是可以適應(yīng)于不同系統(tǒng)之間信息共享的通用工具,它通過企業(yè)應(yīng)用集成技術(shù)將一個單位的業(yè)務(wù)流程、公共數(shù)據(jù)、應(yīng)用軟件、硬件和各種標(biāo)準(zhǔn)聯(lián)合起來,在不同應(yīng)用系統(tǒng)之間實(shí)現(xiàn)無縫集成。這種方案可以最大程度地保留已有系統(tǒng)的投資,同時可達(dá)到不同系統(tǒng)之間的信息共享和業(yè)務(wù)協(xié)同的目標(biāo)。
在構(gòu)建集成化的綜合業(yè)務(wù)處理平臺過程中,以服務(wù)的視角建模發(fā)生在松耦合的異構(gòu)系統(tǒng)之間的數(shù)據(jù)交換和業(yè)務(wù)交互過程,可以很好地滿足企業(yè)應(yīng)用集成對靈活性和可重用性的要求,是一種主流的技術(shù)方法。這里,服務(wù)泛指自治、開放、自描述、并與實(shí)現(xiàn)無關(guān)的網(wǎng)絡(luò)構(gòu)件[1]。各系統(tǒng)存在的數(shù)據(jù)抽取、數(shù)據(jù)發(fā)布、粗粒度的業(yè)務(wù)構(gòu)件等都可以被抽象為一個個的服務(wù),而所謂的應(yīng)用集成便是這些服務(wù)的發(fā)布、查找以及服務(wù)與服務(wù)之間的綁定和調(diào)用。在這其中,面臨的主要困難是參與集成的各個系統(tǒng)的異構(gòu)性。然而,幸運(yùn)的是,近年來以企業(yè)應(yīng)用集成為主要應(yīng)用領(lǐng)域的面向服務(wù)架構(gòu)(Service-Oriented Architecture,SOA)的實(shí)現(xiàn)正逐步過渡到建立在IT標(biāo)準(zhǔn)的基礎(chǔ)之上[2],如使用SCA組裝構(gòu)件,使用BEPL編排服務(wù),使用WSDL描述服務(wù)。這些標(biāo)準(zhǔn)和協(xié)議的形成代表著基于SOA實(shí)施的應(yīng)用集成與廠商平臺無關(guān),從而為實(shí)現(xiàn)分布、異構(gòu)的獨(dú)立系統(tǒng)之間的互聯(lián)提供了可能。
對于如何構(gòu)建基于服務(wù)技術(shù)的綜合業(yè)務(wù)處理平臺,國內(nèi)外已有較多的研究。例如,文獻(xiàn)[3]提出了一個“代理+服務(wù)器”松散耦合模式的數(shù)據(jù)交換平臺(DEP),該平臺利用數(shù)據(jù)傳輸服務(wù)和消息服務(wù)分別實(shí)現(xiàn)交換數(shù)據(jù)的傳輸和數(shù)據(jù)交換過程中的流程控制;文獻(xiàn)[4]提出了一種基于企業(yè)服務(wù)總線技術(shù)的電子政務(wù)數(shù)據(jù)共享與交換平臺的體系結(jié)構(gòu);論文[5]給出了一個以企業(yè)服務(wù)總線為中心的面向服務(wù)軟件體系架構(gòu)的參考模型,并基于Petri網(wǎng)和時序邏輯從形式上對原型系統(tǒng)進(jìn)行了需求規(guī)范描述及功能正確性驗(yàn)證等。
本文通過采用一個專用于異構(gòu)系統(tǒng)集成的輕量級企業(yè)服務(wù)總線,構(gòu)建橫跨多個應(yīng)用系統(tǒng)的綜合業(yè)務(wù)處理平臺,以支持集成化信息服務(wù)和多業(yè)務(wù)協(xié)同。該平臺的核心是通過企業(yè)服務(wù)總線(Enterprise Service Bus,ESB)技術(shù)完成業(yè)務(wù)交互和數(shù)據(jù)交換兩類應(yīng)用的綜合集成。企業(yè)服務(wù)總線是基于面向服務(wù)架構(gòu)的基礎(chǔ)設(shè)施。第三方的程序組件能夠以標(biāo)準(zhǔn)的方式“插入”到企業(yè)服務(wù)總線上運(yùn)行,參與應(yīng)用集成的各方并不直接交互(請求者無須了解服務(wù)提供者的物理實(shí)現(xiàn)),而由總線負(fù)責(zé)將請求交付給功能提供者和QoS的服務(wù)提供者。服務(wù)請求者和服務(wù)提供者的應(yīng)用程序邏輯可以使用各種編程模型和技術(shù)調(diào)用或交付服務(wù),而無需考慮是直接連接還是通過企業(yè)服務(wù)總線傳遞的[6]。
1 基于企業(yè)服務(wù)總線的綜合業(yè)務(wù)處理平臺的總體結(jié)構(gòu)
綜合業(yè)務(wù)處理平臺的中心是企業(yè)服務(wù)總線。該企業(yè)服務(wù)總線提供了Web服務(wù)適配器和JMS(Java Message Service)適配器,以實(shí)現(xiàn)Web服務(wù)接口和消息接口,也可根據(jù)需要進(jìn)一步擴(kuò)充實(shí)現(xiàn)JCA或者EJB接口。消息中間件和各種服務(wù)組件則通過Web服務(wù)適配器和JMS適配器分別綁定到企業(yè)服務(wù)總線。平臺的總體結(jié)構(gòu)如圖1所示。
該綜合業(yè)務(wù)處理平臺主要具備如下特點(diǎn)。
⑴ 采用規(guī)則引擎技術(shù)實(shí)現(xiàn)基于ESB的跨系統(tǒng)復(fù)雜業(yè)務(wù)邏輯的可維護(hù)性
規(guī)則引擎是指用以管理和自動實(shí)現(xiàn)業(yè)務(wù)規(guī)則的軟件系統(tǒng),其主要功能包括:存儲、分類和管理規(guī)則,驗(yàn)證規(guī)則的一致性,通過規(guī)則推斷其他規(guī)則、聯(lián)系規(guī)則和執(zhí)行這些規(guī)則。變化的商業(yè)規(guī)則和業(yè)務(wù)流程經(jīng)常會引起對應(yīng)用程序的頻繁修改,傳統(tǒng)模式下開發(fā)的應(yīng)用程序往往面臨全面和代價高昂的修改。規(guī)則引擎提供了一個將業(yè)務(wù)處理和業(yè)務(wù)規(guī)則處理分離、共用和統(tǒng)一管理維護(hù)業(yè)務(wù)規(guī)則的系統(tǒng)開發(fā)框架。
在平臺提供的業(yè)務(wù)流程集成模型中,抽象業(yè)務(wù)流程邏輯的描述與業(yè)務(wù)流程功能的實(shí)現(xiàn)分離開來,從而克服了傳統(tǒng)ESB技術(shù)在實(shí)現(xiàn)復(fù)雜、動態(tài)業(yè)務(wù)流程集成方面的不足。業(yè)務(wù)流程的各個節(jié)點(diǎn)由規(guī)則引擎實(shí)現(xiàn),通過規(guī)則引擎即可實(shí)現(xiàn)企業(yè)級跨系統(tǒng)復(fù)雜多變的業(yè)務(wù)規(guī)則,從而為更靈活、更經(jīng)濟(jì)、更高效地管理綜合型業(yè)務(wù)流程提供了技術(shù)支持。
⑵ 采用工作流技術(shù)實(shí)現(xiàn)基于平臺的服務(wù)可編排性
為達(dá)到通過服務(wù)進(jìn)行組裝和編排以滿足業(yè)務(wù)和流程的變化的目的,平臺整合了一個工作流引擎以實(shí)現(xiàn)基于框架的服務(wù)編排,從而將業(yè)務(wù)流程邏輯從具體的程序執(zhí)行代碼中分離出來。工作流引擎包括流程定義、流程引擎和流程管理三個部分。其中,流程定義模塊用以定義流程,采用BPEL描述;流程引擎模塊負(fù)責(zé)已定義好的業(yè)務(wù)流程執(zhí)行;流程管理模塊負(fù)責(zé)監(jiān)控和管理所有的流程。
⑶ 通過集成符合UDDI規(guī)范的服務(wù)注冊庫實(shí)現(xiàn)ESB服務(wù)的集成化管理
該平臺在傳統(tǒng)的企業(yè)服務(wù)總線中引入了符合UDDI規(guī)范的服務(wù)注冊庫。UDDI是一個分布式的互聯(lián)網(wǎng)服務(wù)注冊機(jī)制,它集描述(Universal Description)、檢索(Discovery)和集成(Integration)為一體,其核心是注冊機(jī)制。在平臺中,服務(wù)注冊庫以一種結(jié)構(gòu)化的方式來保存有關(guān)服務(wù)的元信息。這些數(shù)據(jù)使用標(biāo)準(zhǔn)的分類法進(jìn)行分類,因此可以按類別來查詢信息。在實(shí)際運(yùn)行過程中,框架上運(yùn)行的所有服務(wù)信息被注冊到UDDI。通過 UDDI服務(wù)注冊庫,平臺可以發(fā)現(xiàn)合適的Web服務(wù)信息,然后調(diào)用這些服務(wù)。
2 基于Mule ESB的原型實(shí)現(xiàn)和應(yīng)用
企業(yè)服務(wù)總線作為平臺的核心,通過提供一種標(biāo)準(zhǔn)的軟件底層架構(gòu)支持服務(wù)的運(yùn)行,并以標(biāo)準(zhǔn)的消息格式統(tǒng)一服務(wù)之間的交互方式,從而為系統(tǒng)集成提供了更好的擴(kuò)展性和靈活性。但是,市場上流行的主流企業(yè)服務(wù)總線產(chǎn)品(如:IBM Service Integration Bus、BEA Aqualogic,等)普遍價格昂貴,而且由于通用性太強(qiáng)使得應(yīng)用過程中定制的工作量較大。
本文選用Mule ESB(http://www.mulesoft.org)的社區(qū)版作為綜合業(yè)務(wù)處理平臺的核心部件。Mule ESB是MuleSoft公司的服務(wù)總線產(chǎn)品,提供了服務(wù)創(chuàng)建和部署、服務(wù)中介、消息路由和數(shù)據(jù)交換等功能。通過Mue ESB,服務(wù)提供者將業(yè)務(wù)功能封裝為服務(wù),并以接口的形式向外提供,消費(fèi)者即可通過服務(wù)總線訪問該接口,進(jìn)而調(diào)用提供者提供的服務(wù),實(shí)現(xiàn)與位置無關(guān)的服務(wù)調(diào)用。另外,平臺選用開源軟件Apache Drools作為規(guī)則引擎,開源軟件JBoss jBPM作為流程引擎,開源軟件Apache jUDDI作為UDDI引擎。
上述基于Mule ESB的綜合業(yè)務(wù)處理平臺已成功應(yīng)用于一個電子商務(wù)結(jié)算系統(tǒng)的實(shí)驗(yàn)中。該系統(tǒng)需要實(shí)現(xiàn)與客戶管理系統(tǒng)、訂單系統(tǒng)和發(fā)貨系統(tǒng)等的應(yīng)用交互。下面以確定折扣的業(yè)務(wù)為例說明平臺中基于Mule ESB和Apache Drools的交互實(shí)現(xiàn)過程。該業(yè)務(wù)相關(guān)的規(guī)則可簡述為:根據(jù)客戶的類型(會員類型或者普通類型)和一次購買金額確定相應(yīng)的折扣信息,具體包含以下四種規(guī)則:
⑴ 會員客戶,且一次購物金額小于1000,九五折優(yōu)惠;
⑵ 會員客戶,且一次購物金額大于1000,九折優(yōu)惠;
⑶ 普通客戶,且一次購物金額小于1000,無打折優(yōu)惠;
⑷ 普通客戶,且一次購物金額大于1000,九五折優(yōu)惠。
為實(shí)現(xiàn)上述規(guī)則,需要創(chuàng)建配置文件mule-config.xml。同時,創(chuàng)建規(guī)則文件rules.drl,實(shí)現(xiàn)四種規(guī)則。表1對應(yīng)第1條規(guī)則的配置實(shí)現(xiàn),即客戶類型為會員,并且購物金額在1000元以內(nèi);相應(yīng)地,可分別定義另外三種規(guī)則的配置實(shí)現(xiàn)。
3 結(jié)束語
以服務(wù)的視角對發(fā)生在松耦合的異構(gòu)系統(tǒng)之間的數(shù)據(jù)交換和業(yè)務(wù)交互過程進(jìn)行建模,可以在很大程度上滿足企業(yè)應(yīng)用集成對靈活性和可重用性的要求。企業(yè)服務(wù)總線技術(shù)是構(gòu)建基于服務(wù)的綜合業(yè)務(wù)處理平臺的關(guān)鍵技術(shù),而借助Mule ESB等優(yōu)秀開源軟件可大大減低總體建設(shè)成本。本文基于企業(yè)服務(wù)總線技術(shù)提出了一個支持跨系統(tǒng)數(shù)據(jù)交換和業(yè)務(wù)交互的綜合業(yè)務(wù)處理平臺的設(shè)計(jì)方案。該平臺基于Mule ESB、Apache Drools等開源軟件實(shí)現(xiàn),其中Mule ESB用于構(gòu)建企業(yè)服務(wù)總線,Apache Drools用于構(gòu)建規(guī)則引擎。初步實(shí)驗(yàn)結(jié)果驗(yàn)證了該平臺的有效性。未來將在實(shí)驗(yàn)的基礎(chǔ)上,構(gòu)建面向最終用戶的綜合業(yè)務(wù)處理產(chǎn)品,以屏蔽對集成各個組成部件的復(fù)雜配置要求,最終達(dá)到在一定場合中可部分替代商業(yè)產(chǎn)品的目標(biāo)。
參考文獻(xiàn):
[1] 喻堅(jiān),韓燕波.面向服務(wù)的計(jì)算—原理和應(yīng)用[M].清華大學(xué)出版,2006.
[2] Papazoglou MP, van den Heuvel WJ. Service oriented architec-tures: Approaches, technologies and research issues[J]. The VLDB Journal,2007.16(3):389-415
[3] 梅立軍,付小龍,劉啟新等.基于SOA的數(shù)據(jù)交換平臺研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2006.27(19):3601-3627
[4] 李曉東,楊揚(yáng),郭文彩.基于企業(yè)服務(wù)總線的數(shù)據(jù)共享與交換平臺[J].計(jì)算機(jī)工程,2006.32(21):217-223
[5] 張廣勝,蔣昌俊,湯憲飛等.面向服務(wù)的企業(yè)應(yīng)用集成系統(tǒng)描述與驗(yàn)證[J].軟件學(xué)報(bào),2007.18(12):3015-3033
[6] Schmidt Marc-Thomas, Hutchison Beth, Lambros Peter, etc. The enterprise service bus: Making service-oriented architecture real[J].IBM Systems Journal,2005.44(4):781-797