本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及計(jì)劃任務(wù)的實(shí)現(xiàn)方法及裝置。
背景技術(shù):
計(jì)劃任務(wù)(cron),是任務(wù)在約定的時(shí)間執(zhí)行已經(jīng)計(jì)劃好的工作。例如,可以在配置文件中約定每天早上4點(diǎn)將httpd服務(wù)器重新啟動(dòng),每天晚上10點(diǎn)種給某個(gè)郵箱發(fā)一封信,都是計(jì)劃任務(wù)。
cron表達(dá)式是用來(lái)表示任務(wù)在何時(shí)執(zhí)行的一種表達(dá)式,它通常用于配置計(jì)劃任務(wù)的觸發(fā)時(shí)間。cron表達(dá)式是六個(gè)或者七個(gè)子表達(dá)式(字段)組成的字符串,而子表達(dá)式(字段)之間用空格隔開(kāi)。例如,一種典型的cron表達(dá)式字段包括:秒、分、時(shí)、日、周、月、年。
目前設(shè)計(jì)的cron表達(dá)式都需要用戶(hù)手動(dòng)填寫(xiě)各個(gè)字段的值,從而完成定時(shí)設(shè)置。這種用戶(hù)手動(dòng)編寫(xiě)cron表達(dá)式的方式,出錯(cuò)率較高,例如輸入了中文問(wèn)號(hào)(?)而造成的表達(dá)式解析失敗。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的計(jì)劃任務(wù)的實(shí)現(xiàn)方法及裝置。
依據(jù)本發(fā)明的一個(gè)方面,提供一種計(jì)劃任務(wù)的實(shí)現(xiàn)方法,包括:配置基準(zhǔn)字段下拉列表;監(jiān)控基準(zhǔn)字段下拉列表的觸發(fā)事件,確定當(dāng)前被選定的基準(zhǔn)字段;基于預(yù)先設(shè)置的基準(zhǔn)字段與cron表達(dá)式格式的對(duì)應(yīng)關(guān)系,確定所述當(dāng)前被選定基準(zhǔn)字段對(duì)應(yīng)的cron表達(dá)式格式;獲取所確定的所述cron表達(dá)式格式中各個(gè)字段的復(fù)選框的一個(gè)或多個(gè)值,生成cron表達(dá)式。
優(yōu)選的,所述獲取所確定的所述cron表達(dá)式格式中各個(gè)字段的復(fù)選框的值,生成cron表達(dá)式,包括:對(duì)所確定的所述cron表達(dá)式格式中各個(gè)字段的復(fù)選框的onchange事件進(jìn)行監(jiān)控,當(dāng)監(jiān)控到onchange事件時(shí),調(diào)用述cron表達(dá)式生成函數(shù),獲取到發(fā)生onchange事件的字段的復(fù)選框的一個(gè)或多個(gè)值;根據(jù)各個(gè)字段的復(fù)選框的一個(gè)或多個(gè)值,生成cron表達(dá)式。
優(yōu)選的,所述根據(jù)各個(gè)字段的復(fù)選框的值,生成cron表達(dá)式,包括:針對(duì)所確定的所述cron表達(dá)式格式中各個(gè)字段,建立空的數(shù)組;基于基準(zhǔn)字段和發(fā)生onchange事件的各個(gè)字段的一個(gè)或多個(gè)值,更新所述數(shù)組的值;將所述數(shù)組拼接為字符串,得到所述cron表達(dá)式。
優(yōu)選的,所述預(yù)先設(shè)置的基準(zhǔn)字段與cron表達(dá)式格式的對(duì)應(yīng)關(guān)系,包括:基于各個(gè)基準(zhǔn)字段,確定出各個(gè)基準(zhǔn)字段對(duì)應(yīng)的所有下級(jí)字段;針對(duì)各個(gè)下級(jí)字段,配置下級(jí)字段的復(fù)選框,從而完成各個(gè)基準(zhǔn)字段所對(duì)應(yīng)的cron表達(dá)式格式的設(shè)置。
優(yōu)選的,基于javascript內(nèi)置的下拉列表控件,配置所述基準(zhǔn)字段下拉列表,以及,基于javascript內(nèi)置的復(fù)選框控件,配置下級(jí)字段的復(fù)選框。
根據(jù)本發(fā)明的另一個(gè)方面,提供一種計(jì)劃任務(wù)的實(shí)現(xiàn)裝置,包括:基準(zhǔn)字段配置單元,用于配置基準(zhǔn)字段下拉列表;基準(zhǔn)字段監(jiān)控單元,用于監(jiān)控基準(zhǔn)字段下拉列表的觸發(fā)事件,確定當(dāng)前被選定的基準(zhǔn)字段;確定單元,用于基于預(yù)先設(shè)置的基準(zhǔn)字段與cron表達(dá)式格式的對(duì)應(yīng)關(guān)系,確定所述當(dāng)前被選定基準(zhǔn)字段對(duì)應(yīng)的cron表達(dá)式格式;表達(dá)式生成單元,用于獲取所確定的所述cron表達(dá)式格式中各個(gè)字段的復(fù)選框的一個(gè)或多個(gè)值,生成cron表達(dá)式。
優(yōu)選的,所述表達(dá)式生成單元具體用于:對(duì)所確定的所述cron表達(dá)式格式中各個(gè)字段的復(fù)選框的onchange事件進(jìn)行監(jiān)控,當(dāng)監(jiān)控到onchange事件時(shí),調(diào)用述cron表達(dá)式生成函數(shù),獲取到發(fā)生onchange事件的字段的復(fù)選框的一個(gè)或多個(gè)值;以及,根據(jù)各個(gè)字段的復(fù)選框的一個(gè)或多個(gè)值,生成cron表達(dá)式。
優(yōu)選的,所述表達(dá)式生成單元具體用于:針對(duì)所確定的所述cron表達(dá)式格式中各個(gè)字段,建立空的數(shù)組;基于基準(zhǔn)字段和發(fā)生onchange事件的各個(gè)字段的值,更新所述數(shù)組的值;將所述數(shù)組拼接為字符串,得到所述cron表達(dá)式。
優(yōu)選的,還包括:設(shè)置單元,用于基于各個(gè)基準(zhǔn)字段,確定出各個(gè)基準(zhǔn)字段對(duì)應(yīng)的所有下級(jí)字段;針對(duì)各個(gè)下級(jí)字段,配置下級(jí)字段的復(fù)選框,從而完成各個(gè)基準(zhǔn)字段所對(duì)應(yīng)的cron表達(dá)式格式的設(shè)置。
優(yōu)選的,基于javascript內(nèi)置的下拉列表控件,配置所述基準(zhǔn)字段下拉列表,以及,基于javascript內(nèi)置的復(fù)選框控件,配置下級(jí)字段的復(fù)選框。
可見(jiàn),本發(fā)明針對(duì)現(xiàn)有技術(shù)的手動(dòng)輸入各個(gè)字段值的方式進(jìn)行改進(jìn),通過(guò)下拉列表及復(fù)選框的方式,用戶(hù)僅需對(duì)各個(gè)字段的選項(xiàng)進(jìn)行簡(jiǎn)單選擇即可,由于不需要用戶(hù)輸入,從而避免用戶(hù)輸入錯(cuò)誤,由此減少出錯(cuò)率;另外,由于僅顯示選定基準(zhǔn)字段對(duì)應(yīng)的且有觸發(fā)事件的下級(jí)字段,因此,可以更加直觀、簡(jiǎn)潔的展示定時(shí)任務(wù)觸發(fā)時(shí)間視圖;而且,本發(fā)明可通過(guò)javascript腳本來(lái)實(shí)現(xiàn),因此能夠很方便的與現(xiàn)有的一些框架進(jìn)行整合。
上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
附圖說(shuō)明
通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例提供的計(jì)劃任務(wù)的實(shí)現(xiàn)方法流程圖;
圖2示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例提供的計(jì)劃任務(wù)的實(shí)現(xiàn)方法中cron表達(dá)式視圖示意圖;
圖3示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例提供的計(jì)劃任務(wù)的實(shí)現(xiàn)方法流程圖;
圖4示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例提供的計(jì)劃任務(wù)的實(shí)現(xiàn)方法中cron表達(dá)式視圖示意圖;
圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例提供的計(jì)劃任務(wù)的實(shí)現(xiàn)裝置結(jié)構(gòu)示意圖;
圖6示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例提供的計(jì)劃任務(wù)的實(shí)現(xiàn)裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
針對(duì)現(xiàn)有技術(shù)中在cron輸入框中手動(dòng)輸入各個(gè)字段值而存在的出錯(cuò)率高的問(wèn)題,本發(fā)明實(shí)現(xiàn)一種可視化的cron表達(dá)式,由于僅需用戶(hù)選擇確定各個(gè)字段的值,而不需要用戶(hù)手段輸入,從而可以極大地降低出錯(cuò)的概率,同時(shí)還可以根據(jù)已有的cron表達(dá)式將任務(wù)的觸發(fā)時(shí)間直觀的顯示到界面上。
參考圖1,為根據(jù)本發(fā)明的一個(gè)實(shí)施例提供的計(jì)劃任務(wù)的實(shí)現(xiàn)方法流程圖,包括如下步驟s101-s104。
s101:配置基準(zhǔn)字段下拉列表。
本領(lǐng)域技術(shù)人員了解,一個(gè)cron表達(dá)式有至少6個(gè)(也可能7個(gè))有空格分隔的字段(時(shí)間元素)。
例如,時(shí)間元素按順序依次為:
秒(0~59);
分(0~59);
時(shí)(0~23);
天(月)(0~31,需要考慮月的天數(shù));
周(星期幾)(1~7:sun,mon,tue,wed,thu,fri,sat);
月(0~11);
年(例如1970-2099)。
本發(fā)明中,上述任何一個(gè)時(shí)間元素都可以作為基準(zhǔn)字段,因此,在基準(zhǔn)字段下拉列表配置中,將上述各個(gè)時(shí)間元素配置為下拉列表的各個(gè)選項(xiàng)。
具體實(shí)現(xiàn)中,可以基于javascript下拉列表控件,實(shí)現(xiàn)基準(zhǔn)字段下拉列表的配置。
javascript一種直譯式腳本語(yǔ)言,是一種動(dòng)態(tài)類(lèi)型、弱類(lèi)型、基于原型的語(yǔ)言,內(nèi)置支持類(lèi)型。它的解釋器被稱(chēng)為javascript引擎,為瀏覽器的一部分,廣泛用于客戶(hù)端的腳本語(yǔ)言,最早是在html(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用)網(wǎng)頁(yè)上使用,用來(lái)給html網(wǎng)頁(yè)增加動(dòng)態(tài)功能。
javascript被廣泛的用于網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)頁(yè)特效制作等。幾乎所有的網(wǎng)頁(yè)都會(huì)使用javascript,例如表單驗(yàn)證,動(dòng)畫(huà),頁(yè)面樣式控制等等。在網(wǎng)頁(yè)的開(kāi)發(fā)中,已經(jīng)內(nèi)置了很多基礎(chǔ)的控件了,比如輸入框、下拉列表、復(fù)選框等等,并且些基礎(chǔ)的控件也提供了一些事件機(jī)制可以讓javascript來(lái)做出對(duì)應(yīng)的響應(yīng)。因此,本發(fā)明可以基于這些事件來(lái)開(kāi)發(fā)出非常豐富的功能,同時(shí),可以將一些易出錯(cuò)的文本輸入操作簡(jiǎn)化成界面化的選擇操作,從各個(gè)方面來(lái)擴(kuò)展這些基礎(chǔ)的控件來(lái)滿(mǎn)足用戶(hù)的需求。
s102:監(jiān)控基準(zhǔn)字段下拉列表的觸發(fā)事件,確定當(dāng)前被選定的基準(zhǔn)字段。
例如,通過(guò)監(jiān)控基準(zhǔn)字段下拉列表的onchange事件,當(dāng)基準(zhǔn)字段下拉列表的選項(xiàng)發(fā)生變化時(shí),可確定出當(dāng)前被用戶(hù)選定的基準(zhǔn)字段。其中,onchange事件是在客戶(hù)端改變輸入控件的值,比如一個(gè)textbox,會(huì)觸發(fā)這個(gè)事件,也即,onchange在元素值改變時(shí)觸發(fā)。
s103:基于預(yù)先設(shè)置的基準(zhǔn)字段與cron表達(dá)式格式的對(duì)應(yīng)關(guān)系,確定所述當(dāng)前被選定基準(zhǔn)字段對(duì)應(yīng)的cron表達(dá)式格式。
本發(fā)明中,需要預(yù)先設(shè)置的基準(zhǔn)字段與cron表達(dá)式格式的對(duì)應(yīng)關(guān)系,具體設(shè)置過(guò)程包括:基于各個(gè)基準(zhǔn)字段,確定出各個(gè)基準(zhǔn)字段對(duì)應(yīng)的所有下級(jí)字段;針對(duì)各個(gè)下級(jí)字段,配置下級(jí)字段的下拉列表,從而完成各個(gè)基準(zhǔn)字段所對(duì)應(yīng)的cron表達(dá)式格式的設(shè)置。
仍以上述秒、分、時(shí)、天、周、月、年的時(shí)間元素作為字段,例如,當(dāng)選定“年”為基準(zhǔn)字段,那么“年”的下級(jí)字段包括:“秒、分、時(shí)、天、周、月”;如果選定“月”為基準(zhǔn)字段,那么“月”的下級(jí)字段包括:“秒、分、時(shí)、天、周”;如果選定“周”為基準(zhǔn)字段,那么“周”的下級(jí)字段包括:“秒、分、時(shí)、天”;如果選定“天”為基準(zhǔn)字段,那么“天”的下級(jí)字段包括:“秒、分、時(shí)”;如果選定“時(shí)”為基準(zhǔn)字段,那么“時(shí)”的下級(jí)字段包括:“秒、分”;如果選定“分”為基準(zhǔn)字段,那么“分”的下級(jí)字段包括:“秒”;如果選定“秒”為基準(zhǔn)字段,由于秒已經(jīng)是最小的時(shí)間元素,因此秒沒(méi)有下級(jí)字段。
確定出各個(gè)基準(zhǔn)字段對(duì)應(yīng)的各個(gè)下級(jí)字段之后,需要配置各個(gè)下級(jí)字段的下拉列表,從而完成各個(gè)基準(zhǔn)字段所對(duì)應(yīng)的cron表達(dá)式格式的設(shè)置。具體配置下級(jí)字段的下拉列表的方式,仍可如前所述的基于javascript下拉列表控件來(lái)實(shí)現(xiàn)。
s104:獲取所確定的cron表達(dá)式格式中各個(gè)字段的下拉列表的值,生成cron表達(dá)式。
在一種實(shí)現(xiàn)方式中,獲取所確定的cron表達(dá)式格式中各個(gè)字段的下拉列表的值,生成cron表達(dá)式,包括:對(duì)所確定的cron表達(dá)式格式中各個(gè)字段的下拉列表的onchange事件進(jìn)行監(jiān)控,當(dāng)監(jiān)控到onchange事件時(shí),調(diào)用述cron表達(dá)式生成函數(shù),獲取到發(fā)生onchange事件的字段的下拉列表的值;根據(jù)各個(gè)字段的下拉列表的值,生成cron表達(dá)式。
進(jìn)一步,根據(jù)各個(gè)字段的下拉列表的值,生成cron表達(dá)式,包括:針對(duì)所確定的所述cron表達(dá)式格式中各個(gè)字段,建立字段個(gè)數(shù)對(duì)應(yīng)大小的一個(gè)空的數(shù)組;基于基準(zhǔn)字段和發(fā)生onchange事件的各個(gè)字段的值,更新數(shù)組的值;將數(shù)組拼接為字符串,得到cron表達(dá)式。
其中,通過(guò)監(jiān)控各個(gè)字段的下拉列表的onchange事件,可以得知各個(gè)下級(jí)字段的選項(xiàng)的值發(fā)生改變。然后再通過(guò)上述數(shù)組賦值的方式,即可得到各個(gè)字段(基準(zhǔn)字段以及各個(gè)下級(jí)字段)的選項(xiàng)的值,從而最終生成cron表達(dá)式。
下面以一個(gè)具體例子,對(duì)圖1所述的計(jì)劃任務(wù)的實(shí)現(xiàn)方法進(jìn)行示例性描述。
該例子中,在任務(wù)調(diào)度平臺(tái)網(wǎng)站中為任務(wù)配置cron表達(dá)式,包括如下步驟(1)-(3)。
(1)使用一個(gè)下拉列表來(lái)表示任務(wù)觸發(fā)日期基準(zhǔn)字段
例如,在定時(shí)任務(wù)的配置中,需要為任務(wù)配置一個(gè)cron表達(dá)式,該任務(wù)可以在“每年”、“每月”、“每周”、“每天”、“每小時(shí)”、“每分鐘”、“每秒鐘”觸發(fā)。這里就需要一個(gè)下拉列表來(lái)表示任務(wù)觸發(fā)的基準(zhǔn)字段,代碼示例如下:
其中的value表示基準(zhǔn)字段的id,后續(xù)可以根根該基準(zhǔn)字段顯示出其他字段對(duì)應(yīng)的下拉列表。
(2)通過(guò)任務(wù)觸發(fā)的基準(zhǔn)字段顯示其他字段
例如,由于cron表達(dá)式的七個(gè)字段分別對(duì)應(yīng):秒、分、時(shí)、日、周、月、年,因此,配置如下的“基準(zhǔn)字段-下級(jí)字段”顯示規(guī)則:
若基準(zhǔn)字段選擇為“年”:那么表達(dá)式格式為:____月份?
若基準(zhǔn)字段選擇為“月”:那么表達(dá)式格式為:___日期*?
若基準(zhǔn)字段選擇為“周”:那么表達(dá)式格式為:___?*星期幾
若基準(zhǔn)字段選擇為“天”:那么表達(dá)式格式為:___**?
若基準(zhǔn)字段選擇為“時(shí)”:那么表達(dá)式格式為:__***?
若基準(zhǔn)字段選擇為“分”:那么表達(dá)式格式為:_****?
若基準(zhǔn)字段選擇為“秒”:那么表達(dá)式格式為:*****?
其中,上述表達(dá)式格式為“秒、分、時(shí)、日、周、月、年”,“_”代表“秒、分或時(shí)”的值,“*”表示任何值都可以,“?”表示忽略。
通過(guò)如上的規(guī)則,當(dāng)選擇不同的基準(zhǔn)字段時(shí),把其他需要顯示的字段對(duì)應(yīng)的下拉列表顯示出來(lái)即可。
為了實(shí)現(xiàn)其他下級(jí)字段的顯示,需要預(yù)先配置各個(gè)下級(jí)字段的下拉列表。例如,對(duì)于每個(gè)cron表達(dá)式的每個(gè)字段,用一個(gè)下拉列表里來(lái)與之對(duì)應(yīng)起來(lái)。示例代碼如下:
在完成“基準(zhǔn)字段-下級(jí)字段”規(guī)則配置以及各個(gè)下級(jí)字段的下拉列表的配置之后,就可以通過(guò)監(jiān)聽(tīng)基準(zhǔn)字段下拉列表的選項(xiàng)變化事件來(lái)實(shí)現(xiàn)其他字段下拉列表的顯示。
例如,監(jiān)聽(tīng)基準(zhǔn)下拉列表的onchange事件,當(dāng)基準(zhǔn)下拉列表的選項(xiàng)發(fā)生變化的時(shí)候,就回調(diào)用basechage這個(gè)函數(shù):
$("#base").on('change',basechage);
因此,需要定義事件回調(diào)方法basechage,這個(gè)方法中,根據(jù)基準(zhǔn)字段id來(lái)顯示需要顯示的下拉列表。示例代碼如下。
首先先將所有的字段下拉列表隱藏起來(lái),代碼如下
$("#month").hide();
其他字段類(lèi)似。
其次,根據(jù)上面步驟(2)中的規(guī)則來(lái)顯示對(duì)應(yīng)的下拉列表:
//選每年,則顯示每月
if(baseid==7){
$("#month").show();
};
其他字段的下拉列表也一樣的邏輯。
至此:通過(guò)這個(gè)步驟就實(shí)現(xiàn)了各個(gè)字段對(duì)應(yīng)的下拉列表的顯示??梢?jiàn),本發(fā)明可以有效的控制哪些字段需要顯示,哪些字段不需要顯示,從而減少了不必要的操作,也使得界面簡(jiǎn)潔。
(3)通過(guò)各個(gè)下拉列表的值來(lái)生成cron表達(dá)式
為每個(gè)字段對(duì)應(yīng)的下拉列表綁定一個(gè)onchange事件,每當(dāng)onchange事件觸發(fā)時(shí),就調(diào)用一次cron表達(dá)式生成的函數(shù),示例代碼如下:
(3.1)為每個(gè)下拉列表綁定onchange事件:
$("#month").on('change',gegeratecron);
$("#weekday").on('change',gegeratecron);
$("#day").on('change',gegeratecron);
$("#hour").on('change',gegeratecron);
$("#minute").on('change',gegeratecron);
$("#second").on('change',gegeratecron);
(3.2)當(dāng)對(duì)應(yīng)字段的下拉列表發(fā)生變化時(shí),就會(huì)觸發(fā)之前綁定的函數(shù)gegeratecron,代碼如下:
首先,把各個(gè)字段的內(nèi)容放在一個(gè)數(shù)組內(nèi),后續(xù)再替換對(duì)應(yīng)字段的內(nèi)容。
例如,varcron=['*','*','*','*','*','?'];分別對(duì)應(yīng)秒、分、時(shí)、日、月、周。
將基準(zhǔn)字段和下級(jí)字段作為下面步驟的判斷條件。
varbaseid=$('#base').val();
varname=$(this).attr("id");
然后,根據(jù)基準(zhǔn)字段和發(fā)生觸發(fā)事件的下級(jí)字段,將步驟a中的對(duì)應(yīng)位置的數(shù)組的值進(jìn)行替換即可,代碼片段如下:
對(duì)應(yīng)的其他字段的替換和上面類(lèi)似。
最后,再將數(shù)組拼接為一個(gè)字符串,即可以的到所需要的cron表達(dá)式,returncron.join("");
至此:就得到了最終的cron表達(dá)式。
參考圖2,為一個(gè)示例性的cron表達(dá)式視圖,其中,基準(zhǔn)字段為月,發(fā)生觸發(fā)事件的下級(jí)字段是日、時(shí)和分,通過(guò)上述獲取各個(gè)字段值的方式,最終顯示如圖2所示的cron表達(dá)式視圖??梢?jiàn),圖2中,定時(shí)任務(wù)的時(shí)間設(shè)置為:每月的第1天的6時(shí)5分。
可見(jiàn),本發(fā)明在上述計(jì)劃任務(wù)的實(shí)現(xiàn)方法中,針對(duì)現(xiàn)有技術(shù)的手動(dòng)輸入各個(gè)字段值的方式進(jìn)行改進(jìn),通過(guò)下拉列表的方式,用戶(hù)僅需對(duì)各個(gè)字段的選項(xiàng)進(jìn)行簡(jiǎn)單選擇即可,由于不需要用戶(hù)輸入,從而避免用戶(hù)輸入錯(cuò)誤,由此減少出錯(cuò)率;另外,由于僅顯示選定基準(zhǔn)字段對(duì)應(yīng)的且有觸發(fā)事件的下級(jí)字段,因此,可以更加直觀、簡(jiǎn)潔的展示定時(shí)任務(wù)觸發(fā)時(shí)間視圖;而且,本發(fā)明可通過(guò)javascript腳本來(lái)實(shí)現(xiàn),因此能夠很方便的與現(xiàn)有的一些框架進(jìn)行整合。
參考圖3,為根據(jù)本發(fā)明的另一個(gè)實(shí)施例提供的計(jì)劃任務(wù)的實(shí)現(xiàn)方法流程圖,包括如下步驟s301-s304。與圖1提供的計(jì)劃任務(wù)的實(shí)現(xiàn)方法主要不同在于,本實(shí)施例提供的計(jì)劃任務(wù)的實(shí)現(xiàn)方法中,各個(gè)下級(jí)字段是基于復(fù)選框?qū)崿F(xiàn)的,即,各個(gè)下級(jí)字段可以提供多個(gè)選項(xiàng)。
s301:配置基準(zhǔn)字段下拉列表。
本領(lǐng)域技術(shù)人員了解,一個(gè)cron表達(dá)式有至少6個(gè)(也可能7個(gè))有空格分隔的字段(時(shí)間元素)。
例如,時(shí)間元素按順序依次為:
秒(0~59);
分鐘(0~59);
小時(shí)(0~23);
天(月)(0~31,需要考慮月的天數(shù));
周幾(星期)(1~7:sun,mon,tue,wed,thu,fri,sat);
月(0~11);
年份(1970-2099)。
本發(fā)明中,上述任何一個(gè)時(shí)間元素都可以作為基準(zhǔn)字段,因此,在基準(zhǔn)字段下拉列表配置中,將上述各個(gè)時(shí)間元素配置為下拉列表的各個(gè)選項(xiàng)。
具體實(shí)現(xiàn)中,可以基于javascript下拉列表控件,實(shí)現(xiàn)基準(zhǔn)字段下拉列表的配置。
javascript一種直譯式腳本語(yǔ)言,是一種動(dòng)態(tài)類(lèi)型、弱類(lèi)型、基于原型的語(yǔ)言,內(nèi)置支持類(lèi)型。它的解釋器被稱(chēng)為javascript引擎,為瀏覽器的一部分,廣泛用于客戶(hù)端的腳本語(yǔ)言,最早是在html(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用)網(wǎng)頁(yè)上使用,用來(lái)給html網(wǎng)頁(yè)增加動(dòng)態(tài)功能。
javascript被廣泛的用于網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)頁(yè)特效制作等。幾乎所有的網(wǎng)頁(yè)都會(huì)使用javascript,例如表單驗(yàn)證,動(dòng)畫(huà),頁(yè)面樣式控制等等。在網(wǎng)頁(yè)的開(kāi)發(fā)中,已經(jīng)內(nèi)置了很多基礎(chǔ)的控件了,比如輸入框,下拉列表,復(fù)選框等等,并且些基礎(chǔ)的控件也提供了一些事件機(jī)制可以讓javascript來(lái)做出對(duì)應(yīng)的響應(yīng)。因此,本發(fā)明可以基于這些事件來(lái)開(kāi)發(fā)出非常豐富的功能,同時(shí),可以將一些易出錯(cuò)的文本輸入操作簡(jiǎn)化成界面化的選擇操作,從各個(gè)方面來(lái)擴(kuò)展這些基礎(chǔ)的控件來(lái)滿(mǎn)足用戶(hù)的需求。
s302:監(jiān)控基準(zhǔn)字段下拉列表的觸發(fā)事件,確定當(dāng)前被選定的基準(zhǔn)字段。
例如,通過(guò)監(jiān)控基準(zhǔn)字段下拉列表的onchange事件,當(dāng)基準(zhǔn)字段下拉列表的選項(xiàng)發(fā)生變化時(shí),可確定出當(dāng)前被用戶(hù)選定的基準(zhǔn)字段。其中,onchange事件是在客戶(hù)端改變輸入控件的值,比如一個(gè)textbox,會(huì)觸發(fā)這個(gè)事件,也即,onchange在元素值改變時(shí)觸發(fā)。
s303:基于預(yù)先設(shè)置的基準(zhǔn)字段與cron表達(dá)式格式的對(duì)應(yīng)關(guān)系,確定當(dāng)前被選定基準(zhǔn)字段對(duì)應(yīng)的cron表達(dá)式格式。
本發(fā)明中,需要預(yù)先設(shè)置的基準(zhǔn)字段與cron表達(dá)式格式的對(duì)應(yīng)關(guān)系,具體設(shè)置過(guò)程包括:基于各個(gè)基準(zhǔn)字段,確定出各個(gè)基準(zhǔn)字段對(duì)應(yīng)的所有下級(jí)字段;針對(duì)各個(gè)下級(jí)字段,配置下級(jí)字段的復(fù)選框,從而完成各個(gè)基準(zhǔn)字段所對(duì)應(yīng)的cron表達(dá)式格式的設(shè)置。
仍以上述秒、分、時(shí)、天、周、月、年的時(shí)間元素作為字段,例如,當(dāng)選定“年”為基準(zhǔn)字段,那么“年”的下級(jí)字段包括:“秒、分、時(shí)、天、周、月”;如果選定“月”為基準(zhǔn)字段,那么“月”的下級(jí)字段包括:“秒、分、時(shí)、天、周”;如果選定“周”為基準(zhǔn)字段,那么“周”的下級(jí)字段包括:“秒、分、時(shí)、天”;如果選定“天”為基準(zhǔn)字段,那么“天”的下級(jí)字段包括:“秒、分、時(shí)”;如果選定“時(shí)”為基準(zhǔn)字段,那么“時(shí)”的下級(jí)字段包括:“秒、分”;如果選定“分”為基準(zhǔn)字段,那么“分”的下級(jí)字段包括:“秒”;如果選定“秒”為基準(zhǔn)字段,由于秒已經(jīng)是最小的時(shí)間元素,因此秒沒(méi)有下級(jí)字段。
確定出各個(gè)基準(zhǔn)字段對(duì)應(yīng)的各個(gè)下級(jí)字段之后,需要配置各個(gè)下級(jí)字段的復(fù)選框,從而完成各個(gè)基準(zhǔn)字段所對(duì)應(yīng)的cron表達(dá)式格式的設(shè)置。具體配置下級(jí)字段的復(fù)選框的方式,可基于javascript復(fù)選框控件來(lái)實(shí)現(xiàn)。
s304:獲取所確定的cron表達(dá)式格式中各個(gè)字段的復(fù)選框的一個(gè)或多個(gè)值,生成cron表達(dá)式。
在一種實(shí)現(xiàn)方式中,獲取所確定的cron表達(dá)式格式中各個(gè)字段的復(fù)選框的值,生成cron表達(dá)式,包括:對(duì)所確定的cron表達(dá)式格式中各個(gè)字段的復(fù)選框的onchange事件進(jìn)行監(jiān)控,當(dāng)監(jiān)控到onchange事件時(shí),調(diào)用述cron表達(dá)式生成函數(shù),獲取到發(fā)生onchange事件的字段的復(fù)選框的值;根據(jù)各個(gè)字段的復(fù)選框的值,生成cron表達(dá)式。
進(jìn)一步,根據(jù)各個(gè)字段的復(fù)選框的值,生成cron表達(dá)式,包括:針對(duì)所確定的cron表達(dá)式格式中各個(gè)字段,建立字段個(gè)數(shù)對(duì)應(yīng)大小的一個(gè)空的數(shù)組;基于基準(zhǔn)字段和發(fā)生onchange事件的各個(gè)字段的值(可以是多個(gè)),更新數(shù)組的值;將數(shù)組拼接為字符串,得到cron表達(dá)式。
其中,通過(guò)監(jiān)控各個(gè)字段的復(fù)選框的onchange事件,可以得知各個(gè)下級(jí)字段的選項(xiàng)的值發(fā)生改變。然后再通過(guò)上述數(shù)組賦值的方式,即可得到各個(gè)字段(基準(zhǔn)字段以及各個(gè)下級(jí)字段)的選項(xiàng)的值,從而最終生成cron表達(dá)式。
下面以一個(gè)具體例子,對(duì)圖3所述的計(jì)劃任務(wù)的實(shí)現(xiàn)方法進(jìn)行示例性描述。
該例子中,在任務(wù)調(diào)度平臺(tái)網(wǎng)站中為任務(wù)配置cron表達(dá)式,包括如下步驟(1)-(3)。
(1)使用一個(gè)下拉列表來(lái)表示任務(wù)觸發(fā)日期基準(zhǔn)字段
例如,在定時(shí)任務(wù)的配置中,需要為任務(wù)配置一個(gè)cron表達(dá)式,該任務(wù)可以在“每年”、“每月”、“每周”、“每天”、“每小時(shí)”、“每分鐘”、“每秒鐘”觸發(fā)。這里就需要一個(gè)下拉列表來(lái)表示任務(wù)觸發(fā)的基準(zhǔn)字段,代碼示例如下:
其中的value表示基準(zhǔn)字段的id,后續(xù)可以根根該基準(zhǔn)字段顯示出其他字段對(duì)應(yīng)的下拉列表。
(2)通過(guò)任務(wù)觸發(fā)的基準(zhǔn)字段顯示其他字段
例如,由于cron表達(dá)式的七個(gè)字段分別對(duì)應(yīng):秒、分、時(shí)、日、周、月、年,因此,配置如下的“基準(zhǔn)字段-下級(jí)字段”顯示規(guī)則:
若基準(zhǔn)字段選擇為“年”:那么表達(dá)式格式為:____月份?
若基準(zhǔn)字段選擇為“月”:那么表達(dá)式格式為:___日期*?
若基準(zhǔn)字段選擇為“周”:那么表達(dá)式格式為:___?*星期幾
若基準(zhǔn)字段選擇為“天”:那么表達(dá)式格式為:___**?
若基準(zhǔn)字段選擇為“時(shí)”:那么表達(dá)式格式為:__***?
若基準(zhǔn)字段選擇為“分”:那么表達(dá)式格式為:_****?
若基準(zhǔn)字段選擇為“秒”:那么表達(dá)式格式為:*****?
其中,上述表達(dá)式格式為“秒、分、時(shí)、日、周、月、年”,“_”代表“秒、分或時(shí)”的值,“*”表示任何值都可以,“?”表示忽略。
通過(guò)如上的規(guī)則,當(dāng)選擇不同的基準(zhǔn)字段時(shí),把其他需要顯示的字段對(duì)應(yīng)的復(fù)選框顯示出來(lái)即可。
為了實(shí)現(xiàn)其他下級(jí)字段的顯示,需要預(yù)先配置各個(gè)下級(jí)字段的復(fù)選框。例如,對(duì)于每個(gè)cron表達(dá)式格式的每個(gè)字段,用一個(gè)復(fù)選框來(lái)與之對(duì)應(yīng)起來(lái)。示例代碼如下:
在完成“基準(zhǔn)字段-下級(jí)字段”規(guī)則配置以及各個(gè)下級(jí)字段的復(fù)選框的配置之后,就可以通過(guò)監(jiān)聽(tīng)基準(zhǔn)字段下拉列表的選項(xiàng)變化事件來(lái)實(shí)現(xiàn)其他字段復(fù)選框的顯示。
例如,監(jiān)聽(tīng)基準(zhǔn)下拉列表的onchange事件,當(dāng)基準(zhǔn)下拉列表的選項(xiàng)發(fā)生變化的時(shí)候,就調(diào)用basechage這個(gè)函數(shù):
$("#base").on('change',basechage)
因此,需要定義事件回調(diào)方法basechage,這個(gè)方法中,根據(jù)基準(zhǔn)字段id來(lái)顯示需要顯示的下級(jí)字段的復(fù)選框。示例代碼如下。
首先先將所有的字段復(fù)選框隱藏起來(lái),代碼如下
$("#month").hide()
其他字段類(lèi)似。
其次,根據(jù)上面步驟(2)中的規(guī)則來(lái)顯示對(duì)應(yīng)的復(fù)選框:
//選每年,則顯示每月
if(baseid==7){
$("#month").show();
}
其他字段的復(fù)選框也一樣的邏輯。
至此:通過(guò)這個(gè)步驟就實(shí)現(xiàn)了各個(gè)字段對(duì)應(yīng)的復(fù)選框的顯示??梢?jiàn),本發(fā)明可以有效的控制哪些字段需要顯示,哪些字段不需要顯示,從而減少了不必要的操作,也使得界面簡(jiǎn)潔。
(3)通過(guò)各個(gè)下拉列表/復(fù)選框的值來(lái)生成cron表達(dá)式
為每個(gè)字段對(duì)應(yīng)的下拉列表/復(fù)選框綁定一個(gè)onchange事件,每當(dāng)onchange事件觸發(fā)時(shí),就調(diào)用一次cron表達(dá)式生成的函數(shù),示例代碼如下:
(3.1)為基準(zhǔn)字段下拉列表及各個(gè)下級(jí)字段的復(fù)選框綁定onchange事件:
$("#month").on('change',gegeratecron);
$("#weekday").on('change',gegeratecron);
$("#day").on('change',gegeratecron);
$("#hour").on('change',gegeratecron);
$("#minute").on('change',gegeratecron);
$("#second").on('change',gegeratecron);
(3.2)當(dāng)對(duì)應(yīng)字段的下拉列表或復(fù)選框發(fā)生變化時(shí),就會(huì)觸發(fā)之前綁定的函數(shù)gegeratecron,代碼如下:
首先,把各個(gè)字段的內(nèi)容放在一個(gè)數(shù)組內(nèi),后續(xù)再替換對(duì)應(yīng)字段的內(nèi)容。
例如,varcron=['*','*','*','*','*','?'];分別對(duì)應(yīng)秒、分、時(shí)、日、月、周
將基準(zhǔn)字段和下級(jí)字段作為下面步驟的判斷條件。
varbaseid=$('#base').val();
varname=$(this).attr("id");
然后,根據(jù)基準(zhǔn)字段和發(fā)生觸發(fā)事件的下級(jí)字段,將步驟a中的對(duì)應(yīng)位置的數(shù)組的值進(jìn)行替換即可,代碼片段如下:
此處與圖1對(duì)應(yīng)的實(shí)施例中的例子不同的是,各個(gè)下級(jí)字段有可能有多個(gè)值,因此,當(dāng)某個(gè)下級(jí)字段有多個(gè)值時(shí),在該字段對(duì)應(yīng)的數(shù)組的位置賦以多個(gè)值即可。
對(duì)應(yīng)的其他字段的替換和上面類(lèi)似。
最后,再將數(shù)組拼接為一個(gè)字符串,即可以的到所需要的cron表達(dá)式,returncron.join("");
至此:就得到了最終的cron表達(dá)式。
參考圖4,為一個(gè)示例性的cron表達(dá)式視圖,其中,基準(zhǔn)字段為“月”,發(fā)生觸發(fā)事件的下級(jí)字段是“日、時(shí)和分”,通過(guò)上述獲取各個(gè)字段值的方式,最終顯示如圖4所示的cron表達(dá)式視圖。由此,圖4中表示的定時(shí)任務(wù)的時(shí)間設(shè)置為:每月的第1天和第10天的6時(shí)5分。可見(jiàn),圖4與圖2不同的是,下級(jí)字段“日”進(jìn)行了多選。
可見(jiàn),本發(fā)明在上述計(jì)劃任務(wù)的實(shí)現(xiàn)方法中,針對(duì)現(xiàn)有技術(shù)的手動(dòng)輸入各個(gè)字段值的方式進(jìn)行改進(jìn),通過(guò)下拉列表或復(fù)選框的方式,用戶(hù)僅需對(duì)各個(gè)字段的選項(xiàng)進(jìn)行簡(jiǎn)單選擇即可,由于不需要用戶(hù)輸入,從而避免用戶(hù)輸入錯(cuò)誤,由此減少出錯(cuò)率;另外,由于僅顯示選定基準(zhǔn)字段對(duì)應(yīng)的且有觸發(fā)事件的下級(jí)字段,因此,可以更加直觀、簡(jiǎn)潔的展示定時(shí)任務(wù)觸發(fā)時(shí)間視圖;而且,本發(fā)明可通過(guò)javascript腳本來(lái)實(shí)現(xiàn),因此能夠很方便的與現(xiàn)有的一些框架進(jìn)行整合。
與圖1-2方法實(shí)施例相對(duì)應(yīng),本發(fā)明提供一種計(jì)劃任務(wù)的實(shí)現(xiàn)裝置。
參見(jiàn)圖5,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例提供的計(jì)劃任務(wù)的實(shí)現(xiàn)裝置結(jié)構(gòu)示意圖,該裝置包括:
基準(zhǔn)字段配置單元501,用于配置基準(zhǔn)字段下拉列表;
基準(zhǔn)字段監(jiān)控單元502,用于監(jiān)控基準(zhǔn)字段下拉列表的觸發(fā)事件,確定當(dāng)前被選定的基準(zhǔn)字段;
確定單元503,用于基于預(yù)先設(shè)置的基準(zhǔn)字段與cron表達(dá)式格式的對(duì)應(yīng)關(guān)系,確定所述當(dāng)前被選定基準(zhǔn)字段對(duì)應(yīng)的cron表達(dá)式格式;
表達(dá)式生成單元504,用于獲取所確定的所述cron表達(dá)式格式中各個(gè)字段的下拉列表的值,生成cron表達(dá)式。
在一種實(shí)現(xiàn)方式中,所述表達(dá)式生成單元504具體用于:對(duì)所確定的所述cron表達(dá)式格式中各個(gè)字段的下拉列表的onchange事件進(jìn)行監(jiān)控,當(dāng)監(jiān)控到onchange事件時(shí),調(diào)用述cron表達(dá)式生成函數(shù),獲取到發(fā)生onchange事件的字段的下拉列表的值;以及,根據(jù)各個(gè)字段的下拉列表的值,生成cron表達(dá)式。
在一種實(shí)現(xiàn)方式中,所述表達(dá)式生成單元504具體用于:針對(duì)所確定的所述cron表達(dá)式格式中各個(gè)字段,建立空的數(shù)組;基于基準(zhǔn)字段和發(fā)生onchange事件的各個(gè)字段的值,更新所述數(shù)組的值;將所述數(shù)組拼接為字符串,得到所述cron表達(dá)式。
在一種實(shí)現(xiàn)方式中,所述裝置還包括:設(shè)置單元505,用于基于各個(gè)基準(zhǔn)字段,確定出各個(gè)基準(zhǔn)字段對(duì)應(yīng)的所有下級(jí)字段;針對(duì)各個(gè)下級(jí)字段,配置下級(jí)字段的下拉列表,從而完成各個(gè)基準(zhǔn)字段所對(duì)應(yīng)的cron表達(dá)式格式的設(shè)置。
在一種實(shí)現(xiàn)方式中,基于javascript內(nèi)置的下拉列表控件,配置所述基準(zhǔn)字段下拉列表或下級(jí)字段的下拉列表。
與圖3-4方法實(shí)施例相對(duì)應(yīng),本發(fā)明提供一種計(jì)劃任務(wù)的實(shí)現(xiàn)裝置。
參見(jiàn)圖6,示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例提供的計(jì)劃任務(wù)的實(shí)現(xiàn)裝置結(jié)構(gòu)示意圖,該裝置包括:
基準(zhǔn)字段配置單元601,用于配置基準(zhǔn)字段下拉列表;
基準(zhǔn)字段監(jiān)控單元602,用于監(jiān)控基準(zhǔn)字段下拉列表的觸發(fā)事件,確定當(dāng)前被選定的基準(zhǔn)字段;
確定單元603,用于基于預(yù)先設(shè)置的基準(zhǔn)字段與cron表達(dá)式格式的對(duì)應(yīng)關(guān)系,確定所述當(dāng)前被選定基準(zhǔn)字段對(duì)應(yīng)的cron表達(dá)式格式;
表達(dá)式生成單元604,用于獲取所確定的所述cron表達(dá)式格式中各個(gè)字段的復(fù)選框的一個(gè)或多個(gè)值,生成cron表達(dá)式。
在一種實(shí)現(xiàn)方式中,所述表達(dá)式生成單元604具體用于:對(duì)所確定的所述cron表達(dá)式格式中各個(gè)字段的復(fù)選框的onchange事件進(jìn)行監(jiān)控,當(dāng)監(jiān)控到onchange事件時(shí),調(diào)用述cron表達(dá)式生成函數(shù),獲取到發(fā)生onchange事件的字段的復(fù)選框的值;以及,根據(jù)各個(gè)字段的復(fù)選框的一個(gè)或多個(gè)值,生成cron表達(dá)式。
在一種實(shí)現(xiàn)方式中,所述表達(dá)式生成單元604具體用于:針對(duì)所確定的所述cron表達(dá)式格式中各個(gè)字段,建立空的數(shù)組;基于基準(zhǔn)字段和發(fā)生onchange事件的各個(gè)字段的值,更新所述數(shù)組的值;將所述數(shù)組拼接為字符串,得到所述cron表達(dá)式。
在一種實(shí)現(xiàn)方式中,所述裝置還包括:設(shè)置單元605,用于基于各個(gè)基準(zhǔn)字段,確定出各個(gè)基準(zhǔn)字段對(duì)應(yīng)的所有下級(jí)字段;針對(duì)各個(gè)下級(jí)字段,配置下級(jí)字段的復(fù)選框,從而完成各個(gè)基準(zhǔn)字段所對(duì)應(yīng)的cron表達(dá)式格式的設(shè)置。
在一種實(shí)現(xiàn)方式中,基于javascript內(nèi)置的下拉列表控件,配置所述基準(zhǔn)字段下拉列表,以及,基于javascript內(nèi)置的復(fù)選框控件下級(jí)字段的復(fù)選框。
在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類(lèi)系統(tǒng)所要求的結(jié)構(gòu)是顯而易見(jiàn)的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(dsp)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的用戶(hù)變身控制的系統(tǒng)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱(chēng)。