欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種支持多種引擎的云工作流實(shí)現(xiàn)方法與流程

文檔序號:12471563閱讀:391來源:國知局
一種支持多種引擎的云工作流實(shí)現(xiàn)方法與流程

本發(fā)明應(yīng)用于云工作流運(yùn)行技術(shù)領(lǐng)域,具體來說,是通過任務(wù)及數(shù)據(jù)的轉(zhuǎn)換,使得不同類型的執(zhí)行引擎可以為廣大的云工作流平臺(tái)用戶服務(wù)。



背景技術(shù):

云工作流是傳統(tǒng)工作流往云端遷移形成的工作流。對客戶來說,他們看到的云工作流是一個(gè)大的工作流平臺(tái),而后臺(tái)運(yùn)作的可能是一個(gè)龐大的工作流機(jī)群。從服務(wù)的角度看,云工作流把工作流作為服務(wù)提供給客戶,引擎、數(shù)據(jù)庫、Web service分別為計(jì)算、存儲(chǔ)、服務(wù)資源,被整合接入成完整的工作流服務(wù),被提供給客戶。

通俗地講,云工作流與工作流的關(guān)系有點(diǎn)像網(wǎng)絡(luò)游戲和單機(jī)游戲的關(guān)系。對系統(tǒng)來說,后臺(tái)是網(wǎng)絡(luò)上的機(jī)群而不是本地的單機(jī);對用戶來說,每個(gè)用戶不再是孤立的,用戶間可以有各種層面的交互。另一方面,云工作流拓展了傳統(tǒng)的工作流,帶來更大的用戶群、更廣泛的流程等等。

目前的云工作流,有亞馬遜的AWS,asana.com,basecamp.com,do.com這樣的弱云工作流,提供了松散的臨時(shí)定義的流程服務(wù),主要用于團(tuán)隊(duì)任務(wù)協(xié)作。任務(wù)可以被共享給一個(gè)團(tuán)隊(duì)的人,他們可以討論,共享一些文件和連接。以這樣的方式進(jìn)行社會(huì)活動(dòng)合作,是一個(gè)很不錯(cuò)的選擇。流程中的任務(wù)運(yùn)行,可以提供在社會(huì)合作環(huán)境中。這創(chuàng)造了動(dòng)態(tài)工作和事先定義的工作的一致性。

另一方面,目前有許多的科學(xué)工作流,如DAGMan,Pegasus,Kepler,Taverna,也向著云工作流的方向發(fā)展。他們支持在線設(shè)計(jì)、發(fā)布、運(yùn)行流程,可以幫助用戶集成一些科學(xué)計(jì)算,幫助調(diào)用Web服務(wù)并把這些服務(wù)集成成一個(gè)大服務(wù)??茖W(xué)家們,例如天文研究者,要想?yún)f(xié)作科研的話,就需要共享大規(guī)模的數(shù)據(jù),相當(dāng)于做些分布式計(jì)算。這個(gè)數(shù)據(jù)的流動(dòng)過程隨著研究機(jī)構(gòu)的增多可能越來越復(fù)雜,以至于需要獨(dú)立出來專門管理,這就形成了科學(xué)工作流,而科學(xué)工作流本身的特點(diǎn)(流程的協(xié)作、分布式大規(guī)模計(jì)算等等)對云工作流提出了要求。在國內(nèi),內(nèi)蒙古大學(xué)碩士學(xué)位論文提出了云工作流引擎的設(shè)計(jì)與實(shí)現(xiàn),主要為IC-Flow的云工作流框架。該框架給出了一個(gè)將傳統(tǒng)的工作流引擎遷移到云計(jì)算環(huán)境上的解決方案,將傳統(tǒng)工作流引擎部署到云平臺(tái)上,通過平臺(tái)提供的計(jì)算能力,增強(qiáng)該引擎的處理能力,也增強(qiáng)了傳統(tǒng)工作流的計(jì)算能力。

云化工作流帶來了更便宜、更高效、更安全的工作流系統(tǒng)。云使得軟件服務(wù)不再需要安裝,不需要在特定的硬件上選擇、購買、安裝和操作。上述工作在以往一般是公司的IT部門來做的。這些工作需要IT部門花費(fèi)許多精力,還有日后的維護(hù)等等的工作??傊?,這些花費(fèi)完全可以被轉(zhuǎn)于購買云服務(wù)。用戶只需注冊賬戶,就可以登錄使用云的工作流系統(tǒng),而不再為其他一些與業(yè)務(wù)無關(guān)的IT系統(tǒng)上的事物煩惱,這大大方便了用戶的使用,并且節(jié)約了許多錢和資源。另一方面,從服務(wù)提供商的角度來說,集中的機(jī)群和賣服務(wù)的方式也提高了資源利用率,降低了成本。

