亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種批處理任務(wù)調(diào)度方法及裝置與流程

文檔序號(hào):12463595閱讀:306來源:國知局
一種批處理任務(wù)調(diào)度方法及裝置與流程

本申請(qǐng)涉及軟件領(lǐng)域,特別涉及一種批處理任務(wù)調(diào)度方法及裝置。



背景技術(shù):

在現(xiàn)代企業(yè)應(yīng)用當(dāng)中,面對(duì)復(fù)雜的業(yè)務(wù)以及海量的數(shù)據(jù),除了通過龐雜的人機(jī)交互界面進(jìn)行各種處理外,還有一種處理方式,即批處理,批處理不需要人工干預(yù),只需要定期讀入大批量數(shù)據(jù),然后完成相應(yīng)業(yè)務(wù)處理并進(jìn)行歸檔。

批處理方式作為現(xiàn)代企業(yè)應(yīng)用當(dāng)中不可或缺的數(shù)據(jù)處理方式,如何高效的執(zhí)行批處理任務(wù)成為問題。



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

為解決上述技術(shù)問題,本申請(qǐng)實(shí)施例提供一種批處理任務(wù)調(diào)度方法及裝置,以達(dá)到提高調(diào)度執(zhí)行批處理任務(wù)的效率的目的,技術(shù)方案如下:

一種批處理任務(wù)調(diào)度方法,應(yīng)用于任務(wù)調(diào)度框架Quartz服務(wù)器,所述方法包括:

掃描登記記錄表,將所述登記記錄表中的每條定義分別生成任務(wù)調(diào)度標(biāo)識(shí),所述登記記錄表中的每條定義包括批處理任務(wù)邏輯的索引、執(zhí)行任務(wù)類型、任務(wù)執(zhí)行周期或頻率;

將生成的各個(gè)任務(wù)調(diào)度標(biāo)識(shí)注冊(cè)到批處理框架Spring Batch的任務(wù)倉庫中,以建立各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)與所述批處理框架Spring Batch的任務(wù)倉庫中批處理任務(wù)邏輯的對(duì)應(yīng)關(guān)系;

按照各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的任務(wù)執(zhí)行頻率或周期,調(diào)度執(zhí)行所述批處理框架Spring Batch的任務(wù)倉庫中各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯。

優(yōu)選的,在所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯為周期性的批處理任務(wù)邏輯的情況下,按照各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的任務(wù)執(zhí)行頻率或周期,調(diào)度執(zhí)行所述批處理框架Spring Batch的任務(wù)倉庫中各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯之后,還包括:

生成所述周期性的批處理任務(wù)邏輯的下一次執(zhí)行時(shí)間,并針對(duì)所述周期性的批處理任務(wù)邏輯生成一條單獨(dú)的任務(wù)實(shí)例,并標(biāo)注所述單獨(dú)的任務(wù)實(shí)例的執(zhí)行時(shí)間、計(jì)劃開始執(zhí)行時(shí)間、實(shí)際開始執(zhí)行時(shí)間和實(shí)際結(jié)束執(zhí)行時(shí)間;

在所述登記記錄表中設(shè)置標(biāo)志位,用于存儲(chǔ)所述單獨(dú)的任務(wù)實(shí)例的執(zhí)行狀態(tài)。

優(yōu)選的,在所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯為遇到節(jié)假日需要特殊處理的任務(wù)、每N(N>1)日/周執(zhí)行的任務(wù)、每個(gè)執(zhí)行日可能執(zhí)行多次的任務(wù)或月末執(zhí)行的任務(wù)的情況下,調(diào)度執(zhí)行所述批處理框架Spring Batch的任務(wù)倉庫中各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯,包括:

在每天的預(yù)設(shè)時(shí)刻判斷當(dāng)日是否是執(zhí)行日;

若當(dāng)日是執(zhí)行日,則執(zhí)行父任務(wù),以判斷是否應(yīng)該預(yù)約子任務(wù),所述子任務(wù)為所述批處理框架Spring Batch的任務(wù)倉庫中各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯中的某一個(gè)批處理任務(wù)邏輯;

若應(yīng)該預(yù)約子任務(wù),則預(yù)約所述子任務(wù);

若不應(yīng)該預(yù)約子任務(wù),則不預(yù)約所述子任務(wù)。

優(yōu)選的,判斷是否應(yīng)該預(yù)約子任務(wù),包括:

判斷預(yù)約日期是否為節(jié)假日,得到第一判斷結(jié)果;

判斷所述預(yù)約日期是否為執(zhí)行日,得到第二判斷結(jié)果;

根據(jù)所述第一判斷結(jié)果和所述第二判斷結(jié)果確定是否預(yù)約所述子任務(wù)。

一種批處理任務(wù)調(diào)度裝置,應(yīng)用于任務(wù)調(diào)度框架Quartz服務(wù)器,所述裝置包括:

生成模塊,用于掃描登記記錄表,將所述登記記錄表中的每條定義分別生成任務(wù)調(diào)度標(biāo)識(shí),所述登記記錄表中的每條定義包括批處理任務(wù)邏輯的索引、執(zhí)行任務(wù)類型、任務(wù)執(zhí)行周期或頻率;

注冊(cè)模塊,用于將生成的各個(gè)任務(wù)調(diào)度標(biāo)識(shí)注冊(cè)到批處理框架SpringBatch的任務(wù)倉庫中,以建立各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)與所述批處理框架SpringBatch的任務(wù)倉庫中批處理任務(wù)邏輯的對(duì)應(yīng)關(guān)系;

調(diào)度執(zhí)行模塊,用于按照各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的任務(wù)執(zhí)行頻率或周期,調(diào)度執(zhí)行所述批處理框架Spring Batch的任務(wù)倉庫中各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯。

優(yōu)選的,所述調(diào)度執(zhí)行模塊包括:

生成單元,用于生成所述周期性的批處理任務(wù)邏輯的下一次執(zhí)行時(shí)間,并針對(duì)所述周期性的批處理任務(wù)邏輯生成一條單獨(dú)的任務(wù)實(shí)例,并標(biāo)注所述單獨(dú)的任務(wù)實(shí)例的執(zhí)行時(shí)間、計(jì)劃開始執(zhí)行時(shí)間、實(shí)際開始執(zhí)行時(shí)間和實(shí)際結(jié)束執(zhí)行時(shí)間;

設(shè)置單元,用于在所述登記記錄表中設(shè)置標(biāo)志位,用于存儲(chǔ)所述單獨(dú)的任務(wù)實(shí)例的執(zhí)行狀態(tài)。

優(yōu)選的,所述調(diào)度執(zhí)行模塊包括:

判斷單元,用于在每天的預(yù)設(shè)時(shí)刻判斷當(dāng)日是否是執(zhí)行日,若當(dāng)日是執(zhí)行日,則觸發(fā)執(zhí)行單元;

所述執(zhí)行單元,用于執(zhí)行父任務(wù),以判斷是否應(yīng)該預(yù)約子任務(wù),所述子任務(wù)為所述批處理框架Spring Batch的任務(wù)倉庫中各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯中的某一個(gè)批處理任務(wù)邏輯;

若應(yīng)該預(yù)約子任務(wù),則預(yù)約所述子任務(wù);

若不應(yīng)該預(yù)約子任務(wù),則不預(yù)約所述子任務(wù)。

優(yōu)選的,所述執(zhí)行單元包括:

執(zhí)行子單元,用于執(zhí)行父任務(wù),以判斷預(yù)約日期是否為節(jié)假日,得到第一判斷結(jié)果;判斷所述預(yù)約日期是否為執(zhí)行日,得到第二判斷結(jié)果;根據(jù)所述第一判斷結(jié)果和所述第二判斷結(jié)果確定是否預(yù)約所述子任務(wù)。

與現(xiàn)有技術(shù)相比,本申請(qǐng)的有益效果為:

在本申請(qǐng)中,通過任務(wù)調(diào)度框架Quartz掃描登記記錄表,將所述登記記錄表中的每條定義分別生成任務(wù)調(diào)度標(biāo)識(shí);將生成的各個(gè)任務(wù)調(diào)度標(biāo)識(shí)注冊(cè)到批處理框架Spring Batch的任務(wù)倉庫中,以建立各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)與所述批處理框架Spring Batch的任務(wù)倉庫中批處理任務(wù)邏輯的對(duì)應(yīng)關(guān)系;按照各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的任務(wù)執(zhí)行頻率或周期,調(diào)度執(zhí)行所述批處理框架Spring Batch的任務(wù)倉庫中各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯,實(shí)現(xiàn)了批處理任務(wù)的調(diào)度執(zhí)行。

