国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向服務(wù)集成的自動化服務(wù)注冊方法

2016-07-19 02:07李松犁張型龍肖俊超
關(guān)鍵詞:配置文件部署工具

李松犁 張型龍 肖俊超

(中國科學(xué)院軟件研究所 北京 100190)

?

面向服務(wù)集成的自動化服務(wù)注冊方法

李松犁張型龍肖俊超

(中國科學(xué)院軟件研究所北京 100190)

摘要服務(wù)集成的目標(biāo)是將多個服務(wù)集成到同一系統(tǒng)中以實(shí)現(xiàn)特定的業(yè)務(wù)需求。在集成過程中,由于工具、服務(wù)通常有著不同的數(shù)據(jù)標(biāo)準(zhǔn)、傳輸機(jī)制,導(dǎo)致了集成的困難。為了解決該問題,在服務(wù)集成系統(tǒng)中引入了企業(yè)服務(wù)總線ESB(Enterprise Service Bus)。目前ESB系統(tǒng)的配置文件能夠表達(dá)較為復(fù)雜的服務(wù)接入場景,但是根據(jù)服務(wù)的設(shè)計(jì)、架構(gòu)不同,服務(wù)接入方法不同,也不支持集成系統(tǒng)的熱部署功能。給出一種用于描述工具、服務(wù)信息的模型SDModel(Service Description Model),并在該模型基礎(chǔ)上提出一種面向服務(wù)集成的自動化服務(wù)注冊方法。方法能夠利用SDModel,自動化地解析擬接入集成系統(tǒng)的第三方服務(wù)和工具,并實(shí)現(xiàn)熱部署,供應(yīng)用層使用。

關(guān)鍵詞服務(wù)集成企業(yè)級服務(wù)總線自動化注冊

0引言

在軟件開發(fā)中,通常會有多種第三方提供的工具、服務(wù)被使用。通過集成這些工具和服務(wù),能夠提升軟件開發(fā)的質(zhì)量和效率。然而由于工具、服務(wù)往往由不同開發(fā)商提供,集成中很難共享數(shù)據(jù)和統(tǒng)一管理。

服務(wù)集成的目標(biāo)是將三方服務(wù)與工具集成到同一系統(tǒng)中使用[1]。在集成過程中,系統(tǒng)能夠滿足不同類型的工具、服務(wù)接入的需求,不需要更改自身的代碼。集成后,系統(tǒng)能夠復(fù)用三方工具的頁面以及它所提供的服務(wù),減少開發(fā)、集成的工作量。也可以根據(jù)特定的業(yè)務(wù)需求,將服務(wù)組合后提供給用戶使用[2]。

進(jìn)行系統(tǒng)集成時,由于工具、服務(wù)通常有著不同的系統(tǒng)設(shè)計(jì)、數(shù)據(jù)標(biāo)準(zhǔn)、傳輸機(jī)制等原因,其互相之間的通信、集成較為困難。為了解決這個問題,在服務(wù)集成系統(tǒng)中引入了企業(yè)服務(wù)總線ESB[3],為不同的工具、服務(wù)間提供一個通信的橋梁。

系統(tǒng)的集成分為服務(wù)的集成和工具的集成兩種情況。當(dāng)集成三方服務(wù)時,首先將服務(wù)接入ESB,通過ESB提供的通信協(xié)議、數(shù)據(jù)格式轉(zhuǎn)換功能,形成新的服務(wù)提供給系統(tǒng)使用。該過程中,需要向ESB提供其能夠識別、使用的配置文件。配置文件中包含了服務(wù)的輸入輸出、地址等信息。當(dāng)集成三方工具時,除了將工具所提供的服務(wù)接入ESB外,還要將使用工具所需的必要信息如用戶名密碼、工具的地址等提交給系統(tǒng),以便系統(tǒng)復(fù)用該工具的頁面。

現(xiàn)有ESB系統(tǒng)所提供的集成方法并不能較好地滿足服務(wù)集成系統(tǒng)的需求,具體問題如下:

1)ESB配置文件的格式和內(nèi)容復(fù)雜,對用戶不友好。配置文件包含許多ESB內(nèi)部組件,如數(shù)據(jù)格式轉(zhuǎn)換模塊等。這類組件和接入服務(wù)并不直接相關(guān)。另外如果配置錯誤,用戶需要花費(fèi)時間來檢查和調(diào)試。