目前,大部分的云工作流都是以將整個(gè)工作流系統(tǒng)部署到如阿里云等云資源提供商的方式,實(shí)現(xiàn)系統(tǒng)從本地到云端的轉(zhuǎn)移,即從服務(wù)提供商的角度來說,他們以在云端為客戶提供配套的引擎及系統(tǒng)的方式來提供服務(wù)。雖然這樣的方式在一定程度上提高了資源利用率,降低了成本,但引擎機(jī)群與用戶系統(tǒng)配套綁定的方式,還是會(huì)使得引擎的利用率不夠高。而且,引擎與數(shù)據(jù)的類型綁定關(guān)系,也使得用戶提交的任務(wù)只能由特定種類的引擎來完成,限制了引擎的共享。



技術(shù)實(shí)現(xiàn)要素:

針對現(xiàn)有技術(shù)所存在的上述技術(shù)缺陷,本發(fā)明提供了一種支持多種引擎的云工作流實(shí)現(xiàn)方法,實(shí)現(xiàn)用戶系統(tǒng)與引擎機(jī)群的解耦,從而能讓所有的引擎都可能為每個(gè)用戶提供服務(wù)。

一種支持多種引擎的云工作流實(shí)現(xiàn)方法,其特征在于對于給定的各種類型的任務(wù),通過轉(zhuǎn)換方式,從引擎機(jī)群中找到合適的引擎來完成該任務(wù),包括如下步驟:

(1)工作流客戶端發(fā)起一個(gè)任務(wù)請求,向插件的調(diào)度中心模塊傳入該任務(wù)的相關(guān)參數(shù);

(2)調(diào)度中心模塊根據(jù)任務(wù)類型及數(shù)據(jù)ID,從數(shù)據(jù)倉庫中取得該任務(wù)執(zhí)行所需的所有數(shù)據(jù);

(3)調(diào)度中心模塊將任務(wù)及任務(wù)相關(guān)的參數(shù)、數(shù)據(jù),發(fā)送給傳遞中心模塊;

(4)傳遞中心模塊維護(hù)引擎機(jī)群列表,將該任務(wù)按策略分配給一個(gè)合適的引擎執(zhí)行,并將該任務(wù)轉(zhuǎn)換以適配該引擎;

(5)引擎執(zhí)行任務(wù),將執(zhí)行結(jié)果返回給傳遞中心模塊;

(6)傳遞中心模塊轉(zhuǎn)換步驟(5)執(zhí)行結(jié)果的格式,將執(zhí)行結(jié)果返回給調(diào)度中心模塊;

(7)調(diào)度中心模塊將結(jié)果數(shù)據(jù)寫入數(shù)據(jù)倉庫,并將結(jié)果返回給工作流客戶端。

所述步驟(1)中,任務(wù)請求的內(nèi)容包括任務(wù)類型、該任務(wù)提交的參數(shù)、該任務(wù)涉及的數(shù)據(jù)ID。

所述步驟(2)中,從數(shù)據(jù)倉庫中取得的數(shù)據(jù)包括流程及流程實(shí)例類型、與該任務(wù)相關(guān)的流程定義數(shù)據(jù)、與該任務(wù)相關(guān)的流程實(shí)例數(shù)據(jù)。

所述步驟(4)中,傳遞中心模塊維護(hù)的引擎機(jī)群由多種不同類型的引擎群組成,列表中的數(shù)據(jù)包括引擎ID、引擎類型、引擎地址、引擎狀態(tài)、引擎性能指標(biāo);任務(wù)轉(zhuǎn)換時(shí),根據(jù)數(shù)據(jù)及引擎類型,將數(shù)據(jù)轉(zhuǎn)換為該引擎類型所能識(shí)別的格式,將任務(wù)及任務(wù)參數(shù)轉(zhuǎn)換為該引擎類型所支持的格式。

所述步驟(6)中,傳遞中心模塊轉(zhuǎn)換結(jié)果時(shí),根據(jù)結(jié)果的數(shù)據(jù)格式,將其轉(zhuǎn)換為工作流客戶端數(shù)據(jù)原本的格式。