由于批處理任務(wù)調(diào)度方法使用任務(wù)調(diào)度框架Quartz和批處理框架Spring Batch結(jié)合的方式,實(shí)現(xiàn)批處理任務(wù)的調(diào)度執(zhí)行,結(jié)合批處理框架Spring Batch強(qiáng)大的批處理業(yè)務(wù)處理能力和任務(wù)調(diào)度框架Quartz強(qiáng)大的任務(wù)調(diào)度能力,提高了批處理任務(wù)調(diào)度執(zhí)行的能力,因此提高了調(diào)度執(zhí)行批處理任務(wù)的效率。

附圖說明

為了更清楚地說明本申請(qǐng)實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本申請(qǐng)?zhí)峁┑腝uartz核心元素之間關(guān)系的示意圖;

圖2是本申請(qǐng)?zhí)峁┑囊环NQuartz線程視圖;

圖3是本申請(qǐng)?zhí)峁┑呐幚砣蝿?wù)調(diào)度方法的一種流程圖;

圖4是本申請(qǐng)?zhí)峁┑呐幚砣蝿?wù)調(diào)度方法的另一種流程圖;

圖5是本申請(qǐng)?zhí)峁┑呐幚砣蝿?wù)調(diào)度方法的一種子流程圖;

圖6是本申請(qǐng)?zhí)峁┑呐幚砣蝿?wù)調(diào)度方法的另一種子流程圖;

圖7是本申請(qǐng)?zhí)峁┑呐幚砣蝿?wù)調(diào)度裝置的一種邏輯結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。

實(shí)施例一

在本實(shí)施例中,提供了一種批處理任務(wù)調(diào)度方法,應(yīng)用于任務(wù)調(diào)度框架Quartz服務(wù)器,任務(wù)調(diào)度框架Quartz服務(wù)器上運(yùn)行任務(wù)調(diào)度框架Quartz。

其中,任務(wù)調(diào)度框架Quartz(后續(xù)簡稱為Quartz)的基本概念及原理如下:

Quartz是Open Symphony開源組織在任務(wù)調(diào)度領(lǐng)域的一個(gè)開源項(xiàng)目,完全基于Java實(shí)現(xiàn)。作為一個(gè)優(yōu)秀的開源調(diào)度框架,Quartz具有功能強(qiáng)大,應(yīng)用靈活,易于集成的特點(diǎn)。

1、Quartz具有以下特點(diǎn):

強(qiáng)大的調(diào)度功能,例如支持豐富多樣的調(diào)度方法,可以滿足各種常規(guī)及特殊需求;

靈活的應(yīng)用方式,例如支持任務(wù)和調(diào)度的多種組合方式,支持調(diào)度數(shù)據(jù)的多種存儲(chǔ)方式;

分布式和集群能力。

另外,作為Spring默認(rèn)的調(diào)度框架,Quartz很容易與Spring集成實(shí)現(xiàn)靈活可配置的調(diào)度功能。

2、Quartz用到的一些專用詞匯,在此聲明:

scheduler:任務(wù)調(diào)度器

trigger:觸發(fā)器,用于定義任務(wù)調(diào)度時(shí)間規(guī)則

job:任務(wù),即被調(diào)度的任務(wù)

misfire:錯(cuò)過的,指本來應(yīng)該被執(zhí)行但實(shí)際沒有被執(zhí)行的任務(wù)調(diào)度

3、Quartz任務(wù)調(diào)度的基本實(shí)現(xiàn)原理

(1)核心元素

Quartz任務(wù)調(diào)度的核心元素是scheduler,trigger和job,其中trigger和job是任務(wù)調(diào)度的元數(shù)據(jù),scheduler是實(shí)際執(zhí)行調(diào)度的控制器。

在Quartz中,trigger是用于定義調(diào)度時(shí)間的元素,即按照什么時(shí)間規(guī)則去執(zhí)行任務(wù)。Quartz中主要提供了四種類型的trigger:

SimpleTrigger,

CronTirgger,

DateIntervalTrigger,

NthIncludedDayTrigger。

這四種trigger可以滿足企業(yè)應(yīng)用中的絕大部分需求。

