王靜蕾
(鄭州旅游職業(yè)學(xué)院招生就業(yè)辦,鄭州450009)
隨著社會信息化的發(fā)展,異構(gòu)應(yīng)用系統(tǒng)集成問題日趨明顯,人們從各個角度嘗試解決相關(guān)異構(gòu)系統(tǒng)之間的互操作問題,使用面向服務(wù)的架構(gòu)(SOA)是其一種方法,它對于解決集成問題,有著明顯的優(yōu)勢,但業(yè)界一直以來對SOA看法卻并不統(tǒng)一。我國的SOA應(yīng)用,也正經(jīng)歷著由點到面的發(fā)展過程。因此,本文主要是提出通過基于SOA的思想,以ESB為核心、以SDO+BPEL為組件編程開發(fā)模型,來解決集成問題。力求使集成以極小的投資短期內(nèi)達(dá)到預(yù)期成效。
面向服務(wù)的架構(gòu)SOA(Service-Oriented architecture)是一個以服務(wù)為組件的模型,一種面向服務(wù)的架構(gòu),一種服務(wù)驅(qū)動的主流信息系統(tǒng)設(shè)計方法。它促使各系統(tǒng)中相關(guān)聯(lián)的服務(wù)按需求進行重組,從而變成新的服務(wù),同時實現(xiàn)服務(wù)的創(chuàng)新。這樣的系統(tǒng)能夠快速、便捷地滿足不斷變化的服務(wù)需求,而且系統(tǒng)中的服務(wù)流程具備高度的靈活性,系統(tǒng)資源也得以重用。利用SOA實現(xiàn)系統(tǒng)和數(shù)據(jù)的集成即是為系統(tǒng)、企業(yè)乃至行業(yè)進行功能和數(shù)據(jù)整合時提供一個框架,使這個框架中的組件更靈活地適應(yīng)千變?nèi)f化的服務(wù)需求。
在實現(xiàn)SOA參考構(gòu)架時,許多研究提到了一種“企業(yè)服務(wù)總線(Enterprise Service Bus,ESB)”的概念。它是從面向服務(wù)的架構(gòu)發(fā)展而來的,是實現(xiàn)SOA的基礎(chǔ)設(shè)施,它采用一條“總線”的模式來管理和簡化應(yīng)用集成之間的拓?fù)浣Y(jié)構(gòu),是傳統(tǒng)中間件技術(shù)與XML、Web服務(wù)等技術(shù)結(jié)合的產(chǎn)物。ESB的基本原理:基于SOA架構(gòu),通過標(biāo)準(zhǔn)的整合技術(shù)將Web Services和XML等技術(shù)融入到統(tǒng)一的分布式架構(gòu)中,實現(xiàn)統(tǒng)一并易于部署、可管理的整合基礎(chǔ)設(shè)施。ESB能夠提供連接,達(dá)到業(yè)務(wù)之間的互操作、數(shù)據(jù)映射和路由的作用,以及其他一些如安全和監(jiān)測等附加功能。ESB被譽為SOA參考架構(gòu)的中心構(gòu)件,ESB更是起到了網(wǎng)絡(luò)中最基本的連接中樞作用,是當(dāng)下SOA系統(tǒng)的必要元素。
服務(wù)數(shù)據(jù)對象SDO(Service Data Object)是一種針對在不同的數(shù)據(jù)源之間使用統(tǒng)一的數(shù)據(jù)編程模型的一種規(guī)范說明。它是以對象為中心的層次樹型數(shù)據(jù)模型,不僅可以解決異構(gòu)數(shù)據(jù)的兼容性問題,還提出了一個簡單并且統(tǒng)一的模式供服務(wù)處理相關(guān)的數(shù)據(jù)。SDO將各種各樣的數(shù)據(jù)訪問模型用統(tǒng)一的抽象數(shù)據(jù)實體來代替,用以創(chuàng)建、更新、搜索或者刪除服務(wù)實現(xiàn)所使用的業(yè)務(wù)數(shù)據(jù)。它致力于為不同來源和格式的服務(wù)數(shù)據(jù)提供統(tǒng)一處理的方式。它的工作原理是用一種單一的、統(tǒng)一的方式來訪問和操作異構(gòu)數(shù)據(jù)源中的數(shù)據(jù),這些異構(gòu)數(shù)據(jù)源可以是關(guān)系型數(shù)據(jù)庫、XML數(shù)據(jù)源、Web服務(wù)、企業(yè)遺留系統(tǒng)中的數(shù)據(jù),在處理的同時提供相應(yīng)的機制將數(shù)據(jù)同其來源分離。SDO被視為SOA解決方案中典型的數(shù)據(jù)信息集成技術(shù)。
業(yè)務(wù)流程執(zhí)行語言BPEL(Business Process Execution Language)是一種使用XML編寫的編程語言,它以XML、Web服務(wù)等眾多規(guī)范為基礎(chǔ),定義了用于業(yè)務(wù)流程建模的、以業(yè)務(wù)流程和其參與者交互為基礎(chǔ)的業(yè)務(wù)流程描述語法。其作用是把一系列具有不同功能但之間卻有著相互關(guān)系的服務(wù)關(guān)聯(lián)在一起,然后依照某種邏輯方式來共同完成某項任務(wù)的這個過程。簡言之,即對系統(tǒng)中的業(yè)務(wù)流程進行編排,實現(xiàn)自動化。BPEL與Web服務(wù)標(biāo)準(zhǔn)相融合,可以輕松的與各種環(huán)境進行跨系統(tǒng)、跨企業(yè)的互操作,在SOA系統(tǒng)中,它可以提供一種理想方式把服務(wù)編排入整個商業(yè)流程,這是當(dāng)前最為成熟且已被各大公司熱衷的業(yè)務(wù)流程建模的標(biāo)準(zhǔn)。
本文以“高校迎新系統(tǒng)”為例,旨在建立一個通用的框架將各異構(gòu)系統(tǒng)進行集成。集成系統(tǒng)囊括新生報到過程的各個環(huán)節(jié),它是一個面向?qū)W校所有院系、招辦、財務(wù)室等相關(guān)行政管理部門和所有應(yīng)屆新生的綜合性信息管理系統(tǒng)。它起著將參與新生報到的相關(guān)部門子系統(tǒng)中的服務(wù)實現(xiàn)統(tǒng)一的調(diào)用以及數(shù)據(jù)的統(tǒng)一、共享和查詢?;谶@種設(shè)計理念,以下就鄭州旅游職業(yè)學(xué)院實際情況,重點說明對于整個集成系統(tǒng)的框架分析。
首先說明在迎新過程中所涉及部門的職能。
招辦注冊處:主要提供新生入學(xué)注冊功能,并對入學(xué)狀態(tài)進行統(tǒng)計。
財務(wù)處:收費、補交費用、日常退費和各種收費統(tǒng)計匯總等。
教務(wù)處:制定和分配班級、學(xué)號規(guī)則;新生專業(yè)調(diào)整申請及處理、新生信息管理等。
學(xué)生處:新生綠色通道申請及處理、分配宿舍資源,明確學(xué)生的宿舍區(qū),匯總學(xué)生宿舍床位信息等。
目前的研究成果中框架設(shè)計主要有針對Web Services的,也有針對ESB或者是針對SCA的,但大多數(shù)只是側(cè)重于其一,本文將這些技術(shù)有機的進行結(jié)合,在實現(xiàn)異構(gòu)系統(tǒng)集成時,主要采用了自頂向下的分析方法和這種框架相結(jié)合,首先根據(jù)客戶端的業(yè)務(wù)需求進行分析,對業(yè)務(wù)流程采取端到端的形式進行逐層分解,直到分解為原子構(gòu)件為止。其次和六層構(gòu)架結(jié)合起來分析:①在業(yè)務(wù)流程層針對客戶端所需工作流程,反向分解出所需的服務(wù)。②在服務(wù)層明確需要調(diào)用哪些Web服務(wù)。③ESB層對哪些服務(wù)進行部署。④業(yè)務(wù)組件層需要有什么樣的組件和構(gòu)件。⑤最終將這些原子構(gòu)件和組件對應(yīng)到資源層不同的子系統(tǒng)中。綜上所述,將系統(tǒng)的框架分為六層進行設(shè)計如圖1所示。
圖1 系統(tǒng)框架圖
該層是一個門戶,也是終端用戶直接面對的程序操作界面,是訪問集成系統(tǒng)的入口,它作為用戶接口和外界進行數(shù)據(jù)交互。它以開放的形式使業(yè)務(wù)流程和服務(wù)暴露給用戶,能夠?qū)?quán)限進行驗證,保證用戶的安全,并且依據(jù)用戶的需求提供個性化的服務(wù)。服務(wù)消費者通過該層提供的訪問接口調(diào)用企業(yè)的應(yīng)用服務(wù)。該層在多層架構(gòu)中起到的作用是屏蔽了服務(wù)與訪問系統(tǒng)客戶端的所有表現(xiàn)邏輯,用戶使用單一的訪問入口,輸入業(yè)務(wù)需求到下一層,該層則構(gòu)造會話管理,控制業(yè)務(wù)服務(wù)訪問。
該層是對服務(wù)請求進行流程管理,通過使用BPEL定義業(yè)務(wù)服務(wù)流程以達(dá)到某種業(yè)務(wù)目的。關(guān)鍵步驟是業(yè)務(wù)邏輯從服務(wù)注冊中心查找并調(diào)用相關(guān)的服務(wù),然后進行業(yè)務(wù)流程編排,形成一個滿足調(diào)用需求的業(yè)務(wù)流程。這一層主要是根據(jù)用戶的業(yè)務(wù)需求來組裝服務(wù)層已經(jīng)封裝好的服務(wù),此層實現(xiàn)的最大障礙不是技術(shù),關(guān)鍵在于分析與理解系統(tǒng)領(lǐng)域業(yè)務(wù)。業(yè)務(wù)流程層的目的是隨著企業(yè)的業(yè)務(wù)需求變化,只需調(diào)整服務(wù)間的組裝方式就可快速響應(yīng)。目前實現(xiàn)業(yè)務(wù)流程控制的業(yè)界標(biāo)準(zhǔn)是BPEL,它能夠指出用什么樣的順序調(diào)用封裝好的服務(wù)。它是基于XML的,通過包裝Web服務(wù)。
簡言之,在此層用BPEL實現(xiàn)流程的控制,流程層的任務(wù)是利用已經(jīng)封裝好的各種服務(wù),通過配合、編排服務(wù),構(gòu)建集成系統(tǒng)的業(yè)務(wù)流程,服務(wù)的不同組合方式代表了不同的業(yè)務(wù)流程,服務(wù)可共同協(xié)作成為一個單獨的應(yīng)用程序。
這一層中主要元素是已確定公開且被發(fā)現(xiàn)的服務(wù)。主要是提供相應(yīng)的數(shù)據(jù)接口和企業(yè)應(yīng)用接口服務(wù),對企業(yè)內(nèi)部各種EIS(主管信息系統(tǒng))進行Web服務(wù)封裝,將封裝好的服務(wù)暴露給其他模塊或者其他系統(tǒng)。該層主要由四種服務(wù)組成,即原子服務(wù)、組合服務(wù)、流程服務(wù)和外部服務(wù)。其中原子服務(wù)是細(xì)粒度服務(wù),它以實體為核心;由原子服務(wù)組合而成的是組合服務(wù),它根據(jù)某種需求和簡單合成原子服務(wù)而來。第三種服務(wù)流程是把原子服務(wù)或是組合服務(wù)進行流程編排而來的粗料度服務(wù)。最后,來自于企業(yè)系統(tǒng)外部的服務(wù),它也是一種粗粒度的服務(wù),并且封裝了服務(wù)的具體實現(xiàn),通過對外提供的描述服務(wù)接口調(diào)用。將最基本的原子服務(wù)裝配為組合服務(wù),將組合服務(wù)裝配為更大粒度的具有業(yè)務(wù)語義的流程服務(wù)即是該層的核心思想。通過這種組合和裝配由總線調(diào)用滿足某個特定業(yè)務(wù)功能的一系列服務(wù)組件。
框架中服務(wù)層的作用是,將放在ESB上的由組件層實現(xiàn)的構(gòu)件,裝配成服務(wù),通過ESB總線暴露給其他模塊或其他系統(tǒng)。這一層的思想核心:將服務(wù)發(fā)現(xiàn)或者靜態(tài)綁定,之后被調(diào)用或組合成復(fù)合服務(wù),它們的接口均是以WDSL形式對外發(fā)布的,通過ESB總線調(diào)用滿足業(yè)務(wù)的相關(guān)原子服務(wù)或者組合服務(wù)。
該層主要對用戶請求消息以及回執(zhí)消息的整個過程進行處理,包括消息監(jiān)聽器、消息處理器、注冊中心以及安全組件等。ESB是整個集成應(yīng)用系統(tǒng)的核心,起著橋梁作用。它集成了諸如日志、安全、審計等服務(wù)和消息機制,提供了服務(wù)注冊和服務(wù)網(wǎng)的存儲,把服務(wù)網(wǎng)中的服務(wù)關(guān)系通過利用BPEL對其業(yè)務(wù)進行描述并進行實現(xiàn),最后以總線型的結(jié)構(gòu)實現(xiàn)底層服務(wù)組件的調(diào)用。服務(wù)交互的參與方并不直接交互,而是通過總線交互,它在架構(gòu)中工作原理:對業(yè)務(wù)組件層封裝好的組件建立監(jiān)聽和入站服務(wù),一但監(jiān)聽站收到服務(wù)請求,便將調(diào)用入站服務(wù),根據(jù)它描述的信息將服務(wù)請求放置服務(wù)總線尋找服務(wù)提供者,一但找到后根據(jù)服務(wù)組件的WSDL路徑地址創(chuàng)建出站服務(wù),出站服務(wù)將所調(diào)用的服務(wù)提供給服務(wù)請求者。這樣,降低了服務(wù)提供者和使用者服務(wù)的耦合度,整合調(diào)用過程相對于客戶端是透明的,因此具有該體系結(jié)構(gòu)的業(yè)務(wù)應(yīng)用可以適應(yīng)客戶端各種業(yè)務(wù)與技術(shù)的變化。
該層由各個組件組成,用于實現(xiàn)領(lǐng)域相關(guān)的業(yè)務(wù)邏輯,支持業(yè)務(wù)建模,良好的業(yè)務(wù)建模是系統(tǒng)成功的基礎(chǔ)。該層利用SDO技術(shù)來實現(xiàn)標(biāo)準(zhǔn)的封裝和映射,封裝業(yè)務(wù)建模的數(shù)據(jù)結(jié)構(gòu)。業(yè)務(wù)組件層支持?jǐn)?shù)據(jù)訪問,包括了對數(shù)據(jù)查詢和保存、更新以及刪除等操作,它同時提供了三種類型的組件實現(xiàn)方式:Java構(gòu)件、邏輯構(gòu)件、工作流。通過對這三種構(gòu)件組裝、調(diào)用運算邏輯,或者相互調(diào)用來實現(xiàn)業(yè)務(wù)操作。一個邏輯構(gòu)件定義了一套業(yè)務(wù)操作的接口,用WSDL對專有的API做出描述,以中立的方式發(fā)送至ESB總線,以HTTP/SOAP消息傳輸方式與外層進行交互。其它模塊調(diào)用時,不必關(guān)心這個業(yè)務(wù)屬于哪種構(gòu)件,只需調(diào)用相應(yīng)的接口便可。
最底層資源層主要功能是對原始系統(tǒng)的數(shù)據(jù)資源進行整合,通過在原有系統(tǒng)中采用的Java平臺和J2EE,可以提供豐富的數(shù)據(jù)編程模型和API,可它們都是分散的,不能滿足對于整體框架的服務(wù)。不僅如此,原來系統(tǒng)中的一些技術(shù)功能已不夠豐富,無法滿足集成系統(tǒng)的需求,而且采用的技術(shù)也是難以實現(xiàn)的。因此,在這里使用SDO數(shù)據(jù)模型,用統(tǒng)一的處理方式將不同來源和格式的服務(wù)數(shù)據(jù)進行訪問和操作,創(chuàng)建一個統(tǒng)一的數(shù)據(jù)訪問層,這樣,就可向組件層提供SDO數(shù)據(jù),使得應(yīng)用程序不再依賴于數(shù)據(jù)庫,而是獨立于整個持久化技術(shù)。實現(xiàn)了為異構(gòu)數(shù)據(jù)源提供數(shù)據(jù)訪問的方案
在集成系統(tǒng)實現(xiàn)時,每一層都對應(yīng)有相關(guān)的技術(shù)。資源層主要是完成SDO數(shù)據(jù)建模;業(yè)務(wù)組件層完成構(gòu)件的組裝并且調(diào)用運算邏輯實現(xiàn)業(yè)務(wù)操作,將業(yè)務(wù)操作以中立的方式發(fā)送至ESB總線;ESB總線主要完成消息的路由、服務(wù)管理和動態(tài)轉(zhuǎn)換;在服務(wù)層將原子服務(wù)進行組裝且通過端口調(diào)用ESB上的其它服務(wù)繼而在業(yè)務(wù)流程層實現(xiàn)服務(wù)的BPEL流程編排,將滿足要求的服務(wù)提供給客戶應(yīng)用層。由此完成了對遺留系統(tǒng)的服務(wù)集成。在對集成系統(tǒng)進行整體規(guī)劃和逐步實施過程中,始終遵循著信息開放性和標(biāo)準(zhǔn)性,理念和技術(shù)的先進性及成熟性,結(jié)構(gòu)的可擴展性和可維護性,系統(tǒng)的實用性、創(chuàng)新性,操作的安全性及保密性,軟硬件的集約性和易操作性等原則。
由于各高校的信息化建設(shè)的程度不盡相同,本文主要是對于原先已存在大量的異構(gòu)信息系統(tǒng)的情況,從架構(gòu)上尋找出一個通用的方案。SOA是一種比較新型的軟件體系結(jié)構(gòu),能較好地克服傳統(tǒng)集成方法,將面向服務(wù)的架構(gòu)思想應(yīng)用于集成系統(tǒng)當(dāng)中。它能夠混搭不同的執(zhí)行環(huán)境、服務(wù)接口并與執(zhí)行技術(shù)明確分離,這種架構(gòu)中服務(wù)之間的通訊是和底層編程接口及通訊模型無關(guān),僅是通過簡單但是精確定義的接口來進行通訊的,因此以這種方式完成的集成設(shè)計,不但可以組合現(xiàn)有的服務(wù),同時也可以靈活的開發(fā)和拓展新的業(yè)務(wù)來完善整個系統(tǒng)。另外,它也能夠快速、便捷地滿足不斷變化的服務(wù)需求,具備高度的靈活性。
[1]張慶福,萬麟瑞.基于SOA的異構(gòu)數(shù)據(jù)集成軟件架構(gòu)研究[J].計算機技術(shù)與發(fā)展,2011(5):17-21.
[2]馬俊.基于SOA的異構(gòu)系統(tǒng)集成研究[D].西南大學(xué),2010.
[3]Tom Bellwood.理解 UDDI[EB/OL].2002-07-1[2007-06-19].http://www-900.ibm.com/developerworks/cn/webservices/ws-featuddi/.
[4]Matthew Adams.ServiceDataObjects For JavaSpecification[EB/OL].http://xml.coverpages.org/SDO-Java-Spec-v210.pdf.