專利名稱:一種靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及工作流系統(tǒng)的調(diào)度框架領(lǐng)域,具體地說是一種靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架。
背景技術(shù):
最近幾年,對工作流系統(tǒng)中的執(zhí)行期限、預(yù)警提醒、定時執(zhí)行的任務(wù)調(diào)度需求從無到有、并且日益復(fù)雜,對工作日歷定義的要求也越來越特殊。在工作流系統(tǒng)中,類似于“兩個小時內(nèi)處理完成,提前半個小時自動發(fā)送郵件或短信給參與者進行預(yù)警通知”、“每天一上班就啟動作業(yè)流程”……,諸如此類的定時任務(wù),現(xiàn)在已經(jīng)越來越常見了。這些調(diào)度任務(wù)可以被劃分為執(zhí)行期限、預(yù)警提醒、定時執(zhí)行三類。最開始的調(diào)度任務(wù)都是采用M小時的標(biāo)準(zhǔn)日歷進行計算的,這種方式只能按照7 χ M小時的模式進行相對時間計算,而且都是采用同一個日歷進行計算。這樣存在很多弊端,比如對“兩個小時內(nèi)完成”的處理,假設(shè)開始時間恰好是當(dāng)天下班時間點,這種日歷的計算方式依然按照從現(xiàn)在開始的兩個小時。這就要求其參與者必須是晚上加班完成,否則就肯定超時了,這種計算方式顯然是不合理的。這就首先要求工作流系統(tǒng)能夠按照企業(yè)的作息制度進行自定義工作日歷,只有這樣,才能避免采用M小時標(biāo)準(zhǔn)日歷的問題。比如上面說的假設(shè)開始時間恰好是當(dāng)天下班前時間點,那么就要求系統(tǒng)終止計時,直到下一個工作日的上班時間才開始繼續(xù)計時,系統(tǒng)自動累計排除掉非工作時間的實際工作時間進行計算,包括每天的非工作時間、周末、節(jié)假日、調(diào)休的特殊情形。只有基于這種按照企業(yè)特定作息制度制定出的企業(yè)日歷進行相對時間的計算,才能滿足企業(yè)真正的業(yè)務(wù)需要。在這種需求的拉動下,工作流系統(tǒng)的自定義日歷以及基于這種自定義日歷的調(diào)度框架逐步開始建立起來,并且逐步開始考慮企業(yè)內(nèi)同時存在多種日歷并行的更為復(fù)雜和特殊的情形。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)任務(wù)是針對上述現(xiàn)有技術(shù)的不足,提供一種靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架。該框架通過引進自定義日歷、添加時間計算層的技術(shù)手段, 實現(xiàn)了靈活的任務(wù)調(diào)度時間計算方式、工作日歷的靈活配置和動態(tài)替換、并將任務(wù)調(diào)度與工作日歷進行解耦,解決了工作流產(chǎn)品進行執(zhí)行期限、預(yù)警提醒、定時執(zhí)行的任務(wù)調(diào)度領(lǐng)域中涉及的自定義工作時間計算方式單一、框架靈活性不夠的問題。本發(fā)明的技術(shù)任務(wù)是按以下方式實現(xiàn)的一種靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架,由工作日歷定義層、時間計算層、任務(wù)調(diào)度及管理層三個邏輯層組成,
工作日歷定義層用戶可以根據(jù)企業(yè)特定的作息制度,進行工作日歷的自定義,并可以根據(jù)需要,制定多套工作日歷進行并行使用;
時間計算層工作流產(chǎn)品進行在執(zhí)行期限、預(yù)警提醒、定時執(zhí)行的任務(wù)調(diào)度時,都必須進行相對間隔時間計算,用戶可以根據(jù)需要,為每一項計算指定其所基于的工作日歷;
任務(wù)調(diào)度及管理層在按照自定義日歷進行時間計算的基礎(chǔ)上,進行執(zhí)行期限、預(yù)警提醒、定時執(zhí)行的調(diào)度任務(wù)創(chuàng)建、觸發(fā)、查詢和變更維護。上面的三部分,共同組成了一種靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架。該框架的邏輯分層為日歷定義和管理層位于最底端,其負(fù)責(zé)日歷文件解析和管理工作;時間計算層位于中間,負(fù)責(zé)根據(jù)任務(wù)調(diào)度的計算請求,調(diào)用日歷管理和定義類進行時間計算;任務(wù)調(diào)度及管理層位于最上層,其不與日歷定義和管理層打交道,只根據(jù)任務(wù)調(diào)度的配置信息調(diào)用時間計算層進行時間計算。通過對中間層的抽取,該框架實現(xiàn)了任務(wù)調(diào)度和日歷的解耦。進一步的
所述工作日歷定義層的主要內(nèi)容包括日歷描述文檔、日歷描述文檔的可視化配置界面、一套日歷定義框架和管理框架,
所述日歷描述文檔為XML格式文件;
所述日歷定義框架為按照日工作日歷、周工作日歷、年度工作日歷的方式,將日歷的定義劃分為三個層次,形成年度工作日歷嵌套周工作日歷,周工作日歷嵌套日工作日歷的逐層嵌套的日歷定義框架結(jié)構(gòu),每個層次負(fù)責(zé)處理該層內(nèi)的定義和維護
日工作日歷用來定義每天的工作時段劃分,可以根據(jù)需要將一天的工作時間劃分為幾個時段;
周工作日歷用來定義每周的工作日定義,定義每周的工作時間,或通過定義每周的休息時間進行排除,周工作日歷默認(rèn)是基于日工作日歷的,這樣周日歷只需要定義周幾是工作日即可;
年度工作日歷用來定義周工作日歷和日工作日歷無法描述的特殊時段,比如國家或單位的節(jié)假日及其相應(yīng)的調(diào)休時間;
每個日歷都以其名字進行唯一標(biāo)識,用戶可以同時定義多套工作日歷并行使用,在設(shè)計時或運行時都可以制定該條定時任務(wù)所采用哪個工作日歷進行計算,設(shè)計時指定就是通過流程設(shè)計器進行流程設(shè)計時直接制定所依賴日歷的名稱,運行時指定是通過相關(guān)數(shù)據(jù)進行指定的,只要在開始計算前為相關(guān)數(shù)據(jù)賦值為所要引用的日歷名稱即可;
所述日歷管理框架負(fù)責(zé)各個工作日歷的加載、初始化、查找、銷毀、動態(tài)更新的管理和維護工作。日歷管理框架在支持多工作日歷并行方面起著基礎(chǔ)而又決定性的作用。
所述時間計算層在工作日歷定義層的基礎(chǔ)上,根據(jù)用戶設(shè)計時或者運行時指定的日歷名稱,調(diào)用日歷管理框架查找相應(yīng)的日歷進行相對時間計算,
所述相對時間計算自動跳過日歷中定義的非工作時間段,只計算有效的工作時間段進行累加,即從開始點開始計時,遇到非工作時間段則直接跳過,從下一個工作時間段的起點開始接續(xù)計時,以上述方式循環(huán)下去,直到找到結(jié)束時間點或者達到計算結(jié)束條件為止,
可以為每一項計算都指定其所基于的特定的工作日歷。
所述非工作時間包括節(jié)假日、周末、調(diào)休、每天的非工作時間段。
所述工作時間包括正常工作日、放假調(diào)整的非默認(rèn)工作日每天的工作時間段。
所述任務(wù)調(diào)度及管理層處于所述工作流調(diào)度框架的最上層,也是直接供用戶配置和使用的層,
任務(wù)調(diào)度及管理層負(fù)責(zé)按照用戶的設(shè)置,進行執(zhí)行期限、預(yù)警提醒、定時執(zhí)行的調(diào)度任務(wù)創(chuàng)建、觸發(fā)、查詢和變更維護。創(chuàng)建調(diào)度任務(wù)時,首先將用戶配置的時間計算信息傳遞給中間的時間計算層,通過時間計算層調(diào)用日歷定義層進行時間計算;然后根據(jù)返回的目標(biāo)時間設(shè)置調(diào)度任務(wù)的目標(biāo)觸發(fā)時間;最后將該調(diào)度任務(wù)放入調(diào)度任務(wù)池開始等待,并可以根據(jù)需要對該任務(wù)進行
管理維護。所述管理維護包括變更目標(biāo)觸發(fā)時間、刪除調(diào)度任務(wù)、持久化、觸發(fā)到期任務(wù)。任務(wù)調(diào)度及管理層既可以基于上面提到的自定義日歷進行相對時間的定時調(diào)度, 也可以執(zhí)行絕對時間的定時調(diào)度,后者與自定義日歷無關(guān)。本發(fā)明的靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架與現(xiàn)有技術(shù)相比具有以下突出的有益效果
(一)在日歷定義時采用標(biāo)準(zhǔn)的XML文檔進行定義,支持多套工作日歷定義及并行執(zhí)行,通過對工作日歷的良好分層簡化了紛繁復(fù)雜的日歷定義結(jié)構(gòu),使得定義文檔簡潔、易讀;
(二)通過引入時間計算層作為中間的銜接層,實現(xiàn)了引擎調(diào)度與工作時間算法的解耦,使得任務(wù)調(diào)度和日歷定義進行了邏輯分離,使得其可以獨立演化;
(三)提供的調(diào)度框架,是一個相對比較獨立的模塊。其可以不依賴于任何具體的工作流系統(tǒng),具有較廣泛的適應(yīng)性。
附圖1是本發(fā)明靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架的包結(jié)構(gòu)示意附圖2是本發(fā)明靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架的日歷定義流程附圖3是本發(fā)明靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架的日歷定義框架和管理框架示意附圖4是本發(fā)明靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架的調(diào)度框架的示意類附圖5是本發(fā)明靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架的執(zhí)行期限定義界面示例圖。
具體實施例方式
參照說明書附圖以具體實施例對本發(fā)明的靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架作以下詳細地說明。實施例
本發(fā)明的靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架由工作日歷定義層、時間計算層、任務(wù)調(diào)度及管理層三個邏輯層組成。包結(jié)構(gòu)如附圖1所示。所述工作日歷定義層,包括一份內(nèi)容簡潔、結(jié)構(gòu)明晰、易讀性強的、XML格式的日歷描述文檔,及其簡單易用的配置界面;一套結(jié)構(gòu)和擴展性良好的日歷定義框架和管理框架。XML文件格式是用來結(jié)構(gòu)化文檔和數(shù)據(jù)的通用且適應(yīng)性非常強大的格式,非常適合傳輸和存儲數(shù)據(jù)。日歷定義流程如附圖2所示。按照日工作日歷、周工作日歷和年度工作日歷的方式將日歷的定義劃分為三層 日日歷用來定義每天的工作時段劃分,可以根據(jù)需要將一天的工作時間劃分為幾個時段; 周日歷用來定義每周的工作日定義,可以定義每周的工作時間,也可以通過定義每周的休息時間進行排除,周日歷默認(rèn)是基于日日歷的,這樣周日歷只需要定義周幾是工作日即可, 日日歷用來描述工作日中每天的工作時段;接下來要進行的是年日歷的定義,其主要用來定義周日歷和日日歷無法描述的特殊時段,比如國家或單位的節(jié)假日及其相應(yīng)的調(diào)休時間。這樣就形成了年度工作日歷嵌套周工作日歷,周工作日歷嵌套日工作日歷的逐層嵌套的日歷定義框架結(jié)構(gòu)。每一層日歷只負(fù)責(zé)該層內(nèi)容的定義,并采用XML格式進行描述, 配以可視化的配置界面,使得日歷的定義變得清晰易懂、易操作。每個日歷都以其名字進行唯一標(biāo)識,企業(yè)可以同時定義多套工作日歷并行使用, 在設(shè)計時或運行時都可以制定該條定時任務(wù)所采用哪個工作日歷進行計算。設(shè)計時指定就是通過流程設(shè)計器進行流程設(shè)計時直接制定所依賴日歷的名稱,運行時指定是通過相關(guān)數(shù)據(jù)進行指定的,只要在開始計算前為相關(guān)數(shù)據(jù)賦值為所要引用的日歷名稱即可。日歷管理框架負(fù)責(zé)各個工作日歷的加載、初始化、查找、銷毀、動態(tài)更新的管理和維護工作。能夠支持多工作日歷并行,主要就是日歷管理類在起著基礎(chǔ)而又決定性的作用。日歷定義框架和管理框架如附圖3所示?;谧远x日歷的時間計算定義好工作日歷后,就可以根據(jù)所傳遞的日歷名稱, 進行相對時間的計算。相對時間計算原則是從開始點開始計時,遇到非工作時間段則直接跳過,從下一個工作時間段的起點開始接續(xù)計時,這樣循環(huán)下去,直到找到結(jié)束時間點或者達到計算結(jié)束條件為止。非工作時間包括節(jié)假日、周末、調(diào)休、每天的非工作時間段。工作時間包括正常工作日、放假調(diào)整的非默認(rèn)工作日每的工作時間段。工作流任務(wù)調(diào)度及管理該部分用于執(zhí)行期限、預(yù)警提醒、定時執(zhí)行的任務(wù)調(diào)度創(chuàng)建、執(zhí)行、查詢和維護管理工作。既可以基于上面提到的自定義日歷進行相對時間的定時調(diào)度,也可以執(zhí)行絕對時間的定時調(diào)度,后者與自定義日歷無關(guān)。創(chuàng)建調(diào)度任務(wù)時,首先將用戶配置的時間計算信息傳遞給中間的時間計算層,通過時間計算層調(diào)用日歷定義層進行時間計算;然后根據(jù)返回的目標(biāo)時間設(shè)置調(diào)度任務(wù)的目標(biāo)觸發(fā)時間;最后將該調(diào)度任務(wù)放入調(diào)度任務(wù)池開始等待,并可以根據(jù)需要對該任務(wù)進行管理維護,比如變更目標(biāo)觸發(fā)時間、刪除調(diào)度任務(wù)、持久化、觸發(fā)到期任務(wù)。上面的三部分,共同組成了一種靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架。該框架的邏輯分層為日歷定義和管理層位于最底端,其負(fù)責(zé)日歷文件解析和管理工作;時間計算層位于中間,負(fù)責(zé)根據(jù)任務(wù)調(diào)度的計算請求,調(diào)用日歷管理和定義類進行時間計算;任務(wù)調(diào)度及管理層位于最上層,其不與日歷定義和管理層打交道,只根據(jù)任務(wù)調(diào)度的配置信息調(diào)用時間計算層進行時間計算。通過對中間層的抽取,該框架實現(xiàn)了任務(wù)調(diào)度和日歷的解耦。調(diào)度框架的示意類圖如附圖4所示。本發(fā)明提供的一種靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架,適用于基于自定義日歷的執(zhí)行期限、預(yù)警提醒、定時執(zhí)行的任務(wù)調(diào)度領(lǐng)域,每個應(yīng)用場合都比較類似。下面以最為典型的預(yù)警提醒為例,介紹其具體實施過程。1、定義工作日歷。有兩種方式定義工作流系統(tǒng)中的工作日歷
(1)直接修改日歷定義文件??梢灾苯痈鶕?jù)企業(yè)的作息制度進行修改。該方式定義效率較高,適合對XML和定義格式比較熟悉的用戶。(2)在系統(tǒng)管理模塊提供的日歷配置界面中進行配置,按照界面中的標(biāo)簽,分別定義日日歷、周日歷和年度日歷信息。該方式比較簡單,容易上手。但定義效率較低。每個企業(yè)都有一套或多套自己的作息制度,每一套日歷的定義方式都完全相同。 下面以直接修改日歷定義文件的方式為例,介紹具體的定義步驟
(1)設(shè)置將要定義日歷的名字,并設(shè)置其是否自動更新以及更新的時間間隔、是否懶加載。下面定義的含義是該日歷的名字為“DefaultCalendar”,其依據(jù)的是年度日歷,每隔600秒鐘掃描一次定義變更,非懶加載方式。
權(quán)利要求
1.一種靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架,其特征在于由工作日歷定義層、時間計算層、任務(wù)調(diào)度及管理層三個邏輯層組成,工作日歷定義層用戶可以根據(jù)企業(yè)特定的作息制度,進行工作日歷的自定義,并可以根據(jù)需要,制定多套工作日歷進行并行使用;時間計算層工作流產(chǎn)品進行在執(zhí)行期限、預(yù)警提醒、定時執(zhí)行的任務(wù)調(diào)度時,都必須進行相對間隔時間計算,用戶可以根據(jù)需要,為每一項計算指定其所基于的工作日歷;任務(wù)調(diào)度及管理層在按照自定義日歷進行時間計算的基礎(chǔ)上,進行執(zhí)行期限、預(yù)警提醒、定時執(zhí)行調(diào)度任務(wù)的創(chuàng)建、觸發(fā)、查詢和變更維護。
2.根據(jù)權(quán)利要求1所述的靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架,其特征在于,所述工作日歷定義層的主要內(nèi)容包括日歷描述文檔、日歷描述文檔的可視化配置界面、一套日歷定義框架和管理框架,所述日歷描述文檔為XML格式文件;所述日歷定義框架為按照日工作日歷、周工作日歷、年度工作日歷的方式,將日歷的定義劃分為三個層次,形成年度工作日歷嵌套周工作日歷,周工作日歷嵌套日工作日歷的逐層嵌套的日歷定義框架結(jié)構(gòu),每個層次負(fù)責(zé)處理該層內(nèi)的定義和維護 日工作日歷用來定義每天的工作時段劃分;周工作日歷用來定義每周的工作日定義,定義每周的工作時間,或通過定義每周的休息時間進行排除,周工作日歷默認(rèn)是基于日工作日歷的;年度工作日歷用來定義周工作日歷和日工作日歷無法描述的特殊時段; 每個日歷都以其名字進行唯一標(biāo)識,用戶可以同時定義多套工作日歷并行使用,在設(shè)計時或運行時都可以制定該條定時任務(wù)所采用哪個工作日歷進行計算,設(shè)計時指定就是通過流程設(shè)計器進行流程設(shè)計時直接制定所依賴日歷的名稱,運行時指定是通過相關(guān)數(shù)據(jù)進行指定的,只要在開始計算前為相關(guān)數(shù)據(jù)賦值為所要引用的日歷名稱即可;所述日歷管理框架負(fù)責(zé)各個工作日歷的加載、初始化、查找、銷毀、動態(tài)更新管理和維護工作。
3.根據(jù)權(quán)利要求1所述的靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架,其特征在于,所述時間計算層在工作日歷定義層的基礎(chǔ)上,根據(jù)用戶設(shè)計時或者運行時指定的日歷名稱,調(diào)用日歷管理框架查找相應(yīng)的日歷進行相對時間計算,所述相對時間計算自動跳過日歷中定義的非工作時間段,只計算有效的工作時間段進行累加,即從開始點開始計時,遇到非工作時間段則直接跳過,從下一個工作時間段的起點開始接續(xù)計時,以上述方式循環(huán)下去,直到找到結(jié)束時間點或者達到計算結(jié)束條件為止, 可以為每一項計算都指定其所基于的特定的工作日歷。
4.根據(jù)權(quán)利要求1所述的靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架,其特征在于所述任務(wù)調(diào)度及管理層處于所述工作流調(diào)度框架的最上層,也是直接供用戶配置和使用的層,任務(wù)調(diào)度及管理層負(fù)責(zé)按照用戶的設(shè)置,進行執(zhí)行期限、預(yù)警提醒、定時執(zhí)行調(diào)度任務(wù)的創(chuàng)建、觸發(fā)、查詢和變更維護,創(chuàng)建調(diào)度任務(wù)時,首先將用戶配置的時間計算信息傳遞給中間的時間計算層,通過時間計算層調(diào)用日歷定義層進行時間計算;然后根據(jù)返回的目標(biāo)時間設(shè)置調(diào)度任務(wù)的目標(biāo)觸發(fā)時間;最后將該調(diào)度任務(wù)放入調(diào)度任務(wù)池開始等待,并可以根據(jù)需要對該任務(wù)進行管理維護。
全文摘要
本發(fā)明公開了一種靈活可擴展的基于自定義工作日歷的工作流調(diào)度框架,屬于工作流系統(tǒng)的調(diào)度框架領(lǐng)域。該框架結(jié)構(gòu)由工作日歷定義層、時間計算層、任務(wù)調(diào)度及管理層三個邏輯層組成,工作日歷定義層用戶可以根據(jù)企業(yè)特定的作息制度,進行工作日歷的自定義;時間計算層工作流產(chǎn)品進行在執(zhí)行期限、預(yù)警提醒、定時執(zhí)行的任務(wù)調(diào)度時,都必須進行相對間隔時間計算,用戶可以根據(jù)需要,為每一項計算指定其所基于的工作日歷;任務(wù)調(diào)度及管理層在按照自定義日歷進行時間計算的基礎(chǔ)上,進行執(zhí)行期限、預(yù)警提醒、定時執(zhí)行調(diào)度任務(wù)的創(chuàng)建、觸發(fā)、查詢和變更維護。與現(xiàn)有技術(shù)相比,本發(fā)明的工作流調(diào)度框架實現(xiàn)了靈活的任務(wù)調(diào)度時間計算方式、工作日歷的靈活配置和動態(tài)替換、并將任務(wù)調(diào)度與工作日歷進行解耦,其靈活性、可擴展性得到了大幅提高。
文檔編號G06Q10/00GK102184483SQ201110124959
公開日2011年9月14日 申請日期2011年5月16日 優(yōu)先權(quán)日2011年5月16日
發(fā)明者戴海宏 申請人:浪潮集團山東通用軟件有限公司