在Quartz中,job用于表示被調(diào)度的任務(wù)。主要有兩種類型的job:無狀態(tài)的(stateless)和有狀態(tài)的(stateful)。對(duì)于同一個(gè)trigger來說,有狀態(tài)的job不能被并行執(zhí)行,只有上一次觸發(fā)的任務(wù)被執(zhí)行完之后,才能觸發(fā)下一次執(zhí)行。Job主要有兩種屬性:volatility和durability,其中volatility表示任務(wù)是否被持久化到數(shù)據(jù)庫存儲(chǔ),而durability表示在沒有trigger關(guān)聯(lián)的時(shí)候任務(wù)是否被保留。兩者都是在值為true的時(shí)候任務(wù)被持久化或保留。一個(gè)job可以被多個(gè)trigger關(guān)聯(lián),但是一個(gè)trigger只能關(guān)聯(lián)一個(gè)job。

在Quartz中,scheduler由scheduler工廠創(chuàng)建:DirectSchedulerFactory或者StdSchedulerFactory。第二種工廠StdSchedulerFactory使用較多,因?yàn)镈irectSchedulerFactory使用起來不夠方便,需要作許多詳細(xì)的手工編碼設(shè)置。Scheduler主要有三種:RemoteMBeanScheduler,RemoteScheduler和StdScheduler。

Quartz核心元素之間的關(guān)系如圖1所示。

圖1.Quartz核心元素關(guān)系圖

(2)線程視圖

在Quartz中,有兩類線程,Scheduler調(diào)度線程和任務(wù)執(zhí)行線程,其中任務(wù)執(zhí)行線程通常使用一個(gè)線程池維護(hù)一組線程。

Quartz線程視圖請(qǐng)參見圖2。

Scheduler調(diào)度線程主要有兩個(gè):執(zhí)行常規(guī)調(diào)度的線程,和執(zhí)行misfired trigger的線程。常規(guī)調(diào)度線程輪詢存儲(chǔ)的所有trigger,如果有需要觸發(fā)的trigger,即到達(dá)了下一次觸發(fā)的時(shí)間,則從任務(wù)執(zhí)行線程池獲取一個(gè)空閑線程,執(zhí)行與該trigger關(guān)聯(lián)的任務(wù)。Misfire線程是掃描所有的trigger,查看是否有misfired trigger,如果有的話根據(jù)misfire的策略分別處理。

(3)數(shù)據(jù)存儲(chǔ)

Quartz中的trigger和job需要存儲(chǔ)下來才能被使用。Quartz中有兩種存儲(chǔ)方式:RAMJobStore,JobStoreSupport,其中RAMJobStore是將trigger和job存儲(chǔ)在內(nèi)存中,而JobStoreSupport是基于jdbc將trigger和job存儲(chǔ)到數(shù)據(jù)庫中。RAMJobStore的存取速度非常快,但是由于其在系統(tǒng)被停止后所有的數(shù)據(jù)都會(huì)丟失,所以在通常應(yīng)用中,都是使用JobStoreSupport。

在Quartz中,JobStoreSupport使用一個(gè)驅(qū)動(dòng)代理來操作trigger和job的數(shù)據(jù)存儲(chǔ):StdJDBCDelegate。StdJDBCDelegate實(shí)現(xiàn)了大部分基于標(biāo)準(zhǔn)JDBC的功能接口,但是對(duì)于各種數(shù)據(jù)庫來說,需要根據(jù)其具體實(shí)現(xiàn)的特點(diǎn)做某些特殊處理,因此各種數(shù)據(jù)庫需要擴(kuò)展StdJDBCDelegate以實(shí)現(xiàn)這些特殊處理。

相應(yīng)的,與任務(wù)調(diào)度框架Quartz結(jié)合使用的批處理框架Spring Batch(后續(xù)簡稱為Spring Batch)的具體內(nèi)容如下:

Spring Batch是一個(gè)輕量級(jí)的、完善的批處理框架,只在幫助企業(yè)建立健壯、高效的批處理應(yīng)用。Spring Batch是Spring的一個(gè)子項(xiàng)目,使用Java語言并基于Spring框架為基礎(chǔ)開發(fā),是的已經(jīng)使用Spring框架的開發(fā)者或者企業(yè)更容易訪問和利用企業(yè)原有服務(wù)。

Spring Batch提供了大量可復(fù)用的組件,包括日志、追蹤、失誤、任務(wù)作業(yè)的統(tǒng)計(jì)、任務(wù)重啟、跳過、重復(fù)、資源管理。對(duì)于大數(shù)據(jù)量和高性能的批處理任務(wù),Spring Batch同樣提供了高級(jí)功能和特性來支持,比如分區(qū)功能、遠(yuǎn)程功能??傊?,通過Spring Batch能夠支持簡單的、復(fù)雜的和大數(shù)據(jù)量的批處理作業(yè)。