2) 由于工具、服務(wù)的種類眾多,集成中需要針對其不同的設(shè)計(jì)、架構(gòu),編寫不同的集成模塊,這將花費(fèi)大量的時間。

3) 集成系統(tǒng)不支持熱部署功能,導(dǎo)致在集成工具、服務(wù)過程中,系統(tǒng)無法使用。只有在集成完成后,重新啟動系統(tǒng),才能夠使用新的工具和服務(wù)。

針對上述問題,本文提出了面向服務(wù)集成的自動化服務(wù)注冊方法。該方法定義了一個能夠表達(dá)接入工具、服務(wù)信息的模型,利用該模型自動化的完成注冊工作。

1相關(guān)工作

一些研究提出了新的服務(wù)組合算法,解決了在Web服務(wù)注冊到ESB后,如何利用工作流系統(tǒng),根據(jù)需求選擇服務(wù),封裝組合后形成新的服務(wù)提供給用戶使用的問題[4,5];一些研究關(guān)注于如何對ESB系統(tǒng)上的Web服務(wù)進(jìn)行管理[6-8];Tan等人按照Web服務(wù)的用途分類后,使用Petri網(wǎng)計(jì)算,得到服務(wù)的組合方式[9];也有的工作設(shè)計(jì)了一個分布式高可信ESB系統(tǒng),在這個系統(tǒng)中解決了服務(wù)的組合問題[10]。上述研究重點(diǎn)解決了如何根據(jù)用戶的需求,整合服務(wù)的問題。但是這些研究以服務(wù)已經(jīng)注冊到ESB為前提,沒有把工具和服務(wù)的注冊問題作為重點(diǎn)。

王路遠(yuǎn)提出了一個ESB管理系統(tǒng)[11],該系統(tǒng)通過界面引導(dǎo)用戶完成服務(wù)的配置后,自動生成ESB的配置文件,來完成服務(wù)的注冊。該方法降低了用戶注冊和管理ESB的難度,但是沒有關(guān)注集成系統(tǒng)如何使用三方工具的問題。

邊小凡等人提出了一種快速集成工具、服務(wù)的系統(tǒng)模型[12]。該模型使用ESB來完成各部件之間的通信工作,并應(yīng)用到了國家安全以及災(zāi)難響應(yīng)的場景中。文中使用了UDDI[13]來進(jìn)行服務(wù)的發(fā)現(xiàn)和注冊,但沒有重點(diǎn)闡述集成系統(tǒng)如何使用三方工具的問題。

本文提出了一個面向服務(wù)集成的自動化服務(wù)注冊方法,其能夠解決上文描述的三個問題,方便接入新工具和服務(wù)。其包括下面兩個步驟:

1) 從實(shí)際的工具、服務(wù)中抽象出一個較為通用的服務(wù)描述模型,其能夠表達(dá)工具、服務(wù)的集成信息,以及它們的設(shè)計(jì)、架構(gòu)差異;

2) 設(shè)計(jì)自動化注冊方法,利用上述模型所含有的數(shù)據(jù)完成服務(wù)、工具的注冊,并保證系統(tǒng)能夠使用它們。

2自動化服務(wù)注冊方法

由于工具和服務(wù)的數(shù)量眾多,為每一個都設(shè)計(jì)特定的注冊方法將耗費(fèi)大量的時間,因此需要根據(jù)實(shí)際使用的軟件開發(fā)工具、服務(wù),抽象出一個較為通用的服務(wù)描述模型SDModel。

圖1是注冊方法的架構(gòu)設(shè)計(jì)。首先根據(jù)需要集成的工具、服務(wù)的信息抽象,由用戶填寫或可視化模塊生成SDModel。模型解析模塊會驗(yàn)證SDModel的合法性,如果不符合系統(tǒng)的要求,集成過程將不會被完成。此后SDModel會被解析成兩部分?jǐn)?shù)據(jù),一是符合ESB規(guī)范的配置文件,二是存儲后供查詢的工具、服務(wù)信息。完成SDModel解析后,解析模塊向服務(wù)管理模塊發(fā)出通知,將生成的ESB配置文件交由ESB部署模塊使用。通過使用熱部署模塊,文件被配置到ESB中。這個步驟中,由于諸多原因可能造成部署的失敗,因此在部署前,狀態(tài)保存模塊會將正確運(yùn)行的配置文件保存?zhèn)浞?。一旦部署失敗,服?wù)管理模塊會取出備份文件交給部署模塊嘗試重新部署。在部署服務(wù)中,服務(wù)地址管理模塊負(fù)責(zé)分配和回收地址供服務(wù)使用。

