(合肥職業(yè)技術(shù)學(xué)院,安徽 合肥 238000)
Web services可以對(duì)各種異構(gòu)的應(yīng)用系統(tǒng)進(jìn)行整合,實(shí)現(xiàn)互操作。如將公司的客戶、商業(yè)伙伴以及供貨商的應(yīng)用程序進(jìn)行有效整合來完成特定的業(yè)務(wù)。Web Services的工作機(jī)制[1]如圖1所示,服務(wù)提供者通過網(wǎng)絡(luò)向UDDI服務(wù)器注冊(cè)網(wǎng)絡(luò)服務(wù),UDDI服務(wù)器以WSDL文檔格式發(fā)布網(wǎng)絡(luò)服務(wù)的內(nèi)容及網(wǎng)絡(luò)地址,并通過SOAP協(xié)議提供服務(wù)端程序,WSDL描述文件與服務(wù)端的程序所在的地址可由服務(wù)提供者決定。用戶可通過UDDI服務(wù)器查找所需的網(wǎng)絡(luò)服務(wù),從UDDI服務(wù)器所指向的網(wǎng)絡(luò)地址中,取得描述網(wǎng)絡(luò)服務(wù)的WSDL文件以及服務(wù)接口信息,之后便可通過SOAP技術(shù)取得該網(wǎng)絡(luò)服務(wù)。
圖1 Web Services的工作機(jī)制
由于大部份網(wǎng)絡(luò)服務(wù)采用SOAP通信機(jī)制,而在SOAP通信中并沒有提供先后順序的信息。因此網(wǎng)絡(luò)服務(wù)執(zhí)行順序就必須利用工作流程來實(shí)現(xiàn),而流程的構(gòu)建也是在做網(wǎng)絡(luò)服務(wù)組合所必須考慮的。除此之外,在網(wǎng)絡(luò)服務(wù)組合過程中網(wǎng)絡(luò)服務(wù)彼此間需相互操作,服務(wù)之間溝通、傳遞信息都是影響流程運(yùn)作是否順利完成的重要環(huán)節(jié),由于不同的服務(wù)提供者所提供的服務(wù)存在異構(gòu)型,會(huì)導(dǎo)致應(yīng)用程序溝通或信息轉(zhuǎn)換不正確。此外,因?yàn)楦鶕?jù)用戶需求轉(zhuǎn)換產(chǎn)生流程時(shí),可能有多個(gè)流程產(chǎn)生,這些都是網(wǎng)絡(luò)服務(wù)組合機(jī)制要解決的問題。
網(wǎng)絡(luò)服務(wù)組合是指組合一些獨(dú)立存在的網(wǎng)絡(luò)服務(wù)去實(shí)現(xiàn)新功能性的服務(wù)。就目前而言,要求使用者查找最合適的服務(wù)、確認(rèn)數(shù)據(jù)型態(tài)是否一致及請(qǐng)求每一個(gè)服務(wù)來組合成一工作流程或新功能是相當(dāng)復(fù)雜的,需要一種自動(dòng)化的方法來進(jìn)行工作流程的組合[2]。
目前比較流行的網(wǎng)絡(luò)服務(wù)組合規(guī)范[2]如表1所示,主要針對(duì)流程建模是否支持語義、QoS及與WSDL的關(guān)系來做比較??梢钥闯瞿壳熬W(wǎng)絡(luò)服務(wù)組合規(guī)范大部分都不支持QoS及語義描述。而QoS提供相關(guān)信息來表示網(wǎng)絡(luò)服務(wù)的質(zhì)量,因此單以目前的標(biāo)準(zhǔn)語法無法了解這些非功能性的數(shù)據(jù)。需考慮如何將QoS信息記錄下來以達(dá)到較好的推薦效果。
表1 網(wǎng)絡(luò)服務(wù)組合規(guī)范比較表
網(wǎng)絡(luò)服務(wù)組合可分為手動(dòng)組合、半自動(dòng)組合、自動(dòng)組合三種[3]。所謂的手動(dòng)組合架構(gòu),指其用戶可以通過圖形化接口或文本編輯器產(chǎn)生工作流程描述,此描述已決定要執(zhí)行的服務(wù),最后將產(chǎn)生的工作流程傳送到工作流執(zhí)行引擎執(zhí)行;半自動(dòng)組合技術(shù)主要在服務(wù)選擇時(shí)提供語義建議,而使用者仍需從建議的服務(wù)列表中選擇最適合的服務(wù),并根據(jù)自己業(yè)務(wù)需求,對(duì)服務(wù)進(jìn)行編排;自動(dòng)組合技術(shù)指利用人工智能規(guī)劃或類似技術(shù),達(dá)到整個(gè)流程組合的自動(dòng)化。表2匯集了目前相關(guān)網(wǎng)絡(luò)服務(wù)組合系統(tǒng)架構(gòu)待解決的問題。針對(duì)這些缺陷,提出一種更實(shí)用、效率更好的網(wǎng)絡(luò)服務(wù)組合系統(tǒng)架構(gòu)。
表2 常用網(wǎng)絡(luò)服務(wù)組合架構(gòu)問題匯總表
構(gòu)建一種服務(wù)組合機(jī)制,將分布在不同地理位置的服務(wù)按照用戶需求進(jìn)行組合。主要從三個(gè)方面進(jìn)行探索,一是利用語義分類技術(shù),當(dāng)網(wǎng)絡(luò)服務(wù)提供者提供服務(wù)時(shí),系統(tǒng)針對(duì)網(wǎng)絡(luò)服務(wù)描述作為分類基礎(chǔ),將網(wǎng)絡(luò)服務(wù)依功能分屬多個(gè)類別,以利于查找服務(wù)時(shí)加速找到相似功能的服務(wù)。二是提供一個(gè)圖形化的接口供流程提供者構(gòu)建工作流程,并且將工作流程轉(zhuǎn)換成法則形式存于數(shù)據(jù)庫中,以便于進(jìn)行自動(dòng)化網(wǎng)絡(luò)服務(wù)組合時(shí),能以推論方式自動(dòng)產(chǎn)生符合用戶需求的流程。最后建構(gòu)一種自動(dòng)化網(wǎng)絡(luò)服務(wù)組合架構(gòu),以尋找符合服務(wù)流程的網(wǎng)絡(luò)服務(wù),并協(xié)助服務(wù)間的相互溝通,解決因網(wǎng)絡(luò)服務(wù)快速增加而導(dǎo)致服務(wù)查找選擇的問題,圖2所示。
為滿足用戶需求,結(jié)合服務(wù)流程,自動(dòng)選擇合適服務(wù)提供給用戶,提高網(wǎng)絡(luò)服務(wù)重用性,設(shè)計(jì)一種架構(gòu)模型如圖3所示。架構(gòu)模型包含了三個(gè)角色,分別為流程需求者、服務(wù)提供者、流程構(gòu)建者,其說明定義如下:
圖2 自動(dòng)化網(wǎng)絡(luò)服務(wù)組合圖
(1)流程需求者:流程需求者依據(jù)其不同需求,直接通過以組件服務(wù)技術(shù)為基礎(chǔ)的平臺(tái),得到動(dòng)態(tài)組合的服務(wù)流程,以完成其需求目的。
(2)服務(wù)提供者:服務(wù)提供者將特定應(yīng)用程序,利用WSDL加以描述,然后發(fā)布到UDDI服務(wù)器上,服務(wù)請(qǐng)求者可通過網(wǎng)絡(luò)查找到該服務(wù)。
(3)流程構(gòu)建者:流程構(gòu)建者針對(duì)特定領(lǐng)域,建構(gòu)該領(lǐng)域的服務(wù)操作或計(jì)劃活動(dòng)的執(zhí)行順序,以利于之后進(jìn)行服務(wù)流程建構(gòu)使用。
此外通過代理機(jī)制與數(shù)據(jù)庫、工作流程來與UDDI相互運(yùn)作進(jìn)而得到一種動(dòng)態(tài)組合的流程服務(wù),以完成用戶需求,此代理機(jī)制包含六個(gè)模塊[4],分別定義及說明如下:
圖3 自動(dòng)化網(wǎng)絡(luò)服務(wù)組合架構(gòu)模型
(1)分類分析器:當(dāng)服務(wù)提供者將特定應(yīng)用程序發(fā)布到UDDI服務(wù)器時(shí),分類分析器分析服務(wù)提供者所提供的網(wǎng)絡(luò)服務(wù)描述,消除不具信息價(jià)值的常用字詞,移除重復(fù)的字詞以取得服務(wù)功能的字詞,接著將取得的字詞采用詞干提取算法作詞性正規(guī)化,并利用WordNet擴(kuò)張字義以取得功能性字詞,來將網(wǎng)絡(luò)服務(wù)加以分類,以利于在進(jìn)行網(wǎng)絡(luò)服務(wù)查找時(shí),過濾功能不相似的服務(wù),加速查找效率及正確性。
(2)規(guī)則轉(zhuǎn)換器:流程構(gòu)建者通過瀏覽器構(gòu)建流程時(shí),會(huì)提供圖形化接口,以便流程構(gòu)建者建構(gòu)流程且利用規(guī)則轉(zhuǎn)換器機(jī)制將流程轉(zhuǎn)換成法則結(jié)構(gòu),并利用網(wǎng)絡(luò)服務(wù)組合規(guī)范描述特定領(lǐng)域服務(wù)操作或計(jì)劃活動(dòng)的執(zhí)行順序,以利于之后進(jìn)行服務(wù)流程建構(gòu)或執(zhí)行使用。
(3)請(qǐng)求轉(zhuǎn)換器:將經(jīng)由瀏覽器接收到的服務(wù)功能需求轉(zhuǎn)置成WSDL描述格式。
(4)流程控制器:將請(qǐng)求轉(zhuǎn)換器所產(chǎn)生的WSDL描述轉(zhuǎn)換成網(wǎng)絡(luò)服務(wù)流程,用以表示網(wǎng)絡(luò)服務(wù)執(zhí)行次序的控制,其分為抽象web流程和具體web流程兩種,差異在于具體web流程明確指出所鏈接的網(wǎng)絡(luò)服務(wù)。
(5)流程選擇器:主要功能是從多個(gè)具有相同功能的具體web流程中選擇最合適的流程。
(6)執(zhí)行控制器:其包含兩部分,分別為執(zhí)行代碼及故障處理機(jī)制。執(zhí)行代碼主要將系統(tǒng)所產(chǎn)生的具體web流程轉(zhuǎn)置成網(wǎng)絡(luò)服務(wù)組合規(guī)范的文件,利用工作流程引擎直接解譯并執(zhí)行此文件,而故障處理機(jī)制主要在當(dāng)應(yīng)用程序溝通或信息轉(zhuǎn)換上的不正確而導(dǎo)致失敗或提供服務(wù)的鏈接無效時(shí),提供一種容錯(cuò)機(jī)制自動(dòng)選擇合適的網(wǎng)絡(luò)服務(wù)替代。
接下來,從流程需求者的角度來描述其本架構(gòu)模型如何執(zhí)行運(yùn)作,如圖4所示。
圖4 自動(dòng)化網(wǎng)絡(luò)服務(wù)組合運(yùn)作架構(gòu)
在系統(tǒng)運(yùn)作部分,將代理機(jī)制中的請(qǐng)求轉(zhuǎn)換器、流程控制器、流程選擇器、執(zhí)行控制器等四個(gè)模塊劃分到后四個(gè)階段中。網(wǎng)絡(luò)服務(wù)組合生命周期五階段如下所示:
(1)規(guī)劃階段:用戶可通過瀏覽器選擇流程所需的服務(wù)操作以及相關(guān)信息數(shù)據(jù)。
(2)定義階段:利用請(qǐng)求轉(zhuǎn)換器功能模塊將流程需求者所決定的服務(wù)操作及提供的相關(guān)信息轉(zhuǎn)置成WSDL格式的需求規(guī)格。
(3)計(jì)劃階段:利用流程控制器將需求規(guī)格,經(jīng)規(guī)則庫及抽象 web流程數(shù)據(jù)庫自動(dòng)產(chǎn)生抽象服務(wù)組合流程,建構(gòu)抽象服務(wù)組合流程如圖5所示,首先檢查是否有相同服務(wù)流程已建立,若有則直接重用該服務(wù)流程,否則以法則進(jìn)行推論得到流程。但可能因法則庫中的法則建立不足,以致不能產(chǎn)生滿足用戶需求的服務(wù)流程,此時(shí)采用回溯算法,根據(jù)使用者提供的輸入及輸出結(jié)果構(gòu)建服務(wù)流程。此方法可避免用戶設(shè)計(jì)無效的流程也可節(jié)省流程設(shè)計(jì)時(shí)間。無效工作流程包含設(shè)計(jì)上的錯(cuò)誤,例如流程沒有終止點(diǎn)或死結(jié)等情況。
(4)構(gòu)建階段:主要在產(chǎn)生一個(gè)具體且不含糊的服務(wù)組合流程,明確的指出所要鏈接的服務(wù)。此階段又細(xì)分為匹配階段和推薦階段兩階段如圖6,其說明如下:
匹配階段:主要在查找符合抽象服務(wù)組合流程中每一服務(wù)操作或計(jì)劃活動(dòng)的服務(wù)。由于使用者對(duì)于服務(wù)的偏好如“使用服務(wù)費(fèi)用”、“服務(wù)執(zhí)行響應(yīng)時(shí)間”因人而異,所以將針對(duì)服務(wù)偏好相同且已有具體服務(wù)流程存在具體web流程數(shù)據(jù)庫中者直接重用該流程,其余則利用組合機(jī)制構(gòu)建具體服務(wù)流程組合。
圖5 建構(gòu)抽象服務(wù)組合流程
推薦階段:主要利用流程選擇器模塊提供一種機(jī)制,針對(duì)匹配階段所產(chǎn)生的可行的具體服務(wù)流程組合,選擇一種最合適的流程組合,進(jìn)而供運(yùn)行時(shí)間執(zhí)行。
圖6 自動(dòng)化網(wǎng)絡(luò)服務(wù)組合運(yùn)作架構(gòu)─建構(gòu)階段
(5)執(zhí)行階段:將具體服務(wù)流程組合轉(zhuǎn)置成網(wǎng)絡(luò)服務(wù)組合規(guī)范的文件,這里采用BPEL4WS規(guī)范描述流程并利用執(zhí)行控制器來執(zhí)行流程。
工作流程是指企業(yè)流程自動(dòng)化,根據(jù)程序規(guī)則,傳遞參與者之間的文件、信息及工作,使其順利完成。當(dāng)工作流程系統(tǒng)要求執(zhí)行某一工作時(shí),其須包含如工作名字、參數(shù)、相關(guān)數(shù)據(jù)及和執(zhí)行的應(yīng)用程序,因?yàn)榫W(wǎng)絡(luò)服務(wù)也包含相同的信息,因此網(wǎng)絡(luò)流程可視為工作流程,而流程內(nèi)的工作可以用網(wǎng)絡(luò)服務(wù)替代。這里描述的工作流程是由tasks、networks及transitions所組成的。tasks以圓形表示,其可視為一個(gè)網(wǎng)絡(luò)服務(wù),為工作流程中的基本元素;networks以圓矩形表示,其表示一子工作流程;transitions以箭頭表示,決定下一個(gè)所要啟動(dòng)的網(wǎng)絡(luò)服務(wù),控制整個(gè)工作流程執(zhí)行順序[5]。
組合機(jī)制主要以抽象服務(wù)組合流程為基礎(chǔ),通過UDDI找尋符合的網(wǎng)絡(luò)服務(wù)并且將其串連起來,所以,此機(jī)制分成兩大部分,第一部分主要針對(duì)流程內(nèi)的工作與網(wǎng)絡(luò)服務(wù)進(jìn)行比對(duì),而另一部分則根據(jù)網(wǎng)絡(luò)服務(wù)與網(wǎng)絡(luò)服務(wù)的可組合性來探討。
就網(wǎng)絡(luò)服務(wù)基礎(chǔ)架構(gòu)而言,可采用多維方法來選擇網(wǎng)絡(luò)服務(wù),利用句法、語義及網(wǎng)絡(luò)服務(wù)質(zhì)量等三方面來比對(duì)流程內(nèi)的工作與具有相同功能的服務(wù)相似度,以增加其正確性。
(1)句法相似度
即使描述相同網(wǎng)絡(luò)服務(wù),用文字描述就可能產(chǎn)生多種結(jié)果,所以需要一種相似度準(zhǔn)則計(jì)算句法相似度,主要采用q-grams來比對(duì)服務(wù)名稱與流程工作名稱的相似度,而不考慮語義相關(guān)信息。
(2)語義相似度
在語義相似度部份,開發(fā)一個(gè)機(jī)制能自動(dòng)地計(jì)算網(wǎng)絡(luò)服務(wù)與流程工作的相似度,采用描述一般性字詞的通用知識(shí)本體,利用本體來描述網(wǎng)絡(luò)服務(wù)規(guī)格字詞的模糊,可解決服務(wù)提供者與服務(wù)使用者語義之間落差所引起查找效率不佳或精確度的問題。在語義相似度計(jì)算上,建立一比對(duì)方法。比對(duì)流程工作與網(wǎng)絡(luò)服務(wù)名稱、input、output、input constraints及output constraints以期達(dá)到最大的整合效果。
(3)網(wǎng)絡(luò)服務(wù)質(zhì)量相似度
由于不同QoS屬性其值的高低影響整個(gè)QoS評(píng)估結(jié)果,所以針對(duì)不同性質(zhì)的QoS采用不同計(jì)算方式。使用時(shí)間、成本、可靠性等QoS屬性作為評(píng)估項(xiàng)目并假設(shè)服務(wù)提供者及服務(wù)需求者皆提供相關(guān)QoS屬性值。在計(jì)算網(wǎng)絡(luò)服務(wù)質(zhì)量相似度時(shí)只針對(duì)經(jīng)過句法相似度及語義相似度計(jì)算后所得的相似功能的網(wǎng)絡(luò)服務(wù)來加以計(jì)算。
在定義一個(gè)合成服務(wù)時(shí),分析該合成服務(wù)中部分服務(wù)是否可組合,即是否可將多個(gè)網(wǎng)絡(luò)服務(wù)進(jìn)行組合產(chǎn)生新的服務(wù)功能。所以除了進(jìn)行相似度評(píng)估,也考慮網(wǎng)絡(luò)服務(wù)彼此是否能互相溝通組合。網(wǎng)絡(luò)服務(wù)間的組合將比對(duì)網(wǎng)絡(luò)服務(wù)的相關(guān)參數(shù)以及服務(wù)連接。
針對(duì)目前網(wǎng)絡(luò)服務(wù)動(dòng)態(tài)流程整合所面臨的問題,提出一種服務(wù)組合系統(tǒng)架構(gòu),使用匹配功能選取最合適的網(wǎng)絡(luò)服務(wù)并通過服務(wù)功能分類加速網(wǎng)絡(luò)服務(wù)查找的效率及正確性。這種自動(dòng)化網(wǎng)絡(luò)服務(wù)組合系統(tǒng)將大大地強(qiáng)化網(wǎng)絡(luò)服務(wù)組合的管理,依據(jù)儲(chǔ)存的抽象化程度不同,對(duì)服務(wù)流程進(jìn)行重用,可降低服務(wù)流程開發(fā)的時(shí)間,達(dá)到快速整合及自動(dòng)整合的目的。