Spring Batch是一個(gè)批處理應(yīng)用框架,不是調(diào)度框架,但需要和調(diào)度框架合作來構(gòu)建完成批處理任務(wù)。它只關(guān)注批處理任務(wù)相關(guān)的問題,如事物、并發(fā)、監(jiān)控、執(zhí)行等,并不提供相應(yīng)的調(diào)度功能。如果需要使用調(diào)度框架,在商業(yè)軟件和開源軟件中已經(jīng)有很多優(yōu)秀的企業(yè)級(jí)調(diào)度框架(如Quartz、Tivoli、Control-M、Cron等)可以使用。

請(qǐng)參見圖3,其示出了本申請(qǐng)?zhí)峁┑呐幚砣蝿?wù)調(diào)度方法的一種流程圖,可以包括以下步驟:

步驟S11:掃描登記記錄表,將所述登記記錄表中的每條定義分別生成任務(wù)調(diào)度標(biāo)識(shí),所述登記記錄表中的每條定義包括批處理任務(wù)邏輯的索引、執(zhí)行任務(wù)類型、任務(wù)執(zhí)行周期或頻率。

任務(wù)調(diào)度標(biāo)識(shí)中也包括批處理任務(wù)邏輯的索引、執(zhí)行任務(wù)類型、任務(wù)執(zhí)行周期或頻率。其中,批處理任務(wù)邏輯的索引用于確定批處理任務(wù)邏輯。

批處理任務(wù)邏輯由批處理框架Spring Batch完成。批處理任務(wù)邏輯針對(duì)在日間和日終作業(yè)中存在很多需要定時(shí)或者周期處理的業(yè)務(wù)而生成,其中,在日間和日終作業(yè)中存在很多需要定時(shí)或者周期處理的業(yè)務(wù)具體可以為:一些業(yè)務(wù)需要在每月的最后一天或者最后兩天執(zhí)行;一些業(yè)務(wù)可能會(huì)在每天定時(shí)執(zhí)行;周期執(zhí)行的任務(wù)。

批處理任務(wù)邏輯的完成過程具體為:在批處理框架Spring Batch中,采用類似于普通的Spring Service Bean的開發(fā)流程,唯一區(qū)別在需要實(shí)現(xiàn)指定接口,實(shí)現(xiàn)該指定接口的方法dealAutoTsk(),在該dealAutoTsk()方法中完成自動(dòng)任務(wù)需要完成的批處理業(yè)務(wù)邏輯。

步驟S12:將生成的各個(gè)任務(wù)調(diào)度標(biāo)識(shí)注冊(cè)到批處理框架Spring Batch的任務(wù)倉庫中,以建立各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)與所述批處理框架Spring Batch的任務(wù)倉庫中批處理任務(wù)邏輯的對(duì)應(yīng)關(guān)系。

步驟S13:按照各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的任務(wù)執(zhí)行頻率或周期,調(diào)度執(zhí)行所述批處理框架Spring Batch的任務(wù)倉庫中各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯。

在本申請(qǐng)中,通過任務(wù)調(diào)度框架Quartz掃描登記記錄表,將所述登記記錄表中的每條定義分別生成任務(wù)調(diào)度標(biāo)識(shí);將生成的各個(gè)任務(wù)調(diào)度標(biāo)識(shí)注冊(cè)到批處理框架Spring Batch的任務(wù)倉庫中,以建立各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)與所述批處理框架Spring Batch的任務(wù)倉庫中批處理任務(wù)邏輯的對(duì)應(yīng)關(guān)系;按照各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的任務(wù)執(zhí)行頻率或周期,調(diào)度執(zhí)行所述批處理框架Spring Batch的任務(wù)倉庫中各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯,實(shí)現(xiàn)了批處理任務(wù)的調(diào)度執(zhí)行。

由于批處理任務(wù)調(diào)度方法使用任務(wù)調(diào)度框架Quartz和批處理框架Spring Batch結(jié)合的方式,實(shí)現(xiàn)批處理任務(wù)的調(diào)度執(zhí)行,結(jié)合批處理框架Spring Batch強(qiáng)大的批處理業(yè)務(wù)處理能力和任務(wù)調(diào)度框架Quartz強(qiáng)大的任務(wù)調(diào)度能力,提高了批處理任務(wù)調(diào)度執(zhí)行的能力,因此提高了調(diào)度執(zhí)行批處理任務(wù)的效率。

