專利名稱::一種面向服務(wù)的分布式工作流管理系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于計(jì)算機(jī)應(yīng)用領(lǐng)域,具體涉及一種面向服務(wù)的分布式工作流管理系統(tǒng)。
背景技術(shù):
:當(dāng)前,在面向服務(wù)的體系結(jié)構(gòu)(ServiceOrientedArchitecture,SOA)中,基于標(biāo)準(zhǔn)協(xié)議(XML,HTTP,WSDL和SOAP等)的Web服務(wù)和WSRF服務(wù)正處于核心地位,由于其跨語(yǔ)言、跨平臺(tái)的技術(shù)中立性,同時(shí)歷史遺留的應(yīng)用程序和系統(tǒng)也可以封裝成為服務(wù)得以繼續(xù)利用,贏得了主要軟件供應(yīng)商和企業(yè)組織的普遍歡迎和支持。開(kāi)放標(biāo)準(zhǔn)、松耦合的服務(wù)組件以提供標(biāo)準(zhǔn)的接口和服務(wù)功能來(lái)封裝了底層異構(gòu)的物理資源和軟件環(huán)境,他們是能夠被動(dòng)態(tài)發(fā)現(xiàn)的和被組合集成的服務(wù)實(shí)體。因此,基于服務(wù)構(gòu)建的軟件系統(tǒng)除了能夠互相訪問(wèn),還可以根據(jù)需要進(jìn)行集成,即就是由一些松耦合且具有統(tǒng)一接口定義方式的組件(服務(wù))進(jìn)行組合。在服務(wù)集成的過(guò)程中,工作流理論和服務(wù)組件相結(jié)合,使得能夠依據(jù)流程邏輯,由獨(dú)立存在的具有原子特征的服務(wù)(原子服務(wù))扮演一定角色,參與組合成增值的能夠處理流程事務(wù)的復(fù)合服務(wù)。復(fù)合服務(wù)能夠根據(jù)時(shí)間推移和需要進(jìn)行重新定義甚至銷毀,但其絲毫不影響原子服務(wù)作為一個(gè)獨(dú)立自治的實(shí)體向外界提供服務(wù)功能,同時(shí),一個(gè)原子服務(wù)還可以被定義到其他的復(fù)合服務(wù)中去,身兼數(shù)職,在另一個(gè)流程邏輯中擔(dān)任其他角色并提供服務(wù)。因此,服務(wù)復(fù)合思想和工作流技術(shù)被看作SOA的"心臟"。當(dāng)前,各大軟件公司也把工作流管理系統(tǒng)和面向服務(wù)的思想相結(jié)合,把開(kāi)發(fā)和推廣基于服務(wù)的工作流管理系統(tǒng)作為占領(lǐng)技術(shù)和市場(chǎng)的制高點(diǎn)。例如,Microsof推出的BizTalk就集成了面向服務(wù)的BPEL引擎,Oracle公司推出的0raclel0g中集成了OracleBPELProcessManager和BPELDesigner,IBM和SAP也正在加緊基于BPEL的工作流管理系統(tǒng)。同時(shí),一些開(kāi)源組織和個(gè)人也紛紛加入到研究和開(kāi)發(fā)的隊(duì)伍中來(lái),比如ActiveBPEL就是一個(gè)非常出名的開(kāi)源BPEL引擎。由于面向服務(wù)的工作流管理系統(tǒng)開(kāi)發(fā)和發(fā)展還處于初級(jí)階段,所以還存在很多不完善的地方。首先,以上提及的工作流管理系統(tǒng)都是集中式的單一引擎,當(dāng)負(fù)載任務(wù)變重后不能得到均衡,性能就成了很大的瓶頸;同時(shí)還可能存在著單一失效點(diǎn),當(dāng)工作流引擎崩潰后,整個(gè)系統(tǒng)就會(huì)癱瘓。其次,以上系統(tǒng)只支持物理上真真存在的具體服務(wù)擔(dān)任原子服務(wù)參與具有工作流邏輯的服務(wù)復(fù)合,沒(méi)有服務(wù)虛擬化的概念,因而不能有效地在物理服務(wù)之間根據(jù)服務(wù)質(zhì)量進(jìn)行最優(yōu)選擇。另外,以上系統(tǒng)只支持標(biāo)準(zhǔn)的Web服務(wù),而對(duì)于有狀態(tài)的WSRF服務(wù)不支持,這大大削減了面向服務(wù)的支持能力。
發(fā)明內(nèi)容本發(fā)明旨在提供一種面向服務(wù)的分布式工作流管理系統(tǒng),該系統(tǒng)具有支持虛擬服務(wù)參與服務(wù)復(fù)合、支持WS/WSRF服務(wù)、基于QoS的動(dòng)態(tài)服務(wù)選擇和工作流作業(yè)動(dòng)態(tài)負(fù)載均衡功能。4本發(fā)明提供的面向服務(wù)的分布式工作流管理系統(tǒng),包括用于支持服務(wù)實(shí)例存在的運(yùn)行時(shí)環(huán)境的服務(wù)容器,其特征在于該系統(tǒng)還包括客戶端界面模塊、分布式工作流引擎模塊和服務(wù)動(dòng)態(tài)選擇代理模塊;客戶端界面模塊用于為外界用戶提供基于Web頁(yè)面的交互接口,它接收來(lái)自用戶的各種請(qǐng)求,并將其轉(zhuǎn)交給分布式工作流引擎模塊進(jìn)行處理,處理完畢后,接收處理結(jié)果,并展現(xiàn)給用戶;分布式工作流引擎模塊接收來(lái)自客戶端界面模塊的各種請(qǐng)求,處理后將結(jié)果返回給客戶端界面模塊;分布式工作流引擎模塊在虛擬服務(wù)參與工作流執(zhí)行時(shí)會(huì)調(diào)用動(dòng)態(tài)服務(wù)選擇代理模塊;分布式工作流引擎模塊還負(fù)責(zé)執(zhí)行工作流作業(yè),并按照流程把子任務(wù)調(diào)度物理服務(wù)上執(zhí)行;動(dòng)態(tài)服務(wù)選擇代理模塊用于接收來(lái)自分布式工作流引擎模塊的服務(wù)選擇請(qǐng)求,從屬于同一虛擬服務(wù)的物理服務(wù)中選擇具有最優(yōu)服務(wù)質(zhì)量的物理服務(wù)進(jìn)行作業(yè)執(zhí)行。本發(fā)明提供的一種面向服務(wù)的分布式工作流管理系統(tǒng)具有以下優(yōu)點(diǎn)和效果(1)支持虛擬服務(wù)作為原子服務(wù)參與服務(wù)復(fù)合服務(wù)虛擬化能夠聚集眾多提供相同功能的物理服務(wù),向外界提供統(tǒng)一的功能接口。把虛擬服務(wù)作為原子服務(wù)參與服務(wù)復(fù)合可以實(shí)現(xiàn)在執(zhí)行的過(guò)程中,在多個(gè)物理服務(wù)之間根據(jù)其提供的能力和服務(wù)質(zhì)量(QoS)進(jìn)行透明選擇,選擇具有最優(yōu)服務(wù)質(zhì)量的物理服務(wù)執(zhí)行作業(yè)。(2)支持WS/WSRF服務(wù)除了支持無(wú)狀態(tài)的Web服務(wù)(WebService,WS),本系統(tǒng)還對(duì)工作流引擎進(jìn)行了很大的擴(kuò)充,使其支持帶狀態(tài)的WSRF服務(wù)(WebServiceResourceFramework,WSRF),使得能夠根據(jù)需要,支持持久性的作業(yè)執(zhí)行和保留基于資源的服務(wù)狀態(tài)和作業(yè)狀態(tài)信息。(3)基于QoS的動(dòng)態(tài)服務(wù)選擇本系統(tǒng)在從虛擬服務(wù)中映射和選擇合適的物理服務(wù)中,著重考慮了服務(wù)質(zhì)量(QualityofService,QoS),根據(jù)物理服務(wù)的服務(wù)質(zhì)量進(jìn)行量化分析,實(shí)現(xiàn)了服務(wù)動(dòng)態(tài)選擇的最優(yōu)化。(4)分布式工作流引擎,實(shí)現(xiàn)了作業(yè)動(dòng)態(tài)負(fù)載均衡本系統(tǒng)支持多個(gè)工作流引擎協(xié)同運(yùn)行,消除了由于單個(gè)工作流引擎造成的負(fù)載過(guò)量而效率低下,同時(shí)消除了單一失效點(diǎn);根據(jù)各個(gè)引擎的負(fù)載情況,對(duì)作業(yè)請(qǐng)求進(jìn)行動(dòng)態(tài)調(diào)度,選擇負(fù)載最小的工作流引擎來(lái)執(zhí)行,實(shí)現(xiàn)了負(fù)載均衡、高可用和很高的健壯性。圖1為本發(fā)明分布式工作流管理系統(tǒng)的分層結(jié)構(gòu)示意圖;圖2為本發(fā)明分布式工作流管理系統(tǒng)的邏輯結(jié)構(gòu)示意圖;圖3為本發(fā)明分布式工作流引擎模塊的內(nèi)部邏輯結(jié)構(gòu)示意圖;圖4為復(fù)合服務(wù)的部署流程示意圖;圖5為復(fù)合作業(yè)的執(zhí)行流程示意圖。具體實(shí)施例方式在展開(kāi)系統(tǒng)的具體實(shí)施說(shuō)明之前,先對(duì)本系統(tǒng)中定義的幾類服務(wù)及其之間的關(guān)系給出如下說(shuō)明(1)虛擬服務(wù)(VirtualService)虛擬服務(wù)是相對(duì)于物理服務(wù)(PhysicalServic)而言,虛擬服務(wù)是一個(gè)邏輯上概念,不具有真正提供服務(wù)的能力。虛擬服務(wù)只通過(guò)WSDL定義服務(wù)的接口和功能,而相應(yīng)的物理服務(wù)可以根據(jù)其接口和功能來(lái)選擇某種編程語(yǔ)言實(shí)現(xiàn)并部署到服務(wù)容器,向外提供服務(wù)。一個(gè)虛擬服務(wù)往往可以對(duì)應(yīng)多個(gè)物理服務(wù)。如下公式所示vs={psIf!(ps)}①在公式①中,vs表示一個(gè)虛擬服務(wù),ps表示物理服務(wù),^表示這些物理服務(wù)擁有同一服務(wù)功能和統(tǒng)一的服務(wù)接口(PortType)。(2)物理服務(wù)(PhysicalService)物理服務(wù)提供真正的服務(wù)能力,存在并部署在服務(wù)容器中。本系統(tǒng)支持兩類物理服務(wù)Web服務(wù)和WSRF服務(wù),如下公式表示PS={psI(psGWS*)V(psGWSRF*)}②在公式②中,PS是物理服務(wù)的集合,ps表示單個(gè)物理服務(wù),WS*表示W(wǎng)eb服務(wù),WSRF*表示W(wǎng)SRF服務(wù)。一個(gè)物理服務(wù)可以是標(biāo)準(zhǔn)的Web服務(wù),也可是WSRF服務(wù)。(3)屬于同一虛擬服務(wù)的物理服務(wù)之間的關(guān)系同屬于同一虛擬服務(wù)的多個(gè)物理服務(wù)擁有同一服務(wù)功能和統(tǒng)一的服務(wù)接口(PortType),但并不一定擁有相同的服務(wù)能力。即物理服務(wù)之間的服務(wù)質(zhì)量(QaulityofService,QoS)可能不同。因?yàn)橹魏蛯?shí)現(xiàn)這些服務(wù)的物理資源和軟件環(huán)境是異構(gòu)的,而且服務(wù)能力還處于動(dòng)態(tài)變化中,安全等級(jí)等也可能差別很大。下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明做進(jìn)一步說(shuō)明。如圖1所示,本發(fā)明系統(tǒng)架構(gòu)按照分層思想分為三層應(yīng)用接口層、系統(tǒng)邏輯層和物理服務(wù)層。應(yīng)用接口層是本系統(tǒng)對(duì)外界用戶的交互接口,由客戶端界面模塊l構(gòu)成。系統(tǒng)邏輯層是整個(gè)系統(tǒng)的主要功能實(shí)現(xiàn)模塊,包括分布式工作流引擎模塊2和服務(wù)動(dòng)態(tài)選擇代理模塊3。物理服務(wù)層主要是由具體的服務(wù)實(shí)例構(gòu)成,供上層進(jìn)行服務(wù)組合和調(diào)度執(zhí)行,所有的服務(wù)實(shí)例存在于服務(wù)容器4中。服務(wù)容器4是服務(wù)實(shí)例存在的運(yùn)行時(shí)環(huán)境,一般都包含有SOAP引擎,為各個(gè)服務(wù)提供實(shí)例啟動(dòng)、消息傳遞、服務(wù)調(diào)用、服務(wù)安全等功能。如圖2所示,客戶端界面模塊1按照B/S架構(gòu),實(shí)現(xiàn)了一個(gè)基于Web頁(yè)面的系統(tǒng)客戶端界面,包括系統(tǒng)管理員頁(yè)面,工作流引擎注冊(cè)頁(yè)面,復(fù)合服務(wù)部署頁(yè)面,普通用戶提交復(fù)合作業(yè)頁(yè)面,引擎、服務(wù)、作業(yè)的監(jiān)控頁(yè)面??蛻舳私缑婺Kl接收來(lái)自用戶的各種請(qǐng)求,并將其轉(zhuǎn)交給分布式工作流引擎模塊2進(jìn)行執(zhí)行,執(zhí)行完畢后,接收結(jié)果,并展現(xiàn)給用戶。分布式工作流引擎模塊2是整個(gè)系統(tǒng)的核心部分,它接收來(lái)自客戶端界面模塊1的各種請(qǐng)求(服務(wù)部署、作業(yè)提交、監(jiān)控、返回作業(yè)結(jié)果)等,進(jìn)行處理,然后將處理結(jié)果返回給客戶端界面模塊1。另外,在工作流執(zhí)行的過(guò)程中,若有虛擬服務(wù)001參與了工作流執(zhí)行,分布式工作流引擎模塊2便會(huì)調(diào)用動(dòng)態(tài)服務(wù)選擇代理模塊3進(jìn)行虛擬服務(wù)001到物理服務(wù)002的映射選擇和作業(yè)調(diào)度。分布式工作流引擎模塊2負(fù)責(zé)執(zhí)行工作流作業(yè),并按照流程把子任務(wù)調(diào)度物理服務(wù)002(Web服務(wù)003、WSRF服務(wù)004)上執(zhí)行。其內(nèi)部結(jié)構(gòu)和詳細(xì)功能模塊將結(jié)合圖3進(jìn)行介紹。動(dòng)態(tài)服務(wù)選擇代理模塊3是在復(fù)合服務(wù)執(zhí)行過(guò)程,當(dāng)遇到的原子服務(wù)是由虛擬服務(wù)001擔(dān)當(dāng)時(shí),接收來(lái)自分布式工作流引擎模塊2的服務(wù)選擇請(qǐng)求,在屬于同一虛擬服務(wù)001的多個(gè)物理服務(wù)002中,計(jì)算每個(gè)物理服務(wù)的服務(wù)質(zhì)量(QoS,QualityofService)值,然后選擇最優(yōu)的物理服務(wù)002,進(jìn)行作業(yè)執(zhí)行。我們支持虛擬服務(wù)作為原子服務(wù)參與服務(wù)復(fù)合功能主要由動(dòng)態(tài)服務(wù)選擇代理模塊3和虛擬服務(wù)001、物理服務(wù)002、Web服務(wù)003和WSRF服務(wù)004來(lái)完成。其中服務(wù)質(zhì)量(QoS,QualityofService)為服務(wù)所處的硬件資源性能參數(shù)(如內(nèi)存大小、存儲(chǔ)空間、CPU的個(gè)數(shù)、完成時(shí)間)和服務(wù)的品質(zhì)指標(biāo)(如價(jià)格、信用等級(jí)、安全性、可靠性)。服務(wù)容器4是支持服務(wù)實(shí)例存在的運(yùn)行時(shí)環(huán)境,一般都包含有SOAP引擎,為各個(gè)服務(wù)提供實(shí)例啟動(dòng)、消息傳遞、服務(wù)調(diào)用、服務(wù)安全等功能。在本系統(tǒng)中,服務(wù)容器4采用第三方軟件,它包括兩種類型一種是支持純Web服務(wù)003(WebService)容器,如Apache開(kāi)源Axis,IBM的Websphere等;另一禾中是支持WSRF(WebServiceResourceFramework)月艮務(wù)004的容器,如Globus聯(lián)盟的GT4,Microsoft的WSRF.NET等。如圖3所示,分布式工作流引擎模塊2是整個(gè)系統(tǒng)的主要部分,其包括了以下子模塊作業(yè)隊(duì)列子模塊21、監(jiān)控子模塊22、作業(yè)調(diào)度與負(fù)載均衡器子模塊23、引擎管理器子模塊24、信息中心子模塊25、工作流引擎261,262,…,26n。作業(yè)隊(duì)列子模塊21支持工作流作業(yè)請(qǐng)求進(jìn)入作業(yè)隊(duì)列。其首先接收來(lái)自客戶端界面模塊1中用戶提交的作業(yè)請(qǐng)求;然后將作業(yè)請(qǐng)求進(jìn)入作業(yè)隊(duì)列進(jìn)行等待;最后由作業(yè)調(diào)度與負(fù)載均衡子模塊23從隊(duì)列中取出作業(yè)請(qǐng)求,并調(diào)度到負(fù)載最小的工作流引擎上執(zhí)行。監(jiān)控子模塊22主要負(fù)責(zé)對(duì)工作流引擎、復(fù)合服務(wù)、工作流作業(yè)實(shí)施監(jiān)視和控制。它首先接收來(lái)自客戶端界面模塊1中用戶提交的監(jiān)視和控制請(qǐng)求,然后調(diào)用引擎管理器子模塊24進(jìn)行直接對(duì)某個(gè)工作流引擎、復(fù)合服務(wù)、工作流作業(yè)實(shí)施監(jiān)視和控制。完成后,監(jiān)控子模塊22接收來(lái)自引擎管理器子模塊24的監(jiān)控結(jié)果,并將其返回給客戶端界面模塊1并展現(xiàn)給用戶。其中,監(jiān)視功能主要包括監(jiān)視各個(gè)引擎的運(yùn)行狀態(tài)和負(fù)載;監(jiān)視復(fù)合服務(wù)的運(yùn)行狀態(tài);監(jiān)視各個(gè)復(fù)合作業(yè)的執(zhí)行狀態(tài),其狀態(tài)主要設(shè)定為以下類型starting,running,suspended,destroyed,aborted,successful??刂乒?huì)g主要接收來(lái)白用戶的控制信息,并實(shí)施控制操作。包括對(duì)各個(gè)引擎的重啟(restart),停止(shutdown);對(duì)復(fù)合服務(wù)的掛起(suspend)、銷毀(destroy)、恢復(fù)(resume)等;對(duì)正在執(zhí)行中的工作流作業(yè)執(zhí)行啟動(dòng)(start)、掛起(suspend)、恢復(fù)(resume)、銷毀(destroy)、中止(abort)等控制操作。作業(yè)調(diào)度與負(fù)載均衡子模塊23負(fù)責(zé)對(duì)從作業(yè)隊(duì)列子模塊21中取工作流作業(yè)請(qǐng)求,并通過(guò)引擎管理器子模塊24獲取各個(gè)引擎當(dāng)前實(shí)時(shí)的負(fù)載情況,動(dòng)態(tài)地從工作流引擎261,262,…,26n選擇負(fù)載最小的工作流引擎并將工作流作業(yè)分配給其進(jìn)行執(zhí)行。引擎管理器子模塊24負(fù)責(zé)對(duì)工作流引擎261,262,…,26n進(jìn)行管理。它接收來(lái)自作業(yè)調(diào)度與負(fù)載均衡子模塊的23的引擎狀態(tài)查詢請(qǐng)求,并從信息中心子???5中提取各引擎負(fù)載和狀態(tài)信息,然后將其反饋給作業(yè)調(diào)度與負(fù)載均衡子模塊的23,供其進(jìn)行引擎選擇和作業(yè)調(diào)度。而且,引擎管理器子模塊24還接收來(lái)自監(jiān)控子模塊22的監(jiān)控請(qǐng)求,然后按照要求對(duì)工作流引擎261,262,…,26n實(shí)施監(jiān)視(查詢狀態(tài)信息)和控制(例如,重啟、7停止、恢復(fù)等),最后將監(jiān)控的結(jié)果返回給監(jiān)控子模塊22。另外,引擎管理器子模塊24還負(fù)責(zé)從客戶端界面模塊1下載作業(yè)輸入文件和上傳作業(yè)執(zhí)行結(jié)果文件。信息中心子模塊25為系統(tǒng)內(nèi)眾多工作流引擎服務(wù)提供信息注冊(cè)、信息更新、信息注銷。同時(shí)維護(hù)工作流引擎、服務(wù)(包括原子服務(wù)和復(fù)合服務(wù))、作業(yè)的描述信息,監(jiān)控信息,運(yùn)行時(shí)狀態(tài)信息。信息中心子模塊25接收來(lái)自引擎管理器子模塊24的(引擎、服務(wù)、作業(yè))信息注冊(cè)、更新,注銷等,同時(shí),它還支持引擎管理子模塊24對(duì)所有這些狀態(tài)信息的檢索和查詢。信息中心子模塊25將所有的信息都記錄在數(shù)據(jù)庫(kù)27中。工作流引擎261,262,…,26n提供復(fù)合服務(wù)的運(yùn)行時(shí)環(huán)境,包括復(fù)合服務(wù)定義解析、服務(wù)實(shí)例的創(chuàng)建和維護(hù)、在參與的原子服務(wù)之間消息傳遞、服務(wù)狀態(tài)的監(jiān)控和通知、容錯(cuò)和補(bǔ)償、安全和信任機(jī)制等。在本系統(tǒng)中,我們使用了開(kāi)源的BPEL引擎ActiveBPEL,并對(duì)其進(jìn)行了功能擴(kuò)展,使其能夠支持WSRF服務(wù)和虛擬服務(wù)。工作流引擎261,262,…,26n接收來(lái)自作業(yè)調(diào)度與負(fù)載均衡子模塊23的作業(yè)執(zhí)行請(qǐng)求,然后執(zhí)行。同時(shí),作流引擎261,262,…,26n也接受引擎管理器子模塊24的監(jiān)控和管理。數(shù)據(jù)庫(kù)27用來(lái)記錄工作流引擎、復(fù)合服務(wù)的狀態(tài)信息,工作流作業(yè)的執(zhí)行過(guò)程中的中間數(shù)據(jù)和狀態(tài)信息。數(shù)據(jù)庫(kù)27響應(yīng)來(lái)自信息中心子模塊25最這些數(shù)據(jù)的保存、讀取和更新操作。由于我們使用了分布式的工作流引擎架構(gòu),故工作流引擎的個(gè)數(shù)可以根據(jù)作業(yè)提交數(shù)量和整個(gè)系統(tǒng)的負(fù)載情況進(jìn)行動(dòng)態(tài)增加。擴(kuò)展增加BPEL引擎后,必須通過(guò)擎管理器子模塊24到信息中心子模塊25進(jìn)行引擎注冊(cè),這樣作業(yè)調(diào)度與負(fù)載均衡子模塊的23就可以從信息中心子模塊24查詢各個(gè)引擎之間實(shí)時(shí)的負(fù)載情況,動(dòng)態(tài)地選擇負(fù)載最小的工作流引擎261,262,…,26n執(zhí)行此工作流作業(yè)。如圖4所示,一個(gè)復(fù)合服務(wù)的部署需要經(jīng)過(guò)以下幾個(gè)步驟①定義復(fù)合服務(wù)。借助圖形化的定義工具,高級(jí)用戶根據(jù)流程邏輯使用BPEL語(yǔ)言定義具有工作流模式的復(fù)合服務(wù),其最基本的工作流模式包括順序、分支、循環(huán)、并發(fā)、同步、觸發(fā)。定義后的結(jié)果是一個(gè)以bpr為后綴的包。②提交復(fù)合服務(wù)。將定義好的*.bpr包通過(guò)復(fù)合服務(wù)部署界面提交給本系統(tǒng),系統(tǒng)接受并上傳該包,以暫存在用戶的虛擬空間中。③檢查引擎狀態(tài)。從信息中心中檢查所有已經(jīng)注冊(cè)的引擎運(yùn)行狀態(tài),若正常,執(zhí)行步驟。若不正常,執(zhí)行步驟⑧。④部署復(fù)合服務(wù)。將tbpr部署在運(yùn)行正常的工作流引擎中。⑤檢查服務(wù)狀態(tài)。服務(wù)部署完成后,工作流引擎會(huì)自動(dòng)加載該服務(wù),將其加入到引擎的服務(wù)列表。若該服務(wù)運(yùn)行正常,執(zhí)行步驟⑥。若服務(wù)加載失敗,運(yùn)行步驟⑨。⑥注冊(cè)服務(wù)到信息中心。服務(wù)運(yùn)行正常,則將該復(fù)合服務(wù)的地址注冊(cè)到信息中心,包括所屬于的工作流引擎等描述信息。⑦復(fù)合服務(wù)處于運(yùn)行狀態(tài),等待作業(yè)調(diào)用。⑧經(jīng)檢查,若工作流引擎運(yùn)行不正常,則從信息中心中注銷該引擎并通知錯(cuò)誤信息到用戶界面。⑨記錄錯(cuò)誤日志,并通知錯(cuò)誤信息到用戶界面。當(dāng)一個(gè)復(fù)合服務(wù)已經(jīng)部署在本系統(tǒng)的多個(gè)工作流引擎中,則用戶提交一個(gè)復(fù)合作業(yè),該復(fù)合作業(yè)的執(zhí)行步驟如圖5所示①提交復(fù)合作業(yè)及其QoS需求。普通用戶通過(guò)作業(yè)提交界面提交復(fù)合作業(yè)及其QoS需求。其中QoS需求可以指執(zhí)行該作業(yè)必須達(dá)到的性能指標(biāo),如內(nèi)存,存儲(chǔ)空間,CPU的個(gè)數(shù),完成時(shí)間等;也可以是服務(wù)的品質(zhì),如價(jià)格,信用等級(jí),安全策略等。②進(jìn)入作業(yè)隊(duì)列等待。用戶提交的復(fù)合作業(yè)現(xiàn)進(jìn)入系統(tǒng)的作業(yè)隊(duì)列(2.1)等待執(zhí)行。③動(dòng)態(tài)服務(wù)選擇。根據(jù)作業(yè)的QoS需求,進(jìn)行動(dòng)態(tài)選擇能夠滿足該需求的復(fù)合服務(wù)。若找到能夠滿足該QoS的多個(gè)復(fù)合服務(wù),在多個(gè)工作流引擎之間選擇負(fù)載最小引擎的復(fù)合服務(wù),執(zhí)行步驟④。否則,執(zhí)行步驟⑧。④提交作業(yè)到該服務(wù),修改服務(wù)狀態(tài),同時(shí)該服務(wù)為工作流作業(yè)產(chǎn)生服務(wù)實(shí)例。⑤由服務(wù)實(shí)例執(zhí)行該作業(yè),修改信息中心中的作業(yè)狀態(tài)。⑥檢查作業(yè)狀態(tài),若作業(yè)執(zhí)行結(jié)束,執(zhí)行步驟⑦,否則,執(zhí)行步驟⑤。⑦修改服務(wù)狀態(tài),銷毀服務(wù)實(shí)例。執(zhí)行步驟⑨。⑧記錄日志并通知用戶。執(zhí)行步驟⑨。⑨作業(yè)執(zhí)行結(jié)束。實(shí)例本系統(tǒng)ServiceFlow實(shí)例使用了一個(gè)集群服務(wù)器的6個(gè)節(jié)點(diǎn)來(lái)安裝。其系統(tǒng)實(shí)例軟硬件配置如表l所示。如表1所示,集群服務(wù)器的Nodel用來(lái)安裝客戶端界面模塊1,Node2安裝分布式工作流引擎模塊2內(nèi)的各個(gè)子模塊,Node3用來(lái)安裝服務(wù)動(dòng)態(tài)選擇代理模塊3,Node4、Node5和Node6均用來(lái)安裝了BPEL工作流引擎。表1系統(tǒng)實(shí)例軟硬件配置表<table>tableseeoriginaldocumentpage9</column></row><table><table>tableseeoriginaldocumentpage10</column></row><table>權(quán)利要求一種面向服務(wù)的分布式工作流管理系統(tǒng),包括用于支持服務(wù)實(shí)例存在的運(yùn)行時(shí)環(huán)境的服務(wù)容器(4),其特征在于該系統(tǒng)還包括客戶端界面模塊(1)、分布式工作流引擎模塊(2)和服務(wù)動(dòng)態(tài)選擇代理模塊(3);客戶端界面模塊(1)用于為外界用戶提供基于Web頁(yè)面的交互接口,它接收來(lái)自用戶的各種請(qǐng)求,并將其轉(zhuǎn)交給分布式工作流引擎模塊(2)進(jìn)行處理,處理完畢后,接收處理結(jié)果,并展現(xiàn)給用戶;分布式工作流引擎模塊(2)接收來(lái)自客戶端界面模塊(1)的各種請(qǐng)求,處理后將結(jié)果返回給客戶端界面模塊(1);分布式工作流引擎模塊(2)在虛擬服務(wù)參與工作流執(zhí)行時(shí)會(huì)調(diào)用動(dòng)態(tài)服務(wù)選擇代理模塊(3);分布式工作流引擎模塊(2)還負(fù)責(zé)執(zhí)行工作流作業(yè),并按照流程把子任務(wù)調(diào)度物理服務(wù)上執(zhí)行;動(dòng)態(tài)服務(wù)選擇代理模塊(3)用于接收來(lái)自分布式工作流引擎模塊(2)的服務(wù)選擇請(qǐng)求,從屬于同一虛擬服務(wù)的物理服務(wù)中選擇具有最優(yōu)服務(wù)質(zhì)量的物理服務(wù)進(jìn)行作業(yè)執(zhí)行。2.根據(jù)權(quán)利要求1所述的面向服務(wù)的分布式工作流管理系統(tǒng),其特征在于分布式工作流引擎模塊(2)包括作業(yè)隊(duì)列子模塊(21)、監(jiān)控子模塊(22)、作業(yè)調(diào)度與負(fù)載均衡器子模塊(23)、引擎管理器子模塊(24)、信息中心子模塊(25)、工作流引擎(261,262,…,26n)和數(shù)據(jù)庫(kù)(27);作業(yè)隊(duì)列子模塊(21)用于支持復(fù)合作業(yè)請(qǐng)求進(jìn)入作業(yè)隊(duì)列,它首先接收來(lái)自客戶端界面模塊(1)中用戶提交的作業(yè)請(qǐng)求;然后將作業(yè)請(qǐng)求進(jìn)入作業(yè)隊(duì)列進(jìn)行等待;最后由作業(yè)調(diào)度與負(fù)載均衡子模塊(23)從隊(duì)列中取出作業(yè)請(qǐng)求,并調(diào)度到負(fù)載最小的工作流引擎上執(zhí)行;監(jiān)控子模塊(22)負(fù)責(zé)對(duì)工作流引擎、復(fù)合服務(wù)、工作流作業(yè)實(shí)施監(jiān)視和控制,它首先接收來(lái)自客戶端界面模塊(1)中用戶提交的監(jiān)視和控制請(qǐng)求,然后調(diào)用引擎管理器子模塊(24)進(jìn)行直接對(duì)某個(gè)工作流引擎、復(fù)合服務(wù)、工作流作業(yè)實(shí)施監(jiān)視和控制;監(jiān)控子模塊(22)還接收來(lái)自引擎管理器子模塊(24)的監(jiān)控結(jié)果,并將其返回給客戶端界面模塊(1)并展現(xiàn)給用戶;作業(yè)調(diào)度與負(fù)載均衡子模塊(23)負(fù)責(zé)對(duì)從作業(yè)隊(duì)列子模塊(21)中取工作流作業(yè)請(qǐng)求,并通過(guò)引擎管理器子模塊(24)獲取各個(gè)引擎當(dāng)前實(shí)時(shí)的負(fù)載情況,從工作流引擎(261,262,…,26n)選擇負(fù)載最小的工作流引擎并將工作流作業(yè)分配給其進(jìn)行執(zhí)行;引擎管理器子模塊(24)負(fù)責(zé)對(duì)工作流引擎(261,262,…,26n)進(jìn)行管理,它接收來(lái)自作業(yè)調(diào)度與負(fù)載均衡子模塊的(23)的引擎狀態(tài)查詢請(qǐng)求,并從信息中心子???25)中提取各引擎負(fù)載和狀態(tài)信息,然后將其反饋給作業(yè)調(diào)度與負(fù)載均衡子模塊的(23);引擎管理器子模塊(24)還接收來(lái)自監(jiān)控子模塊(22)的監(jiān)控請(qǐng)求,然后對(duì)工作流引擎(261,262,…,26n)實(shí)施監(jiān)視和控制,最后將監(jiān)控的結(jié)果返回給監(jiān)控子模塊(22);另外,引擎管理器子模塊(24)還負(fù)責(zé)從客戶端界面模塊(1)下載作業(yè)輸入文件和上傳作業(yè)執(zhí)行結(jié)果文件;信息中心子模塊(25)為系統(tǒng)內(nèi)各工作流引擎服務(wù)提供信息注冊(cè)、信息更新、信息注銷,同時(shí)維護(hù)工作流引擎、服務(wù)、作業(yè)的描述信息,監(jiān)控信息,運(yùn)行時(shí)狀態(tài)信息;信息中心子模塊(25)接收來(lái)自引擎管理器子模塊(24)的信息注冊(cè)、更新和注銷;信息中心子模塊(25)支持引擎管理子模塊(24)對(duì)狀態(tài)信息的檢索和查詢,信息中心子模塊(25)將其信息記錄在數(shù)據(jù)庫(kù)(27)中;工作流引擎(261,262,…,26n)提供復(fù)合服務(wù)的運(yùn)行時(shí)環(huán)境,接收來(lái)自作業(yè)調(diào)度與負(fù)載均衡子模塊(23)的作業(yè)執(zhí)行請(qǐng)求,并執(zhí)行;工作流引擎(261,262,…,26n)還接受引擎管理器子模塊(24)的監(jiān)控和管理;數(shù)據(jù)庫(kù)(27)用于記錄工作流引擎、復(fù)合服務(wù)的狀態(tài)信息,工作流作業(yè)的執(zhí)行過(guò)程中的中間數(shù)據(jù)和狀態(tài)信息;數(shù)據(jù)庫(kù)(27)響應(yīng)來(lái)自信息中心子模塊(25)對(duì)這些數(shù)據(jù)的保存、讀取和更新操作。全文摘要本發(fā)明公開(kāi)了一種面向服務(wù)的分布式工作流管理系統(tǒng),包括用于支持服務(wù)實(shí)例存在的運(yùn)行時(shí)環(huán)境的服務(wù)容器、客戶端界面模塊、分布式工作流引擎模塊和服務(wù)動(dòng)態(tài)選擇代理模塊;客戶端界面模塊為用戶提供基于Web頁(yè)面的交互接口;分布式工作流引擎模塊處理來(lái)自客戶端界面模塊的各種請(qǐng)求,負(fù)責(zé)執(zhí)行工作流作業(yè),并按照流程把子任務(wù)調(diào)度物理服務(wù)上執(zhí)行;動(dòng)態(tài)服務(wù)選擇代理模塊從屬于同一虛擬服務(wù)的物理服務(wù)中選擇具有最優(yōu)服務(wù)質(zhì)量的物理服務(wù)進(jìn)行作業(yè)執(zhí)行。本發(fā)明支持虛擬服務(wù)作為原子服務(wù)參與服務(wù)復(fù)合,選擇具有最優(yōu)服務(wù)質(zhì)量的物理服務(wù)執(zhí)行作業(yè);支持WS/WSRF服務(wù),基于QoS的動(dòng)態(tài)服務(wù)選擇實(shí)現(xiàn)了服務(wù)動(dòng)態(tài)選擇的最優(yōu)化;采用分布式工作流引擎,實(shí)現(xiàn)了作業(yè)動(dòng)態(tài)負(fù)載均衡。文檔編號(hào)G06Q10/00GK101694709SQ20091027226公開(kāi)日2010年4月14日申請(qǐng)日期2009年9月27日優(yōu)先權(quán)日2009年9月27日發(fā)明者吳松,曹海軍,羌衛(wèi)中,趙峰,金海,陶永才,齊力申請(qǐng)人:華中科技大學(xué);