一種組合任務完成復雜任務的方法
【技術領域】
[0001] 本發(fā)明設計軟件開發(fā)技術領域,特別是一種組合任務完成復雜任務的方法。
【背景技術】
[0002] 在云操作系統(tǒng)當中,存在運眾多的基礎功能任務來操作維護虛擬機。而在許多的 場景中,往往是多個任務組合而成來完成一個復雜的任務,傳統(tǒng)的做法往往是在原任務上 進行修改,在任務完成后再執(zhí)行一個任務?;蛘咧苯釉黾右粋€組合任務來完成復雜任務,運 樣帶來W下問題:
[0003] -是對原任務進行修改后,會對原代碼造成侵入,加大了禪合性,不是一個好的設 計;
[0004] 二是修改原任務后,就必須增加開關,進行判斷是否執(zhí)行后續(xù)任務,一旦復雜功能 增多,后續(xù)任務就變多,邏輯將變得很復雜,代碼難W維護;
[0005] Ξ是原任務將變得不再通用,侵入了過多的代碼,一旦再有新的復雜任務要用到 此任務,則需要做很多的考慮來避免執(zhí)行了錯誤的任務;
[0006] 四是如果不對原任務進行修改,而是新增組合任務來完成復雜任務,運樣會導致 越來越多的重復冗余代碼,當一個基礎任務邏輯需要修改的時候,則運些相關任務都需要 修改,代碼難W維護.
[0007] 為了代碼降低代碼的禪合性,提高復雜任務的開發(fā)速度,增強系統(tǒng)的靈活性和可 擴展性,需要一種組合任務完成復雜任務的方法。
【發(fā)明內容】
[000引本發(fā)明解決的技術問題在于提供一種組合任務完成復雜任務的方法,解決了由開 發(fā)多個簡單任務組合而成的復雜任務時導致對原代碼的侵入、加大程序的禪合性和代碼難 W維護的問題。
[0009] 本發(fā)明解決上述技術問題的技術方案是:
[0010] 所述的方法包括如下步驟:
[0011] 步驟1:把任務的順序、觸發(fā)條件等記錄到任務組中;
[0012] 步驟2:執(zhí)行任務組;
[0013] 步驟3:在任務組中找到符合條件的任務或者多個并行任務,從參數(shù)池中獲取所需 的參數(shù),并執(zhí)行任務;
[0014] 步驟4:判斷任務是否執(zhí)行成功,如果成功,則執(zhí)行步驟5;如果失敗則執(zhí)行步驟6;
[0015] 步驟5:把任務執(zhí)行完成的輸出參數(shù)記錄到參數(shù)池中;
[0016] 步驟6:判斷是否符合條件執(zhí)行下一個任務,符合條件,則執(zhí)行步驟3;否則執(zhí)行步 驟7;
[0017] 步驟7:所有任務都執(zhí)行完成,或者滿足任務完成條件,則流程結束。
[0018] 所述任務組記錄的信息包括單一任務對應的類和方法,入?yún)ⅲ枰獜娜蝿粘刂蝎@ 取的參數(shù),任務層級,上級任務ID,觸發(fā)條件。
[0019] 所述參數(shù)池將每一步任務執(zhí)行后的輸出參數(shù)獨立放到任務組,任務組內部公共的 池,為后續(xù)任務調用所需要依賴的參數(shù)提供一個獲取途徑;在規(guī)劃初規(guī)范任務出參,或者在 進入?yún)?shù)池的時候增加標識,W防止不同任務之間參數(shù)重復。
[0020] 所述的并行任務,為在任務組的某一層級的時候,多個對象同時執(zhí)行的多個任務; 運些任務在上一級執(zhí)行完后,會同時并行執(zhí)行。
[0021] 所述的步驟6中,執(zhí)行完此任務后,判斷是否滿足此任務的下一個任務的觸發(fā)條 件;滿足則為下一個任務符合執(zhí)行條件。
[0022] 所述的步驟7中,找不到下一個符合條件的任務,則結束;是如果層級的是多個并 行任務,則為所有并行任務執(zhí)行完成后都判斷不符合執(zhí)行下一個任務的條件,則為任務結 束。
[0023] 本發(fā)明可W把不同的基礎任務隨意組合來達到完成復雜任務,而不需要去改動原 來的任務代碼,不需要新增其他任務。大大提高了開發(fā)速度,同時保持了代碼的可維護性和 低禪合。而且即使任務流程發(fā)生變化,只需要修改任務組的信息,調整順序和觸發(fā)條件,即 可完成相應的修改,簡單快捷,為處理復雜任務,組合任務提供了一個很好的解決方案。
【附圖說明】
[0024] 下面結合附圖對本發(fā)明進一步說明:
[0025] 圖1為本發(fā)明方法流程圖。
【具體實施方式】
[0026] 見1所示,本發(fā)明首先把所有設及的任務信息插入到任務組信息中。
[0027]
[002引
[0029]
[0033]
[0034] 用反射機制找到對應任務的類和方法,把保存參數(shù)的JSON字符串反序列化,設置 到方法中,執(zhí)行任務。
[0035]
[0036]
【主權項】
1. 一種組合任務完成復雜任務的方法,其特征在于: 所述的方法包括如下步驟: 步驟1:把任務的順序、觸發(fā)條件等記錄到任務組中; 步驟2:執(zhí)行任務組; 步驟3:在任務組中找到符合條件的任務或者多個并行任務,從參數(shù)池中獲取所需的參 數(shù),并執(zhí)行任務; 步驟4:判斷任務是否執(zhí)行成功,如果成功,則執(zhí)行步驟5;如果失敗則執(zhí)行步驟6; 步驟5:把任務執(zhí)行完成的輸出參數(shù)記錄到參數(shù)池中; 步驟6:判斷是否符合條件執(zhí)行下一個任務,符合條件,則執(zhí)行步驟3;否則執(zhí)行步驟7; 步驟7:所有任務都執(zhí)行完成,或者滿足任務完成條件,則流程結束。2. 根據(jù)權利要求1所述的組合任務完成復雜任務的方法,其特征在于:所述任務組記錄 的信息包括單一任務對應的類和方法,入?yún)ⅲ枰獜娜蝿粘刂蝎@取的參數(shù),任務層級,上級 任務ID,觸發(fā)條件。3. 根據(jù)權利要求1所述的組合任務完成復雜任務的方法,其特征在于:所述參數(shù)池將每 一步任務執(zhí)行后的輸出參數(shù)獨立放到任務組,任務組內部公共的池,為后續(xù)任務調用所需 要依賴的參數(shù)提供一個獲取途徑;在規(guī)劃初規(guī)范任務出參,或者在進入?yún)?shù)池的時候增加 標識,以防止不同任務之間參數(shù)重復。4. 根據(jù)權利要求2所述的組合任務完成復雜任務的方法,其特征在于:所述參數(shù)池將每 一步任務執(zhí)行后的輸出參數(shù)獨立放到任務組,任務組內部公共的池,為后續(xù)任務調用所需 要依賴的參數(shù)提供一個獲取途徑;在規(guī)劃初規(guī)范任務出參,或者在進入?yún)?shù)池的時候增加 標識,以防止不同任務之間參數(shù)重復。5. 根據(jù)權利要求1至4任一項所述的組合任務完成復雜任務的方法,其特征在于:所述 的并行任務,為在任務組的某一層級的時候,多個對象同時執(zhí)行的多個任務;這些任務在上 一級執(zhí)行完后,會同時并行執(zhí)行。6. 根據(jù)權利要求1至4任一項所述的組合任務完成復雜任務的方法,其特征在于:所述 的步驟6中,執(zhí)行完此任務后,判斷是否滿足此任務的下一個任務的觸發(fā)條件;滿足則為下 一個任務符合執(zhí)行條件。7. 根據(jù)權利要求5所述的組合任務完成復雜任務的方法,其特征在于:所述的步驟6中, 執(zhí)行完此任務后,判斷是否滿足此任務的下一個任務的觸發(fā)條件;滿足則為下一個任務符 合執(zhí)行條件。8. 根據(jù)權利要求1至4任一項所述的組合任務完成復雜任務的方法,其特征在于:所述 的步驟7中,找不到下一個符合條件的任務,則結束;是如果層級的是多個并行任務,則為所 有并行任務執(zhí)行完成后都判斷不符合執(zhí)行下一個任務的條件,則為任務結束。9. 根據(jù)權利要求5所述的組合任務完成復雜任務的方法,其特征在于:所述的步驟7中, 找不到下一個符合條件的任務,則結束;是如果層級的是多個并行任務,則為所有并行任務 執(zhí)行完成后都判斷不符合執(zhí)行下一個任務的條件,則為任務結束。10. 根據(jù)權利要求6所述的組合任務完成復雜任務的方法,其特征在于:所述的步驟7 中,找不到下一個符合條件的任務,則結束;是如果層級的是多個并行任務,則為所有并行 任務執(zhí)行完成后都判斷不符合執(zhí)行下一個任務的條件,則為任務結束。
【專利摘要】本發(fā)明設計軟件開發(fā)技術領域,特別是一種組合任務完成復雜任務的方法。本發(fā)明首先把復雜任務需要用到的任務、順序、觸發(fā)條件記錄到任務組中。然后執(zhí)行任務組,在任務組中找出第一個任務或多個并行任務執(zhí)行。執(zhí)行完成后把輸出參數(shù)記錄到參數(shù)池中,并判斷是否滿足條件執(zhí)行下一個任務,滿足條件則繼續(xù)要任務組中尋找下一個或多個并發(fā)任務,從參數(shù)池中獲取所需參數(shù),并執(zhí)行。如此循環(huán),直到任務組的任務都完成或者滿足完成條件。本發(fā)明解決了在需要執(zhí)行復雜任務的時候需修改、侵入原有任務代碼,或者需重新開發(fā)新的組合任務從而導致過多冗余代碼、需要大量工作量的問題。提供了一種把不同任務隨意組合來完成復雜任務的方法。
【IPC分類】G06F9/48
【公開號】CN105446808
【申請?zhí)枴緾N201510776389
【發(fā)明人】姚文俊, 楊松, 季統(tǒng)凱
【申請人】國云科技股份有限公司
【公開日】2016年3月30日
【申請日】2015年11月12日