圖1 注冊方法設(shè)計(jì)圖

部署完成后,服務(wù)管理模塊會通知應(yīng)用層模塊新的工具、服務(wù)接入完畢。應(yīng)用層模塊通過服務(wù)管理模塊查找需要的服務(wù),而后會使用接入總線服務(wù)所使用的協(xié)議和總線進(jìn)行通信。到這里,ESB就完成數(shù)據(jù)格式、通信協(xié)議的統(tǒng)一工作,將不能夠通信的三方工具、服務(wù)連接到了一起。

為了讓自動化注冊方法實(shí)際工作,需要:

1) 定義SDModel,描述待集成的工具和服務(wù);

2) 模型解析模塊,用于解析SDModel,生成ESB能夠識別、使用的配置文件;

3) 服務(wù)信息模塊,保存工具、服務(wù)的信息以及ESB的配置文件備份;

4)ESB配置模塊,將生成的配置文件部署到運(yùn)行中的ESB中,并保證ESB的正確運(yùn)行;

6) 可視化模塊,幫助用戶生成SDModel。

2.1服務(wù)描述模型

圖2 SDModel層次結(jié)構(gòu)

本文參考了WSDL(WebServiceDescriptionLanguage)[14]定義服務(wù)描述模型,該模型符合標(biāo)準(zhǔn)的XML格式(value)。SDModel包含了擬接入的三方服務(wù)和工具信息。SDModel的層次結(jié)構(gòu)應(yīng)該如圖2所示。

首先使用sdmodel關(guān)鍵字來定義模型。所有接入工具、服務(wù)等等信息都將寫在這個關(guān)鍵字之中。

1) 三方服務(wù)

對于待集成的三方服務(wù)集合,使用服務(wù)集合(services)來描述。對于其中的某項(xiàng)具體服務(wù),使用服務(wù)(service)來描述。三方服務(wù)包括了服務(wù)描述、服務(wù)協(xié)議、輸入、輸出、期望輸出幾部分。

在橋梁和構(gòu)造物的接頭、死角、加寬部分和一些壓路機(jī)無法碾壓的局部區(qū)域,可以使用1t路遙雙輪振動壓路機(jī)進(jìn)行碾壓工作。

? 服務(wù)描述:包括了服務(wù)名稱(name)、簡要描述(description)和服務(wù)地址(address)三方面的信息。這里地址應(yīng)當(dāng)包括協(xié)議和地址兩部分。如:http://192.168.10.10/xmltojson。其中http為協(xié)議,后面部分為具體的地址。

? 服務(wù)協(xié)議:使用protocol關(guān)鍵字。服務(wù)的數(shù)據(jù)經(jīng)過ESB處理后,需要再次提供給其他模塊使用,如果用戶想在這里改變數(shù)據(jù)傳輸?shù)膮f(xié)議,應(yīng)該使用protocol關(guān)鍵字。如果沒有,則默認(rèn)為服務(wù)地址中的協(xié)議。

? 輸入:使用input關(guān)鍵字,描述服務(wù)的輸入?yún)?shù)。由于輸入中可能包含了若干的參數(shù),定義param關(guān)鍵字來描述這些參數(shù)。每個參數(shù)由參數(shù)名稱(name),參數(shù)格式(param-format)和參數(shù)取值(param-value)幾部分組成。參數(shù)格式取值如XML、Object等。如果參數(shù)取值為空,則表示該參數(shù)將在ESB運(yùn)行中傳入。

? 輸出:使用output關(guān)鍵字,描述服務(wù)的輸出結(jié)果。由param關(guān)鍵字描述,但是不包含參數(shù)取值。

? 期望輸出:使用expect-output關(guān)鍵字,描述用戶希望通過ESB處理后輸出的結(jié)果。由param關(guān)鍵字描述,但是不包含參數(shù)取值。

2) 三方工具

三方工具由兩部分信息組成:一是工具自身的信息,如賬戶、工具地址等;二是工具提供服務(wù)的信息。使用工具(tool)描述用具定義的開始和結(jié)尾。

? 工具描述:包括了工具名稱(name)、簡要描述(description)和工具地址(address)三方面的信息。

