張鍵鋒 王 勁
(廣東省電信規(guī)劃設(shè)計(jì)院有限公司,廣東 廣州 510630)
基于工作流的Web服務(wù)組合模型設(shè)計(jì)與實(shí)現(xiàn)
張鍵鋒 王 勁
(廣東省電信規(guī)劃設(shè)計(jì)院有限公司,廣東 廣州 510630)
單個(gè)We b服務(wù)無(wú)法滿足企業(yè)的應(yīng)用需求,對(duì)多個(gè)We b服務(wù)進(jìn)行組合的研究尤為必要。本文提出了一種基于工作流模板的服務(wù)組合模型,旨在通過(guò)定義和發(fā)布靜態(tài)的We b服務(wù),搭建基于工作流的We b服務(wù)業(yè)務(wù)流程組合模型,實(shí)現(xiàn)在工作流流程中調(diào)用靜態(tài)的服務(wù)組合。
We b服務(wù);工作流;服務(wù)組合
隨著Web服務(wù)的發(fā)展,企業(yè)對(duì)服務(wù)質(zhì)量有了更高的要求,單個(gè)Web服務(wù)提供的功能越發(fā)不能滿足企業(yè)各種復(fù)雜的實(shí)際需求,因此,將已有的Web服務(wù)組合起來(lái),實(shí)現(xiàn)更強(qiáng)大的功能,成為了Web服務(wù)應(yīng)用的一個(gè)重要研究方向[1]。
經(jīng)研究發(fā)現(xiàn),Web服務(wù)組合問(wèn)題和工作流系統(tǒng)有著許多共同的特征:它們具有相同的生命周期,即組合流程建模階段與流程運(yùn)行階段,在建模階段均需要指定數(shù)據(jù)流和控制流,在運(yùn)行階段都由執(zhí)行引擎負(fù)責(zé)解析流程定義并生成實(shí)例,通過(guò)調(diào)用外部應(yīng)用或者服務(wù)進(jìn)行執(zhí)行。工作流技術(shù)最大優(yōu)點(diǎn)是實(shí)現(xiàn)應(yīng)用邏輯和過(guò)程的分離,在過(guò)程邏輯的建立過(guò)程中可不考慮應(yīng)用和資源的異構(gòu)性,但沒(méi)有解決分布式異構(gòu)環(huán)境中資源的互操作問(wèn)題,而Web服務(wù)恰好提供了對(duì)分布式異構(gòu)資源的互操作能力;而且工作流技術(shù)提供了對(duì)服務(wù)運(yùn)行的協(xié)調(diào)、監(jiān)控和管理能力,為Web服務(wù)提供一條可行路徑[2,3]。因此,基于工作流的Web服務(wù)組合成為未來(lái)進(jìn)行事務(wù)處理的發(fā)展趨勢(shì)。本文研究的就是如何將工作流技術(shù)和Web服務(wù)結(jié)合起來(lái),以實(shí)現(xiàn)流程當(dāng)中的動(dòng)態(tài)調(diào)用。
Web服務(wù)是通過(guò)Internet標(biāo)準(zhǔn)技術(shù)傳遞的,是一種松散耦合的軟件組件。Web服務(wù)建立于SOA基礎(chǔ)之上,SOA (Service-Oriented Architecture)是最新的分布式計(jì)算技術(shù),可將軟件組件(包括來(lái)自不同系統(tǒng)的應(yīng)用程序函數(shù),對(duì)象和進(jìn)程)發(fā)布為服務(wù)。同時(shí)Web服務(wù)建立在XML標(biāo)準(zhǔn)上,可以使用任何編程語(yǔ)言、協(xié)議或平臺(tái)開發(fā)出松散耦合的應(yīng)用程序組件。Web服務(wù)體系結(jié)構(gòu)基于三種角色(服務(wù)提供者(Service provider)、服務(wù)注冊(cè)中心(Service broker)和服務(wù)請(qǐng)求者(Service requester))之間的交互[4]。服務(wù)提供者創(chuàng)建服務(wù),并將其發(fā)布到服務(wù)注冊(cè)中心供使用者查找和使用。當(dāng)服務(wù)使用者需要完成特定的業(yè)務(wù)邏輯是就到服務(wù)注冊(cè)中心去查詢能夠完成相應(yīng)功能要求的Web服務(wù),然后通過(guò)服務(wù)綁定直接與服務(wù)提供者通信,實(shí)現(xiàn)服務(wù)的調(diào)用,完成相應(yīng)的事務(wù)。
3.1 實(shí)驗(yàn)?zāi)P透攀?/p>
本章節(jié)設(shè)計(jì)了一個(gè)利用工作流模型調(diào)用Web服務(wù)組合的模型。首先,編寫Web服務(wù)類,每個(gè)服務(wù)類完成特定的功能,然后將這些Web服務(wù)進(jìn)行發(fā)布。其次,搭建工作流模型,工作流模型主要采取JBPM技術(shù),使用JBPM定義的JBoss JBPM Process Definition Language(JPDL)進(jìn)行流程定義。JPDL認(rèn)為一個(gè)業(yè)務(wù)流程可以被看作是一個(gè)UML狀態(tài)圖。JPDL就是詳細(xì)定義了這個(gè)狀態(tài)圖的每個(gè)部分,如起始、結(jié)束狀態(tài),以及狀態(tài)之間的轉(zhuǎn)換,通過(guò)圖型化的流程定義,直觀地描述業(yè)務(wù)流程。本模型通過(guò)人機(jī)交互的方式設(shè)計(jì)抽象工作流,利用JBPM的插件發(fā)布流程,將建模后的組合流程傳給服務(wù)選取模塊,在服務(wù)選取模塊中,在服務(wù)注冊(cè)中心查找所需要的服務(wù),將具體的服務(wù)進(jìn)行綁定,獲得Web服務(wù)的接口地址,與Web服務(wù)發(fā)布者進(jìn)行交互,在實(shí)際的工作流流程中調(diào)用具體的Web服務(wù),根據(jù)Web服務(wù)返回的結(jié)果,執(zhí)行不同的后續(xù)步驟。
3.2 實(shí)現(xiàn)技術(shù)與流程框架定義
現(xiàn)在主流的Web服務(wù)+工作流的做法為:(1)建立一個(gè)特定的Web Service;(2)建立Web Service Project;(3)建立Web Service;(4)發(fā)布并測(cè)試該Web Service。
3.2.1 Web Service項(xiàng)目生成并測(cè)試
先建立一個(gè)Web Service測(cè)試項(xiàng)目,然后發(fā)布,在本機(jī)寫客戶端的調(diào)用代碼,測(cè)試代碼如下:
測(cè)試:運(yùn)行客戶端程序,得到輸出結(jié)果,Web服務(wù)調(diào)用成功。
3.2.2 Web服務(wù)的部署
在JBPM中調(diào)用所發(fā)布的Web服務(wù),設(shè)計(jì)流程調(diào)用已經(jīng)寫好的Web服務(wù),部署該流程如下所示:(1)導(dǎo)入MySQLDriver;(2)配置Hibernate;
(3)用main()方法完成流程的部署工作,具體流程如下:Step1:得到JBPM配置實(shí)例;
Step2:根據(jù)配置實(shí)例得到JBPM的上下文;
Step3:將流程定義文件轉(zhuǎn)化為InputStream,再根據(jù)ProcessDefinition的方法得到一個(gè)流程定義;
Step4:將該P(yáng)rocessDefinition部署在JBPM上下文中。
3.2.3 將流程封裝成Web Service,并寫測(cè)試程序調(diào)用該Web Service
(1)增加Web Service功能——增加X(jué)Fire的架包和配置services.xml文檔;
(2)增加Web功能——配置Web.xml文檔,指定截獲請(qǐng)求的Servlet的實(shí)現(xiàn)類。
3.2.4 調(diào)用Web Service的Client程序
(1)引進(jìn)架包——XFire Http Client;
(2)將Web Service接口抓到本地;
(3)建立一個(gè)class在其中寫main()。
本文采取的例子流程如圖1所示:
圖1 子流程圖
主流程如圖2所示:
圖2 主流程圖
3.3 Web服務(wù)定義與發(fā)布
使用定義一系列的Web服務(wù),每一個(gè)獨(dú)立的Web服務(wù)完成特定的功能,并注冊(cè)發(fā)布到注冊(cè)中心,對(duì)生成的WSDL[5]文件地址進(jìn)行綁定,編寫調(diào)用服務(wù)的服務(wù)工具類,針對(duì)不同的功能需求,選取不同的Web服務(wù)組合。
4.1 實(shí)例設(shè)計(jì)
本實(shí)例是一個(gè)財(cái)務(wù)報(bào)銷流程,包括幾個(gè)流程:申請(qǐng)人填寫報(bào)銷單——部門主管審核——老板審核,在操作過(guò)程中,根據(jù)不同的需求,調(diào)用不同的服務(wù)組合(權(quán)限驗(yàn)證、金額驗(yàn)證等)。根據(jù)服務(wù)返回的結(jié)果,系統(tǒng)執(zhí)行不同的后續(xù)操作,直到流程結(jié)束。
4.2 Web服務(wù)的設(shè)計(jì)與發(fā)布
本實(shí)例中,服務(wù)庫(kù)包含若干Web服務(wù),這里列舉一個(gè)關(guān)于檢驗(yàn)用戶權(quán)限的服務(wù)。核心代碼如下所示:
將Web服務(wù)發(fā)布,在圖3中可以看到已經(jīng)發(fā)布成功的Web服務(wù):
圖3 發(fā)布的Web服務(wù)
4.3 工作流流程定義
首先搭建一個(gè)工作流的環(huán)境,自定義一個(gè)工作流的流程:
圖4 定義工作流程
發(fā)布定義的流程,如圖5所示:
圖5 流程定義發(fā)布
成功發(fā)布流程之后,在流程中調(diào)用Web服務(wù),結(jié)點(diǎn)調(diào)用Web服務(wù)的客戶端代碼:
通過(guò)查找數(shù)據(jù)庫(kù),驗(yàn)證用戶是否存在,如果存在,則判斷權(quán)限,權(quán)限分為管理員權(quán)限和普通權(quán)限,根據(jù)Web服務(wù)返回的結(jié)果,管理員進(jìn)入管理界面,申請(qǐng)人進(jìn)入申請(qǐng)界面,兩者都不是,則返回登錄。進(jìn)入系統(tǒng)后出現(xiàn)申請(qǐng)報(bào)銷界面,如圖6所示,填寫完報(bào)銷單之后,能看到已有的業(yè)務(wù),如圖7所示:
圖6 申請(qǐng)報(bào)銷界面
圖7 展示已有業(yè)務(wù)界面
利用工作流,點(diǎn)擊查看流程,能看到當(dāng)前流程走到的結(jié)點(diǎn),如圖8所示:
圖8 工作流程圖
流程圖會(huì)動(dòng)態(tài)地綁定當(dāng)前結(jié)點(diǎn),經(jīng)過(guò)處理,系統(tǒng)在流程圖的當(dāng)前結(jié)點(diǎn)做出了標(biāo)識(shí),使流程的展示更加清晰。如上例所示,此時(shí)根據(jù)流程的設(shè)計(jì),本實(shí)例報(bào)銷的申請(qǐng)金額少于10000元,只需要部門主管同意,就可以完成報(bào)銷的審核了,不需要走老板審核流程,所以如果部門主管同意,流程到這里就結(jié)束了,流程圖會(huì)顯示流程結(jié)束的標(biāo)志。
本文從工作流Web服務(wù)的基本架構(gòu),注冊(cè)發(fā)布,服務(wù)描述和工作流組合方法四個(gè)方面對(duì)基于工作流的Web服務(wù)組合研究現(xiàn)狀進(jìn)行了綜述;根據(jù)工作流Web服務(wù)的實(shí)現(xiàn)框架從工作流建模,服務(wù)的選取和綁定,服務(wù)的執(zhí)行三個(gè)模塊對(duì)基于工作流的Web服務(wù)組合系統(tǒng)做了探討。針對(duì)工作流流程對(duì)Web服務(wù)進(jìn)行靜態(tài)組合,并且將Web服務(wù)成功發(fā)布在計(jì)算機(jī)集群上,然而缺乏涉及Web服務(wù)基于語(yǔ)義本體的動(dòng)態(tài)組合,未來(lái)研究重點(diǎn)的方向?yàn)閃eb服務(wù)基于服務(wù)語(yǔ)義本體的動(dòng)態(tài)組合[6,7],實(shí)現(xiàn)對(duì)Web服務(wù)組合的更靈活的動(dòng)態(tài)調(diào)用,并基于工作流Web服務(wù)組合系統(tǒng)實(shí)現(xiàn)統(tǒng)一的、定義良好的語(yǔ)言規(guī)范,提供跨平臺(tái)、跨組織的工作流的基礎(chǔ)支持。
[1]倪晚成,劉練成,吳澄.We b服務(wù)方法組合綜述[J].計(jì)算機(jī)工程,2008,34(4):79-81.
[2]馬臨萍,郝克剛.基于工作流的We b服務(wù)組合系統(tǒng)[J].微計(jì)算機(jī)信息,2009,25(1-3):15-18.
[3]李順新,凌海洋,江南.基于工作流模板的We b服務(wù)組合模刑研究[J].計(jì)算機(jī)與現(xiàn)代化,2009(7):44-47.
[4]李景霞,侯紫峰.We b服務(wù)組合綜述[J].計(jì)算機(jī)應(yīng)用研究,2005 (12):66-89.
[5]W3C.Web Services Choregraphy Description Language[DB/OL].http://www.w3.org/TR/wsdl.
[6]梁晟.基于語(yǔ)義We b的服務(wù)動(dòng)態(tài)組合技術(shù)的研究[D].北京:中國(guó)科學(xué)院軟件研究所,2004.
[7]張志平,張慶來(lái).語(yǔ)義We b服務(wù)研究進(jìn)展[J].情報(bào)學(xué)報(bào),2006,25 (4):462-467.
Design and Implement of Web Service Composition Model Based on Work-flow
Zhang Jianfeng Wang Jin
(Guangdong Planning and Designing Institute of Telecommunications Co.,LTD.,Guangzhou 510630,Guangdong)
A single Web service cannot meet the application requirements. It is becoming more and more necessary to do a research on the Web service composition. In this paper, service composition model based on workflow template is build. The aim is to build a workflow-based Web services business process composition model by defining and publishing static Web services, to call a static service composition in the workflow process.
Web service ; work-flow;Web service composition
TP311.52
A
1008-6609(2017)03-0039-04
張鍵鋒(1988-),男,廣東人,碩士,助理工程師,研究方向?yàn)樵朴?jì)算。