任務(wù)調(diào)度方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及任務(wù)調(diào)度領(lǐng)域,具體而言,涉及一種任務(wù)調(diào)度方法和裝置。
【背景技術(shù)】
[0002]在企業(yè)級(jí)應(yīng)用系統(tǒng)環(huán)境中,經(jīng)常會(huì)用到需要定時(shí)處理的業(yè)務(wù)。比如定時(shí)的計(jì)算、報(bào)表數(shù)據(jù)的生成、短信的定時(shí)通報(bào)等。對(duì)于這些業(yè)務(wù),目前也有一些實(shí)現(xiàn)方式,例如,Java提供了最基礎(chǔ)的服務(wù)類java.util.Timer, java.util.TimerTask來實(shí)現(xiàn),但是Timer只是一個(gè)簡(jiǎn)單的時(shí)間間隔定時(shí)器,并不能滿足企業(yè)級(jí)應(yīng)用中的復(fù)雜問題,比如精確到每周三的早晨八點(diǎn)執(zhí)行一個(gè)任務(wù)。
[0003]另外,還有一些任務(wù)調(diào)度框架可以實(shí)現(xiàn)定時(shí)任務(wù)調(diào)度,例如,Spring Quartz框架是一個(gè)非常好的定時(shí)任務(wù)調(diào)度框架,與Spring有非常好的集成,并且支持Cron表達(dá)式的配置方式,并且支持?jǐn)?shù)據(jù)庫(kù)存儲(chǔ)和內(nèi)存存儲(chǔ)任務(wù)等方式,是企業(yè)級(jí)任務(wù)調(diào)度,尤其在集群環(huán)境中的很好的選擇。
[0004]然而,Spring Quartz雖然是一個(gè)優(yōu)秀的任務(wù)調(diào)度框架,但是在實(shí)際使用中存在以下問題。例如,當(dāng)有整個(gè)任務(wù)體系需要處理自動(dòng)任務(wù)和人工任務(wù)時(shí),就存在任務(wù)沖突的問題,現(xiàn)有的任務(wù)調(diào)度框架還無法處理任務(wù)沖突的問題。
[0005]針對(duì)上述的問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供了一種任務(wù)調(diào)度方法和裝置,以至少解決現(xiàn)有的任務(wù)調(diào)度框架無法處理任務(wù)沖突的技術(shù)問題。
[0007]根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種任務(wù)調(diào)度方法,包括:接收新添加的任務(wù),所述新添加的任務(wù)為用戶手動(dòng)添加的任務(wù);檢測(cè)是否存在正在執(zhí)行的任務(wù);如果檢測(cè)出存在所述正在執(zhí)行的任務(wù),則中斷所述正在執(zhí)行的任務(wù),執(zhí)行所述新添加的任務(wù)。
[0008]進(jìn)一步地,在檢測(cè)出存在所述正在執(zhí)行的任務(wù)之后,以及中斷所述正在執(zhí)行的任務(wù)之前,所述方法還包括:判斷所述正在執(zhí)行的任務(wù)是否可中斷執(zhí)行,其中,如果判斷出所述正在執(zhí)行的任務(wù)可中斷執(zhí)行,則中斷所述正在執(zhí)行的任務(wù)。
[0009]進(jìn)一步地,在接收新添加的任務(wù)之后,所述方法還包括:將所述新添加的任務(wù)插入到任務(wù)執(zhí)行隊(duì)列;判斷所述新添加的任務(wù)的優(yōu)先級(jí)是否高于所述任務(wù)執(zhí)行隊(duì)列中的其他任務(wù)的優(yōu)先級(jí),其中,如果判斷出所述新添加的任務(wù)的優(yōu)先級(jí)高于所述任務(wù)執(zhí)行隊(duì)列中的其他任務(wù)的優(yōu)先級(jí),則檢測(cè)是否存在正在執(zhí)行的任務(wù)。
[0010]進(jìn)一步地,所述方法還包括:如果所述正在執(zhí)行的任務(wù)不可中斷執(zhí)行,則將所述新添加的任務(wù)放入所述任務(wù)執(zhí)行隊(duì)列,待所述正在執(zhí)行的任務(wù)執(zhí)行完后,執(zhí)行所述新添加的任務(wù)。
[0011]進(jìn)一步地,在中斷所述正在執(zhí)行的任務(wù)之后,所述方法還包括:觸發(fā)中斷任務(wù)的恢復(fù)機(jī)制;在執(zhí)行完所述新添加的任務(wù)后,所述恢復(fù)機(jī)制恢復(fù)執(zhí)行中斷的任務(wù)。
[0012]進(jìn)一步地,在檢測(cè)出存在所述正在執(zhí)行的任務(wù)之后,以及中斷所述正在執(zhí)行的任務(wù)之前,所述方法還包括:判斷所述正在執(zhí)行的任務(wù)和所述新添加的任務(wù)是否滿足并行執(zhí)行的條件;如果判斷出所述正在執(zhí)行的任務(wù)和所述新添加的任務(wù)滿足并行執(zhí)行的條件,則并行執(zhí)行所述正在執(zhí)行的任務(wù)和所述新添加的任務(wù)。
[0013]根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種任務(wù)調(diào)度裝置,包括:接收單元,用于接收新添加的任務(wù),所述新添加的任務(wù)為用戶手動(dòng)添加的任務(wù);檢測(cè)單元,用于檢測(cè)是否存在正在執(zhí)行的任務(wù);第一執(zhí)行單元,用于如果檢測(cè)出存在所述正在執(zhí)行的任務(wù),則中斷所述正在執(zhí)行的任務(wù),執(zhí)行所述新添加的任務(wù)。
[0014]進(jìn)一步地,所述裝置還包括:第一判斷單元,用于判斷所述正在執(zhí)行的任務(wù)是否可中斷執(zhí)行,其中,如果判斷出所述正在執(zhí)行的任務(wù)可中斷執(zhí)行,則中斷所述正在執(zhí)行的任務(wù)。
[0015]進(jìn)一步地,所述裝置還包括:插入單元,用于將所述新添加的任務(wù)插入到任務(wù)執(zhí)行隊(duì)列;第二判斷單元,用于判斷所述新添加的任務(wù)的優(yōu)先級(jí)是否高于所述任務(wù)執(zhí)行隊(duì)列中的其他任務(wù)的優(yōu)先級(jí),其中,如果判斷出所述新添加的任務(wù)的優(yōu)先級(jí)高于所述任務(wù)執(zhí)行隊(duì)列中的其他任務(wù)的優(yōu)先級(jí),則檢測(cè)是否存在正在執(zhí)行的任務(wù)。
[0016]進(jìn)一步地,所述第一執(zhí)行單元還用于如果所述正在執(zhí)行的任務(wù)不可中斷執(zhí)行,則將所述新添加的任務(wù)放入所述任務(wù)執(zhí)行隊(duì)列,待所述正在執(zhí)行的任務(wù)執(zhí)行完后,執(zhí)行所述新添加的任務(wù)。
[0017]進(jìn)一步地,所述裝置還包括:觸發(fā)單元,用于觸發(fā)中斷任務(wù)的恢復(fù)機(jī)制;恢復(fù)單元,用于在執(zhí)行完所述新添加的任務(wù)后,所述恢復(fù)機(jī)制恢復(fù)執(zhí)行中斷的任務(wù)。
[0018]進(jìn)一步地,所述裝置還包括:第三判斷單元,用于判斷所述正在執(zhí)行的任務(wù)和所述新添加的任務(wù)是否滿足并行執(zhí)行的條件;第二執(zhí)行單元,用于如果判斷出所述正在執(zhí)行的任務(wù)和所述新添加的任務(wù)滿足并行執(zhí)行的條件,則并行執(zhí)行所述正在執(zhí)行的任務(wù)和所述新添加的任務(wù)。
[0019]根據(jù)本發(fā)明實(shí)施例,在接收到用戶手動(dòng)添加的任務(wù)后,可以先檢測(cè)當(dāng)前任務(wù)節(jié)點(diǎn)是否正在執(zhí)行任務(wù),如果是,則中斷該正在執(zhí)行的任務(wù),執(zhí)行新添加的任務(wù),避免新添加的任務(wù)與正在執(zhí)行的任務(wù)發(fā)生沖突,解決了現(xiàn)有的任務(wù)調(diào)度框架無法處理任務(wù)沖突的技術(shù)問題。
【附圖說明】
[0020]此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0021]圖1是根據(jù)本發(fā)明實(shí)施例的任務(wù)調(diào)度方法的流程圖;
[0022]圖2是根據(jù)本發(fā)明優(yōu)選實(shí)施例的任務(wù)調(diào)度方法的流程圖;
[0023]圖3是根據(jù)本發(fā)明另一優(yōu)選實(shí)施例的任務(wù)調(diào)度方法的流程圖;
[0024]圖4是根據(jù)本發(fā)明實(shí)施例的任務(wù)調(diào)度裝置的示意圖;
[0025]圖5是根據(jù)本發(fā)明實(shí)施例的任務(wù)調(diào)度原理框架圖。
【具體實(shí)施方式】
[0026]為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
[0027]需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤4送?,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
[0028]根據(jù)本發(fā)明實(shí)施例,提供了一種任務(wù)調(diào)度方法的方法實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0029]圖1是根據(jù)本發(fā)明實(shí)施例的任務(wù)調(diào)度方法的流程圖,如圖1所示,該方法包括如下步驟:
[0030]步驟S102,接收新添加的任務(wù)。新添加的任務(wù)為用戶手動(dòng)添加的任務(wù)。
[0031]步驟S104,檢測(cè)是否存在正在執(zhí)行的任務(wù)。
[0032]步驟S106,如果檢測(cè)出存在正在執(zhí)行的任務(wù),則中斷正在執(zhí)行的任務(wù),執(zhí)行新添加的任務(wù)。
[0033]根據(jù)本發(fā)明實(shí)施例,在接收到用戶手動(dòng)添加的任務(wù)后,可以先檢測(cè)當(dāng)前任務(wù)節(jié)點(diǎn)是否正在執(zhí)行任務(wù),如果是,則中斷該正在執(zhí)行的任務(wù),執(zhí)行新添加的任務(wù),避免新添加的任務(wù)與正在執(zhí)行的任務(wù)發(fā)生沖突,解決了現(xiàn)有的任務(wù)調(diào)度框架無法處理任務(wù)沖突的技術(shù)問題。
[0034]優(yōu)選地,新添加的任務(wù)可以是用戶人工向任務(wù)節(jié)點(diǎn)臨時(shí)添加的任務(wù),正在執(zhí)行的任務(wù)可以是自動(dòng)調(diào)度定時(shí)處理的任務(wù)。
[0035]優(yōu)選地,在檢測(cè)出存在正在執(zhí)行的任務(wù)之后,以及中斷正在執(zhí)行的任務(wù)之前,方法還包括:判斷正在執(zhí)行的任務(wù)是否可中斷執(zhí)行,其中,如果判斷出正在執(zhí)行的任務(wù)可中斷執(zhí)行,則中斷正在執(zhí)行的任務(wù)。
[0036]由于正在執(zhí)行的任務(wù)可能具有不可中斷的屬性,因此,在中斷該正在執(zhí)行的任務(wù)之前,可以先判斷該正在執(zhí)行的任務(wù)是否可以中斷執(zhí)行,也即是判斷該正在執(zhí)行的任務(wù)是否具有可中斷的屬性,如果是,則中斷正在執(zhí)行的任務(wù);反之,則可以待該任務(wù)執(zhí)行完后,在執(zhí)行新添加的任務(wù)。這樣,可以避免對(duì)當(dāng)前正在執(zhí)行的任務(wù)造成影響。