? 工具認(rèn)證:用tool-access關(guān)鍵字描述,定義三方工具賬戶信息,其中可以包含多個賬戶(account)。每個賬戶中提供工具的用戶名、密碼。和服務(wù)的輸入輸出類似,賬戶中使用參數(shù)(param)來描述具體的用戶名和密碼。此外,對于B/S架構(gòu)的工具[15],還可以添加工具的登錄信息,如工具的登錄的地址,來幫系統(tǒng)進(jìn)行單點(diǎn)登錄操作。

? 工具服務(wù):表示由工具提供的若干服務(wù)。該部分和三方服務(wù)集合(services)類似。不同的是這些服務(wù)可能沒有具體的地址,故可以不配置地址(address)。

3) 示例

下文展示了一個詳細(xì)的SDModel,其中包含了缺陷管理工具Bugzilla的工具地址,同時提供一個用戶名為123@example.com,密碼為123的賬號供集成系統(tǒng)使用。此外,SDModel中還定義了Bugzilla提供的getBugById服務(wù)。該服務(wù)的輸入為int格式的bugId,而輸出為xml格式的具體bug。

Bugzilla

http://192.168.10.10/bugzilla

username

string

123@example.com

password

string

123

getBugById

http

bugId

int

bug

xml

通過SDModel的定義,其能夠較為通用地表達(dá)三方工具、三方服務(wù)的信息。

2.2注冊方法模塊實(shí)現(xiàn)

1) 模型解析模塊

解析模塊首先會接收用戶上傳的SDModel,然后會驗(yàn)證其正確性。

為了便于SDModel的解析和驗(yàn)證,這使用了JAXP(JavaAPIforXMLProcessing)[16]。JAXP是一套用來處理XML文檔的API。其中包括了javax.xml.validation、javax.xml.parsers等多個包(package)。

驗(yàn)證分為兩個階段:第一階段通過javax.xml.validation包來驗(yàn)證SDModel是否符合標(biāo)準(zhǔn)XML文件的格式;第二階段驗(yàn)證SDModel的完整性,如中是否含有

信息,中是否遺漏了等。如果模塊發(fā)現(xiàn)SDModel有錯誤,則模塊不會進(jìn)行下一步的ESB配置文件生成工作。同時,會將具體的錯誤信息返回給用戶。該模塊避免了用戶錯誤填寫配置文件后,系統(tǒng)的不能正常運(yùn)行問題,也減少了進(jìn)行錯誤的排查修正的時間。

而后,利用javax.xml.parsers包解析SDModel。將解析出的數(shù)據(jù)寫成ESB的標(biāo)準(zhǔn)配置文件。根據(jù)ESB的不同,其配置文件的格式也不同。為了解決這個問題,模塊對常見的ESB配置文件進(jìn)行單獨(dú)處理,并且維護(hù)其配置文件的格式信息。如muleESB的配置文件開始和結(jié)束的標(biāo)識為,且通過xmlns來關(guān)聯(lián)需要的其他XML文件[17]。隨后,該文件將會發(fā)送至ESB配置模塊。另外,SDModel還包含的工具、服務(wù)信息,如服務(wù)所需要的輸入輸出、是否需要格式的轉(zhuǎn)換等,將會被儲存起來,供服務(wù)管理模塊查詢使用。

2) ESB配置模塊

為了達(dá)到集成系統(tǒng)的熱部署功能,同時保證ESB的正常運(yùn)行,ESB處理模塊會有三個主要的功能:

(1) 服務(wù)地址管理模塊。當(dāng)新的服務(wù)接入到集成系統(tǒng)中后,需要為其分配相應(yīng)的服務(wù)地址。該模塊維護(hù)一個地址池,該地址池由集成系統(tǒng)管理員根據(jù)擁有的IP段進(jìn)行分配。地址池按順序?yàn)樾碌姆?wù)和工具分配IP,同時回收不再使用、注銷的服務(wù)的IP。

