專利名稱:一種作業(yè)調度方法和系統的制作方法
技術領域:
本發(fā)明涉及計算機技術領域,尤其涉及一種作業(yè)調度方法和系統。
背景技術:
現有的作業(yè)調度系統大多基于開源組件quartz構建,Quartz中的觸發(fā)器中,最常 用的是SimpleTrigger (簡單觸發(fā)器)和CronTrigger (時鐘觸發(fā)器),本質上都是基于時間 的觸發(fā),雖然用它們也可以實現較為復雜的作業(yè)調度,但是缺少一樣項目中經常使用到的 關鍵特性,即作業(yè)調度除了要滿足時間條件外還存在一種作業(yè)依賴關系,例如B作業(yè)的執(zhí) 行需要以A作業(yè)的成功執(zhí)行為條件,現有的作業(yè)調度系統僅能分別設定A和B的執(zhí)行開始 時間,但當A的執(zhí)行過程超過預想值,在B的執(zhí)行開始時間到達時A還沒有執(zhí)行完成,則會 導致B的執(zhí)行時數據不完整甚至發(fā)生錯誤。為了避免此類現象發(fā)生,使用現有的作業(yè)調度 系統只有將B的執(zhí)行開始時間設定得盡量晚,給A的執(zhí)行盡可能預留更多的時間,這只能盡 量減少遇到這種問題的機率,但是無法根除。
發(fā)明內容
本發(fā)明實施例所要解決的技術問題在于,提供一種作業(yè)調度方法和系統,可根據 作業(yè)之間的依賴關系來觸發(fā)執(zhí)行作業(yè)。為了解決上述技術問題,本發(fā)明實施例提供了一種作業(yè)調度方法,所述作業(yè)調度 方法包括判斷作業(yè)在預設的作業(yè)依賴關系中的所有父作業(yè)是否均成功執(zhí)行;當所述作業(yè)的所有父作業(yè)均成功執(zhí)行時,則觸發(fā)執(zhí)行所述作業(yè)。其中,所述作業(yè)調度方法還包括通過一張有向無環(huán)圖設定作業(yè)的依賴關系。其中,判斷作業(yè)在預設的作業(yè)依賴關系中的所有父作業(yè)是否均成功執(zhí)行包括檢測所述父作業(yè)的執(zhí)行進度,所述執(zhí)行進度包括最后一次執(zhí)行成功的時間值;判斷所述作業(yè)的所有父作業(yè)的執(zhí)行成功的時間值是否滿足預設條件。其中,所述作業(yè)調度方法還包括判斷是否到達所述作業(yè)的定時觸發(fā)時間;當到達所述作業(yè)的定時觸發(fā)時間,并且所述作業(yè)的所有父作業(yè)均成功執(zhí)行,則觸 發(fā)執(zhí)行所述作業(yè)。其中,所述判斷是否到達所述作業(yè)的定時觸發(fā)時間,當判斷結果為已到達所述作 業(yè)的定時觸發(fā)時間后,每隔一定時間間隔進行判斷作業(yè)在預設作業(yè)依賴關系中所有父作業(yè) 的是否均成功執(zhí)行;當所述作業(yè)的所有父作業(yè)均成功執(zhí)行時,則觸發(fā)執(zhí)行所述作業(yè)。相應地,本發(fā)明實施例還提供了一種作業(yè)調度系統,所述作業(yè)調度系統包括作業(yè)流程資源庫,用于保存作業(yè)流程中各個作業(yè)之間相互的依賴關系;
作業(yè)觸發(fā)引擎,用于判斷作業(yè)在預設作業(yè)依賴關系中的所有父作業(yè)是否均成功執(zhí) 行,當所述作業(yè)的所有父作業(yè)均成功執(zhí)行時,則觸發(fā)執(zhí)行所述作業(yè);作業(yè)執(zhí)行插件,用于執(zhí)行所述作業(yè)。其中,所述作業(yè)調度系統還包括流程設計單元,用于通過一張有向無環(huán)圖設定作業(yè)的依賴關系。其中,所述作業(yè)觸發(fā)引擎判斷所述作業(yè)的所有父作業(yè)是否均成功執(zhí)行包括檢測所述父作業(yè)的執(zhí)行進度,所述執(zhí)行進度包括最后一次執(zhí)行成功的時間值;判斷所述作業(yè)的所有父作業(yè)的執(zhí)行成功的時間值是否滿足預設條件。其中,所述作業(yè)觸發(fā)引擎包括父作業(yè)檢測模塊,用于判斷作業(yè)在預設作業(yè)依賴關系中所有父作業(yè)的是否均成功 執(zhí)行;定時模塊,用于判斷是否到達所述作業(yè)的定時觸發(fā)時間;觸發(fā)模塊,用于當所述父作業(yè)檢測模塊和定時模塊均得到肯定的判斷結果時,觸 發(fā)執(zhí)行所述作業(yè)。其中,所述父作業(yè)檢測模塊用于當所述定時模塊判斷得到已到達所述作業(yè)的定時 觸發(fā)時間后,每隔一定時間間隔進行判斷作業(yè)在預設作業(yè)依賴關系中所有父作業(yè)的是否均 成功執(zhí)行;所述觸發(fā)模塊用于當所述父作業(yè)檢測模塊判斷得到所述作業(yè)的所有父作業(yè)均成 功執(zhí)行時,則觸發(fā)執(zhí)行所述作業(yè)。實施本發(fā)明實施例,具有如下有益效果通過在現有的作業(yè)調度系統中加入了根 據流程作業(yè)之間的依賴關系的觸發(fā)機制,能夠更加貼合實際需要的對作業(yè)執(zhí)行進行靈活的 安排和調度。
為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現 有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以 根據這些附圖獲得其他的附圖。圖1為本發(fā)明實施例中一種作業(yè)調度系統的結構組成示意圖;圖2為本發(fā)明實施例中的作業(yè)調度系統中作業(yè)觸發(fā)引擎的結構組成示意圖;圖3為本發(fā)明實施例中一種作業(yè)流程的有向無環(huán)圖;圖4為本發(fā)明一種作業(yè)調度方法的第一實施例的流程示意圖;圖5為本發(fā)明一種作業(yè)調度方法的第二實施例的流程示意圖。
具體實施例方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;?本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他 實施例,都屬于本發(fā)明保護的范圍。
4
圖1為本發(fā)明實施例中一種作業(yè)調度系統的結構組成示意圖,如圖所示該作業(yè)調 度系統至少包括作業(yè)流程資源庫10、作業(yè)觸發(fā)引擎20以及作業(yè)執(zhí)行插件30,其中作業(yè)流程資源庫10,用于保存作業(yè)流程中各個作業(yè)之間相互的依賴關系;具體 地,對應于每個作業(yè)流程均可以有一個XML文件類描述存儲在數據庫中,內容可以包括一 張有向無環(huán)圖,用于描述作業(yè)流程中的各個作業(yè)之間相互的依賴關系。作業(yè)觸發(fā)引擎20,用于判斷作業(yè)在作業(yè)流程資源庫中的作業(yè)依賴關系中的所有父 作業(yè)是否均成功執(zhí)行,當所述作業(yè)的所有父作業(yè)均成功執(zhí)行時,則觸發(fā)執(zhí)行所述作業(yè);具體 地,參考圖3中的一個作業(yè)流程的有向無環(huán)圖,當01日報表作業(yè)和02日報表作業(yè)均成功執(zhí) 行時,作業(yè)觸發(fā)引擎得到肯定的判斷結果,即觸發(fā)執(zhí)行周報表作業(yè)。進一步地,所述作業(yè)觸 發(fā)引擎還可以結合現有的基于時間的觸發(fā)機制判斷所述作業(yè)是否可以執(zhí)行,例如如圖2所 示的作業(yè)觸發(fā)引擎的結構組成示意圖,包括父作業(yè)檢測模塊201,用于判斷作業(yè)在預設作業(yè)依賴關系中的所有父作業(yè)是否均 成功執(zhí)行;判斷所述作業(yè)的所有父作業(yè)是否均成功執(zhí)行可以包括檢測所述父作業(yè)的執(zhí)行 進度,所述執(zhí)行進度包括最后一次執(zhí)行成功的時間值;判斷所述作業(yè)的所有父作業(yè)的執(zhí)行 成功的時間值是否滿足預設條件。例如圖3中的周報表作業(yè)執(zhí)行的預設條件為01日報表 作業(yè)和02日報表作業(yè)的執(zhí)行成功的時間值為該周的最后一天(可以為周五、周六或周日), 父作業(yè)檢測模塊201檢測01日報表作業(yè)以及02日報表作業(yè)的執(zhí)行成功的時間值,并判斷 該時間值是否本周的最后一天,從而得出周報表作業(yè)的所有父作業(yè)是否均成功執(zhí)行的判斷 結果。定時模塊202,用于判斷是否到達所述作業(yè)的定時觸發(fā)時間;觸發(fā)模塊203,用于當所述父作業(yè)檢測模塊201和定時模塊202均得到肯定的判斷 結果時,觸發(fā)執(zhí)行所述作業(yè)。所述父作業(yè)檢測模塊201和定時模塊202可以各自獨立進行檢 測,也可以首先由其中的一個模塊進行判斷待得到肯定的判斷結果后觸發(fā)另一模塊以一定 時間間隔地進行檢測判斷,例如待定時模塊202得到已到達所述作業(yè)的定時觸發(fā)時間的判 斷結果后,觸發(fā)所述父作業(yè)檢測模塊201對該作業(yè)的所有父作業(yè)的執(zhí)行進度進行檢測,判 斷是否其所有的父作業(yè)都已成功執(zhí)行,若是則通知觸發(fā)模塊203對該作業(yè)進行觸發(fā)執(zhí)行, 若否則所述父作業(yè)檢測模塊201可以對未成功執(zhí)行的父作業(yè)進行每間隔1分鐘檢測一次。作業(yè)執(zhí)行插件30,用于執(zhí)行所述作業(yè)。具體地,所述作業(yè)執(zhí)行插件30可以被所 述作業(yè)觸發(fā)引擎的觸發(fā)下執(zhí)行作業(yè)流程中的各種作業(yè)。所述作業(yè)調度系統的可以采用 Adapter (適配器)設計模式構建插件層,它使用ITask接口封裝了插件的公共接口,每個集 成于作業(yè)調度系統的插件都必須提供ITask的實現類。每個ITask的實現類封裝了一項功 能,對應一種作業(yè)操作。進一步地,所述作業(yè)調度系統還可以包括流程設計單元,用于通過一張有向無環(huán) 圖設定作業(yè)的依賴關系。為了方便作業(yè)應用開發(fā),作業(yè)調度系統可以提供一個集成開發(fā)環(huán) 境,用戶僅需要以一種圖形化的形式,選擇代表作業(yè)模板的圖標,并用線將圖標連接起來組 成一個有向無環(huán)圖(如圖3所示),就完成了輸入作業(yè)流程描述的過程,而由該開發(fā)工具產 生相應的作業(yè)流程描述文件或直接存入元數據庫圖4為本發(fā)明一種作業(yè)調度方法的第一實施例的流程示意圖,如圖所示該實施例 的流程包括
步驟S401,判斷作業(yè)在預設的作業(yè)依賴關系中的所有父作業(yè)是否均成功執(zhí)行;具 體實現中,用戶可以在作業(yè)調度系統中的數據庫中對應每一個作業(yè)流程設計并保存一個 XML文件類描述,該文件可以包括一個有向無環(huán)圖,用于描述作業(yè)流程中的各個作業(yè)之間相 互的依賴關系,例如圖3所示的周報表作業(yè),必須在每周的最后一天的01日報表作業(yè)和02 日報表作業(yè)均完成后,才能夠執(zhí)行。判斷所述作業(yè)的所有父作業(yè)是否均成功執(zhí)行可以包括 檢測所述父作業(yè)的執(zhí)行進度,所述執(zhí)行進度包括最后一次執(zhí)行成功的時間值;判斷所述作 業(yè)的所有父作業(yè)的執(zhí)行成功的時間值是否滿足預設條件。例如圖3中的周報表作業(yè)執(zhí)行的 預設條件為01日報表作業(yè)和02日報表作業(yè)的執(zhí)行成功的時間值為該周的最后一天(可以 為周五、周六或周日),作業(yè)調度系統通過檢測01日報表作業(yè)以及02日報表作業(yè)的執(zhí)行成 功的時間值,并判斷該時間值是否本周的最后一天,從而得出周報表作業(yè)的所有父作業(yè)是 否均成功執(zhí)行的判斷結果。步驟S402,當所述作業(yè)的所有父作業(yè)均成功執(zhí)行時,則觸發(fā)執(zhí)行所述作業(yè)。例如 圖3所示的周報表作業(yè),在得知在本周最后一天的01日報表作業(yè)和02日報表作業(yè)成功執(zhí) 行后,即觸發(fā)作業(yè)調度系統下的業(yè)務插件執(zhí)行周報表作業(yè)。圖5為本發(fā)明一種作業(yè)調度方法的第二實施例的流程示意圖。如圖所示該實施例 流程包括步驟S501,判斷是否到達作業(yè)的定時觸發(fā)時間。具體地,例如圖3所示的作業(yè)流 程的有向無環(huán)圖中,01日報表作業(yè)和02日報表作業(yè)的預設的定時觸發(fā)時間均為每天的早 上4點,而周報表作業(yè)預設的定時觸發(fā)時間為每周一的早上6點,由于01日報表作業(yè)和02 日報表作業(yè)在有向無環(huán)圖顯示的依賴關系中并沒有上級父作業(yè),于是每日當到達早上4點 時,01日報表作業(yè)和02日報表作業(yè)即觸發(fā)執(zhí)行;而在有向無環(huán)圖中顯示01日報表作業(yè)和 02日報表作業(yè)均為周報表作業(yè)的父作業(yè),因此當到達每周一的早上6點時,不會直接觸發(fā) 執(zhí)行周報表作業(yè),而是進行步驟S502 ;步驟S502,判斷作業(yè)在預設的作業(yè)依賴關系中的所有父作業(yè)是否均成功執(zhí)行,該 步驟與上一實施例中的步驟S401相同,于此不再贅述。步驟S503,當所述作業(yè)的所有父作業(yè)均成功執(zhí)行時,則觸發(fā)執(zhí)行所述作業(yè)。具體 地,由于步驟S502是以步驟S501中得到了肯定的判斷結果為前提,因此當步驟S502得到 了肯定的判斷結果時,即表示該作業(yè)滿足了到達了定時觸發(fā)時間以及所有父作業(yè)均已成功 執(zhí)行上述兩個觸發(fā)條件的疊加,以圖3為例即時間已到達周一的早上6點,當天的01日報 表作業(yè)和02日報表作業(yè)也已經成功執(zhí)行,此時就可以觸發(fā)作業(yè)調度系統下的業(yè)務插件執(zhí) 行該周報表作業(yè)。在別的可選實施例中,亦可以首先判斷作業(yè)的所有父作業(yè)是否均成功執(zhí)行,當得 到肯定的判斷結果后,再判斷是否到達預設的定時觸發(fā)時間,例如圖3中的01日報表作業(yè) 和02日報表作業(yè)均在周一早上6點之前完成,作業(yè)調度系統可以首先得到這一判斷結果后 再判斷是否到達周報表作業(yè)的定時觸發(fā)時間,若已超過則立即觸發(fā)執(zhí)行周報表作業(yè),若還 未到達早上6點則進行等待,待6點到達時觸發(fā)執(zhí)行周報表作業(yè)。本發(fā)明實施例通過在現有的作業(yè)調度系統中加入了根據流程作業(yè)之間的依賴關 系的觸發(fā)機制,能夠更加貼合實際需要的對作業(yè)執(zhí)行進行靈活的安排和調度。本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以
6通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質 中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁 碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random Access Memory, RAM)等。 以上所揭露的僅為本發(fā)明一種較佳實施例而已,當然不能以此來限定本發(fā)明之權 利范圍,因此依本發(fā)明權利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
權利要求
一種作業(yè)調度方法,其特征在于,所述作業(yè)調度方法包括判斷作業(yè)在預設的作業(yè)依賴關系中的所有父作業(yè)是否均成功執(zhí)行;當所述作業(yè)的所有父作業(yè)均成功執(zhí)行時,則觸發(fā)執(zhí)行所述作業(yè)。
2.如權利要求1所述的作業(yè)調度方法,其特征在于,所述作業(yè)調度方法還包括 通過一張有向無環(huán)圖設定作業(yè)的依賴關系。
3.如權利要求1所述的作業(yè)調度方法,其特征在于,所述判斷作業(yè)在預設的作業(yè)依賴 關系中的所有父作業(yè)是否均成功執(zhí)行包括檢測所述父作業(yè)的執(zhí)行進度,所述執(zhí)行進度包括最后一次執(zhí)行成功的時間值; 判斷所述作業(yè)的所有父作業(yè)的執(zhí)行成功的時間值是否滿足預設條件。
4.如權利要求1所述的作業(yè)調度方法,其特征在于,所述作業(yè)調度方法還包括 判斷是否到達所述作業(yè)的定時觸發(fā)時間;當到達所述作業(yè)的定時觸發(fā)時間,并且所述作業(yè)的所有父作業(yè)均成功執(zhí)行,則觸發(fā)執(zhí) 行所述作業(yè)。
5.如權利要求4所述的作業(yè)調度方法,其特征在于,所述判斷是否到達所述作業(yè)的定 時觸發(fā)時間,當判斷結果為已到達所述作業(yè)的定時觸發(fā)時間后,每隔一定時間間隔進行判 斷所述作業(yè)在預設作業(yè)依賴關系中的所有父作業(yè)是否均成功執(zhí)行;當所述作業(yè)的所有父作業(yè)均成功執(zhí)行時,則觸發(fā)執(zhí)行所述作業(yè)。
6.一種作業(yè)調度系統,其特征在于,所述作業(yè)調度系統包括 作業(yè)流程資源庫,用于保存作業(yè)流程中各個作業(yè)之間相互的依賴關系;作業(yè)觸發(fā)引擎,用于判斷作業(yè)在預設作業(yè)依賴關系中的所有父作業(yè)是否均成功執(zhí)行, 當所述作業(yè)的所有父作業(yè)均成功執(zhí)行時,則觸發(fā)執(zhí)行所述作業(yè); 作業(yè)執(zhí)行插件,用于執(zhí)行所述作業(yè)。
7.如權利要求6所述的作業(yè)調度系統,其特征在于,所述作業(yè)調度系統還包括 流程設計單元,用于通過一張有向無環(huán)圖設定作業(yè)的依賴關系。
8.如權利要求6所述的作業(yè)調度系統,其特征在于,所述作業(yè)觸發(fā)引擎判斷所述作業(yè) 的所有父作業(yè)是否均成功執(zhí)行包括檢測所述父作業(yè)的執(zhí)行進度,所述執(zhí)行進度包括最后一次執(zhí)行成功的時間值; 判斷所述作業(yè)的所有父作業(yè)的執(zhí)行成功的時間值是否滿足預設條件。
9.如權利要求6所述的作業(yè)調度系統,其特征在于,所述作業(yè)觸發(fā)引擎包括 父作業(yè)檢測模塊,用于判斷作業(yè)在預設作業(yè)依賴關系中的所有父作業(yè)是否均成功執(zhí)行;定時模塊,用于判斷是否到達所述作業(yè)的定時觸發(fā)時間;觸發(fā)模塊,用于當所述父作業(yè)檢測模塊和定時模塊均得到肯定的判斷結果時,觸發(fā)執(zhí) 行所述作業(yè)。
10.如權利要求9所述的作業(yè)調度系統,其特征在于,所述父作業(yè)檢測模塊用于當所述 定時模塊判斷得到已到達所述作業(yè)的定時觸發(fā)時間后,每隔一定時間間隔進行判斷作業(yè)在 預設作業(yè)依賴關系中所有父作業(yè)的是否均成功執(zhí)行;所述觸發(fā)模塊用于當所述父作業(yè)檢測模塊判斷得到所述作業(yè)的所有父作業(yè)均成功執(zhí) 行時,則觸發(fā)執(zhí)行所述作業(yè)。
全文摘要
本發(fā)明實施例公開了一種作業(yè)調度方法,所述作業(yè)調度方法包括判斷作業(yè)在預設的作業(yè)依賴關系中的所有父作業(yè)是否均成功執(zhí)行;當所述作業(yè)的所有父作業(yè)均成功執(zhí)行時,則觸發(fā)執(zhí)行所述作業(yè)。本發(fā)明實施例還公開了一種作業(yè)調度系統。采用本發(fā)明,能夠更加貼合實際需要的對作業(yè)執(zhí)行進行靈活的安排和調度。
文檔編號G06F9/46GK101963921SQ20101029070
公開日2011年2月2日 申請日期2010年9月21日 優(yōu)先權日2010年9月21日
發(fā)明者宮建濤, 王一峰, 胡仲華 申請人:卓望數碼技術(深圳)有限公司