《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動(dòng)態(tài) > 基于工作流的Web服務(wù)組合系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

基于工作流的Web服務(wù)組合系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2009-05-25
作者:王一飛,吳素芹,王 榕

??? 摘 要:單個(gè)Web服務(wù)難以滿足實(shí)際應(yīng)用的需求,為了解決互聯(lián)網(wǎng)應(yīng)用的集成和協(xié)作問題,需要把獨(dú)立的Web服務(wù)組合起來以實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯功能。通過分析工作流與Web服務(wù)流程執(zhí)行的相同點(diǎn),設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于工作流的Web服務(wù)組合系統(tǒng)(WSCS)。該系統(tǒng)能在自治的、異構(gòu)的、動(dòng)態(tài)的環(huán)境下靈活、高效地組合Web服務(wù)。整個(gè)系統(tǒng)主要包括三個(gè)模塊:組合流程建模模塊、服務(wù)選取模塊、流程執(zhí)行模塊。
??? 關(guān)鍵詞:服務(wù)組合;Web服務(wù);工作流

?

??? 近年來,基于XML的Web服務(wù)技術(shù)迅速發(fā)展,為互聯(lián)網(wǎng)應(yīng)用提供了一種共享數(shù)據(jù)的有效手段。Web服務(wù)的高效執(zhí)行方式、Web服務(wù)與其他成熟技術(shù)的有機(jī)結(jié)合以及Web服務(wù)的組合是解決現(xiàn)實(shí)應(yīng)用問題的重要技術(shù)。
??? Web服務(wù)是一種自包含、自描述、模塊化的程序,它吸收了分布式計(jì)算、Grid計(jì)算和XML等各種技術(shù)的優(yōu)點(diǎn),解決了異構(gòu)分布式計(jì)算以及代碼與數(shù)據(jù)重用等問題,具有高度的互操作性、跨平臺(tái)性和松耦合性,引起了世界范圍內(nèi)學(xué)術(shù)界和工業(yè)界的極大興趣[1-2]。
??? 為滿足Web服務(wù)的技術(shù)需求,W3C等國(guó)際標(biāo)準(zhǔn)組織制定了一系列Web服務(wù)規(guī)范,如統(tǒng)一描述發(fā)現(xiàn)集成UDDI(Universal Description,Discovery and Integration),簡(jiǎn)單對(duì)象訪問協(xié)議SOAP(Simple Object Access Protocol),Web服務(wù)描述語言WSDL(Web Service Description Language)等等,都是用于描述、發(fā)布、發(fā)現(xiàn)和調(diào)用Web服務(wù)的,這些規(guī)范共同構(gòu)成了Web服務(wù)的技術(shù)體系[3]。
??? Web服務(wù)所執(zhí)行的功能可以是從簡(jiǎn)單的請(qǐng)求到復(fù)雜的商業(yè)過程中的任何事,然而單個(gè)Web服務(wù)的功能有限,難以滿足實(shí)際應(yīng)用中的多種多樣的需求,因此為了更加充分地利用共享的Web服務(wù),有必要將共享的Web服務(wù)組合起來,提供功能更為強(qiáng)大的服務(wù)。Web服務(wù)組合是個(gè)非常復(fù)雜的問題[4-7],它涉及到Web服務(wù)的描述、Web服務(wù)的發(fā)現(xiàn)[8]、Web服務(wù)的選擇[9]、Web服務(wù)的匹配、Web服務(wù)的調(diào)度[10-11]、服務(wù)質(zhì)量(QoS)[12-13]等一系列問題。
??? 本文通過參考傳統(tǒng)工作流的相關(guān)技術(shù),基于Web服務(wù)分布式計(jì)算技術(shù)設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)可擴(kuò)展的Web服務(wù)組合系統(tǒng)(簡(jiǎn)稱WSCS),為Web服務(wù)組合提供了一個(gè)運(yùn)行、監(jiān)控環(huán)境,能夠很好地解決Web服務(wù)之間的集成和協(xié)作問題。
1 總體設(shè)計(jì)
??? WSCS體系結(jié)構(gòu)采用面向服務(wù)的體系結(jié)構(gòu),它所有的主要組成部件均實(shí)現(xiàn)為Web服務(wù)的形式。系統(tǒng)最終向用戶提供圖形用戶界面的建模工具,用戶通過建模工具定義流程模型和模型中所涉及到的Web服務(wù)(可能是一個(gè)簡(jiǎn)單的Web服務(wù),也可能為一個(gè)復(fù)雜的組合服務(wù)),并形成一個(gè)新的Web服務(wù),用于客戶的應(yīng)用程序中,以滿足客戶的需求。
??? WSCS總體設(shè)計(jì)流程如圖1所示,首先用戶建模,用戶通過圖形化界面進(jìn)行建模,將建模后的組合流程傳給服務(wù)選取模塊;其次服務(wù)選取,查找業(yè)務(wù)流程中所要用到Web服務(wù),它們可以在UDDI中查找,也可以在服務(wù)社區(qū)中進(jìn)行查找。在Web 服務(wù)的標(biāo)準(zhǔn)體系中,UDDI是一套基于Web的、分布式的、為Web 服務(wù)提供信息中心的實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)范,同時(shí)也包含一組使企業(yè)能夠?qū)⒆陨鞼eb 服務(wù)注冊(cè),以使客戶能夠發(fā)現(xiàn);再次將模型中每個(gè)業(yè)務(wù)活動(dòng)同具體的業(yè)務(wù)應(yīng)用進(jìn)行綁定,獲得Web服務(wù)的本地接口,根據(jù)用戶的流程和選擇的服務(wù)進(jìn)行服務(wù)調(diào)用;第四:調(diào)用Web服務(wù),系統(tǒng)訪問Web 服務(wù),客戶能夠找出關(guān)于WSDL和它要調(diào)用的服務(wù)信息,使用ServiceFactory類來創(chuàng)建服務(wù)。JAX-RPC ServiceFactory獲得JAX-RPC服務(wù),它與廠商無關(guān),能夠編寫可移植代碼。根據(jù)WSDL2Java生成的客戶端構(gòu)件獲得服務(wù)的一個(gè)存根,最后在該存根上調(diào)用Web 服務(wù)總的操作;最后服務(wù)執(zhí)行模塊將執(zhí)行的結(jié)果返回給用戶,并用XML文件將其保存。