(2) 熱部署模塊。ESB配置文件生成后,需要把該文件部署到ESB運(yùn)行環(huán)境中。對于一些ESB,如Synapse,只需將該文件放入運(yùn)行環(huán)境下;而對于mule,需要將配置文件打包為發(fā)布版后,再放入運(yùn)行環(huán)境。隨后重啟ESB系統(tǒng)(根據(jù)ESB的不同,處理方式稍有差別,如muleESB不用重啟便可完成新服務(wù)的部署,而synapse需要重啟),使新的服務(wù)和工具生效。這里使用腳本來控制ESB的啟動、停止等工作。模塊首先會判斷用戶所使用的操作系統(tǒng)。在Linux/Mac系統(tǒng)下采用shell腳本;在Windows系統(tǒng)下則采用bat腳本。另外,由于可能出現(xiàn)的網(wǎng)絡(luò)異常、配置文件錯誤、ESB系統(tǒng)異常等原因,部署可能會失敗。因而每次部署前,應(yīng)當(dāng)保存當(dāng)前ESB上正常運(yùn)行的配置文件。部署失敗時,向狀態(tài)保存模塊請求恢復(fù)之前的狀態(tài)。

(3) 狀態(tài)保存模塊。由于ESB在部署過程中可能出現(xiàn)的異常情況,在每次熱部署之前,該模塊會記錄下當(dāng)前ESB系統(tǒng)中的配置信息。如果系統(tǒng)發(fā)生了錯誤,本模塊會負(fù)責(zé)取回最近一次的信息進(jìn)行恢復(fù)。同時,還應(yīng)該提醒用戶部署發(fā)生錯誤,以及錯誤原因。

通過ESB配置模塊,當(dāng)集成系統(tǒng)接入新的工具和服務(wù)時,不再需要重啟整個系統(tǒng),保證了用戶的使用。

3) 服務(wù)信息模塊

服務(wù)信息模塊將會主要保存三部分信息:

(1) 用戶管理數(shù)據(jù),用于記錄用戶的信息,如用戶名、密碼等。

(2) 工具、服務(wù)的注冊數(shù)據(jù)。這部分信息將會用于服務(wù)管理模塊的查詢和變更工作。當(dāng)集成系統(tǒng)需要多個工具的單點(diǎn)登錄功能時,該部分還會記錄工具的登錄地址等信息,以便集成系統(tǒng)模擬登錄取回工具的cookie。

(3) 狀態(tài)保存信息。該模塊負(fù)責(zé)維護(hù)ESB的配置文件,以及ESB是否正常工作等數(shù)據(jù)。通過設(shè)置時間間隔,模塊將定時從ESB抓取當(dāng)前系統(tǒng)的運(yùn)行信息。部署失敗時,模塊將取出最近一次正常工作的配置文件,以便ESB系統(tǒng)恢復(fù)運(yùn)行。

4) 服務(wù)管理模塊

該模塊主要包含了兩個功能:

(1) 服務(wù)查詢模塊。當(dāng)應(yīng)用層模塊需要調(diào)用ESB上的服務(wù)時,會首先向該模塊發(fā)出申請。模塊查詢ESB是否存在該服務(wù),以及該服務(wù)運(yùn)行是否正常,然后把查詢的結(jié)果返回給應(yīng)用層模塊。最后應(yīng)用層模塊會根據(jù)該結(jié)果決定是否對服務(wù)發(fā)起http、或是其他協(xié)議的請求。例如前文中Bugzilla提供的getBugById服務(wù),由于該服務(wù)的協(xié)議是http,應(yīng)用層將會對該服務(wù)的地址發(fā)起http請求。在請求中包含有服務(wù)需要的參數(shù)bugId。ESB響應(yīng)請求后,從Bugzilla查找bug數(shù)據(jù),最后把該bug返回給應(yīng)用層。此外,每次部署新工具、服務(wù)成功后,模塊會向應(yīng)用層模塊發(fā)出消息,通知其可以使用這些工具和服務(wù)。

(2) 服務(wù)變更模塊。當(dāng)用戶不再需要某個服務(wù)或是想對服務(wù)做出修改時,該模塊會對保存的服務(wù)信息做出相應(yīng)的變更。如注銷getBugById服務(wù),該服務(wù)的數(shù)據(jù)則會被刪除。同時模塊會定位該服務(wù)所屬的ESB配置文件,在該文件中去除不需要的服務(wù)項(xiàng),最后通知ESB配置模塊,重新部署更新后的ESB配置文件。

5) 可視化模塊

對于用戶來說,手動編寫SDModel仍有一定的難度,因此可以根據(jù)具體集成系統(tǒng)的需求,為用戶提供兩種方式完成注冊:

(1) 對話輸入框的方式,引導(dǎo)用戶填寫注冊信息。

(2) 直接上傳包含有接入工具、服務(wù)信息的SDModel。此后所有的工作由模塊自動完成。該界面將會在下一章的案例分析中給出示例。

3案例分析