在本實(shí)施例中,在所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯為實(shí)時(shí)性的批處理任務(wù)邏輯的情況下,按照各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的任務(wù)執(zhí)行頻率或周期,調(diào)度執(zhí)行所述批處理框架Spring Batch的任務(wù)倉庫中各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯之后,不計(jì)算實(shí)時(shí)性的批處理任務(wù)邏輯的下次執(zhí)行時(shí)間。

在所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯為周期性的批處理任務(wù)邏輯的情況下,按照各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的任務(wù)執(zhí)行頻率或周期,調(diào)度執(zhí)行所述批處理框架Spring Batch的任務(wù)倉庫中各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯之后,還需要執(zhí)行的步驟請(qǐng)參見圖4,還可以包括以下步驟:

步驟S14:生成所述周期性的批處理任務(wù)邏輯的下一次執(zhí)行時(shí)間,并針對(duì)所述周期性的批處理任務(wù)邏輯生成一條單獨(dú)的任務(wù)實(shí)例,并標(biāo)注所述單獨(dú)的任務(wù)實(shí)例的執(zhí)行時(shí)間、計(jì)劃開始執(zhí)行時(shí)間、實(shí)際開始執(zhí)行時(shí)間和實(shí)際結(jié)束執(zhí)行時(shí)間。

步驟S15:在所述登記記錄表中設(shè)置標(biāo)志位,用于存儲(chǔ)所述單獨(dú)的任務(wù)實(shí)例的執(zhí)行狀態(tài)。

執(zhí)行步驟S14和步驟S15可以方便周期性的批處理任務(wù)邏輯的查詢和確認(rèn)。

在所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯為遇到節(jié)假日需要特殊處理的任務(wù)、每N(N>1)日/周執(zhí)行的任務(wù)、每個(gè)執(zhí)行日可能執(zhí)行多次的任務(wù)或月末執(zhí)行的任務(wù)的情況下,調(diào)度執(zhí)行所述批處理框架Spring Batch的任務(wù)倉庫中各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯的具體過程可以為:

步驟A11:在每天的預(yù)設(shè)時(shí)刻判斷當(dāng)日是否是執(zhí)行日。

若是,則執(zhí)行步驟A12。

步驟A12:執(zhí)行父任務(wù),以判斷是否應(yīng)該預(yù)約子任務(wù),所述子任務(wù)為所述批處理框架Spring Batch的任務(wù)倉庫中各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯中的某一個(gè)批處理任務(wù)邏輯。

若判斷結(jié)果為應(yīng)用預(yù)約子任務(wù),則預(yù)約所述子任務(wù);若判斷結(jié)果為不應(yīng)該預(yù)約子任務(wù),則不預(yù)約所述子任務(wù)。

在預(yù)約子任務(wù)后,即可以在預(yù)約的時(shí)間執(zhí)行子任務(wù)。

在本實(shí)施例中,判斷是否應(yīng)該預(yù)約子任務(wù)的具體過程為:

步驟A21:判斷預(yù)約日期是否為節(jié)假日,得到第一判斷結(jié)果。

任務(wù)調(diào)度框架Quartz支持自定義節(jié)假日,具體將自定義節(jié)假日統(tǒng)一存儲(chǔ)在約定的數(shù)據(jù)表中,在約定的數(shù)據(jù)包中查詢預(yù)約日期是否為節(jié)假日即可。

步驟A22:判斷所述預(yù)約日期是否為執(zhí)行日,得到第二判斷結(jié)果。

執(zhí)行日是指不考慮節(jié)假日時(shí)應(yīng)當(dāng)執(zhí)行的日期,根據(jù)預(yù)約的數(shù)據(jù)中執(zhí)行周期、年工作月、月工作日(周工作日)、執(zhí)行頻率等條件,判斷預(yù)約日期是否為執(zhí)行日。該邏輯被重復(fù)使用的次數(shù)較多,因此將該邏輯單獨(dú)編碼成為一個(gè)獨(dú)立的公共方法。詳細(xì)的判斷邏輯流程請(qǐng)參見圖5。

步驟A23:根據(jù)所述第一判斷結(jié)果和所述第二判斷結(jié)果確定是否預(yù)約所述子任務(wù)。