?

?

2 WSCS中各個(gè)模塊的設(shè)計(jì)
2.1 組合流程建模模塊

??? 組合流程建模模塊為Web服務(wù)組合系統(tǒng)對(duì)外提供了圖形化用戶界面,它可幫助用戶完成整個(gè)業(yè)務(wù)流程的設(shè)計(jì),并動(dòng)態(tài)生成服務(wù)選取模塊所需的組合Web服務(wù)流程的描述文檔。通過圖形化建模與用戶進(jìn)行交互,組合流程建模模塊提供了一套簡(jiǎn)單并有效的操作方法,使得用戶可以根據(jù)自身的需求設(shè)計(jì)個(gè)性化的Web服務(wù)組合流程模型。
??? 組合流程建模模塊的運(yùn)行流程:首先用戶利用圖形化模型設(shè)計(jì)器設(shè)計(jì)流程,設(shè)置流程執(zhí)行的順序;其次流程執(zhí)行順序設(shè)計(jì)好后,用戶為流程中各圖元,尤其是節(jié)點(diǎn)配置相關(guān)屬性,設(shè)置合適的約束條件;再次保存設(shè)計(jì)流程的組合文檔和圖形文檔;最后如果需要對(duì)流程進(jìn)行修改,則從文件夾中重新讀取相關(guān)文檔,來生成可視化信息,然后重復(fù)進(jìn)行,直到修改完畢并存檔。
??? 當(dāng)滿足用戶需求的業(yè)務(wù)流程被設(shè)計(jì)好以后,組合系統(tǒng)將會(huì)生成一個(gè)對(duì)這個(gè)業(yè)務(wù)流程進(jìn)行詳細(xì)描述的XML文檔,以提交給Web服務(wù)動(dòng)態(tài)選取模塊和流程執(zhí)行模塊使用。組合Web服務(wù)模型文檔描述了組合整個(gè)流程中各個(gè)節(jié)點(diǎn)在流程中的約束關(guān)系,圖形文檔描述了流程中各圖元的位置。
??? 組合流程建模模塊在整個(gè)系統(tǒng)中是一個(gè)重要的模塊,下面討論模塊的內(nèi)部功能結(jié)構(gòu),具體如圖2所示。