3.1軟件開發(fā)可信證據(jù)采集平臺介紹

本文所提出的自動化服務(wù)注冊方法已經(jīng)應(yīng)用在軟件開發(fā)可信證據(jù)采集平臺上。該平臺是一個Web應(yīng)用工具集成系統(tǒng),主要用于將軟件生命周期的相關(guān)工具,如需求管理工具Jira、缺陷管理工具Bugzilla、測試工具TestLink等,集成到同一系統(tǒng)后提供給用戶使用。

在用戶使用的過程中,這些接入的工具將產(chǎn)生許多和軟件生產(chǎn)相關(guān)的數(shù)據(jù)。平臺可以利用這些數(shù)據(jù),按照可信證據(jù)的定義計(jì)算出該軟件的可信度。此外,在工具集成的基礎(chǔ)上,平臺還允許用戶在為本平臺定制的工作流規(guī)則下組合工具所提供的服務(wù)。例如同類工具之間的數(shù)據(jù)傳輸,將Bugzilla中的缺陷數(shù)據(jù)同步到Mantis中。該平臺的簡單架構(gòu)圖如圖3所示。

圖3 采集平臺架構(gòu)

在使用平臺之前,用戶需要在平臺注冊一系列工具和服務(wù)。在使用中,用戶可以選擇從平臺進(jìn)入某個工具操作。也可以利用平臺的工作流系統(tǒng)定制出一套符合自己業(yè)務(wù)需求的流程,如通過項(xiàng)目中需求和測試的差值求得黑盒覆蓋率。最后由工作流引擎調(diào)用ESB上所接入的服務(wù),返回結(jié)果給用戶。在使用平臺前,需要接入軟件生命周期中的各項(xiàng)工具和服務(wù)。傳統(tǒng)的注冊方法需要平臺針對每一個接入的工具、服務(wù)都開發(fā)一套通信組件,這增大了平臺開發(fā)的負(fù)擔(dān)。另一方面,傳統(tǒng)的集成方法不能夠解決集成的工具之間互相的通信問題。例如希望Bugzilla和Jira通信,則需要為兩個工具單獨(dú)的開發(fā)通信組件。那么當(dāng)Bugzilla希望和另外10個工具通信時,開發(fā)工作量和難度都將增加。在引入ESB后,所有工具、服務(wù)間的通信都通過總線來完成,只需要為它們開發(fā)和ESB通信的組件即可,大大節(jié)省了集成的工作量。

這時,本文提出的注冊方法就能夠解決上文所述的集成場景?;谝陨显颍脚_使用了本文所提出的自動化注冊方法,以支持平臺訪問工具,以及工作流引擎調(diào)用服務(wù)的需求。

3.2平臺注冊方法

在該平臺下,用戶可以選擇兩種方式來接入三方工具和服務(wù):一是直接上傳SDModel;二是通過可視化界面的引導(dǎo),填寫信息后,由平臺生成SDModel供自動化注冊方法使用。平臺使用了muleESB,該ESB提供了為接入工具而設(shè)計(jì)的connector機(jī)制。用戶可以將三方工具提供的API封裝為connector,接入到ESB后提供Web服務(wù)。因此當(dāng)用戶需要為平臺接入新工具,且該工具沒有提供現(xiàn)成的服務(wù)時,還需要上傳封裝好的connector。

3.3可視化界面和單點(diǎn)登錄

為了進(jìn)一步降低用戶在接入工具、服務(wù)時的困難,平臺設(shè)計(jì)了一套友好的可視化界面來引導(dǎo)用戶完成注冊工作,如圖4所示。

圖4 服務(wù)注冊界面

用戶在界面上填寫工具、服務(wù)的信息后,平臺會生成SDModel文件,供注冊方法使用。

另一方面,用戶還需要直接在登錄平臺的同時登錄接入的三方工具,因此這里需要一個單點(diǎn)登錄服務(wù)。對于B/S架構(gòu)的工具,當(dāng)用戶登錄時,工具服務(wù)器會生成若干cookie來標(biāo)記用戶的信息,如加密后的用戶名、密碼,以及服務(wù)器sessionId。根據(jù)這些cookie,服務(wù)就能夠判斷用戶是否登錄。為了讓平臺模擬用戶登錄的動作,需要在SDModel的tool-access關(guān)鍵字中添加工具的登錄地址和登錄表單用戶名、密碼的ID,這里的數(shù)據(jù)還是通過param關(guān)鍵字來定義。

