張鍵鋒 王 勁
(廣東省電信規劃設計院有限公司,廣東 廣州 510630)
基于工作流的Web服務組合模型設計與實現
張鍵鋒 王 勁
(廣東省電信規劃設計院有限公司,廣東 廣州 510630)
單個We b服務無法滿足企業的應用需求,對多個We b服務進行組合的研究尤為必要。本文提出了一種基于工作流模板的服務組合模型,旨在通過定義和發布靜態的We b服務,搭建基于工作流的We b服務業務流程組合模型,實現在工作流流程中調用靜態的服務組合。
We b服務;工作流;服務組合
隨著Web服務的發展,企業對服務質量有了更高的要求,單個Web服務提供的功能越發不能滿足企業各種復雜的實際需求,因此,將已有的Web服務組合起來,實現更強大的功能,成為了Web服務應用的一個重要研究方向[1]。
經研究發現,Web服務組合問題和工作流系統有著許多共同的特征:它們具有相同的生命周期,即組合流程建模階段與流程運行階段,在建模階段均需要指定數據流和控制流,在運行階段都由執行引擎負責解析流程定義并生成實例,通過調用外部應用或者服務進行執行。工作流技術最大優點是實現應用邏輯和過程的分離,在過程邏輯的建立過程中可不考慮應用和資源的異構性,但沒有解決分布式異構環境中資源的互操作問題,而Web服務恰好提供了對分布式異構資源的互操作能力;而且工作流技術提供了對服務運行的協調、監控和管理能力,為Web服務提供一條可行路徑[2,3]。因此,基于工作流的Web服務組合成為未來進行事務處理的發展趨勢。本文研究的就是如何將工作流技術和Web服務結合起來,以實現流程當中的動態調用。
Web服務是通過Internet標準技術傳遞的,是一種松散耦合的軟件組件。Web服務建立于SOA基礎之上,SOA (Service-Oriented Architecture)是最新的分布式計算技術,可將軟件組件(包括來自不同系統的應用程序函數,對象和進程)發布為服務。同時Web服務建立在XML標準上,可以使用任何編程語言、協議或平臺開發出松散耦合的應用程序組件。Web服務體系結構基于三種角色(服務提供者(Service provider)、服務注冊中心(Service broker)和服務請求者(Service requester))之間的交互[4]。服務提供者創建服務,并將其發布到服務注冊中心供使用者查找和使用。當服務使用者需要完成特定的業務邏輯是就到服務注冊中心去查詢能夠完成相應功能要求的Web服務,然后通過服務綁定直接與服務提供者通信,實現服務的調用,完成相應的事務。
3.1 實驗模型概述
本章節設計了一個利用工作流模型調用Web服務組合的模型。首先,編寫Web服務類,每個服務類完成特定的功能,然后將這些Web服務進行發布。其次,搭建工作流模型,工作流模型主要采取JBPM技術,使用JBPM定義的JBoss JBPM Process Definition Language(JPDL)進行流程定義。JPDL認為一個業務流程可以被看作是一個UML狀態圖。JPDL就是詳細定義了這個狀態圖的每個部分,如起始、結束狀態,以及狀態之間的轉換,通過圖型化的流程定義,直觀地描述業務流程。本模型通過人機交互的方式設計抽象工作流,利用JBPM的插件發布流程,將建模后的組合流程傳給服務選取模塊,在服務選取模塊中,在服務注冊中心查找所需要的服務,將具體的服務進行綁定,獲得Web服務的接口地址,與Web服務發布者進行交互,在實際的工作流流程中調用具體的Web服務,根據Web服務返回的結果,執行不同的后續步驟。
3.2 實現技術與流程框架定義
現在主流的Web服務+工作流的做法為:(1)建立一個特定的Web Service;(2)建立Web Service Project;(3)建立Web Service;(4)發布并測試該Web Service。
3.2.1 Web Service項目生成并測試
先建立一個Web Service測試項目,然后發布,在本機寫客戶端的調用代碼,測試代碼如下:

測試:運行客戶端程序,得到輸出結果,Web服務調用成功。
3.2.2 Web服務的部署
在JBPM中調用所發布的Web服務,設計流程調用已經寫好的Web服務,部署該流程如下所示:(1)導入MySQLDriver;(2)配置Hibernate;
(3)用main()方法完成流程的部署工作,具體流程如下:Step1:得到JBPM配置實例;
Step2:根據配置實例得到JBPM的上下文;
Step3:將流程定義文件轉化為InputStream,再根據ProcessDefinition的方法得到一個流程定義;
Step4:將該ProcessDefinition部署在JBPM上下文中。
3.2.3 將流程封裝成Web Service,并寫測試程序調用該Web Service
(1)增加Web Service功能——增加XFire的架包和配置services.xml文檔;
(2)增加Web功能——配置Web.xml文檔,指定截獲請求的Servlet的實現類。
3.2.4 調用Web Service的Client程序
(1)引進架包——XFire Http Client;
(2)將Web Service接口抓到本地;
(3)建立一個class在其中寫main()。
本文采取的例子流程如圖1所示:

圖1 子流程圖
主流程如圖2所示:

圖2 主流程圖
3.3 Web服務定義與發布
使用定義一系列的Web服務,每一個獨立的Web服務完成特定的功能,并注冊發布到注冊中心,對生成的WSDL[5]文件地址進行綁定,編寫調用服務的服務工具類,針對不同的功能需求,選取不同的Web服務組合。
4.1 實例設計
本實例是一個財務報銷流程,包括幾個流程:申請人填寫報銷單——部門主管審核——老板審核,在操作過程中,根據不同的需求,調用不同的服務組合(權限驗證、金額驗證等)。根據服務返回的結果,系統執行不同的后續操作,直到流程結束。
4.2 Web服務的設計與發布
本實例中,服務庫包含若干Web服務,這里列舉一個關于檢驗用戶權限的服務。核心代碼如下所示:

將Web服務發布,在圖3中可以看到已經發布成功的Web服務:

圖3 發布的Web服務
4.3 工作流流程定義
首先搭建一個工作流的環境,自定義一個工作流的流程:

圖4 定義工作流程
發布定義的流程,如圖5所示:

圖5 流程定義發布
成功發布流程之后,在流程中調用Web服務,結點調用Web服務的客戶端代碼:

通過查找數據庫,驗證用戶是否存在,如果存在,則判斷權限,權限分為管理員權限和普通權限,根據Web服務返回的結果,管理員進入管理界面,申請人進入申請界面,兩者都不是,則返回登錄。進入系統后出現申請報銷界面,如圖6所示,填寫完報銷單之后,能看到已有的業務,如圖7所示:

圖6 申請報銷界面

圖7 展示已有業務界面
利用工作流,點擊查看流程,能看到當前流程走到的結點,如圖8所示:

圖8 工作流程圖
流程圖會動態地綁定當前結點,經過處理,系統在流程圖的當前結點做出了標識,使流程的展示更加清晰。如上例所示,此時根據流程的設計,本實例報銷的申請金額少于10000元,只需要部門主管同意,就可以完成報銷的審核了,不需要走老板審核流程,所以如果部門主管同意,流程到這里就結束了,流程圖會顯示流程結束的標志。
本文從工作流Web服務的基本架構,注冊發布,服務描述和工作流組合方法四個方面對基于工作流的Web服務組合研究現狀進行了綜述;根據工作流Web服務的實現框架從工作流建模,服務的選取和綁定,服務的執行三個模塊對基于工作流的Web服務組合系統做了探討。針對工作流流程對Web服務進行靜態組合,并且將Web服務成功發布在計算機集群上,然而缺乏涉及Web服務基于語義本體的動態組合,未來研究重點的方向為Web服務基于服務語義本體的動態組合[6,7],實現對Web服務組合的更靈活的動態調用,并基于工作流Web服務組合系統實現統一的、定義良好的語言規范,提供跨平臺、跨組織的工作流的基礎支持。
[1]倪晚成,劉練成,吳澄.We b服務方法組合綜述[J].計算機工程,2008,34(4):79-81.
[2]馬臨萍,郝克剛.基于工作流的We b服務組合系統[J].微計算機信息,2009,25(1-3):15-18.
[3]李順新,凌海洋,江南.基于工作流模板的We b服務組合模刑研究[J].計算機與現代化,2009(7):44-47.
[4]李景霞,侯紫峰.We b服務組合綜述[J].計算機應用研究,2005 (12):66-89.
[5]W3C.Web Services Choregraphy Description Language[DB/OL].http://www.w3.org/TR/wsdl.
[6]梁晟.基于語義We b的服務動態組合技術的研究[D].北京:中國科學院軟件研究所,2004.
[7]張志平,張慶來.語義We b服務研究進展[J].情報學報,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-),男,廣東人,碩士,助理工程師,研究方向為云計算。