?

?

??? (1)組合服務(wù)模型設(shè)計(jì)中提供建模所需的各種圖元(節(jié)點(diǎn)和弧)的繪制,以實(shí)現(xiàn)業(yè)務(wù)流程模型的圖形化界面,設(shè)計(jì)者可以方便地對(duì)圖元進(jìn)行拖放、選取、刪除等可視化操作。用戶可以通過拖拉(Drag-Drop)方式定義新的流程或者修改已有的業(yè)務(wù)流程。
??? (2)圖元屬性設(shè)置中,系統(tǒng)對(duì)流程中各圖元的屬性進(jìn)行設(shè)置。
??? (3)模型文檔存儲(chǔ)、建模完成后,要對(duì)生成的組合服務(wù)模型進(jìn)行保存,生成相應(yīng)的文檔。該文檔以XML形式描述組合服務(wù)模型,要與組合模型進(jìn)行同步更新(如用戶對(duì)該文件的修改、讀取等操作)。
??? (4)組合服務(wù)模型表示中包括文檔解析,它可以從保存的組合流程圖形文檔和Web服務(wù)組合文檔中提取信息,再次把流程圖形化地表示出來。
2.2 服務(wù)選取模塊
??? 服務(wù)選取模塊的主要功能是根據(jù)設(shè)計(jì)的組合流程,動(dòng)態(tài)地選取滿足約束條件,并且服務(wù)質(zhì)量最優(yōu)的服務(wù)。即在整個(gè)流程投入運(yùn)行前,根據(jù)流程設(shè)計(jì)時(shí)用戶的需求,為每個(gè)活動(dòng)節(jié)點(diǎn)選擇合適的、可用的Web服務(wù),生成可執(zhí)行的Web服務(wù)序列。
??? Web服務(wù)的描述是發(fā)現(xiàn)和使用該服務(wù)的基礎(chǔ),它需要能夠被人和機(jī)器理解。服務(wù)描述文檔中應(yīng)包含功能性和非功能性需求(如響應(yīng)時(shí)間,費(fèi)用,可靠性,可用性等)信息,目前Web服務(wù)的描述采用WSDL。
??? 查找選取流程中所要用到的Web服務(wù),可以從UDDI中進(jìn)行查找,在Web服務(wù)標(biāo)準(zhǔn)體系中,UDDI是一套基于Web的、分布式的、為Web服務(wù)提供的信息注冊(cè)中心的實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)范,也可以從Web服務(wù)社區(qū)中查找。
??? Web服務(wù)社區(qū)是根據(jù)服務(wù)功能分類的UDDI,在服務(wù)選取模塊中起著重要的作用,它把功能相同或相似的服務(wù)聚集在一起,這樣服務(wù)選取就可以方便地到各服務(wù)社區(qū)中選取需要的服務(wù),另外由于服務(wù)社區(qū)提供多個(gè)候選服務(wù),服務(wù)選取就可以用上一章討論的算法,選擇服務(wù)質(zhì)量?jī)?yōu)的服務(wù)。系統(tǒng)到各服務(wù)社區(qū)中選取滿足用戶需求的服務(wù),Web服務(wù)發(fā)布在服務(wù)社區(qū)中,各個(gè)服務(wù)社區(qū)包含服務(wù)的描述文檔和綁定地址。
??? Web服務(wù)選取模塊主要根據(jù)建模傳過來的組合模型描述文檔,分析其中的執(zhí)行順序和約束條件,然后采用Bellman-Ford算法依據(jù)QoS最優(yōu)選出一組服務(wù)。服務(wù)選取模塊主要結(jié)構(gòu)如圖3所示,流程如下:

?


??? (1)文檔解析器解析建模系統(tǒng)傳過來的組合服務(wù)模型文檔。
??? (2)服務(wù)選取接收到解析后的文檔按一定規(guī)則調(diào)用UDDI和服務(wù)社區(qū)中的查詢接口返回的符合要求的服務(wù)集,從全局優(yōu)化的角度采用Bellman-Ford算法在服務(wù)社區(qū)中找到一組最優(yōu)服務(wù)。
??? (3)服務(wù)選取模塊選取服務(wù)后,把節(jié)點(diǎn)與服務(wù)的地址相綁定,然后傳給服務(wù)執(zhí)行模塊。
2.3 流程執(zhí)行模塊
??? 流程執(zhí)行模塊把流程節(jié)點(diǎn)與具體的Web服務(wù)相綁定,然后按照流程進(jìn)行服務(wù)調(diào)用,當(dāng)組合Web服務(wù)的條件滿足時(shí),完成對(duì)服務(wù)的調(diào)度和執(zhí)行,實(shí)現(xiàn)組合Web 服務(wù)的功能。具體的運(yùn)行工作主要是組合Web服務(wù)的調(diào)用,并維護(hù)其整個(gè)生命周期(包括創(chuàng)建、活動(dòng)、出錯(cuò)、結(jié)束等)。
??? Web服務(wù)組合流程在真正的投入運(yùn)行之前,首先要進(jìn)行服務(wù)的選取,為每個(gè)活動(dòng)節(jié)點(diǎn)選擇一個(gè)最佳的Web服務(wù),這一功能由服務(wù)選取模塊來實(shí)現(xiàn)。服務(wù)選取結(jié)束后,返回給流程執(zhí)行模塊一個(gè)用XML語言描述的組合流程文檔。
??? 執(zhí)行流程的約束是對(duì)Web服務(wù)組合的整體限定,主要是對(duì)服務(wù)質(zhì)量(QoS)的約束,對(duì)QoS的約束是指對(duì)Web服務(wù)組合整體性能的限定(如對(duì)Web服務(wù)組合的可用性、可靠性等性能的約束)。對(duì)Web服務(wù)組合QoS的約束直接影響了Web服務(wù)的選取。在選取Web服務(wù)時(shí),既要滿足對(duì)單個(gè)Web服務(wù)QoS的約束,也要考慮到對(duì)整個(gè)Web服務(wù)組合QoS的約束。
??? 組合流程執(zhí)行模塊的主要功能是:解釋流程定義、串行化流程、執(zhí)行Web服務(wù)的調(diào)用,主要功能模塊如圖4所示:

?

?

