通用流程異步調(diào)度方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種通用流程異步調(diào)度方法和系統(tǒng)。該通用流程異步調(diào)度方法包括:將與流程對應(yīng)的進程順序地劃分為多個子進程;基于流程狀態(tài)的更新完成所述多個子進程中的一個子進程,而不依賴于所述多個子進程中的下一子進程的啟動;在所述一個子進程完成時,通過流程狀態(tài)的更新啟動所述下一子進程。
【專利說明】通用流程異步調(diào)度方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機軟件領(lǐng)域。更具體地,本發(fā)明涉及通用流程異步調(diào)度方法及系統(tǒng)。
【背景技術(shù)】
[0002]在現(xiàn)有技術(shù)中,在計算機系統(tǒng)中的各種應(yīng)用的流程調(diào)度處理,特別是其中的任務(wù)提交處理,均采用同步方式進行。具體地,現(xiàn)有流程調(diào)度處理模式一般都是采用單線程處理方式,即,任何流程處理(包括提交處理)全過程均采用單一線程完成。目前,在計算機系統(tǒng)中的各種應(yīng)用的大部分流程調(diào)度中,僅僅能支持單一應(yīng)用的獨立流程調(diào)度,重要原因就是很難支持高并發(fā)處理能力。然而,實際中,流程提交處理往往包括大量業(yè)務(wù)判斷、業(yè)務(wù)處理、數(shù)據(jù)持久化等相關(guān)業(yè)務(wù)操作。
[0003]在描述現(xiàn)有技術(shù)和本發(fā)明之前,先對本說明書中的幾個術(shù)語進行描述。
[0004]活動:活動(activity)是流程中的基本的業(yè)務(wù)單元。每一個活動代表一個特定的業(yè)務(wù),比如說提交、驗證等等都可以是一個活動?;顒佑袃煞N類型:任務(wù)(task)和子處理(sub-process)。任務(wù)很明顯就是單一的活動。而子處理是一個復(fù)合的活動,在該活動中存在一個子流程。
[0005]作業(yè):作業(yè)(job)是計算機操作者(或是一個叫做作業(yè)調(diào)度器的程序)交給信息處理系統(tǒng)的執(zhí)行單位。例如執(zhí)行一個函數(shù)就是一個作業(yè)。
[0006]事件:事件(event) —般對應(yīng)狀態(tài)的變化。例如按下鍵盤,這可以作為一種事件。對于事件的操作一般分為事件的響應(yīng)和事件的處理兩個部分。
[0007]下面描述現(xiàn)有技術(shù)中常見的流程調(diào)度處理。圖1以一個流程中的提交處理和驗證處理為例示出了現(xiàn)有技術(shù)中的常規(guī)流程調(diào)度處理的時序圖。如圖1所示,在常規(guī)流程調(diào)度處理中,客戶端首先進行提交處理,從而進入提交活動。隨后,進行流程狀態(tài)更新并進行路由判斷,根據(jù)判斷結(jié)果啟動下一活動并進行與下一活動相關(guān)的設(shè)置處理,隨后才返回到客戶端。在此過程中,客戶端必須等待進行路由的判斷、下一活動的啟動以及相關(guān)的設(shè)置處理。在某些高并發(fā)流程處理的情況下,這樣的等待使得流程處理效率低下。
[0008]圖2以一個流程中的提交和驗證為例示出了常規(guī)流程調(diào)度處理的示意圖。如圖2所示,提交的完成與驗證的啟動這兩個處理均只能在完整的一個事務(wù)中順序完成。換句話說,提交的活動完成這個處理必須等待驗證的活動正常啟動后,才能結(jié)束。
[0009]如圖所示,該流程提交處理方式導(dǎo)致處理響應(yīng)時間較長,處理效率受到很大影響。
[0010]如上所述,在現(xiàn)有技術(shù)的流程調(diào)度中,流程提交處理隨著流程復(fù)雜度提升、流程路由判斷增多等內(nèi)容,導(dǎo)致流程提交這個大事務(wù)處理越來越慢,客戶端響應(yīng)時間越來越長,應(yīng)用系統(tǒng)效率低下。從技術(shù)特征分析而言,導(dǎo)致以上缺點的核心原因是:流程提交從引擎設(shè)計角度而言,采用一種同步單線程處理的機制。無法實現(xiàn)并行操作。在作為大容量工作流引擎,特別是流程云服務(wù)器能力,對于并行處理能力要求很高。
【發(fā)明內(nèi)容】
[0011]提出本發(fā)明來克服現(xiàn)有技術(shù)中的流程調(diào)度效率低下,客戶端響應(yīng)時間長的問題。本發(fā)明重點在并行處理關(guān)鍵點上,流程處理,尤其是提交處理,實現(xiàn)可配置的異步處理能力。極大提升流程弓I擎處理效率和減少處理響應(yīng)時間。
[0012]本發(fā)明的一方面提供一種通用流程異步調(diào)度方法,包括:將與流程對應(yīng)的進程順序地劃分為多個子進程;基于流程狀態(tài)的更新完成所述多個子進程中的一個子進程,而不依賴于所述多個子進程中的下一子進程的啟動;在所述一個子進程完成時,通過流程狀態(tài)的更新啟動所述下一子進程。
[0013]優(yōu)選地,在所述通用流程異步調(diào)度方法中,所述的基于流程狀態(tài)的更新完成所述多個子進程中的一個子進程的步驟包括:在所述一個子進程完成時,基于更新的流程狀態(tài)返回完成結(jié)果。
[0014]優(yōu)選地,在所述通用流程異步調(diào)度方法中,所述的通過流程狀態(tài)的更新啟動所述下一子進程的步驟包括:基于更新的流程狀態(tài)產(chǎn)生用于啟動下一子進程的事件;并且在該事件的觸發(fā)下啟動所述下一子進程。
[0015]優(yōu)選地,在所述通用流程異步調(diào)度方法中,在該事件的觸發(fā)下啟動所述下一子進程的步驟包括:根據(jù)該事件,產(chǎn)生用于啟動下一子進程的消息;并且根據(jù)所述消息執(zhí)行下一子進程的啟動序列。
[0016]優(yōu)選地,在所述通用流程異步調(diào)度方法中,所述一個子進程包括從客戶端接收的流程提交子進程,基于該流程提交子進程的執(zhí)行對流程狀態(tài)進行更新;基于更新的流程狀態(tài),完成流程提交子進程并向客戶端返回結(jié)果。
[0017]本發(fā)明的另一方面提供一種通用流程異步調(diào)度系統(tǒng),包括:外部接口,被配置為接收用于執(zhí)行流程的指令以及輸出結(jié)果;狀態(tài)機,被配置為更新流程狀態(tài),基于更新的流程狀態(tài)完成流程的當(dāng)前子進程以及產(chǎn)生用于啟動下一子進程的事件;事件監(jiān)聽器,被配置為實時監(jiān)聽事件,并基于監(jiān)聽到的事件發(fā)出用于啟動下一子進程的消息;作業(yè)處理器,被配置為接收所述消息并啟動下一子進程。
[0018]優(yōu)選地,在所述通用流程異步調(diào)度系統(tǒng)中,所述事件監(jiān)聽器被配置為創(chuàng)建事件發(fā)生機制;并且狀態(tài)機能夠在狀態(tài)改變時產(chǎn)生基于所述事件發(fā)生機制的事件,從而事件監(jiān)聽器能夠監(jiān)聽到該事件。
[0019]優(yōu)選地,在所述通用流程異步調(diào)度系統(tǒng)中,所述子進程包括通過外部接口從客戶端接收的流程提交子進程,所述狀態(tài)機基于該流程提交子進程的執(zhí)行對流程狀態(tài)進行更新,并向外部接口返回該流程提交子進程完成的消息;所述外部接口在接收到該流程提交子進程完成的消息時,進行流程提交子進程完成的處理并將處理結(jié)果返回給客戶端。
[0020]優(yōu)選地,在所述通用流程異步調(diào)度系統(tǒng)中進一步包括:持久化框架,其被配置為將流程狀態(tài)的控制和流轉(zhuǎn)通過文件或數(shù)據(jù)庫進行狀態(tài)持久化。
[0021]通過本發(fā)明的通用流程異步調(diào)度方法和系統(tǒng),支持高并發(fā)、高性能、并行處理能力的流程引擎,以適應(yīng)流程引擎以云服務(wù)(SAAS)方式提供高可靠高性能的活動處理能力。極大提升流程引擎處理效率和減少處理響應(yīng)時間。
【專利附圖】
【附圖說明】[0022]圖1是以一個流程中的提交處理和驗證處理為例示出現(xiàn)有技術(shù)中的常規(guī)流程調(diào)度處理的時序圖。
[0023]圖2是以一個流程中的提交和驗證為例示出了常規(guī)流程調(diào)度處理的示意圖。
[0024]圖3是從流程總體角度示出了本發(fā)明的異步流程調(diào)度系統(tǒng)的示意圖。
[0025]圖4是本發(fā)明的通用流程異步調(diào)度系統(tǒng)的框圖。
[0026]圖5是本發(fā)明的通用流程異步調(diào)度處理的時序圖。
[0027]圖6是與圖5的通用流程異步調(diào)度處理的時序圖對應(yīng)的流程圖.[0028]圖7是以一個流程中的提交和驗證為例示出了本發(fā)明的通用流程異步調(diào)度處理的示意圖。
[0029]圖8是與圖7的流程中的提交和驗證處理對應(yīng)的流程圖。
【具體實施方式】
[0030]現(xiàn)在將按照附圖詳細(xì)描述本發(fā)明的優(yōu)選實施例。注意,實施例中的組件的相對布置和器件的形狀僅被描述為例子,并且并不旨在將本發(fā)明的范圍限制于這些例子。此外,相似的附圖標(biāo)記和字母在圖中指代類似的項,由此,只要在一個圖中定義一項,則無需對于后續(xù)的圖討論該項。
[0031]本發(fā)明的流程異步調(diào)度方法和系統(tǒng)的原理是將一個流程分為多個子進程,并且前一子進程的完成并不依賴于后一子進程的啟動,而是依賴于流程狀態(tài)的更新。這樣實現(xiàn)了各個子進程的完成無需等待下一子進程的啟動,減少了等待時間,從而資源利用率得到提聞。
[0032]下面結(jié)合圖3到圖6詳細(xì)描述本發(fā)明的流程異步調(diào)度系統(tǒng)的構(gòu)成以及與流程處理的其他部分之間的關(guān)系。還將描述流程異步調(diào)度系統(tǒng)或方法的具體實現(xiàn)。
[0033]圖3是從流程總體角度示出了本發(fā)明的流程異步調(diào)度系統(tǒng)的定位以及與其他部分的關(guān)系的示意圖。如圖3所示,作為流程產(chǎn)品總體組成,一般包括流程適配器、任務(wù)隊列、流程管理、流程異步調(diào)度引擎、流程定義這幾個部分。各部分功能如下。
[0034]流程適配器實現(xiàn)了可移植、可復(fù)用、無差別的接口,為客戶端提供了簡明、統(tǒng)一的調(diào)用服務(wù)。流程適配器是客戶端和工作流程處理之間的連接媒介,提供了多樣、穩(wěn)定的訪問服務(wù)接口。
[0035]任務(wù)隊列是按業(yè)務(wù)的維度部署的,每個隊列下每個角色為一個獨立的線程。每個線程根據(jù)動態(tài)時間間隔,以角色為單位批量獲取本隊列本角色下的工作項到內(nèi)存中,按照角色、活動定義、優(yōu)先級等維度組織工作項隊列,對外提供工作項的獲取、提交等服務(wù),實現(xiàn)高并發(fā)環(huán)境下任務(wù)項的科學(xué)、合理、準(zhǔn)確、平滑的調(diào)度。
[0036]異步流程調(diào)度是產(chǎn)品的核心組件,根據(jù)需求提供流程定義模板的解析、流程實例的生成、流程路由計算、新流程新任務(wù)項的產(chǎn)生、完全動態(tài)分支等多種分支合并策略、流程環(huán)節(jié)參與者與排除者的指定、優(yōu)先級自動調(diào)整以及超時工作項的自動回收等功能。采取引擎組間雙活備份策略實現(xiàn)流程的不間斷處理,在數(shù)據(jù)庫等資源可支持的范圍內(nèi)具備無限制的橫向擴展能力,以應(yīng)對由于日益增長的業(yè)務(wù)量帶來的倍數(shù)增長的需處理的流程實例數(shù)量。
[0037]流程定義提供了可 視化的流程定制界面,通過拖拽等簡單操作實現(xiàn)對復(fù)雜業(yè)務(wù)流程的定制,把產(chǎn)品開發(fā)的過程轉(zhuǎn)換成模型定制的過程,對業(yè)務(wù)需求和產(chǎn)品服務(wù)能夠進行快速響應(yīng)和部署。流程定義模塊將業(yè)務(wù)訂制過程中共性的操作固化為子流程并加入子流程庫,為后繼的業(yè)務(wù)流程訂制提供了大量的可復(fù)用模板。可視化的流程定義基于XML格式文件,在存儲時將XML文件轉(zhuǎn)化為關(guān)系數(shù)據(jù)庫中的記錄,提高了流程引擎解析流程定義的效率。
[0038]流程管理提供了對流程處理過程的監(jiān)控、管理等功能。為組件自身的監(jiān)控以及業(yè)務(wù)層對業(yè)務(wù)流程處理的監(jiān)控提供基礎(chǔ)功能。
[0039]從圖3中可以看出,流程異步調(diào)度系統(tǒng)是業(yè)務(wù)流程平臺核心部分,是平臺發(fā)動機和驅(qū)動器。因此它處理性能好壞直接關(guān)系平臺產(chǎn)品擴展能力和要求。
[0040]下面對流程異步調(diào)度系統(tǒng)的構(gòu)成進行詳細(xì)描述。圖4是本發(fā)明的流程異步調(diào)度系統(tǒng)的框圖。如圖4所示,所述流程異步調(diào)度系統(tǒng)包括:事件監(jiān)聽控制器、作業(yè)處理器、狀態(tài)控制機、流程外部接口和持久化框架。
[0041]事件監(jiān)聽控制器(event-listener)是實現(xiàn)異步處理所需的基礎(chǔ)器件之一。它有兩個核心作用,第一:它能夠?qū)崟r監(jiān)聽各類事件,例如啟動事件、完成事件;第二,它提供事件發(fā)生機制,即,在事件監(jiān)聽控制器中規(guī)定在什么狀態(tài)下產(chǎn)生什么事件,并且基于該事件進行什么活動。從而,其他部件產(chǎn)生的事件必須是基于該事件監(jiān)聽控制器的事件發(fā)生機制,這樣,事件監(jiān)聽控制器才能偵測到這個事件。如果其他部件產(chǎn)生的事件沒有遵循該事件發(fā)生機制,則無法被事件監(jiān)聽控制器偵測到,無法進行后續(xù)的處理。在監(jiān)聽到事件時,事件監(jiān)聽控制器能夠根據(jù)所述事件進行相應(yīng)的處理,例如,向作業(yè)處理器發(fā)送用于啟動相關(guān)活動的消息。
[0042]作業(yè)處理器(job worker)是指提供作業(yè)處理控制和管理的器件。作業(yè)處理器的控制和管理包括作業(yè)注冊、作業(yè)執(zhí)行、作業(yè)異常處理、作業(yè)處理序列控制等功能。例如,作業(yè)處理器在接收到來自事件監(jiān)聽控制器的用于啟動相關(guān)活動的消息時,執(zhí)行活動啟動序列,包括流程路由判斷、參與者設(shè)置、活動啟動、流程狀態(tài)的修改等工作。
[0043]狀態(tài)控制機用于對應(yīng)流程不同環(huán)節(jié)來進行不同狀態(tài)控制和轉(zhuǎn)換。狀態(tài)機是控制流程流轉(zhuǎn)狀態(tài)的基本控制單元,它能實現(xiàn)流程按照定義要求進行流轉(zhuǎn)與狀態(tài)控制。具體地,狀態(tài)控制機能夠更新流程狀態(tài),產(chǎn)生消息和事件。
[0044]持久化框架用于將流程狀態(tài)控制和流轉(zhuǎn)通過文件或數(shù)據(jù)庫進行狀態(tài)持久化,從而使得文件或數(shù)據(jù)庫被存儲,甚至當(dāng)使用這些文件或數(shù)據(jù)庫的程序不在運行狀態(tài)時也可以保留該文件或數(shù)據(jù)庫。因此該器件就是支持持久化框架的能力。
[0045]本領(lǐng)域技術(shù)人員能夠理解,所述持久化框架并不是實現(xiàn)本發(fā)明所必需的。所述持久化框架僅是為了將文件或數(shù)據(jù)庫持久化。在沒有所述持久化框架的情況下,本發(fā)明依然能夠?qū)崿F(xiàn)減少等待時間,提聞效率的目的。
[0046]流程外部接口提供外部器件或系統(tǒng)調(diào)用的統(tǒng)一接口。其能夠從客戶端接收指令,將該指令傳輸給相應(yīng)的部件,并且能夠根據(jù)來自其他部件的通知或消息,完成流程當(dāng)前子進程的處理,并將當(dāng)前子進程完成的消息通知給客戶端。
[0047]下面結(jié)合圖5和圖6詳細(xì)描述本發(fā)明的通用流程異步調(diào)度系統(tǒng)的通用流程異步調(diào)度處理。圖5是以流程提交為例示出了本發(fā)明的通用流程異步調(diào)度處理的時序圖。圖6是與圖5的時序圖對應(yīng)的流程圖。[0048]在圖6的步驟S601中,如參照圖5的左側(cè)所示的,客戶端首先通過流程外部接口執(zhí)行流程提交處理。
[0049]在步驟S602中,流程外部接口在接收到流程提交處理之后,在相應(yīng)部件執(zhí)行了提交相應(yīng)的處理之后,狀態(tài)機更新流程狀態(tài)。
[0050]在步驟S603中,基于此更新的狀態(tài),狀態(tài)機向流程外部接口返回一個狀態(tài)已更新的消息。由此,流程外部接口進行一些相應(yīng)的處理,并將完成的結(jié)果返回給客戶端。
[0051]在步驟S604中,在狀態(tài)機更新了流程狀態(tài)之后,狀態(tài)機產(chǎn)生一個用于啟動下一活動的事件。如上文參照圖4所描述的,所述事件是基于事件監(jiān)聽控制器所規(guī)定的事件發(fā)生機制的,以便事件監(jiān)聽控制器能夠?qū)崟r監(jiān)聽到該事件。
[0052]在步驟S605中,事件監(jiān)聽控制器監(jiān)聽到該用于啟動下一活動的事件時,向作業(yè)處理器發(fā)出用于產(chǎn)生下一活動的消息。
[0053]在步驟S606中,作業(yè)處理器接收到該用于產(chǎn)生下一活動的消息時,執(zhí)行啟動下一活動的處理。具體地,包括流程路由判斷、參與者設(shè)置、流程狀態(tài)的修改的處理。
[0054]上面僅以流程中的兩個活動為例說明了本發(fā)明的流程異步調(diào)度處理。
[0055]從圖5和圖6以及相應(yīng)描述可以看出,在本發(fā)明的流程異步調(diào)度系統(tǒng)中,將客戶端的流程提交活動與下一活動分為兩個子進程進行處理。并且前一子進程,即,流程提交活動的完成只根據(jù)狀態(tài)的更新來實現(xiàn),而不是要等到下一活動的啟動。這樣客戶端無需等待,節(jié)省了時間,進而大大提高了效率。
[0056]雖然以流程提交活動為例示出了流程異步調(diào)度系統(tǒng)或方法的處理,但是該處理并不限于流程提交活動,而是同樣適用于流程的其他活動。對于其他活動的處理與上面所述的兩個活動的處理相同。例如流程提交活動的下一活動與該下一活動之后的下一活動。在該下一活動的參與者和包括作業(yè)處理器的相應(yīng)部件執(zhí)行該下一活動時,狀態(tài)控制機根據(jù)活動的執(zhí)行情況更新流程狀態(tài)。例如當(dāng)完成該一下活動的處理時,狀態(tài)控制機將流程狀態(tài)更新為當(dāng)前活動完成的狀態(tài)?;诖耍蛄鞒掏獠拷涌诜祷馗碌臓顟B(tài)的消息。從而流程外部接口進行一些相應(yīng)的處理并將當(dāng)前活動完成的結(jié)果返回給當(dāng)前活動的參與者的客戶端。從而當(dāng)前活動的子進程完成。在此過程中,該參與者不必等待之后活動的啟動。
[0057]同樣地,在狀態(tài)控制機更新了流程狀態(tài)之后,狀態(tài)控制機產(chǎn)生一個用于啟動當(dāng)前活動的下一活動的事件,進入該下一活動的子進程。事件監(jiān)聽控制器監(jiān)聽到該事件時,向作業(yè)處理器發(fā)出一個用于產(chǎn)生下一活動的消息。作業(yè)處理器接收到該用于產(chǎn)生下一活動的消息時,執(zhí)行啟動下一活動的處理。具體地,包括流程路由判斷、參與者設(shè)置、流程狀態(tài)的修改等處理。
[0058]綜上所述,根據(jù)本發(fā)明的流程異步調(diào)度系統(tǒng)和方法,將與流程對應(yīng)的進程順序地劃分為多個子進程;基于流程狀態(tài)的更新完成所述多個子進程中的一個子進程,而不依賴于所述多個子進程中的下一子進程的啟動;在一個子進程完成時,通過流程狀態(tài)的更新啟動所述下一子進程。
[0059]下面對比現(xiàn)有技術(shù)中的流程中的提交和驗證處理,參照圖7和圖8說明本發(fā)明的通用流程異步調(diào)度處理。圖7以一個流程中的提交和驗證為例示出了本發(fā)明的通用流程異步調(diào)度處理的示意圖。圖8是與圖7的流程中的提交和驗證處理對應(yīng)的流程圖。
[0060]首先,在圖8的步驟S801中,客戶端通過流程外部接口執(zhí)行業(yè)務(wù)申請流程的提交處理,從而進入子進程1,如圖7所示。
[0061]然后,在步驟S802中,流程外部接口在接收到業(yè)務(wù)申請流程的提交處理之后,與業(yè)務(wù)申請?zhí)峤幌嚓P(guān)的處理被執(zhí)行,如參照圖7的(I)執(zhí)行提交活動。在完成提交活動之后,狀態(tài)機將流程狀態(tài)從提交狀態(tài)更新為提交完成狀態(tài),如圖7的(2)更新狀態(tài)所示。
[0062]在步驟S803中,狀態(tài)機在提交完成狀態(tài)下向流程外部接口返回一個狀態(tài)已更新為提交完成狀態(tài)的消息。流程外部接口接受該消息并進行處理,并將提交完成的結(jié)果返回給客戶端,如圖7的(3)完成提交所示。從而客戶端不必像圖1所示的現(xiàn)有技術(shù)那樣,等待啟動下一活動。至此,子進程I結(jié)束,即,業(yè)務(wù)申請?zhí)峤坏淖舆M程結(jié)束。
[0063]在步驟S804中,狀態(tài)機在將流程狀態(tài)更新為提交完成之后,產(chǎn)生用于啟動該業(yè)務(wù)申請的驗證的事件,以便事件監(jiān)聽控制器能夠?qū)崟r監(jiān)聽到該事件。如圖7的(4)啟動驗證活動所示。
[0064]在步驟S805中,事件監(jiān)聽控制器在監(jiān)聽到用于啟動該業(yè)務(wù)申請的驗證的事件時,向作業(yè)處理器發(fā)出一個用于產(chǎn)生驗證活動的消息。
[0065]在步驟S806中,作業(yè)處理器接收到該用于產(chǎn)生驗證活動的消息時,執(zhí)行啟動驗證活動的處理。包括判斷流程應(yīng)該前進到哪個分支、進行驗證活動的參與者以及將流程狀態(tài)更新為驗證啟動狀態(tài)。從而完成驗證活動的啟動,如圖7的(5)啟動完成所示。
[0066]此后,執(zhí)行驗證活動,如圖7的(7)執(zhí)行驗證活動所示。此后,雖然圖中為了清楚未示出,但是在完成驗證活動時,更新狀態(tài),隨后的處理與前一活動,即,申請活動相同,從而完成子進程2。
[0067]通過對比現(xiàn)有技術(shù)的圖2和本發(fā)明的圖7可以看出,在本發(fā)明中,將提交活動作為一個完整的事務(wù)來處理,即,子進程I。提交活動的完成與驗證活動的啟動是獨立的。而現(xiàn)有技術(shù)中,提交活動必須在驗證活動啟動之后才能完成。
[0068]本發(fā)明的這種流程異步調(diào)度方式有如下優(yōu)點:
[0069]客戶端在完成申請?zhí)峤换顒訒r候,不需要等待驗證活動啟動成功后才能執(zhí)行其他工作。
[0070]申請?zhí)峤换顒油瓿膳c驗證活動啟動兩者完全解稱,并支持人工活動與自動活動兩類活動的異步處理控制。人工活動一般是指需要人參與和點擊處理的活動,例如申請或驗證活動。自動活動一般是指由系統(tǒng)或計算機自動處理的活動,例如自動轉(zhuǎn)換活動。當(dāng)然這兩類活動均支持異步處理控制。同時也支持各類擴展事件處理均采用這種機制進行處理。
[0071]本發(fā)明并不僅限于上述【具體實施方式】,本領(lǐng)域普通技術(shù)人員在本發(fā)明的實質(zhì)范圍內(nèi)作出的變化、改型、添加或替換也應(yīng)屬于本發(fā)明的保護范圍。
【權(quán)利要求】
1.一種通用流程異步調(diào)度方法,包括: 將與流程對應(yīng)的進程順序地劃分為多個子進程; 基于流程狀態(tài)的更新完成所述多個子進程中的一個子進程,而不依賴于所述多個子進程中的下一子進程的啟動; 在所述一個子進程完成時,通過流程狀態(tài)的更新啟動所述下一子進程。
2.根據(jù)權(quán)利要求1所述的通用流程異步調(diào)度方法,其中, 所述的基于流程狀態(tài)的更新完成所述多個子進程中的一個子進程的步驟包括: 在所述一個子進程完成時,基于更新的流程狀態(tài)返回完成結(jié)果。
3.根據(jù)權(quán)利要求1所述的通用流程異步調(diào)度方法,其中, 所述的通過流程狀態(tài)的更新啟動所述下一子進程的步驟包括: 基于更新的流程狀態(tài)產(chǎn)生用于啟動下一子進程的事件;并且 在該事件的觸發(fā)下啟動所述下一子進程。
4.根據(jù)權(quán)利要求3所述的通用流程異步調(diào)度方法,其中, 在該事件的觸發(fā)下啟動所述下一子進程的步驟包括: 根據(jù)該事件,產(chǎn)生用于啟動下一子進程的消息;并且 根據(jù)所述消息執(zhí)行下一子進程的啟動序列。
5.根據(jù)權(quán)利要求1到4中任一項所述的通用流程異步調(diào)度方法,其中, 所述一個子進程包括從客戶端接收的流程提交子進程, 基于該流程提交子進程的執(zhí)行對流程狀態(tài)進行更新; 基于更新的流程狀態(tài),完成流程提交子進程并向客戶端返回結(jié)果。
6.一種通用流程異步調(diào)度系統(tǒng),包括: 外部接口,被配置為接收用于執(zhí)行流程的指令以及輸出結(jié)果; 狀態(tài)機,被配置為更新流程狀態(tài),基于更新的流程狀態(tài)完成流程的當(dāng)前子進程以及產(chǎn)生用于啟動下一子進程的事件; 事件監(jiān)聽器,被配置為實時監(jiān)聽事件,并基于監(jiān)聽到的事件發(fā)出用于啟動下一子進程的消息; 作業(yè)處理器,被配置為接收所述消息并啟動下一子進程。
7.根據(jù)權(quán)利要求6所述的通用流程異步調(diào)度系統(tǒng),其中, 所述事件監(jiān)聽器被配置為創(chuàng)建事件發(fā)生機制;并且 狀態(tài)機能夠在狀態(tài)改變時產(chǎn)生基于所述事件發(fā)生機制的事件,從而事件監(jiān)聽器能夠監(jiān)聽到該事件。
8.根據(jù)權(quán)利要求6所述的通用流程異步調(diào)度系統(tǒng),其中, 所述子進程包括通過外部接口從客戶端接收的流程提交子進程, 所述狀態(tài)機基于該流程提交子進程的執(zhí)行對流程狀態(tài)進行更新,并向外部接口返回該流程提交子進程完成的消息; 所述外部接口在接收到該流程提交子進程完成的消息時,進行流程提交子進程完成的處理并將處理結(jié)果返回給客戶端。
9.根據(jù)權(quán)利要求6-8中任一項所述的通用流程異步調(diào)度系統(tǒng),進一步包括: 持久化框架,其被配置為將流程狀態(tài)的控制和流轉(zhuǎn)通過文件或數(shù)據(jù)庫進行狀態(tài)持久化。
【文檔編號】G06F9/44GK103631594SQ201310643262
【公開日】2014年3月12日 申請日期:2013年12月3日 優(yōu)先權(quán)日:2013年12月3日
【發(fā)明者】鄭春, 陳路凝, 王杰飛 申請人:北京宇信易誠科技有限公司