此外,平臺和工具的地址通常不在同一個域中,為了能夠讓平臺和工具跨域通信,將所有三方工具通過apache的反向代理設(shè)置在了同一個域下。

3.4定制業(yè)務(wù)流程

當(dāng)平臺接入了服務(wù)后,用戶能夠利用這些服務(wù)定制業(yè)務(wù)流程,并使用jBPM工作流引擎[18]來驅(qū)動業(yè)務(wù)流程的執(zhí)行。為了方便制定過程,平臺提供了一個可以拖拽的可視化界面,如圖5所示。圖中的每一個元素均代表一項(xiàng)接入的服務(wù)或工具,在定制界面下方可設(shè)定三方服務(wù)或者三方工具提供的服務(wù),這里的每一項(xiàng)服務(wù),都由ESB所提供。

圖5 業(yè)務(wù)流程定制

完成流程的定制后,平臺將驗(yàn)證其是否符合執(zhí)行規(guī)范。如測試服務(wù)節(jié)點(diǎn)必須處于需求服務(wù)節(jié)點(diǎn)之后。而后工作流引擎調(diào)用平臺的通信模塊,發(fā)送http或其他請求和ESB進(jìn)行通信,即可運(yùn)行該工作流。

最后,平臺利用自動化注冊方法完成新工具、服務(wù)的接入工作,減少了集成所花費(fèi)的時間,提供了熱部署功能,滿足了應(yīng)用層定制業(yè)務(wù)流程的需求。

4結(jié)語

本文通過分析發(fā)現(xiàn)當(dāng)前服務(wù)集成系統(tǒng)注冊新工具、服務(wù)所存在的幾個問題:1)ESB配置文件較復(fù)雜對用戶不友好;2) 工具、服務(wù)種類眾多,開發(fā)相應(yīng)的集成方法需要大量時間;3) 不支持熱部署導(dǎo)致重新部署系統(tǒng)時用戶無法使用。為了解決這些問題,首先定義了服務(wù)描述模型SDModel,利用該模型,可以較為完整地描述出用戶希望接入服務(wù)或工具的信息。在此基礎(chǔ)上,設(shè)計(jì)了一個基于SDModel的自動化注冊方法。該方法能夠讀取、解析SDModel,并將其轉(zhuǎn)換為對應(yīng)ESB系統(tǒng)的配置文件,通過熱部署的方式使其生效。由于SDModel能夠較為通用表達(dá)服務(wù)、工具的信息,該方法具有一定的普適性。此外,方法提供了錯誤檢測和恢復(fù)機(jī)制,保證了集成系統(tǒng)可以從錯誤狀態(tài)中恢復(fù)。該方法已經(jīng)在軟件開發(fā)可信證據(jù)采集平臺中實(shí)現(xiàn),并取得了良好效果。

本文提出的自動化注冊方法在面對分布式部署的ESB總線時,還有一定的缺陷,不能夠根據(jù)ESB當(dāng)前的負(fù)載,將服務(wù)注冊到空閑的節(jié)點(diǎn)上。因此這是需要進(jìn)一步研究的方向。

參考文獻(xiàn)

[1]PapazoglouM.Service-orientedcomputing:Concepts,characteristicsanddirections[C]//WebInformationSystemsEngineering,2003.WISE2003.ProceedingsoftheFourthInternationalConferenceon.IEEE,2003:3-12.

[2]KrafzigD,BankeK,SlamaD.EnterpriseSOA:service-orientedarchitecturebestpractices[M].PrenticeHallProfessional,2005.

[3]Chappell,David.Enterpriseservicebus[M].O’ReillyMedia,Inc.2004.

[4]TangX,SunS,YuanX,etal.AutomatedWebServiceCompositionSystemonEnterpriseServiceBus[C]//SecureSoftwareIntegrationandReliabilityImprovement,2009:9-13.

[5]LiX,TangX,SongZ,etal.AFlow:AnAutomatedWebServicescompositionsystembasedontheAIplanningandworkflow[C]//ProgressinInformaticsandComputing(PIC),2010IEEEInternationalConferenceon.IEEE,2010:1067-1071.

[6]VrbaP,FuksaM,KlimaM.JADE-JBossESBgateway:Integrationofmulti-agentsystemwithenterpriseservicebus[C]//Systems,ManandCybernetics(SMC),2014IEEEInternationalConferenceon.IEEE,2014:3663-3668.