??? 文檔解析器:從組合流程中選出所要執(zhí)行的流程文檔,文檔解析器首先分析該文檔所描述的業(yè)務(wù)流程所代表的含義,各個(gè)服務(wù)的具體綁定地址,返回給服務(wù)調(diào)用并進(jìn)而完成流程的實(shí)例化。
??? 服務(wù)調(diào)用:一個(gè)流程要投入運(yùn)行必須要有一個(gè)先后的順序,在流程串行化時(shí)按照業(yè)務(wù)邏輯和一定的策略把一個(gè)流程串行化為Web服務(wù)調(diào)用序列,然后按照流程并行、串行、同步等待地調(diào)用各服務(wù)。
??? 執(zhí)行日志:存放執(zhí)行過程中調(diào)用各個(gè)服務(wù)的具體信息,如果系統(tǒng)出錯(cuò)可以通過查看執(zhí)行日志來幫助恢復(fù)系統(tǒng)。
??? 異常處理器:對(duì)于系統(tǒng)出現(xiàn)的故障,異常處理模塊提供恢復(fù)處理手段。流程的執(zhí)行可能會(huì)遇到各種各樣的特殊情況發(fā)生(如網(wǎng)絡(luò)超時(shí)、服務(wù)不可用),而這些變化在流程設(shè)計(jì)時(shí)是無法預(yù)見的。
??? 組合流程執(zhí)行模塊是整個(gè)運(yùn)行系統(tǒng)的核心,它一方面為不同的SOAP引擎提供相應(yīng)的調(diào)用接口;另一方面為不同的Web服務(wù)組合提供一個(gè)統(tǒng)一的運(yùn)行環(huán)境;還為不同的Web服務(wù)的實(shí)現(xiàn)方式提供了統(tǒng)一的調(diào)用方式。
3 Web服務(wù)組合系統(tǒng)的實(shí)現(xiàn)
??? 目前,工程上科學(xué)計(jì)算的重要性顯得越來越明顯,大量的科學(xué)計(jì)算是普通機(jī)根本無法完成的,只有尋求大型機(jī)去解決。同時(shí),大型機(jī)的用戶也總會(huì)有時(shí)間給其他用戶提供服務(wù),以使大型機(jī)充分地被利用。如何才能更好地發(fā)揮大型機(jī)的效率,使普通的用戶也可以用大型機(jī)進(jìn)行復(fù)雜的科學(xué)計(jì)算?可以把大型機(jī)上的科學(xué)計(jì)算封裝成Web服務(wù)的形式,發(fā)布在Web上,這樣用戶可以方面地調(diào)用,既發(fā)揮了大型機(jī)的作用,又使普通機(jī)用戶受益。
??? 本文假設(shè)一個(gè)工程需要一個(gè)復(fù)雜的科學(xué)計(jì)算,它由下列一些科學(xué)計(jì)算組成:極限計(jì)算(limit calculus)、微分方程計(jì)算(differential equation calculus)、級(jí)數(shù)計(jì)算(series calculus)、矩陣計(jì)算(matrix calculus)。整個(gè)工程需要這些科學(xué)計(jì)算的組合,先進(jìn)行極限計(jì)算,把結(jié)果傳給下面微分方程計(jì)算和級(jí)數(shù)計(jì)算,然后再執(zhí)行矩陣計(jì)算。把這4種計(jì)算封裝成Web服務(wù),現(xiàn)在的問題就是要對(duì)基本服務(wù)進(jìn)行組合。
??? WSCS先對(duì)組合服務(wù)進(jìn)行建模,圖形用戶界面的建模工具對(duì)組合服務(wù)進(jìn)行建模,建立基本服務(wù)的流程,特別的是一個(gè)同步節(jié)點(diǎn),它要等待前面所有服務(wù)的結(jié)果都完成才進(jìn)行下一個(gè)服務(wù)的執(zhí)行,如圖5所示。服務(wù)組合模型建好后,Web服務(wù)組合系統(tǒng)自動(dòng)把組合模型保存為XML文檔,以便服務(wù)的調(diào)用執(zhí)行。文檔解析器就是用來保存和解析組合模型文檔。

?

?

