專利名稱:定時(shí)任務(wù)信息的存儲(chǔ)方法和裝置以及定時(shí)任務(wù)的調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明涉及定時(shí)器的實(shí)現(xiàn)技術(shù),尤其涉及一種定時(shí)任務(wù)信息的存儲(chǔ) 方法和存儲(chǔ)裝置以及定時(shí)任務(wù)的調(diào)度方法。
背景技術(shù):
隨著社會(huì)的發(fā)展和技術(shù)的進(jìn)步,人們對(duì)定時(shí)任務(wù)調(diào)度執(zhí)行的需求越 來越多。通過定時(shí)任務(wù)的設(shè)置,可以自動(dòng)執(zhí)行相關(guān)的任務(wù)或者自動(dòng)提醒 用戶,從而減輕用戶的繁瑣工作或者便利用戶工作的開展。在計(jì)算機(jī)系 統(tǒng)上實(shí)現(xiàn)定時(shí)任務(wù)涉及到定時(shí)器觸發(fā)技術(shù)、定時(shí)計(jì)劃存儲(chǔ)與定時(shí)任務(wù)描
述等技術(shù)。目前高級(jí)編程語言中一般會(huì)提供基本的定時(shí)器類(class)和 時(shí)間表(schedule)類供開發(fā)者調(diào)用。但是基于基本的定時(shí)器類與時(shí)間 表類的定時(shí)任務(wù)的實(shí)現(xiàn)功能簡單,靈活性不夠,無法支持很多通常需要 的計(jì)劃任務(wù)類型。在當(dāng)前定時(shí)任務(wù)的等待過程中,無法隨時(shí)插入新的早 于當(dāng)前定時(shí)任務(wù)的定時(shí)任務(wù)或者刪除正在等待的當(dāng)前定時(shí)任務(wù)。
發(fā)明內(nèi)容
本發(fā)明要解決的一個(gè)技術(shù)問題是提供一種定時(shí)任務(wù)信息的存儲(chǔ)方 法,可以節(jié)省存儲(chǔ)空間,便于操作。
本發(fā)明提供的定時(shí)任務(wù)信息的存儲(chǔ)方法,包括步驟為定時(shí)任務(wù) 創(chuàng)建數(shù)據(jù)鏈表中的數(shù)據(jù)節(jié)點(diǎn),并根據(jù)定時(shí)任務(wù)的時(shí)間信息分配所述數(shù) 據(jù)節(jié)點(diǎn)的列字段和行字段的值;將所述數(shù)據(jù)節(jié)點(diǎn)插入表示定時(shí)任務(wù)的十 字鏈表中與所述數(shù)據(jù)節(jié)點(diǎn)的列字段和行字段的值對(duì)應(yīng)的位置。
其中,數(shù)據(jù)節(jié)點(diǎn)還包括定時(shí)任務(wù)描述信息字段,所述定時(shí)任務(wù)的描 述信息的格式為XML格式。
進(jìn)一步,根據(jù)定時(shí)任務(wù)的時(shí)間信息分配所述數(shù)據(jù)節(jié)點(diǎn)的列字段和行字段的值的步驟包括將定時(shí)任務(wù)的時(shí)間信息的日期部分和時(shí)間部分分 別作為所述數(shù)據(jù)節(jié)點(diǎn)的列字段和行字段的值。
進(jìn)一步,十字鏈表包括日期鏈表和與日期鏈表的節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)鏈 表,所述日期鏈表根據(jù)日期鏈表節(jié)點(diǎn)的列字段值的大小排序,所述數(shù)據(jù) 鏈表根據(jù)包含的數(shù)據(jù)節(jié)點(diǎn)的行字段值的大小排序。將所述數(shù)據(jù)節(jié)點(diǎn)插入 到十字鏈表中與所述數(shù)據(jù)節(jié)點(diǎn)的行字段和列字段的值對(duì)應(yīng)的位置的步驟 包括aa)查找所述日期鏈表中具有和所述數(shù)據(jù)節(jié)點(diǎn)的列字段值相同的 列字段值的日期鏈表節(jié)點(diǎn),如果存在,則執(zhí)行步驟cc,否則執(zhí)行步驟 bb; bb)創(chuàng)建日期鏈表節(jié)點(diǎn),將所述日期鏈表節(jié)點(diǎn)的列字段的值設(shè)置為 所述數(shù)據(jù)節(jié)點(diǎn)的列字段的值,將所述日期鏈表節(jié)點(diǎn)的數(shù)據(jù)鏈表地址字段 的值設(shè)置為所述數(shù)據(jù)節(jié)點(diǎn)的地址;將所述日期鏈表節(jié)點(diǎn)插入所述日期鏈 表中與所述日期鏈表節(jié)點(diǎn)的列字段的值對(duì)應(yīng)的位置;cc)將所述數(shù)據(jù)節(jié) 點(diǎn)插入與查找到的日期鏈表節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)鏈表中與所述數(shù)據(jù)節(jié)點(diǎn)的行 字段的值對(duì)應(yīng)的位置。
本發(fā)明提供的定時(shí)任務(wù)信息的存儲(chǔ)方法,利用十字鏈表來表示定時(shí) 任務(wù),可以節(jié)省存儲(chǔ)空間,結(jié)合十字鏈表進(jìn)行定時(shí)任務(wù)的插入,便于操 作。
進(jìn)一步,定時(shí)任務(wù)的詳細(xì)內(nèi)容采用XML格式進(jìn)行存儲(chǔ),使得任務(wù) 的描述內(nèi)容可以很方便地進(jìn)行擴(kuò)展。
本發(fā)明要解決的另 一 個(gè)技術(shù)問題是提供一種靈活的定時(shí)任務(wù)的調(diào) 度方法。
本發(fā)明提供的定時(shí)任務(wù)的調(diào)度方法,包括步驟AA),判斷表示定 時(shí)任務(wù)的十字鏈表中是否存在與當(dāng)前日期對(duì)應(yīng)的日期鏈表的節(jié)點(diǎn),如果 存在,則獲取與所述日期鏈表節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)鏈表的第一個(gè)數(shù)據(jù)節(jié)點(diǎn)作 為當(dāng)前數(shù)據(jù)節(jié)點(diǎn);如果不存在,則重復(fù)步驟AA; BB),判斷所述當(dāng)前 數(shù)據(jù)節(jié)點(diǎn)的行字段的值是否等于當(dāng)前時(shí)間,如果等于,則執(zhí)行步驟 CC;否則,判斷行字段的值是否小于當(dāng)前時(shí)間,如果小于,則將所述 當(dāng)前數(shù)據(jù)節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)設(shè)為當(dāng)前數(shù)據(jù)節(jié)點(diǎn),重復(fù)步驟BB,否則, 重復(fù)步驟BB; CC),獲取當(dāng)前數(shù)據(jù)節(jié)點(diǎn)的定時(shí)任務(wù)詳細(xì)信息,根據(jù)所述定時(shí)任務(wù)詳細(xì)信息執(zhí)行所述定時(shí)任務(wù)。
其中,十字鏈表包括日期鏈表和與日期鏈表的節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)鏈 表,日期鏈表根據(jù)日期鏈表節(jié)點(diǎn)的列字段值的大小排序,所述數(shù)據(jù)鏈表 根據(jù)包含的數(shù)據(jù)節(jié)點(diǎn)的行字段值的大小排序。
根據(jù)本發(fā)明的定時(shí)任務(wù)的調(diào)度方法的一個(gè)實(shí)施例,還包括步驟判 斷日期鏈表中節(jié)點(diǎn)的列字段的值是否小于當(dāng)前日期,如果小于,則清除 所述日期鏈表節(jié)點(diǎn)及與所述日期鏈表節(jié)點(diǎn)指向的數(shù)據(jù)鏈表中的數(shù)據(jù)節(jié)點(diǎn) 對(duì)應(yīng)的定時(shí)任務(wù)。
本發(fā)明提供的定時(shí)任務(wù)的調(diào)度方法,利用存儲(chǔ)定時(shí)任務(wù)信息的十字 鏈表對(duì)定時(shí)任務(wù)進(jìn)行調(diào)度,實(shí)現(xiàn)靈活。
進(jìn)一步,用戶在定時(shí)任務(wù)的調(diào)度執(zhí)行過程中,可以隨時(shí)添加新的定 時(shí)任務(wù)、修改或刪除未執(zhí)行的定時(shí)任務(wù),如果添加的新的定時(shí)任務(wù)比當(dāng) 前時(shí)間和日期早,仍可以添加成功,但是并不會(huì)被執(zhí)行。此外,過期的 定時(shí)任務(wù)會(huì)定期被清除,因此不會(huì)占用存儲(chǔ)空間。
本發(fā)明還提供了一種定時(shí)任務(wù)信息的存儲(chǔ)裝置,包括數(shù)據(jù)存儲(chǔ)模 塊,用于存儲(chǔ)表示定時(shí)任務(wù)的十字鏈表信息;節(jié)點(diǎn)生成模塊,用于為定 時(shí)任務(wù)創(chuàng)建數(shù)據(jù)鏈表中的數(shù)據(jù)節(jié)點(diǎn),并根據(jù)定時(shí)任務(wù)的時(shí)間信息分配所
述數(shù)據(jù)節(jié)點(diǎn)的列字段和行字段的值;節(jié)點(diǎn)插入模塊,用于將所述數(shù)據(jù)節(jié) 點(diǎn)插入到所述十字鏈表中與所述數(shù)據(jù)節(jié)點(diǎn)的列字段和行字段的值對(duì)應(yīng)的 位置。
圖i為示出根據(jù)本發(fā)明的用于存儲(chǔ)定時(shí)任務(wù)信息的十字鏈表的元素 示意圖2為示出根據(jù)本發(fā)頓韻定時(shí)任務(wù)信息的存儲(chǔ)方法的一個(gè)實(shí)施例的 流程圖3為示出根據(jù)本發(fā)明的定時(shí)任務(wù)的調(diào)度方法的一個(gè)實(shí)施例的流程
圖4為根據(jù)本發(fā)明的定時(shí)任務(wù)的調(diào)度方法的另一 實(shí)施例的流程圖5為示出根據(jù)本發(fā)明的定時(shí)任^f言息的存儲(chǔ)裝置的一個(gè)實(shí)施例的 框圖6為示出根據(jù)本發(fā)明的定時(shí)任^f言息的存儲(chǔ)裝置的另一個(gè)實(shí)施例 的框圖。
具體實(shí)施例方式
下面參照附圖對(duì)本發(fā)明進(jìn)行更全面的描述,其中說明本發(fā)明的示例 性實(shí)施例。
本發(fā)明通過十字鏈表來存儲(chǔ)定時(shí)任務(wù)信息。圖l為根據(jù)本發(fā)明的用 于存儲(chǔ)定時(shí)任務(wù)信息的十字鏈表及其節(jié)點(diǎn)的 一種實(shí)現(xiàn)方式的示意圖。在 該實(shí)現(xiàn)方式中,十字鏈表由行鏈表(即日期鏈表)和列鏈表(即數(shù)據(jù)鏈 表)組成(參見圖1C)。圖1A為數(shù)據(jù)鏈表中數(shù)據(jù)節(jié)點(diǎn)的示意圖。數(shù)據(jù) 鏈表中的數(shù)據(jù)節(jié)點(diǎn)包括列字段S101、行字段S102、定時(shí)任務(wù)描述信息 字段S103和子節(jié)點(diǎn)字段S104。定時(shí)任務(wù)描述信息字段S103用于保存 定時(shí)任務(wù)的詳細(xì)信息或者詳細(xì)信息的存儲(chǔ)地址,子節(jié)點(diǎn)字段S104用來 保存數(shù)據(jù)鏈表中下一個(gè)數(shù)據(jù)節(jié)點(diǎn)的存儲(chǔ)地址。圖1B為日期鏈表中節(jié)點(diǎn) 的示意圖。日期鏈表節(jié)點(diǎn)包括列字段Slll、下一節(jié)點(diǎn)字段S112和首數(shù) 據(jù)節(jié)點(diǎn)字段S113。列字段Slll用于保存該列的日期信息,下一節(jié)點(diǎn)字 段S112用于保存日期鏈表中下一個(gè)節(jié)點(diǎn)的地址,首數(shù)據(jù)節(jié)點(diǎn)字段S113 用于保存該列的數(shù)據(jù)鏈表中第 一數(shù)據(jù)節(jié)點(diǎn)的地址。
圖2為示出根據(jù)本發(fā)明的定時(shí)任^ft息的存儲(chǔ)方法的一個(gè)實(shí)施例的 流程圖。
如圖2所示,在步驟201,當(dāng)加入新的定時(shí)任務(wù)時(shí),為定時(shí)任務(wù)創(chuàng) 建數(shù)據(jù)鏈表中的數(shù)據(jù)節(jié)點(diǎn),并根據(jù)定時(shí)任務(wù)的時(shí)間信息分配數(shù)據(jù)節(jié)點(diǎn)的 行和列字段的值。根據(jù)定時(shí)任務(wù)的時(shí)間信息分配對(duì)應(yīng)數(shù)據(jù)節(jié)點(diǎn)的行字段 和列字段的值,例如,將定時(shí)任務(wù)的時(shí)間信息的日期部分分配給數(shù)據(jù)節(jié) 點(diǎn)的列字段,而時(shí)間部分分配給數(shù)據(jù)節(jié)點(diǎn)的行字段。日期部分通??梢?包括年、月、日等數(shù)據(jù)部分,時(shí)間部分通??梢园ㄐr(shí)、分、秒等數(shù)據(jù)部分。當(dāng)然,也可以根據(jù)需要將定時(shí)任務(wù)的時(shí)間信息進(jìn)行不同的劃 分,定時(shí)任務(wù)的時(shí)間信息也可以具有不同的精度或者分辨度。
在步驟203,將數(shù)據(jù)節(jié)點(diǎn)插入表示定時(shí)任務(wù)的十字鏈表中與數(shù)據(jù)節(jié) 點(diǎn)的列字段和行字段的值對(duì)應(yīng)的位置。
例如,當(dāng)日期鏈表根據(jù)日期鏈表節(jié)點(diǎn)的列字段值的大小排序、而數(shù) 據(jù)鏈表根據(jù)包含的數(shù)據(jù)節(jié)點(diǎn)的行字段值的大小排序時(shí),插入包括如下步 驟
a) 查找日期鏈表中具有和該數(shù)據(jù)節(jié)點(diǎn)的列字段值相同的列字段值 的日期鏈表節(jié)點(diǎn),如果存在,則執(zhí)行步驟c),否則執(zhí)行步驟b)。
b) 創(chuàng)建日期鏈表節(jié)點(diǎn),將日期鏈表節(jié)點(diǎn)的列字段的值設(shè)置為該數(shù) 據(jù)節(jié)點(diǎn)的列字段的值,將該日期鏈表節(jié)點(diǎn)的數(shù)據(jù)鏈表地址字段(即首數(shù) 據(jù)節(jié)點(diǎn)字段)的值設(shè)置為該數(shù)據(jù)節(jié)點(diǎn)的地址;將該日期鏈表節(jié)點(diǎn)插入日 期鏈表中與該日期鏈表節(jié)點(diǎn)的列字段的值對(duì)應(yīng)的位置。所謂對(duì)應(yīng)的位 置,是指該日期鏈表節(jié)點(diǎn)的列字段的值位于它的父日期鏈表節(jié)點(diǎn)和子日 期鏈表節(jié)點(diǎn)的列字段的值之間。
c) 將該數(shù)據(jù)節(jié)點(diǎn)插入與查找到的日期鏈表節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)鏈表中 與該數(shù)據(jù)節(jié)點(diǎn)的行字段的值對(duì)應(yīng)的位置。如果日期鏈表節(jié)點(diǎn)中的首數(shù)據(jù) 節(jié)點(diǎn)字段指向的第一個(gè)數(shù)據(jù)節(jié)點(diǎn)的行字段的值大于新增的數(shù)據(jù)節(jié)點(diǎn)的行 字段的值,則將新增的數(shù)據(jù)節(jié)點(diǎn)的子節(jié)點(diǎn)字段設(shè)置為日期鏈表節(jié)點(diǎn)的首 數(shù)據(jù)節(jié)點(diǎn)字段的值,并將日期鏈表節(jié)點(diǎn)的首數(shù)據(jù)節(jié)點(diǎn)字段設(shè)置為新增的 數(shù)據(jù)節(jié)點(diǎn)的地址;否則,從第一個(gè)數(shù)據(jù)節(jié)點(diǎn)開始,獲取數(shù)據(jù)鏈表中下一 個(gè)不同時(shí)刻的數(shù)據(jù)節(jié)點(diǎn)的地址,如果該地址值不為空且該地址值對(duì)應(yīng)的 數(shù)據(jù)節(jié)點(diǎn)的行字段的值比新增的數(shù)據(jù)節(jié)點(diǎn)的行字段的值小,則定位到數(shù) 據(jù)鏈表中下一個(gè)數(shù)據(jù)節(jié)點(diǎn)繼續(xù)比較,否則將當(dāng)前數(shù)據(jù)節(jié)點(diǎn)的子節(jié)點(diǎn)字段
: ,fe、臧
的值賦值給新增的數(shù)據(jù)節(jié)點(diǎn)的子節(jié)點(diǎn)字段,再將新增的數(shù)據(jù)節(jié)點(diǎn)的地址 賦值給當(dāng)前數(shù)據(jù)節(jié)點(diǎn)的字節(jié)點(diǎn)字段。
可以用XML文檔保存定時(shí)任務(wù)的詳細(xì)信息,xml文檔的格式可以表 示為<TaskDescription >
〈TaskName〉任務(wù)名稱〈/TaskName〉
〈TaskOwner〉任務(wù)所有者〈/TaskOwner〉
〈TaskContent〉任務(wù)說明〈/TaskContent〉
<Ta s kCy c 1 eM壬務(wù)執(zhí)4亍周期< / Ta s kCyc 1 e>
〈TaskScheduleM壬務(wù)執(zhí)4亍日期和時(shí)間〈/TaskSchedule〉 </TaskDescription>
根據(jù)本發(fā)明的存儲(chǔ)方法的一個(gè)實(shí)施例,還包括將與刪除的定時(shí)任務(wù) 對(duì)應(yīng)的數(shù)據(jù)節(jié)點(diǎn)從十字鏈表中刪除的步驟
如果要?jiǎng)h除的定時(shí)任務(wù)的數(shù)據(jù)節(jié)點(diǎn)為與該數(shù)據(jù)鏈表對(duì)應(yīng)的日期鏈表 節(jié)點(diǎn)指向的第 一個(gè)數(shù)據(jù)節(jié)點(diǎn),并且要?jiǎng)h除的定時(shí)任務(wù)的數(shù)據(jù)節(jié)點(diǎn)的子節(jié) 點(diǎn)字段不為空,則將要?jiǎng)h除的定時(shí)任務(wù)的數(shù)據(jù)節(jié)點(diǎn)的子節(jié)點(diǎn)字段的值賦 值給日期鏈表節(jié)點(diǎn)的首數(shù)據(jù)節(jié)點(diǎn)字段,再將要?jiǎng)h除的定時(shí)任務(wù)對(duì)應(yīng)的數(shù) 據(jù)節(jié)點(diǎn)清除;
如果要?jiǎng)h除的定時(shí)任務(wù)的數(shù)據(jù)節(jié)點(diǎn)為與該數(shù)據(jù)鏈表對(duì)應(yīng)的日期鏈表 節(jié)點(diǎn)指向的第 一個(gè)數(shù)據(jù)節(jié)點(diǎn),并且要?jiǎng)h除的定時(shí)任務(wù)的數(shù)據(jù)節(jié)點(diǎn)的子節(jié) 點(diǎn)字段為空,則將日期鏈表節(jié)點(diǎn)及要?jiǎng)h除的定時(shí)任務(wù)對(duì)應(yīng)的數(shù)據(jù)節(jié)點(diǎn)清 除;
如果要?jiǎng)h除的定時(shí)任務(wù)的數(shù)據(jù)節(jié)點(diǎn)不是與該數(shù)據(jù)鏈表對(duì)應(yīng)的日期鏈 表節(jié)點(diǎn)指向的第一個(gè)數(shù)據(jù)節(jié)點(diǎn),則從第一個(gè)數(shù)據(jù)節(jié)點(diǎn)開始,遍歷到要?jiǎng)h 除的定時(shí)任務(wù)的所在的數(shù)據(jù)鏈表中的數(shù)據(jù)節(jié)點(diǎn),將要?jiǎng)h除的定時(shí)任務(wù)的 數(shù)據(jù)節(jié)點(diǎn)的父數(shù)據(jù)節(jié)點(diǎn)的子節(jié)點(diǎn)字段的值設(shè)置為該數(shù)據(jù)節(jié)點(diǎn)的子節(jié)點(diǎn)字 段的值,將要?jiǎng)h除的定時(shí)任務(wù)的數(shù)據(jù)節(jié)點(diǎn)清除。
圖3為示出根據(jù)本發(fā)明的定時(shí)任務(wù)的調(diào)處盡^的一個(gè)實(shí)施例的流程圖。
如圖3所示,在步驟301,判斷表示定時(shí)任務(wù)的十字鏈表中是否存 在與當(dāng)前日期對(duì)應(yīng)的日期鏈表的節(jié)點(diǎn),如果存在,則執(zhí)行步驟303,否 則,重復(fù)步驟301;在步驟303,獲取該日期鏈表節(jié)點(diǎn)的首數(shù)據(jù)節(jié)點(diǎn)字段指向的數(shù)據(jù)鏈 表的第 一個(gè)數(shù)據(jù)節(jié)點(diǎn)作為當(dāng)前數(shù)據(jù)節(jié)點(diǎn);
在步驟305,判斷當(dāng)前數(shù)據(jù)節(jié)點(diǎn)的行字段的值是否等于當(dāng)前時(shí)間, 如果等于,則執(zhí)行步驟311,否則,執(zhí)行步驟307;
在步驟307,判斷行字段的值是否小于當(dāng)前時(shí)間,如果小于,則將 當(dāng)前數(shù)據(jù)節(jié)點(diǎn)的子節(jié)點(diǎn)設(shè)為當(dāng)前數(shù)據(jù)節(jié)點(diǎn)(步驟309),重復(fù)步驟305, 否則,重復(fù)步驟305;
在步驟311,獲取當(dāng)前數(shù)據(jù)節(jié)點(diǎn)的定時(shí)任務(wù)詳細(xì)信息,根據(jù)定時(shí)任 務(wù)詳細(xì)信息執(zhí)行定時(shí)任務(wù)。
圖4為示出根據(jù)本發(fā)明的定時(shí)任務(wù)的調(diào)度方法的另一個(gè)實(shí)施例的流 程圖。
如圖4所示,在步驟401:判斷是否存在與當(dāng)前日期對(duì)應(yīng)的日期鏈 表節(jié)點(diǎn),如果存在則執(zhí)行步驟403,否則,重復(fù)步驟401;
在步驟403,根據(jù)該日期鏈表節(jié)點(diǎn)的首數(shù)據(jù)節(jié)點(diǎn)字段獲得第一個(gè)定 時(shí)任務(wù)對(duì)應(yīng)的第 一個(gè)數(shù)據(jù)節(jié)點(diǎn);
在步驟405:獲得該第一個(gè)數(shù)據(jù)節(jié)點(diǎn)的行字段的值;
在步驟407,判斷行字段的值是否大于等于當(dāng)前時(shí)間,如果大于則 重復(fù)步驟401,如果相等則執(zhí)行步驟409;
在步驟409:根據(jù)數(shù)據(jù)節(jié)點(diǎn)的定時(shí)任務(wù)描述信息字段獲取定時(shí)任務(wù) 詳細(xì)信息XML文檔存儲(chǔ)地址,從而獲得定時(shí)任務(wù)的詳細(xì)信息;
在步驟411:根據(jù)定時(shí)任務(wù)詳細(xì)信息執(zhí)行定時(shí)任務(wù);
在步驟413:獲得數(shù)據(jù)鏈表中下一個(gè)數(shù)據(jù)節(jié)點(diǎn)的存儲(chǔ)地址,將該地 址保存到日期鏈表節(jié)點(diǎn)的首數(shù)據(jù)節(jié)點(diǎn)字段中,清除本定時(shí)任務(wù)節(jié)點(diǎn)
在步驟415:判斷日期鏈表節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)鏈表是否為空,如果為 空,則清除該日期鏈表節(jié)點(diǎn)(步驟417),重復(fù)步驟401,否則直接返回 步驟401。
根據(jù)本發(fā)明的定時(shí)任務(wù)的調(diào)度方法的一個(gè)實(shí)施例,還定期清除過期 的定時(shí)任務(wù)判斷日期鏈表中節(jié)點(diǎn)的列字段的值是否小于當(dāng)前日期,如 果小于,則清除該日期鏈表節(jié)點(diǎn)以及與該日期鏈表節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)鏈表中的所有數(shù)據(jù)節(jié)點(diǎn)。
圖5為示出根據(jù)本發(fā)明的定時(shí)任^f言息的存儲(chǔ)裝置的一個(gè)實(shí)施例的 框圖。如圖5所示,該存儲(chǔ)裝置包括數(shù)據(jù)存儲(chǔ)模塊50、節(jié)點(diǎn)生成模塊 51和節(jié)點(diǎn)插入模塊52。其中,數(shù)據(jù)存儲(chǔ)模塊50用于存儲(chǔ)表示定時(shí)任務(wù) 的十字鏈表信息;節(jié)點(diǎn)生成模塊51用于為定時(shí)任務(wù)創(chuàng)建數(shù)據(jù)鏈表中的 數(shù)據(jù)節(jié)點(diǎn),并根據(jù)定時(shí)任務(wù)的時(shí)間信息分配所述數(shù)據(jù)節(jié)點(diǎn)的列字段和行 字段的值;節(jié)點(diǎn)插入模塊52用于將所述數(shù)據(jù)節(jié)點(diǎn)插入到所述十字鏈表 中與所述數(shù)據(jù)節(jié)點(diǎn)的列字段和行字段的值對(duì)應(yīng)的位置。
十字鏈表包括日期鏈表和與日期鏈表的節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)鏈表,曰期 鏈表根據(jù)日期鏈表節(jié)點(diǎn)的列字段值的大小排序,而數(shù)據(jù)鏈表根據(jù)包含的 數(shù)據(jù)節(jié)點(diǎn)的行字段值的大小排序。數(shù)據(jù)節(jié)點(diǎn)還包括定時(shí)任務(wù)描述信息字 段,定時(shí)任務(wù)的描述信息包括任務(wù)名稱、任務(wù)所有者、任務(wù)說明、任務(wù) 執(zhí)行周期、任務(wù)的時(shí)間信息等信息。
圖6為示出根據(jù)本發(fā)明的定時(shí)任^f言息的存儲(chǔ)裝置的另一個(gè)實(shí)施例 的框圖。如圖6所示,該存儲(chǔ)裝置包括數(shù)據(jù)存儲(chǔ)模塊60、節(jié)點(diǎn)生成模塊 61、節(jié)點(diǎn)插入模塊62和節(jié)點(diǎn)刪除模塊63。數(shù)據(jù)存儲(chǔ)模塊60、節(jié)點(diǎn)生成 模塊61和節(jié)點(diǎn)插入模塊62可參見圖5中對(duì)應(yīng)的描述。節(jié)點(diǎn)刪除模塊63 用于將與刪除的定時(shí)任務(wù)對(duì)應(yīng)的數(shù)據(jù)節(jié)點(diǎn)從所述十字鏈表中刪除。
本發(fā)明提供的基于稀疏矩陣的定時(shí)任務(wù)實(shí)現(xiàn)方法,用定時(shí)任務(wù)的日 期作為矩陣的列,定時(shí)任務(wù)具體在一天內(nèi)的時(shí)間作為矩陣的行,定時(shí)任 務(wù)的日期沒有限制,時(shí)間可以具體到秒。定時(shí)任務(wù)信息采用優(yōu)化的十字 鏈表的方法進(jìn)行壓縮存儲(chǔ),節(jié)省了存儲(chǔ)空間,降低了鏈表的計(jì)算量;定 時(shí)任務(wù)的詳細(xì)內(nèi)容采用XML格式進(jìn)行存儲(chǔ),使得任務(wù)的描述內(nèi)容可以 很方便地進(jìn)行擴(kuò)展;用戶在定時(shí)任務(wù)的調(diào)度執(zhí)行過程中,可以隨時(shí)添加 新的定*時(shí)任務(wù)、修改或刪除未執(zhí)行的定時(shí)任務(wù),如果添加的錄的定時(shí)任 務(wù)比當(dāng)前時(shí)間和日期早,仍可以添加成功,但是并不會(huì)^皮執(zhí)行。此外, 過期的定時(shí)任務(wù)會(huì)定期被清除,因此不會(huì)占用存儲(chǔ)空間。
本發(fā)明的描述是為了示例和描述起見而給出的,而并不是無遺漏的 或者將本發(fā)明限于所公開的形式。很多修改和變化對(duì)于本領(lǐng)域的普通技術(shù)人員而言是顯然的。選擇和描述實(shí)施例是為了更好說明本發(fā)明的原理 和實(shí)際應(yīng)用,并且使本領(lǐng)域的普通技術(shù)人員能夠理解本發(fā)明從而設(shè)計(jì)適 于特定用途的帶有各種修改的各種實(shí)施例。
權(quán)利要求
1.一種定時(shí)任務(wù)信息的存儲(chǔ)方法,其特征在于,包括為定時(shí)任務(wù)創(chuàng)建數(shù)據(jù)鏈表中的數(shù)據(jù)節(jié)點(diǎn),并根據(jù)定時(shí)任務(wù)的時(shí)間信息分配所述數(shù)據(jù)節(jié)點(diǎn)的列字段和行字段的值;將所述數(shù)據(jù)節(jié)點(diǎn)插入表示定時(shí)任務(wù)的十字鏈表中與所述數(shù)據(jù)節(jié)點(diǎn)的列字段和行字段的值對(duì)應(yīng)的位置。
2. 根據(jù)權(quán)利要求1所述的存儲(chǔ)方法,其特征在于,所述數(shù)據(jù)節(jié)點(diǎn) 還包括定時(shí)任務(wù)描述信息字段,所述定時(shí)任務(wù)的描述信息的格式為 XML格式。
3. 根據(jù)權(quán)利要求2所述的存儲(chǔ)方法,其特征在于,所述定時(shí)任務(wù) 的描述信息包括任務(wù)名稱、任務(wù)所有者、任務(wù)說明、任務(wù)執(zhí)行周期、任 務(wù)的時(shí)間信息。
4. 根據(jù)權(quán)利要求1、 2或3所述的存儲(chǔ)方法,其特征在于,根據(jù)定 時(shí)任務(wù)的時(shí)間信息分配所述數(shù)據(jù)節(jié)點(diǎn)的列字段和行字段的值的步驟包 括將定時(shí)任務(wù)的時(shí)間信息的日期部分和時(shí)間部分分別作為所述數(shù)據(jù)節(jié) 點(diǎn)的列字段和行字段的值。
5. 根據(jù)權(quán)利要求4所述的存儲(chǔ)方法,其特征在于,所述日期部分 包括年、月、日數(shù)據(jù),所述時(shí)間部分包括時(shí)、分、秒數(shù)據(jù)。
6. 根據(jù)權(quán)利要求4所述的存儲(chǔ)方法,其特征在于,所述十字鏈表 包括日期鏈表和與日期鏈表的節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)鏈表,所述日期鏈表根據(jù) 日期鏈表節(jié)點(diǎn)的列字段值的大小排序,所述數(shù)據(jù)鏈表根據(jù)包含的數(shù)據(jù)節(jié) 點(diǎn)的行字段值的大小排序。
7. 根據(jù)權(quán)利要求6所述的存儲(chǔ)方法,其特征在于,將所述數(shù)據(jù)節(jié) 點(diǎn)插入到十字鏈表中與所述數(shù)據(jù)節(jié)點(diǎn)的行字段和列字段的值對(duì)應(yīng)的位置 的步驟包括7a )查找所述日期鏈表中具有和所述數(shù)據(jù)節(jié)點(diǎn)的列字段值相同的列 字段值的日期鏈表節(jié)點(diǎn),如果存在,則執(zhí)行步驟7c),否則執(zhí)行步驟7b);7b)創(chuàng)建日期鏈表節(jié)點(diǎn),將所述日期鏈表節(jié)點(diǎn)的列字段的值設(shè)置為 所述數(shù)據(jù)節(jié)點(diǎn)的列字段的值,將所述日期鏈表節(jié)點(diǎn)的數(shù)據(jù)鏈表地址字段 的值設(shè)置為所述數(shù)據(jù)節(jié)點(diǎn)的地址;將所述日期鏈表節(jié)點(diǎn)插入所述日期鏈 表中與所述日期鏈表節(jié)點(diǎn)的列字段的值對(duì)應(yīng)的位置;7c)將所述數(shù)據(jù)節(jié)點(diǎn)插入與查找到的日期鏈表節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)鏈表 中與所述數(shù)據(jù)節(jié)點(diǎn)的行字段的值對(duì)應(yīng)的位置。
8. 根據(jù)權(quán)利要求l、 2或3所述的存儲(chǔ)方法,其特征在于,還包括 步驟將與刪除的定時(shí)任務(wù)對(duì)應(yīng)的數(shù)據(jù)節(jié)點(diǎn)從所述十字鏈表中刪除。
9. 一種定時(shí)任務(wù)的調(diào)度方法,其特征在于,包括步驟9a,判斷表示定時(shí)任務(wù)的十字鏈表中是否存在與當(dāng)前日期對(duì)應(yīng)的日 期鏈表的節(jié)點(diǎn),如果存在,則獲取與所述日期鏈表節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)鏈表 的第一個(gè)數(shù)據(jù)節(jié)點(diǎn)作為當(dāng)前數(shù)據(jù)節(jié)點(diǎn);如果不存在,則重復(fù)步驟9a;9b,判斷所述當(dāng)前數(shù)據(jù)節(jié)點(diǎn)的行字段的值是否等于當(dāng)前時(shí)間,如果 等于,則執(zhí)行步驟9c;否則,判斷行字段的值是否小于當(dāng)前時(shí)間,如 果小于,則將所述當(dāng)前數(shù)據(jù)節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)設(shè)為當(dāng)前數(shù)據(jù)節(jié)點(diǎn),重復(fù) 步驟9b,否則,重復(fù)步驟9b;9c,獲取當(dāng)前數(shù)據(jù)節(jié)點(diǎn)的定時(shí)任務(wù)詳細(xì)信息,根據(jù)所述定時(shí)任務(wù)詳 細(xì)信息執(zhí)行所述定時(shí)任務(wù)。
10. 根據(jù)權(quán)利要求9所述的定時(shí)任務(wù)的調(diào)度方法,其特征在于,所 述十字鏈表包括日期鏈表和與日期鏈表的節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)鏈表,所述日 期鏈表根據(jù)日期鏈表節(jié)點(diǎn)的列字段值的大小排序,所述數(shù)據(jù)鏈表根據(jù)包 含的數(shù)據(jù)節(jié)點(diǎn)的行字段值的大小排序。
11. 根據(jù)權(quán)利要求10所述的定時(shí)任務(wù)的調(diào)度方法,;其特征在于, 還包括步驟判斷日期鏈表中節(jié)點(diǎn)的列字段的值是否小于當(dāng)前日期,如果小于, 則清除所述日期鏈表節(jié)點(diǎn)及與所述日期鏈表節(jié)點(diǎn)指向的數(shù)據(jù)鏈表中的數(shù) 據(jù)節(jié)點(diǎn)對(duì)應(yīng)的定時(shí)任務(wù)。
12. —種定時(shí)任務(wù)信息的存儲(chǔ)裝置,其特征在于,包括 數(shù)據(jù)存儲(chǔ)模塊,用于存儲(chǔ)表示定時(shí)任務(wù)的十字鏈表信息; 節(jié)點(diǎn)生成模塊,用于為定時(shí)任務(wù)創(chuàng)建數(shù)據(jù)鏈表中的數(shù)據(jù)節(jié)點(diǎn),并根據(jù)定時(shí)任務(wù)的時(shí)間信息分配所述數(shù)據(jù)節(jié)點(diǎn)的列字段和行字段的值;節(jié)點(diǎn)插入模塊,用于將所述數(shù)據(jù)節(jié)點(diǎn)插入到所述十字鏈表中與所述 數(shù)據(jù)節(jié)點(diǎn)的列字段和行字段的值對(duì)應(yīng)的位置。
13. 根據(jù)權(quán)利要求12所述的存儲(chǔ)裝置,其特征在于,所述十字鏈表包括日期鏈表和與日期鏈表的節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)鏈表,所述日期鏈表根 據(jù)日期鏈表節(jié)點(diǎn)的列字段值的大小排序,所述數(shù)據(jù)鏈表根據(jù)包含的數(shù)據(jù) 節(jié)點(diǎn)的行字段值的大小排序。
14. 根據(jù)權(quán)利要求12或13所述的存儲(chǔ)裝置,其特征在于,所述數(shù) 據(jù)節(jié)點(diǎn)還包括定時(shí)任務(wù)描述信息字段,所述定時(shí)任務(wù)的描述信息包括任 務(wù)名稱、任務(wù)所有者、任務(wù)說明、任務(wù)執(zhí)行周期、任務(wù)的時(shí)間信息。
15. 根據(jù)權(quán)利要求12或13所述的存儲(chǔ)裝置,其特征在于,還包括 節(jié)點(diǎn)刪除模塊,用于將與刪除的定時(shí)任務(wù)對(duì)應(yīng)的數(shù)據(jù)節(jié)點(diǎn)從所述十字鏈 表中刪除。
全文摘要
本發(fā)明公開一種定時(shí)任務(wù)信息的存儲(chǔ)方法、存儲(chǔ)裝置以及定時(shí)任務(wù)的調(diào)度方法。該存儲(chǔ)方法包括為定時(shí)任務(wù)創(chuàng)建數(shù)據(jù)鏈表中的數(shù)據(jù)節(jié)點(diǎn),并根據(jù)定時(shí)任務(wù)的時(shí)間信息分配所述數(shù)據(jù)節(jié)點(diǎn)的列字段和行字段的值;將所述數(shù)據(jù)節(jié)點(diǎn)插入表示定時(shí)任務(wù)的十字鏈表中與所述數(shù)據(jù)節(jié)點(diǎn)的列字段和行字段的值對(duì)應(yīng)的位置。本發(fā)明的信息存儲(chǔ)方法采用優(yōu)化的十字鏈表的方法進(jìn)行壓縮存儲(chǔ),節(jié)省了存儲(chǔ)空間。本發(fā)明的定時(shí)任務(wù)調(diào)度方法利用十字鏈表進(jìn)行調(diào)度,可以隨時(shí)添加新的定時(shí)任務(wù)、修改或刪除未執(zhí)行的定時(shí)任務(wù),如果添加的新的定時(shí)任務(wù)比當(dāng)前時(shí)間和日期早,仍可以添加成功,但是并不會(huì)被執(zhí)行,實(shí)現(xiàn)靈活。
文檔編號(hào)G06F9/46GK101615131SQ20081012638
公開日2009年12月30日 申請(qǐng)日期2008年6月27日 優(yōu)先權(quán)日2008年6月27日
發(fā)明者劉曉玲, 唐熙文, 敏 張, 陳云海 申請(qǐng)人:中國電信股份有限公司