一种基于SpirngQuartz的定时表达式的解析方法与流程

文档序号:12119604阅读:212来源:国知局
一种基于Spirng Quartz的定时表达式的解析方法与流程
本发明涉及计算机
技术领域
,特别是涉及一种基于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 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1