根據(jù)所述第一判斷結(jié)果和所述第二判斷結(jié)果確定是否預(yù)約所述子任務(wù)的具體處理流程可以參見圖6。

同時(shí),根據(jù)第一判斷結(jié)果和第二判斷結(jié)果也可以確定預(yù)約何時(shí)執(zhí)行的子任務(wù)。

實(shí)施例二

與上述方法實(shí)施例相對(duì)應(yīng),本實(shí)施例提供了一種批處理任務(wù)調(diào)度裝置,應(yīng)用于任務(wù)調(diào)度框架Quartz服務(wù)器,請(qǐng)參見圖7,批處理任務(wù)調(diào)度裝置包括:生成模塊71、注冊(cè)模塊72和調(diào)度執(zhí)行模塊73。

生成模塊,用于掃描登記記錄表,將所述登記記錄表中的每條定義分別生成任務(wù)調(diào)度標(biāo)識(shí),所述登記記錄表中的每條定義包括批處理任務(wù)邏輯的索引、執(zhí)行任務(wù)類型、任務(wù)執(zhí)行周期或頻率。

注冊(cè)模塊,用于將生成的各個(gè)任務(wù)調(diào)度標(biāo)識(shí)注冊(cè)到批處理框架Spring Batch的任務(wù)倉庫中,以建立各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)與所述批處理框架Spring Batch的任務(wù)倉庫中批處理任務(wù)邏輯的對(duì)應(yīng)關(guān)系。

調(diào)度執(zhí)行模塊,用于按照各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的任務(wù)執(zhí)行頻率或周期,調(diào)度執(zhí)行所述批處理框架Spring Batch的任務(wù)倉庫中各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯。

在所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯為周期性的批處理任務(wù)邏輯的情況下,調(diào)度執(zhí)行模塊具體可以包括:生成單元和設(shè)置單元。

生成單元,用于生成所述周期性的批處理任務(wù)邏輯的下一次執(zhí)行時(shí)間,并針對(duì)所述周期性的批處理任務(wù)邏輯生成一條單獨(dú)的任務(wù)實(shí)例,并標(biāo)注所述單獨(dú)的任務(wù)實(shí)例的執(zhí)行時(shí)間、計(jì)劃開始執(zhí)行時(shí)間、實(shí)際開始執(zhí)行時(shí)間和實(shí)際結(jié)束執(zhí)行時(shí)間。

設(shè)置單元,用于在所述登記記錄表中設(shè)置標(biāo)志位,用于存儲(chǔ)所述單獨(dú)的任務(wù)實(shí)例的執(zhí)行狀態(tài)。

在所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯為遇到節(jié)假日需要特殊處理的任務(wù)、每N(N>1)日/周執(zhí)行的任務(wù)、每個(gè)執(zhí)行日可能執(zhí)行多次的任務(wù)或月末執(zhí)行的任務(wù)的情況下,調(diào)度執(zhí)行模塊具體可以包括:判斷單元和執(zhí)行單元。

判斷單元,用于在每天的預(yù)設(shè)時(shí)刻判斷當(dāng)日是否是執(zhí)行日,若當(dāng)日是執(zhí)行日,則觸發(fā)執(zhí)行單元。

所述執(zhí)行單元,用于執(zhí)行父任務(wù),以判斷是否應(yīng)該預(yù)約子任務(wù),所述子任務(wù)為所述批處理框架Spring Batch的任務(wù)倉庫中各個(gè)所述任務(wù)調(diào)度標(biāo)識(shí)對(duì)應(yīng)的批處理任務(wù)邏輯中的某一個(gè)批處理任務(wù)邏輯;

若應(yīng)該預(yù)約子任務(wù),則預(yù)約所述子任務(wù);

若不應(yīng)該預(yù)約子任務(wù),則不預(yù)約所述子任務(wù)。

在本實(shí)施例中,執(zhí)行單元具體可以包括:執(zhí)行子單元,用于執(zhí)行父任務(wù),以判斷預(yù)約日期是否為節(jié)假日,得到第一判斷結(jié)果;判斷所述預(yù)約日期是否為執(zhí)行日,得到第二判斷結(jié)果;根據(jù)所述第一判斷結(jié)果和所述第二判斷結(jié)果確定是否預(yù)約所述子任務(wù)。

需要說明的是,本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。對(duì)于裝置類實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。

最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。

以上對(duì)本申請(qǐng)所提供的一種批處理任務(wù)調(diào)度方法及裝置進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1