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