??? 在上面的文檔中包含了需要的各個(gè)基本服務(wù)以及各服務(wù)之間的執(zhí)行流程。系統(tǒng)還提供了另外一個(gè)XML文檔,它用來保存各個(gè)服務(wù)節(jié)點(diǎn)在圖形用戶界面中的位置,文檔解析器會(huì)根據(jù)XML文檔中信息,還原圖形化流程,以便于以后服務(wù)流程的修改。
??? 本文通過研究Web服務(wù)組合與工作流的異同點(diǎn),借鑒工作流的參考模型及其體系結(jié)構(gòu)設(shè)計(jì)了一個(gè)層次化的、統(tǒng)一的Web服務(wù)組合系統(tǒng),為Web服務(wù)的集成和協(xié)作提供了有力的支持。同時(shí)對(duì)Web組合系統(tǒng)的各個(gè)子模塊進(jìn)行設(shè)計(jì),最后給出了Web服務(wù)組合系統(tǒng)(WSCS)的原型,并且用了科學(xué)計(jì)算服務(wù)進(jìn)行了Web服務(wù)組合。
??? Web服務(wù)組合系統(tǒng)(WSCS)也存在一些不足之處,它首先沒有為流程中的事務(wù)、安全等其他非功能特性提供支持,也沒有支持靈活的異常處理機(jī)制,這在一定程度上限定了組合服務(wù)的能力;其次沒有提供一個(gè)Web服務(wù)的性能評(píng)估和性能預(yù)測(cè)模型,尚不能根據(jù)單個(gè)服務(wù)節(jié)點(diǎn)的執(zhí)行效率預(yù)測(cè)組合后的服務(wù)執(zhí)行效率,這將是筆者下一步的研究工作。
參考文獻(xiàn)
[1]?岳昆,王曉玲,周傲英. Web服務(wù)核心支撐技術(shù):研究綜述[J].軟件學(xué)報(bào),2004, 15(3): 428-442.
[2]?李曼,王大治,杜小勇,等. 基于領(lǐng)域本體的Web服務(wù)動(dòng)態(tài)組合[J].計(jì)算機(jī)學(xué)報(bào),2005,28(4):644-650.
[3]?DAVIES N J,F(xiàn)ENSEL D ,RICHARDSON M. The Future of Web Services[J].BT Technology Journal, 2004, 22(1): 118-130.
[4] ?MILANOVIC N, MIROSLAW M. Current Solutions for Web Service Composition[J].IEEE Internet Computing, 2004, 26(5):51-59.
[5]?MEDHAHED B, BOUGUETTAYA A, ELMAGARMID A K. Composing Web Services on the Semantic Web [J].? The VLDB, 2003, 12(4):333-351.
[6]?STEFAN T, RANIA K, THOMAS M. Composition of Coordinated Web Services [C]. IFIP International Federation for Information Processing, 2004, 294-310.
[7]?BOUALEM B, MARLON D, QUAN Z. Declarative Composition and Peer-to-Peer Provisioning of Dynamic Web Services [C].In the Proceedings of the 18th International Conference on Data Engineering, 2002.
[8]?張智,李瑞軒. 基于對(duì)等網(wǎng)的Web服務(wù)發(fā)布和發(fā)現(xiàn)機(jī)制研究[J],計(jì)算機(jī)工程與設(shè)計(jì),2006, 27(16): 2949-2951.
[9]?MASSIMO M, ALESSANDRA M, ALESSANDRO P. Declarative Policies for Web Service Selection [C]. In the Proceedings of the Sixth IEEE International Workshop on Policies for Distributed Systems and Networks, 2005.
[10]?谷清范,吳介一,張颯兵. 網(wǎng)格調(diào)度機(jī)制研究綜述[J], 計(jì)算機(jī)應(yīng)用研究,2006,23(5):1-4.
[11] 官荷卿,張文博,魏俊,等. 一種應(yīng)用敏感的Web服務(wù)請(qǐng)求調(diào)度策略[J],計(jì)算機(jī)學(xué)報(bào),2006,29(7):1189-1198
[12] 單志廣,林闖,肖人毅,等.Web QoS控制研究綜述[J].計(jì)算機(jī)學(xué)報(bào),2003, 27(2): 145-156.
[13] ZENG LangZhao,BENATALLAH B,DUMAS M. Quality Driven Web Services Composition[J].IEEE Transaction on Software Engineering, 2004, 30(5):311-327.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。