[7]HübnerJ,StollC.SCENEadmin:Acomponent-basedintegratedmanagementframeworkforwebserviceplatforms[C]//ITinMedicineandEducation(ITME),2011InternationalSymposiumon.Vol,2,IEEE,2011:77-81.

[8]YuH,MaJ,YangX.ResearchonApplicationIntegrationinDigitalCampusBasedonJBossESBPlatform[M].AdvancesinFutureComputerandControlSystems.SpringerBerlinHeidelberg,2012:319-324.

[9]TanW,FanY,ZhouM,etal.Data-drivenservicecompositioninenterpriseSOAsolutions:aPetrinetapproach[J].AutomationScienceandEngineering,IEEETransactionson,2010,7(3):686-694.

[10]YinJ,ChenH,DengS,etal.Adependableesbframeworkforserviceintegration[J].InternetComputing,IEEE,2009,13(2):26-34.

[11] 王路遠(yuǎn).基于ESB的Web服務(wù)注冊和管理的研究與實(shí)現(xiàn)[D].北京郵電大學(xué),2011.

[12] 邊小凡,代艷紅,馬兵會.基于ESB的企業(yè)內(nèi)部構(gòu)件與Web服務(wù)的集成[J].計(jì)算機(jī)工程與設(shè)計(jì),2009(4):918-920.

[13]CurberaF,DuftlerM,KhalafR,etal.UnravelingtheWebservicesweb:anintroductiontoSOAP,WSDL,andUDDI[J].IEEEInternetComputing,2002,6(2):86-93.

[14]WeerawaranaS,CurberaF,LeymannF,etal.Webservicesplatformarchitecture:SOAP,WSDL,WS-policy,WS-addressing,WS-BPEL,WS-reliablemessagingandmore[M].PrenticeHallPTR,2005.

[15]MorganJ,VenkatramanC.Embeddingwebaccessmechanisminanapplianceforuserinterfacefunctionsincludingawebserverandwebbrowser[P].U.S.PatentNo.5,956,487.21Sep.1999.

[16]Java,APIforXMLprocessing(JAXP)[OL].[2006].SunMicrosystems,http://java.sun.com/webservices/jaxp/.

[17]MuleESB[OL].[2014].MuleSoftInc.www.mulesoft.com.

[18]CumberlidgeM.BusinessProcessManagementwithJBossjBPM[M].PacktPublishingLtd,2007.

SERVICE INTEGRATION-ORIENTED AUTOMATIC SERVICE REGISTRATION METHOD

Li SongliZhang XinglongXiao Junchao

(Institute of Software,Chinese Academy of Science,Beijing 100190,China)

AbstractThe goal of service integration is to integrate multiple services into one system in order to implement specific business requirement. In the process of integration, since tools and services usually have different data standards and transfer mechanisms, these lead to the difficulty of integration. To solve the problem, we introduced the enterprise service bus (ESB) to services integration system. Currently the configuration files of ESB system can express some complicated services access scenario. However, according to the difference of services designs and architectures, the services access ways are different as well, they also not support the hot deployment function of the integration system. This paper introduces SDModel, it is a model for describing the information of tools and services. Based on this model, we propose a services integration-oriented automatic services registration method, it can makes use of SDModel, automatically parses the third party services and tools to be accessed to the integration system, and realises the hot deployment for the use in application layer.

KeywordsService integrationEnterprise service busAutomatic registration

收稿日期:2015-01-19。國家自然科學(xué)基金項(xiàng)目(91318301,9121 8302,61432001);國家高技術(shù)研究發(fā)展計(jì)劃項(xiàng)目(2012AA011206)。李松犁,碩士生,主研領(lǐng)域:服務(wù)集成。張型龍,碩士生。肖俊超,副研究員。

中圖分類號TP3

文獻(xiàn)標(biāo)識碼A

DOI:10.3969/j.issn.1000-386x.2016.06.015

猜你喜歡
配置文件部署工具
一種基于Kubernetes的Web應(yīng)用部署與配置系統(tǒng)
晉城:安排部署 統(tǒng)防統(tǒng)治
波比的工具
波比的工具
部署
互不干涉混用Chromium Edge
準(zhǔn)備工具:步驟:
基于Zookeeper的配置管理中心設(shè)計(jì)與實(shí)現(xiàn)
忘記ESXi主機(jī)root密碼怎么辦
為View桌面準(zhǔn)備父虛擬機(jī)