本發(fā)明的有益技術(shù)效果在于:本發(fā)明將原本指定特定引擎執(zhí)行的任務(wù)可被分配給更多的引擎來執(zhí)行,從而實(shí)現(xiàn)了支持多種引擎。通過調(diào)度中心模塊,可以使系統(tǒng)識(shí)別來自不同引擎的、不同類型的任務(wù);通過數(shù)據(jù)倉庫,可以由任務(wù)的需求獲取相應(yīng)的數(shù)據(jù);通過傳遞中心模塊,可以使各任務(wù)被合適的引擎執(zhí)行。由于本發(fā)明的方法實(shí)現(xiàn)了工作流系統(tǒng)中引擎與數(shù)據(jù)的解耦,從而使用戶提交的任務(wù)不再受限于特定的引擎來執(zhí)行,達(dá)到了云工作流引擎機(jī)群的任意引擎可以為任意用戶提供服務(wù)的目標(biāo)。本發(fā)明的云工作流實(shí)現(xiàn)方法,相對于其他云工作流實(shí)現(xiàn)方法,可以讓一個(gè)流程實(shí)例的不同任務(wù)在多個(gè)不同的引擎上執(zhí)行,讓同個(gè)任務(wù)在多種不同的引擎上執(zhí)行。本發(fā)明的云工作流實(shí)現(xiàn)方法讓引擎機(jī)群中每個(gè)引擎都可能為每個(gè)用戶提供服務(wù),從而更好地利用了云引擎資源,進(jìn)一步提高了云工作流的效率,降低了成本。

附圖說明

圖1為云工作流框架示意圖。

圖2為云工作流運(yùn)行過程示意圖。

圖3為云工作流運(yùn)行時(shí)各方交互的示意圖。

具體實(shí)施方式

為了更為具體地描述本發(fā)明,下面結(jié)合附圖及具體實(shí)施例子對本發(fā)明進(jìn)行詳細(xì)說明。

一種支持多種引擎的云工作流實(shí)現(xiàn)方法,其特征在于對于給定的各種類型的任務(wù),通過轉(zhuǎn)換方式,從引擎機(jī)群中找到合適的引擎來完成該任務(wù),包括如下步驟:

(1)工作流客戶端發(fā)起一個(gè)任務(wù)請求,向插件的調(diào)度中心模塊傳入該任務(wù)的相關(guān)參數(shù);

(2)調(diào)度中心模塊根據(jù)任務(wù)類型及數(shù)據(jù)ID,從數(shù)據(jù)倉庫中取得該任務(wù)執(zhí)行所需的所有數(shù)據(jù);

(3)調(diào)度中心模塊將任務(wù)及任務(wù)相關(guān)的參數(shù)、數(shù)據(jù),發(fā)送給傳遞中心模塊;

(4)傳遞中心模塊維護(hù)引擎機(jī)群列表,將該任務(wù)按策略分配給一個(gè)合適的引擎執(zhí)行,并將該任務(wù)轉(zhuǎn)換以適配該引擎;

(5)引擎執(zhí)行任務(wù),將執(zhí)行結(jié)果返回給傳遞中心模塊;

(6)傳遞中心模塊轉(zhuǎn)換步驟(5)執(zhí)行結(jié)果的格式,將執(zhí)行結(jié)果返回給調(diào)度中心模塊;

(7)調(diào)度中心模塊將結(jié)果數(shù)據(jù)寫入數(shù)據(jù)倉庫,并將結(jié)果返回給工作流客戶端。

所述步驟(1)中,任務(wù)請求的內(nèi)容包括任務(wù)類型、該任務(wù)提交的參數(shù)、該任務(wù)涉及的數(shù)據(jù)ID。

所述步驟(2)中,從數(shù)據(jù)倉庫中取得的數(shù)據(jù)包括流程及流程實(shí)例類型、與該任務(wù)相關(guān)的流程定義數(shù)據(jù)、與該任務(wù)相關(guān)的流程實(shí)例數(shù)據(jù)。

所述步驟(4)中,傳遞中心模塊維護(hù)的引擎機(jī)群由多種不同類型的引擎群組成,列表中的數(shù)據(jù)包括引擎ID、引擎類型、引擎地址、引擎狀態(tài)、引擎性能指標(biāo);任務(wù)轉(zhuǎn)換時(shí),根據(jù)數(shù)據(jù)及引擎類型,將數(shù)據(jù)轉(zhuǎn)換為該引擎類型所能識(shí)別的格式,將任務(wù)及任務(wù)參數(shù)轉(zhuǎn)換為該引擎類型所支持的格式。

所述步驟(6)中,傳遞中心模塊轉(zhuǎn)換結(jié)果時(shí),根據(jù)結(jié)果的數(shù)據(jù)格式,將其轉(zhuǎn)換為工作流客戶端數(shù)據(jù)原本的格式。

實(shí)施例:

本云工作流實(shí)現(xiàn)方法的框架結(jié)構(gòu)如圖1所示,本方法的實(shí)現(xiàn)通過插件的形式將用戶和引擎聯(lián)系起來,插件中有調(diào)度中心模塊、傳遞中心模塊、數(shù)據(jù)準(zhǔn)備模塊、接口適配模塊,協(xié)作實(shí)現(xiàn)發(fā)明內(nèi)容的步驟中所需的功能,其中,調(diào)度中心模塊與用戶交互,接收用戶提出的任務(wù),返回執(zhí)行結(jié)果給用戶,發(fā)起對數(shù)據(jù)倉庫的讀寫指令,將任務(wù)發(fā)送給傳遞中心;傳遞中心模塊維護(hù)引擎集群注冊表,根據(jù)調(diào)度方案發(fā)起具體的任務(wù)調(diào)度;數(shù)據(jù)準(zhǔn)備模塊負(fù)責(zé)接受指令后對數(shù)據(jù)進(jìn)行轉(zhuǎn)換、讀寫;接口適配模塊負(fù)責(zé)適配各種引擎,將插件中對引擎發(fā)起的指令轉(zhuǎn)換為對各種引擎的具體可執(zhí)行指令。接下來結(jié)合例子來描述本云工作流實(shí)現(xiàn)方法的具體實(shí)施過程。

圖2及圖3描述了用戶使用該云工作流平臺(tái)完成流程的部署、流程實(shí)例創(chuàng)建、3個(gè)流程活動(dòng)實(shí)例提交的過程。圖2描述這個(gè)例子的整體運(yùn)行過程,圖3描述這個(gè)例子的各方具體交互過程。

如圖2所示,插件的注冊表中有3個(gè)引擎:引擎2222221(JTang類型、地址112.124.58.47:8880),引擎1239841(Activiti類型、地址127.0.0.1:8080),引擎4455667(JTang類型、地址127.0.0.1:8080),且這3個(gè)引擎目前的狀態(tài)都是可用(不忙碌且沒有失去聯(lián)系)。用戶的流程為由3個(gè)順序的活動(dòng)組成。該用戶對插件發(fā)起的任務(wù)請求包括:部署流程、創(chuàng)建流程實(shí)例、提交任務(wù)1、提交任務(wù)2、提交任務(wù)3。在實(shí)際執(zhí)行時(shí),任務(wù)1被分配給引擎2222221執(zhí)行,任務(wù)2被分配給引擎4455667執(zhí)行,任務(wù)3被分配給引擎1239841執(zhí)行。

如圖3所示,本方法實(shí)施時(shí)用戶、插件、引擎的具體交互過程如下:

1.用戶調(diào)用部署函數(shù),發(fā)起部署請求,并制定該部署任務(wù)的參數(shù)(流程定義文件類型為JTang,執(zhí)行引擎類型為JTang,流程定義文件schema,流程名test),函數(shù)為publishProcess(JTang,JTang,{schema},test)。

2.插件獲得該任務(wù)的數(shù)據(jù),根據(jù)參數(shù)(引擎類型JTang)選出合適的引擎(引擎2222221)來執(zhí)行任務(wù),由于執(zhí)行引擎類型與流程定義文件類型相同,故不用進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換。接下來,插件調(diào)用該引擎的API,告訴該引擎部署流程,并傳遞該API所需的參數(shù)和數(shù)據(jù),函數(shù)為publishProcess({schema},test)。

3.引擎執(zhí)行任務(wù),返回執(zhí)行結(jié)果為部署完成的流程對象{process}。

4.插件將該執(zhí)行結(jié)果返回給用戶,將數(shù)據(jù)寫入數(shù)據(jù)倉庫中。至此,用戶發(fā)起的部署任務(wù)完成。

5.用戶調(diào)用創(chuàng)建流程實(shí)例函數(shù),發(fā)起創(chuàng)建流程實(shí)例的請求,并傳遞參數(shù)(執(zhí)行引擎類型為JTang,流程對象為process,流程實(shí)例名為testIns),函數(shù)為createInstance(JTang,{process},testIns)。

6.插件獲得該任務(wù)的數(shù)據(jù),根據(jù)參數(shù)(引擎類型JTang)選出合適的引擎(引擎4455667)來執(zhí)行任務(wù),由于執(zhí)行引擎類型與流程對象類型相同,故不用進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換。接下來,插件調(diào)用該引擎的API:setProcess({process}),先將該任務(wù)相關(guān)的數(shù)據(jù)(流程定義對象{process})傳遞給引擎4455667。引擎執(zhí)行該API并返回該流程對象存在引擎中的ID(69)。然后,插件調(diào)用createIns(69,testIns),讓引擎執(zhí)行創(chuàng)建流程69的實(shí)例的任務(wù)。

