本發明涉及計算機
技術領域:
,特別是涉及一種基于SpirngQuartz的定時表達式的解析方法。
背景技術:
:在軟件開發領域,往往需要涉及到定時任務,比如:每天定時開啟機器、關閉機器,每天定點給某人發送郵件提醒,每隔2小時生成業務報表等等。借助的開源軟件中,SpringQuartz是最流行的,其配置簡單,易學易用,而且提供了單點或者分布式的任務配置方式,非常適合集成在各類系統中。SpringQuartz因為以上優點使之在軟件開發中非常流行,設置定時任務時,需要指定定時表達式,而SpringQuartz指定了該定時表達式的語法,只有滿足該語法的定時任務才能被其解析識別并執行成功。該表達式被稱之為Cron表達式,語法規則為Cron語法規則,基本的語法為<smhdmw(?)y(?)>,從前到后依次表示秒、分、時、天、月、周、年。每個字段的詳細用法如表1所示。其中,允許特殊字符中的每個字符均有其對應的含義,本部分不再贅述。表1字段允許值允許字符秒0-59,-*/分0-59,-*/小時0-23,-*/日期1-31-*?/LWC月份1-12或者JAN-DEC,-*/星期1-7或者SUN-SAT,-*?/LC#年1970-2099,-*/為了讓本領域技術人員更加理解表1中的允許字符的用法以及部分Cron語法規則,以下給出每個允許字符的含義。(1)*表示匹配該字段的任意值,假如在分字段使用*,即表示每分鐘都會觸發事件。(2)?表示只能用在月和周兩個字段。它也匹配該字段的任意值,但實際不會。因為月和周會相互影響。例如想在每月的20日觸發調度,不管20日到底是星期幾,則只能使用如下寫法:13131520*?,其中,最后一位只能用“?,”,而不能使用“*,”如果使用*表示不管星期幾都會觸發,實際上并不是這樣。(3)-表示范圍,例如在分字段使用5-20,表示從5分到20分鐘每分鐘觸發一次。(4)/表示起始時間開始觸發,然后每隔固定時間觸發一次,例如在分字段使用5/20,則意味著5分鐘觸發一次,而25,45等分別觸發一次。(5),表示列出枚舉值。例如:在分字段使用5,20,則意味著在5和20分每分鐘觸發一次。(6)L表示最后,只能出現在周字段和月字段,如果在周字段使用5L,意味著在最后的一個星期四觸發。(7)W表示有效工作日(周一到周五),只能出現在周字段,系統將在離指定日期的最近的有效工作日觸發事件。例如:在周字段使用5W,如果5日是星期六,則將在最近的工作日:星期五,即4日觸發。如果5日是星期天,則在6日觸發;如果5日在星期一到星期五中的一天,則就在5日觸發。另外一點,W的最近尋找不會跨過月份。(8)LW這兩個字符可以連用,表示在某個月最后一個工作日,即最后一個星期五。(9)#用于確定每個月第幾個星期幾,只能出現在月字段。例如在4#2,表示某月的第二個星期三。例如:0/5****?表示的含義是每隔五秒鐘執行一次,01510?**代表每天上午10:15觸發。上述表達式為SpringQuartz能夠識別的標準表達式,但是普通用戶或者不了解Cron表達式的開發者很難讀懂該表達式代表的含義,如果只是顯示一個Cron表達式,則用戶并不知道該表達式是什么含義。另一方面,對于初級的開發者來說,使用SpringQuartz時,需要設置Cron表達式,而該表達式每個字段表達的含義和需要設置的字符都比較復雜,需要深入的學習才能正確使用,往往在設置cron表達式時因為疏忽或者沒有按照要求使用導致定時任務不能啟動或者不能按照預定的時間啟動。由此可見,如何將Cron表達式解析成可閱讀的自然語言或者如何將自然語言有效的解析為Cron表達式是本領域技術人員亟待解決的問題。技術實現要素:本發明的目的是提供一種基于SpirngQuartz的定時表達式的解析方法,用于將Cron表達式解析成可閱讀的自然語言或者如何將自然語言有效的解析為Cron表達式。為解決上述技術問題,本發明提供一種基于SpirngQuartz的定時表達式的解析方法,包括:依據Cron語法規則判斷待解析定時表達式是否合法;如果是,則依據所述Cron語法規則解析所述待解析定時表達式中的各字段的含義和數值;依據輸出語言請求調用與所述輸出語言請求對應的語言配置文件,將所述各字段的含義與所述語言配置文件進行匹配以得到匹配結果;將各所述字段的數值填充至所述匹配結果的占位符中以得到解析結果。優選地,所述依據Cron語法規則判斷待解析定時表達式是否合法具體包括:判斷所述待解析定時表達式的字段數量是否完整;如果是,則判斷各所述字段的含義和數值是否全部滿足允許信息的要求,否則,確定所述待解析定時表達式不合法;如果各所述字段的含義和數值全部滿足允許信息的要求,則確定所述待解析定時表達式合法,否則確定所述待解析定時表達式不合法;其中,所述允許信息包括允許值和允許字符。優選地,如果所述待解析定時表達式不合法,則還包括:輸出表達式不合法提示信息。優選地,所述依據所述Cron語法規則解析所述待解析定時表達式中的各字段的含義和數值具體為:依據所述Cron語法規則從前至后依次解析所述待解析定時表達式中的各字段的含義和數值。優選地,所述依據所述Cron語法規則解析所述待解析定時表達式中的各字段的含義和數值具體為:依據所述Cron語法規則從后至前依次解析所述待解析定時表達式中的各字段的含義和數值。為解決上述技術問題,本發明還提供一種基于SpirngQuartz的定時表達式的解析方法,包括:通過預設置的定時任務界面接收輸入的各字段的含義和數值以作為待確定定時表達式;依據Cron語法規則判斷所述待確定定時表達式是否合法;如果是,則將所述待確定定時表達式中的各字段的含義和數值按照所述Cron語法規則進行排序以作為SpirngQuartz能夠識別的目標定時表達式。優選地,所述依據Cron語法規則判斷所述待確定定時表達式是否合法具體包括:判斷所述待確定定時表達式的字段數量是否完整;如果是,則判斷各所述字段的含義和數值是否全部滿足允許信息的要求,否則確定所述待確定定時表達式不合法;如果各所述字段的信息全部滿足允許信息的要求,則確定所述待解析定時表達式合法,否則確定所述待確定定時表達式不合法;其中,所述允許信息包括允許值和允許字符。優選地,還包括:輸出所述目標定時表達式。優選地,如果所述待確定定時表達式不合法,則還包括:輸出表達式不合法提示信息。本發明所提供的基于SpirngQuartz的定時表達式的解析方法,在待解析定時表達式合法的基礎上,依據Cron語法規則解析待解析定時表達式中的各字段的含義和數值,然后依據輸出語言請求調用與輸出語言請求對應的語言配置文件,將各字段的含義與語言配置文件進行匹配以得到匹配結果,最后將各字段的數值填充至匹配結果的占位符中以得到解析結果。由此可見,本解析方法能夠將一個Cron表達式解析為一個自然語言,方便用戶獲取定時表達式的真正含義。此外,本發明提供另一種基于SpirngQuartz的定時表達式的解析方法,通過預設置的定時任務界面接收輸入的各字段的含義和數值以作為待確定定時表達式,然后依據Cron語法規則判斷待確定定時表達式是否合法。如果是,則將待確定定時表達式中的各字段的含義和數值按照Cron語法規則進行排序以作為SpirngQuartz能夠識別的目標定時表達式。由此可見,本解析方法能夠將自然語言有效的解析為Cron表達式,使得用戶可以根據自己的需求靈活設置,而不依賴所學專業的限制。附圖說明為了更清楚地說明本發明實施例,下面將對實施例中所需要使用的附圖做簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1為本發明實施例提供的一種基于SpirngQuartz的定時表達式的解析方法的流程圖;圖2為本發明實施例提供的另一種基于SpirngQuartz的定時表達式的解析方法的流程圖;圖3為本發明實施例提供的另一種基于SpirngQuartz的定時表達式的解析方法的流程圖;圖4為本發明實施例提供的另一種基于SpirngQuartz的定時表達式的解析方法的流程圖。具體實施方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下,所獲得的所有其他實施例,都屬于本發明保護范圍。本發明的核心是提供一種基于SpirngQuartz的定時表達式的解析方法。為了使本
技術領域:
的人員更好地理解本發明方案,下面結合附圖和具體實施方式對本發明作進一步的詳細說明。圖1為本發明實施例提供的一種基于SpirngQuartz的定時表達式的解析方法的流程圖。如圖1所示,基于SpirngQuartz的定時表達式的解析方法包括如下步驟:S10:依據Cron語法規則判斷待解析定時表達式是否合法。如果是,則進入步驟S11。可以理解的是,待解析定時表達式用字符串表示,字符串中包含了多個字段,一般情況下,可以包含7個字段或6個字段,每個字段通過空格隔開。每個字段的允許信息參見表1。Cron語法規則為現有的語法規則,規則中的具體內容包括字段的數量,每個字段的取值情況等。因此,當得到一個待解析定時表達式時,通過Cron語法規則判斷該表達式是否為合法表達式,只有在這個表達式是合法的前提下,才需要進行后續步驟。S11:依據Cron語法規則解析待解析定時表達式中的各字段的含義和數值。根據各字段在字符串中的位置可以確定各字段的含義,例如一個字段在字符串中的位置是第一位,則該字段的含義就是秒。通過在字符串中的位置確定了每個字段的含義和信息。例如第一字段是12,則表示12秒。S12:依據輸出語言請求調用與輸出語言請求對應的語言配置文件,將各字段的含義與語言配置文件進行匹配以得到匹配結果。由于不同的場合需要不同的輸出語言,例如可以采用中文輸出或英文輸出等。每種語言均需要預先存儲對應的語言配置文件,當需要調用時將解析出的字段的含義與語言配置文件進行匹配。例如,第一個字段為0/5,則表示是每隔5秒,則在語言配置文件中找到上述文字匹配就是“每隔秒”,即“隔”和“秒”之間是有占位符的,需要添加該字段的數值,即5。S13:將各字段的數值填充至匹配結果的占位符中以得到解析結果。由于語言配置文件中只是對應的語言文字,即上述例子中的數值5是需要在匹配結果中添加的,需要將對應字段的數值添加至占位符中,才得到一個完整的解析結果。本實施例提供的基于SpirngQuartz的定時表達式的解析方法,在待解析定時表達式合法的基礎上,依據Cron語法規則解析待解析定時表達式中的各字段的含義和數值,然后依據輸出語言請求調用與輸出語言請求對應的語言配置文件,將各字段的含義與語言配置文件進行匹配以得到匹配結果,最后將各字段的數值填充至匹配結果的占位符中以得到解析結果。由此可見,本解析方法能夠將一個Cron表達式解析為一個自然語言,方便用戶獲取定時表達式的真正含義。圖2為本發明實施例提供的另一種基于SpirngQuartz的定時表達式的解析方法的流程圖。如圖2所示,作為優選地實施方式,步驟S10具體包括:S100:判斷待解析定時表達式的字段數量是否完整。如果是,則進入步驟S101,否則進入步驟S102。S101:判斷各字段的含義和數值是否全部滿足允許信息的要求。如果是,則進入步驟S11,否則進入步驟S102。S102:確定待解析定時表達式不合法。S103:確定待解析定時表達式合法。其中,允許信息包括允許值和允許字符。在具體實施中,每個字段中的信息包含了含義和數值,含義可以通過允許字符來確定。對于一個完整的定時表達式而言,其字符串包含的字段是確定的,在具體實施中,可以為7個或6個,本實施例不再贅述。如果字段數量完整,則進一步判斷各字段的含義和數值是否是允許信息中的內容。具體參見表1,本實施例不再贅述。如果各字段的含義和數值全部滿足允許信息要求,則表明該定時表達式是合法的,否則只要有一個字段的含義或數值不滿足允許信息要求,則該定時表達式是不合法的。如圖2所示,作為優選地實施方式,如果待解析定時表達式不合法,則還包括:S20:輸出表達式不合法提示信息。通過輸出表達式不合法提示信息可以及時提示用戶,避免較長時間的等待,提高解析的效率。作為優選地實施方式,依據Cron語法規則解析待解析定時表達式中的各字段的含義和數值具體為:依據Cron語法規則從前至后依次解析待解析定時表達式中的各字段的含義和數值。可以理解的是,在具體實施中,按照一定順序可以避免發生錯誤,提高解析的準確性。從前至后就是按照秒、分、時、天、月、周、年的順序。需要說明的是,解析的順序并不影響解析結果。作為優選地實施方式,依據Cron語法規則解析待解析定時表達式中的各字段的含義和數值具體為:依據Cron語法規則從后至前依次解析待解析定時表達式中的各字段的含義和數值。可以理解的是,在具體實施中,按照一定順序可以避免發生錯誤,提高解析的準確性。從后至前就是按照年、周、月、天、時、分、秒的順序。需要說明的是,解析的順序并不影響解析結果。圖3為本發明實施例提供的另一種基于SpirngQuartz的定時表達式的解析方法的流程圖。如圖3所示,基于SpirngQuartz的定時表達式的解析方法包括如下步驟:S30:通過預設置的定時任務界面接收輸入的各字段的含義和數值以作為待確定定時表達式。在具體實施中,用戶通過定時任務界面輸入各字段的含義和數值,可以理解的是,用戶輸入各字段的含義和數值并沒有嚴格的先后順序,可以按照字符串的順序依次進行,也可以隨機輸入。可以理解地是,本步驟中的待確定定時表達式只是包含了各字段的含義和數值,并不是一個真正的定時表達式。可以理解的是,定時任務界面應包含各字段選項,該選項包括含義的選項以及對應的允許值選項或添加項。本實施例不再贅述。S31:依據Cron語法規則判斷待確定定時表達式是否合法。如果是,進步步驟S32。通過用戶輸入的各字段的含義和數值,利用Cron語法規則判斷各字段的含義和數值是否合法,只有每個字段的含義和數值合法,才有必要按照Cron語法規則生成目標定時表達式。S32:將待確定定時表達式中的各字段的含義和數值按照Cron語法規則進行排序以作為SpirngQuartz能夠識別的目標定時表達式。步驟S31中,通過Cron語法規則判斷出如果待確定表達式是合法,即各字段的含義和數值是符合Cron語法規則的,那么按照Cron語法規則的排序生成字符串,即目標定時表達式。本實施例提供的基于SpirngQuartz的定時表達式的解析方法,通過預設置的定時任務界面接收輸入的各字段的含義和數值以作為待確定定時表達式,然后依據Cron語法規則判斷待確定定時表達式是否合法。如果是,則將待確定定時表達式中的各字段的含義和數值按照Cron語法規則進行排序以作為SpirngQuartz能夠識別的目標定時表達式。由此可見,本解析方法能夠將自然語言有效的解析為Cron表達式,使得用戶可以根據自己的需求靈活設置,而不依賴所學專業的限制。圖4為本發明實施例提供的另一種基于SpirngQuartz的定時表達式的解析方法的流程圖。如圖4所示,作為優選地實施方式,步驟S31具體包括:S310:判斷待確定定時表達式的字段數量是否完整。如果是,進入步驟S311,否則進入步驟S312。S311:判斷各字段的含義和數值是否全部滿足允許信息的要求。如果是,則進入步驟S313,否則進入步驟S312。S312:確定待確定定時表達式不合法。S313:確定待解析定時表達式合法。其中,允許信息包括允許值和允許字符。在具體實施中,每個字段中的信息包含了含義和數值,含義可以通過允許字符來確定。對于一個完整的定時表達式而言,其字符串包含的字段是確定的,在具體實施中,可以為7個或6個,本實施例不再贅述。如果字段數量完整,則進一步判斷各字段的含義和數值是否是允許信息中的內容。具體參見表1,本實施例不再贅述。如果各字段的含義和數值全部滿足允許信息要求,則表明該定時表達式是合法的,否則只要有一個字段的含義或數值不滿足允許信息要求,則該定時表達式是不合法的。如圖4所示,作為優選地實施方式,還包括:S40:輸出目標定時表達式。為了能夠讓用戶及時知悉設置的內容,本實施例中將目標定時表達式輸出,方便用戶閱讀和存儲。如圖4所示,作為優選地實施方式,如果待確定定時表達式不合法,則還包括:S50:輸出表達式不合法提示信息。通過輸出表達式不合法提示信息可以及時提示用戶,避免較長時間的等待,提高解析的效率。可以理解的是,在上述實施例的基礎上,步驟S13之后還可以根據解析結果計算出最新的定時執行時間以及定時的運行次數,以方便用戶閱讀和理解。同樣的,步驟S32之后還可以根據目標定時表達式計算出最新的定時執行時間以及定時的運行次數,以方便用戶閱讀和理解。另外,上述解析方法可以采用Java語言進行編寫,最終以jar包的方式提供,本實施例不再贅述。以上對本發明所提供的基于SpirngQuartz的定時表達式的解析方法進行了詳細介紹。說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。應當指出,對于本
技術領域:
的普通技術人員來說,在不脫離本發明原理的前提下,還可以對本發明進行若干改進和修飾,這些改進和修飾也落入本發明權利要求的保護范圍內。專業人員還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結合來實現,為了清楚地說明硬件和軟件的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執行,取決于技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的范圍。結合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執行的軟件模塊,或者二者的結合來實施。軟件模塊可以置于隨機存儲器(RAM)、內存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或
技術領域:
內所公知的任意其它形式的存儲介質中。當前第1頁1 2 3