7.引擎執(zhí)行任務(wù),返回執(zhí)行結(jié)果為創(chuàng)建完成的流程定義實(shí)例{processInstance}。

8.插件將該執(zhí)行結(jié)果返回給用戶,將數(shù)據(jù)寫入數(shù)據(jù)倉庫中。至此,用戶發(fā)起的創(chuàng)建流程實(shí)例任務(wù)完成。

9.用戶調(diào)用提交任務(wù)項(xiàng)函數(shù),發(fā)起提交任務(wù)項(xiàng)的請求,并傳遞參數(shù)(執(zhí)行引擎類型為JTang,流程對象為process,流程實(shí)例對象為processInstance,執(zhí)行人ID為14,任務(wù)項(xiàng)ID為133),函數(shù)為commitWorkitem(JTang,{process},{processInstance},14,133})。

10.插件獲得該任務(wù)的數(shù)據(jù),根據(jù)參數(shù)(引擎類型JTang)選出合適的引擎(引擎2222221)來執(zhí)行任務(wù),由于執(zhí)行引擎類型與流程對象類型相同,故不用進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換。接下來,插件調(diào)用該引擎的API:setProcess({process})和setProcessIns({processInstance}),先將該任務(wù)相關(guān)的數(shù)據(jù)(流程定義對象{process}和流程實(shí)例對象{processInstance})傳遞給引擎2222221。然后,插件調(diào)用commit(133),讓引擎執(zhí)行提交任務(wù)項(xiàng)133的任務(wù)。

11.引擎執(zhí)行任務(wù),返回執(zhí)行結(jié)果為提交任務(wù)項(xiàng)后的流程實(shí)例{processInstance}。

12.插件將該執(zhí)行結(jié)果返回給用戶,將數(shù)據(jù)寫入數(shù)據(jù)倉庫中。至此,用戶發(fā)起的提交任務(wù)項(xiàng)任務(wù)完成。

13.用戶調(diào)用提交任務(wù)項(xiàng)函數(shù),發(fā)起提交任務(wù)項(xiàng)的請求,并傳遞參數(shù)(執(zhí)行引擎類型為Activiti,流程對象為process,流程實(shí)例對象為processInstance,執(zhí)行人ID為14,任務(wù)項(xiàng)ID為138),函數(shù)為commitWorkitem(JTang,{process},{processInstance},14,138})。

14.插件獲得該任務(wù)的數(shù)據(jù),根據(jù)參數(shù)(引擎類型Activiti)選出合適的引擎(引擎1239841)來執(zhí)行任務(wù),由于執(zhí)行引擎類型與流程對象類型不同,故需要進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換,插件調(diào)用transformation函數(shù),將JTang類型的數(shù)據(jù)轉(zhuǎn)換為Activiti類型的數(shù)據(jù)。接下來,插件調(diào)用該引擎的API:setProcess({process})和setProcessIns({processInstance}),先將該任務(wù)相關(guān)的數(shù)據(jù)(流程定義對象{process}和流程實(shí)例對象{processInstance})傳遞給引擎1239841。然后,插件調(diào)用commit(138),讓引擎執(zhí)行提交任務(wù)項(xiàng)138的任務(wù)。

15.引擎執(zhí)行任務(wù),返回執(zhí)行結(jié)果為提交任務(wù)項(xiàng)后的流程實(shí)例{processInstance}。

16.插件將該執(zhí)行結(jié)果返回給用戶,將數(shù)據(jù)寫入數(shù)據(jù)倉庫中。至此,用戶發(fā)起的提交任務(wù)項(xiàng)任務(wù)完成。

最后應(yīng)說明的是,以上實(shí)例僅用以說明而非限制本發(fā)明的技術(shù)方案,盡管參照上述實(shí)例對本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,依然可以對本發(fā)明進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍的任何修改或者局部替換,其均應(yīng)涵蓋在本發(fā)明的范圍當(dāng)中。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
太保市| 腾冲县| 常山县| 平果县| 潢川县| 清流县| 牟定县| 定西市| 保靖县| 大庆市| 景谷| 商河县| 阿克苏市| 星座| 樟树市| 从化市| 邵东县| 浦北县| 西乌珠穆沁旗| 克东县| 大埔区| 万盛区| 汉中市| 澎湖县| 屏东市| 辽源市| 洪泽县| 台湾省| 惠安县| 外汇| 郎溪县| 突泉县| 凤凰县| 乌兰察布市| 健康| 资源县| 赞皇县| 宣威市| 尤溪县| 周口市| 连云港市|