一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

定时任务管理方法、装置、设备及存储介质与流程

2021-12-04 01:16:00 来源:中国专利 TAG:


1.本发明涉及数据处理领域,尤其涉及一种定时任务管理方法、装置、设备及存储介质。


背景技术:

2.在项目的开发以及上线阶段。随着功能的不断开发、改进。总会伴随着某些功能的实现,需要获取来源数据的支持,而这些来源数据又并非一成不变时。在项目运行过程中总需要适量的计算资源去适配一些定时任务去完成获取或者更新这些数据,实现数据的同步,以达到维持系统稳定性的目的。现有技术中,在项目开发阶段,一般是通过人工写入一段定时任务操作。在项目系统启动时,这批定时任务随着系统启动而启动,随着系统停止运行,才会停止运行。这就导致在系统启动运行后,定时任务也启动运行后,任务执行的时间间隔,便不可修改且定时任务也没有中断方法,即在系统运行过程中,无论怎样定时任务均会一直按照固定的时间间隔不断循环执行任务,直至系统停止运行,致使在无需再次执行定时任务的情景下造成一定的资源浪费,同时工作人员无法获取定时任务执行详情,即无法直观获取这类定时任务执行过程中具体相关记录信息,如:任务执行成功与否,失败日志,执行入参数据等信息。


技术实现要素:

3.本发明的主要目的在于解决现有的定时任务无法获取定时任务执行详情的技术问题。
4.本发明第一方面提供了一种定时任务管理方法,包括:获取任务生成请求,其中,所述任务生成请求包括任务执行内容和时间间隔表达式;为所述任务生成请求分配唯一标识,并根据所述任务执行内容和所述时间间隔表达式,生成任务管理记录数据,并将所述任务管理记录数据存储至预设的数据库表中;将所述任务执行内容、所述时间间隔表达式和所述唯一标识发送至基于quartz框架的任务调度器;通过所述任务调度器解析所述时间间隔表达式,得到任务起始时间和时间间隔数据;当到达所述任务起始时间时,通过所述任务调度器分配对应的计算机资源根据所述时间间隔数据执行所述任务执行内容,得到任务执行结果;根据所述唯一标识,将所述任务执行结果写入所述数据库表中对应的任务管理记录数据中。
5.可选的,在本发明第一方面的第一种实现方式中,在所述获取任务生成请求之前,还包括:设置用于存储定时任务的数据库表并封装所述数据库表的数据更新方法;集成quartz框架,并为所述数据库表设置调用接口;集成交互界面,并通过所述调用接口调用数据库表中的数据至所述交互界面,对所述交互界面进行配置,以便获取所述任务生成请求。
6.可选的,在本发明第一方面的第二种实现方式中,在所述获取用户发送的任务生成请求之前,还包括:获取用户通过所述交互界面输入的任务计划信息,其中,所述任务计划信息包括预设时间信息、任务执行内容和应用程序编程接口地址;根据所述预设时间信
息,生成对应的时间间隔表达式;根据所述预设时间信息、任务执行内容和应用程序编程接口地址,生成任务生成请求。
7.可选的,在本发明第一方面的第三种实现方式中,在所述获取用户发送的任务生成请求之后,还包括:获取预设的时间间隔表达式语法规则;根据所述时间间隔表达式语法规则判断所述时间间隔表达式的字段数量是否完整;若所述字段数量完整,则判断各所述字段的含义和数值是否满足预设的允许范围;若满足预设的允许范围,则所述时间间隔表达式合法;若所述字段数量不完整或不满足预设的允许范围,则所述时间间隔表达式不合法,生成对应的预警信息,并将所述预警信息发送至所述交互界面。
8.可选的,在本发明第一方面的第四种实现方式中,所述当到达所述任务起始时间时,通过所述任务调度器分配对应的计算机资源根据所述时间间隔数据执行所述任务执行内容,得到任务执行结果包括:当到达所述任务起始时间时,通过所述任务调取器调用所述数据库表,其中,所述数据库表中保存了n个定时任务的任务管理记录数据;根据n个定时任务的任务管理记录数据,从n个定时任务中筛选m个执行时间在当前时间或当前时间之后的定时任务作为待处理任务;根据所述待处理的任务数量进行计算机资源分配,得到所述任务生成请求对应的计算机资源;通过所述任务生成请求对应的计算机资源调用所述应用程序编程接口地址对应的应用程序,并通过所述应用程序根据所述时间间隔数据执行所述任务执行内容,得到任务执行结果。
9.可选的,在本发明第一方面的第五种实现方式中,所述通过所述任务生成请求对应的计算机资源调用所述应用程序编程接口地址对应的应用程序,并通过所述应用程序根据所述时间间隔数据执行所述任务执行内容,得到任务执行结果包括:根据所述任务执行内容,确定所述任务生成请求对应的任务类型;获取所述任务类型对应的共有任务;将所述共有任务和所述任务执行内容抽象为xml字符串;解析所述xml字符串,生成对应的执行任务,并通过所述任务生成请求对应的计算机资源调用所述应用程序编程接口地址对应的应用程序,并通过所述应用程序根据所述时间间隔数据执行所述执行任务,得到任务执行结果。
10.可选的,在本发明第一方面的第六种实现方式中,在所述根据所述唯一标识,将所述任务执行结果写入所述数据库表中对应的任务管理记录数据中之后,还包括:获取用户输入的管理指令,其中所述管理指令包括暂停指令或查询指令;若所述管理指令为暂停指令,则暂停所述暂停指令对应的定时任务;若所述管理指令为查询指令,则获取所述数据库表,并分页展示所述数据库表中的任务管理记录数据。
11.本发明第二方面提供了一种定时任务管理装置,包括:获取模块,用于获取任务生成请求,其中,所述任务生成请求包括任务执行内容和时间间隔表达式;存储模块,用于为所述任务生成请求分配唯一标识,并根据所述任务执行内容和所述时间间隔表达式,生成任务管理记录数据,并将所述任务管理记录数据存储至预设的数据库表中;发送模块,用于将所述任务执行内容、所述时间间隔表达式和所述唯一标识发送至基于quartz框架的任务调度器;解析模块,用于通过所述任务调度器解析所述时间间隔表达式,得到任务起始时间和时间间隔数据;执行模块,用于当到达所述任务起始时间时,通过所述任务调度器分配对应的计算机资源根据所述时间间隔数据执行所述任务执行内容,得到任务执行结果;写入模块,用于根据所述唯一标识,将所述任务执行结果写入所述数据库表中对应的任务管理
记录数据中。
12.可选的,在本发明第二方面的第一种实现方式中,所述定时任务管理装置还包括配置模块,所述配置模块具体用于:设置用于存储定时任务的数据库表并封装所述数据库表的数据更新方法;集成quartz框架,并为所述数据库表设置调用接口;集成交互界面,并通过所述调用接口调用数据库表中的数据至所述交互界面,对所述交互界面进行配置,以便获取所述任务生成请求。
13.可选的,在本发明第二方面的第二种实现方式中,所述定时任务管理装置还包括请求生成模块,所述请求生成模块具体用于:获取用户通过所述交互界面输入的任务计划信息,其中,所述任务计划信息包括预设时间信息、任务执行内容和应用程序编程接口地址;根据所述预设时间信息,生成对应的时间间隔表达式;根据所述预设时间信息、任务执行内容和应用程序编程接口地址,生成任务生成请求。
14.可选的,在本发明第二方面的第三种实现方式中,所述定时任务管理装置还包括合法检验模块,所述合法检验模块具体用于:获取预设的时间间隔表达式语法规则;根据所述时间间隔表达式语法规则判断所述时间间隔表达式的字段数量是否完整;若所述字段数量完整,则判断各所述字段的含义和数值是否满足预设的允许范围;若满足预设的允许范围,则所述时间间隔表达式合法;若所述字段数量不完整或不满足预设的允许范围,则所述时间间隔表达式不合法,生成对应的预警信息,并将所述预警信息发送至所述交互界面。
15.可选的,在本发明第二方面的第四种实现方式中,所述执行模块具体包括:调用单元,用于当到达所述任务起始时间时,通过所述任务调取器调用所述数据库表,其中,所述数据库表中保存了n个定时任务的任务管理记录数据;筛选单元,用于根据n个定时任务的任务管理记录数据,从n个定时任务中筛选m个执行时间在当前时间或当前时间之后的定时任务作为待处理任务;资源分配单元,用于根据所述待处理的任务数量进行计算机资源分配,得到所述任务生成请求对应的计算机资源;程序执行单元,用于通过所述任务生成请求对应的计算机资源调用所述应用程序编程接口地址对应的应用程序,并通过所述应用程序根据所述时间间隔数据执行所述任务执行内容,得到任务执行结果。
16.可选的,在本发明第二方面的第五种实现方式中,所述程序执行单元具体用于:根据所述任务执行内容,确定所述任务生成请求对应的任务类型;获取所述任务类型对应的共有任务;将所述共有任务和所述任务执行内容抽象为xml字符串;解析所述xml字符串,生成对应的执行任务,并通过所述任务生成请求对应的计算机资源调用所述应用程序编程接口地址对应的应用程序,并通过所述应用程序根据所述时间间隔数据执行所述执行任务,得到任务执行结果。
17.可选的,在本发明第二方面的第六种实现方式中,所述定时任务管理装置还包括指令模块,所述指令模块具体用于:获取用户输入的管理指令,其中所述管理指令包括暂停指令或查询指令;若所述管理指令为暂停指令,则暂停所述暂停指令对应的定时任务;若所述管理指令为查询指令,则获取所述数据库表,并分页展示所述数据库表中的任务管理记录数据。
18.本发明第三方面提供了一种定时任务管理设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述定时任务管理设备执行上述的定时任
务管理方法的步骤。
19.本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的定时任务管理方法的步骤。
20.本发明的技术方案中,通过获取任务生成请求,其中,所述任务生成请求包括任务执行内容和时间间隔表达式;为所述任务生成请求分配唯一标识,并根据所述任务执行内容和所述时间间隔表达式,生成任务管理记录数据,并将所述任务管理记录数据存储至预设的数据库表中;将所述任务执行内容、所述时间间隔表达式和所述唯一标识发送至基于quartz框架的任务调度器;通过所述任务调度器解析所述时间间隔表达式,得到任务起始时间和时间间隔数据;当到达所述任务起始时间时,通过所述任务调度器分配对应的计算机资源根据所述时间间隔数据执行所述任务执行内容,得到任务执行结果;根据所述唯一标识,将所述任务执行结果写入所述数据库表中对应的任务管理记录数据中。本方法通过对定时任务进行动态管理,并记录任务管理记录数据,以便于用户清晰的查看定时任务执行状态等信息。
附图说明
21.图1为本发明实施例中定时任务管理方法的第一个实施例示意图;
22.图2为本发明实施例中定时任务管理方法的第二个实施例示意图;
23.图3为本发明实施例中定时任务管理方法的第三个实施例示意图;
24.图4为本发明实施例中定时任务管理方法的第四个实施例示意图;
25.图5为本发明实施例中定时任务管理方法的第五个实施例示意图;
26.图6为本发明实施例中定时任务管理装置的一个实施例示意图;
27.图7为本发明实施例中定时任务管理装置的另一个实施例示意图;
28.图8为本发明实施例中定时任务管理设备的一个实施例示意图。
具体实施方式
29.本发明的技术方案中,通过获取任务生成请求,其中,所述任务生成请求包括任务执行内容和时间间隔表达式;为所述任务生成请求分配唯一标识,并根据所述任务执行内容和所述时间间隔表达式,生成任务管理记录数据,并将所述任务管理记录数据存储至预设的数据库表中;将所述任务执行内容、所述时间间隔表达式和所述唯一标识发送至基于quartz框架的任务调度器;通过所述任务调度器解析所述时间间隔表达式,得到任务起始时间和时间间隔数据;当到达所述任务起始时间时,通过所述任务调度器分配对应的计算机资源根据所述时间间隔数据执行所述任务执行内容,得到任务执行结果;根据所述唯一标识,将所述任务执行结果写入所述数据库表中对应的任务管理记录数据中。本方法通过对定时任务进行动态管理,并记录任务管理记录数据,以便于用户清晰的查看定时任务执行状态等信息。
30.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不
排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
31.为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中定时任务管理方法的第一个实施例包括:
32.101、获取任务生成请求,其中,任务生成请求包括任务执行内容和时间间隔表达式;
33.可以理解的是,本发明的执行主体可以为定时任务管理装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。本发明实施例以服务器为执行主体为例进行说明。服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
34.在本实施例中,事先集成用户交互界面,用户通过终端显示屏显示交互界面,并通过操作该调度任务配置界面输入任务配置信息,用来保存任务基本信息,包括,任务名称,用于用户分辨定时任务、任务描述,用于描述任务功能,任务实现java类,用于启动实际功能代码进行定时任务的启动和执行,任务时间信息,包括定时任务的起始时间和时间间隔,用于生成时间间隔表达式,任务配置信息还可以包括下次执行时间、运行时间、上次执行时间、创建者、更新时间以及修改者等,调度设置方式包括调度类型和周期类型,调度类型为任务执行次数,包括周期性执行、依次性执行以及自定义执行;周期类型为任务执行周期,包括年、月、周、日、时、分,将除需要构成时间间隔表达式的信息外的配置信息作为任务执行内容。
35.102、为任务生成请求分配唯一标识,并根据任务执行内容和时间间隔表达式,生成任务管理记录数据,并将任务管理记录数据存储至预设的数据库表中;
36.在本实施例中,为任务生成请求分配唯一标识,所述唯一标识用于标识定时任务,以及对应的任务管理数据,在任务执行过程中产生的数据,均可通过唯一标识保存至对应的任务管理记录数据中,便于用户后续查看。
37.在本实施例中,预先设置用于存储定时任务的数据库表task_schedule,并且,对此时数据库表中是否设置有定时任务不做限定,该数据库表能够实现存储定时任务的相关信息,将任务执行内容和时间间隔表达式中需要进行记录的信息作为任务管理记录数据,保存在数据库表中,便于后续调用查看。
38.103、将任务执行内容、时间间隔表达式和唯一标识发送至基于quartz框架的任务调度器;
39.在本实施例中,quartz是对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述,包括:job:是一个接口,只有一个方法voidexecute(jobexecutioncontextcontext),开发者实现该接口定义运行任务,jobexecutioncontext类提供了调度上下文的各种信息。job运行时的信息保存在jobdatamap实例中;jobdetail:quartz在每次执行job时,都重新创建一个job实例,所以它不直接接受一个job的实例,相
反它接收一个job实现类,以便运行时通过newinstance()的反射机制实例化job。因此需要通过一个类来描述job的实现类及其它相关的静态信息,如job名字、描述、关联监听器等信息,jobdetail承担了这一角色通过该类的构造函数可以更具体地了解它的功用:jobdetail(java.lang.stringname,java.lang.stringgroup,java.lang.classjobclass),该构造函数要求指定job的实现类,以及任务在scheduler中的组名和job名称,trigger:是一个类,描述触发job执行的时间触发规则。主要有simpletrigger和crontrigger这两个子类。当仅需触发一次或者以固定时间间隔周期执行,simpletrigger是最适合的选择;而crontrigger则可以通过cron表达式定义出各种复杂时间规则的调度方案:如每早晨9:00执行,周一、周三、周五下午5:00执行等,calendar:org.quartz.calendar和java.util.calendar不同,它是一些日历特定时间点的集合(可以简单地将org.quartz.calendar看作java.util.calendar的集合——java.util.calendar代表一个日历时间点,无特殊说明后面的calendar即指org.quartz.calendar)。一个trigger可以和多个calendar关联,以便排除或包含某些时间点。假设,我们安排每周星期一早上10:00执行任务,但是如果碰到法定的节日,任务则不执行,这时就需要在trigger触发机制的基础上使用calendar进行定点排除。针对不同时间段类型,quartz在org.quartz.impl.calendar包下提供了若干个calendar的实现类,如annualcalendar、monthlycalendar、weeklycalendar分别针对每年、每月和每周进行定义;scheduler:代表一个quartz的独立运行容器,trigger和jobdetail可以注册到scheduler中,两者在scheduler中拥有各自的组及名称,组及名称是scheduler查找定位容器中某一对象的依据,trigger的组及名称必须唯一,jobdetail的组和名称也必须唯一(但可以和trigger的组和名称相同,因为它们是不同类型的)。scheduler定义了多个接口方法,允许外部通过组及名称访问和控制容器中trigger和jobdetail。scheduler可以将trigger绑定到某一jobdetail中,这样当trigger触发时,对应的job就被执行。一个job可以对应多个trigger,但一个trigger只能对应一个job。可以通过schedulerfactory创建一个scheduler实例。scheduler拥有一个schedulercontext,它类似于servletcontext,保存着scheduler上下文信息,job和trigger都可以访问schedulercontext内的信息。schedulercontext内部通过一个map,以键值对的方式维护这些上下文数据,schedulercontext为保存和获取数据提供了多个put()和getxxx()的方法。可以通过scheduler#getcontext()获取对应的schedulercontext实例;threadpool:scheduler使用一个线程池作为任务运行的基础设施,任务通过共享线程池中的线程提高运行效率。job有一个statefuljob子接口,代表有状态的任务,该接口是一个没有方法的标签接口,其目的是让quartz知道任务的类型,以便采用不同的执行方案。无状态任务在执行时拥有自己的jobdatamap拷贝,对jobdatamap的更改不会影响下次的执行。而有状态任务共享同一个jobdatamap实例,每次任务执行对jobdatamap所做的更改会保存下来,后面的执行可以看到这个更改,也即每次执行任务后都会对后面的执行发生影响。通过将任务执行内容、时间间隔表达式和唯一标识发送至基于quartz框架的任务调度器中,任务调度器中通过上述接口和功能模块进行定时任务管理调度。
40.104、将通过任务调度器解析时间间隔表达式,得到任务起始时间和时间间隔数据;
41.在本实施例中,。cron表达式可用于作为确定各原始计划任务执行时间的依据。cron表达式是一个以5或6个空格隔开,分为6或7个字段的字符串。cron表达式的结构为:秒分小时日期月份星期年份。其中,年份字段可空。cron表达式中各字段的含义参见表1。
42.字段允许的值允许的特殊字符秒0

59,

*/分0

59,

*/小时0

23,

*/日期1

31,

*?/l w c月份1

12或jan

dec,

*/星期1

7或sun

sat,

*?/l c#年份1970

2099或空,

*/
43.表1
44.下面针对表1中特殊字符进行说明。“,”可表示列表值。如星期字段为“mon,wed,fri”,其表示星期一、星期三和星期五均触发一次;
“‑”
可表示一个范围,如小时字段为“10

12”,其表示10时、11时和12时均触发一次;“*”可用来匹配字段的任意值。如在分钟字段中采用“*”,即表示每分钟触发一次;“/”可表示一个等步长序列,具体可用x/y表示,其中,x为起始值,y为增量步长值。如在分钟字段中采用“5/15”,其表示5分钟、20分钟、35分钟和50分钟。需要说明的是,“*”在“/”前面(如*/10)可等同于0在“/”前面(如0/10);“?”只在日期字段和星期字段中采用,其通常指定为无意义的值,相当于点位符;“#”可表示设定每个月第几个星期几,其只在星期字段中采用,如星期字段“4#2”表示某月的第二个星期三;“l”可表示“last”,其只在日期字段和星期字段中采用,但在这两个字段中的含义不同。“l”在日期字段中表示这个月份的最后一天,如一月的31日。“l”在星期字段中表示星期六,等同于7。此外,但是,如果“l”出现在星期字段,且,其前面有数值x,即xl,则表示这个月的最后某一天。“6l”表示这个月的最后一个星期五触发一次;“w”可表示有效工作日,所谓有效工作日可理解为距设定日期最近的工作日,其只在日期字段中采用,如在日期字段中采用“5w”。如果5日是星期六,则将在最近的工作日,即4日(即星期五)触发一次。如果5日是星期日,则将在6日(即周一)触发一次;“c”可表示计划所关联的日期,其只在日期字段和星期字段中采用,其依据一个设定的“日历”,也就是说这个表达式的值依赖于相关的“日历”的计算结果。如果没有“日历”关联,则等同于所有包含的“日历”。如日期字段“5c”表示关联“日历”中的第一天,或者某月开始的第一天的后5天。星期字段“1c”表示关联“日历”中的第一天,或者星期的第一天的后1天,即周日的后一天(即周一);“lw”可表示某月的最后一个工作日,其只在星期字段中采用。示例性的,如“0 0 2 1*?*”可表示在每月1日的凌晨2点执行计划任务,则任务起始时间为下一月的1日的凌晨2点,时间间隔为一个月。又如“0 15 10?6l 2017

2019”可表示2017

2019年每月的最后一个星期五上午10:15执行计划任务。
45.105、当到达任务起始时间时,通过任务调度器分配对应的计算机资源根据时间间隔数据执行任务执行内容,得到任务执行结果;
46.在本实施例中,调度工厂配置有simpletrigger触发器和crontrigger触发器。如果任务的调度类型为周期性执行,且时间间隔为分钟,通过simpletrigger触发器定时执行所述任务;如果任务的调度类型为周期性执行,且时间间隔为除分钟之外的间隔时间,通过
crontrigger触发器定时执行所述任务;如果任务的调度类型为自定义执行,通过crontrigger触发器定时执行所述任务。如果任务的调度是单次执行,通过crontrigger触发器定时执行,且在执行前判断开始执行时间是否大于当前时间,只有当开始执行时间大于当前时间时,再设置调度。
47.在本实施例中,任务执行内容中还包括应用程序编程接口地址,可控制各线程根据应用程序编程接口地址调用对应的应用程序编程接口以执行各定时任务,即针对每个定时任务,任务调度器可控制与该定时任务对应的线程,根据该定时任务的应用程序编程接口调用对应的应用程序编程接口,以执行该定时任务。每个线程可通过上述方式执行对应的定时任务。需要说明的是,通过任务调度器控制各线程执行定时任务,采用多线程的方法,使得各线程相互独立运行,互不影响,即通过控制多线程可实现各定时任务并行执行。
48.106、根据唯一标识,将任务执行结果写入数据库表中对应的任务管理记录数据中。
49.在本实施例中,所述任务执行结果包括执行成功和执行失败,当任务执行结果为执行失败时,显示执行结果为执行失败的任务以及执行失败的原因,以提醒相关处理人员处理,能够让用户了解到存在执行失败的任务,及时对执行失败的任务进行修正,从而尽可能缩小影响,具体的,可以定时扫描数据库表中的任务管理记录数据,从任务管理记录数据中筛选出执行结果为执行失败的定时任务,并从任务管理记录数据中提取这些执行失败的任务的唯一标识,以及,执行失败的原因;然后,根据提取的标识获取对应的处理人员的通讯地址,基于该通信地址,将执行失败的唯一标识和执行失败的原因发送给相关处理人员,以使得相关处理人员对该执行失败的任务及时修正。另外,补充说明的是,在对执行失败的任务进行修正后,还需要将数据库表中这些任务的执行状态修改为执行成功,这样以来,避免后续再次调用该任务时,由于前一次执行状态为执行失败,而导致为了保证对这些执行失败的任务进行修正后,在后续调用这些任务时,不能正常执行。
50.在本实施例中,通过获取任务生成请求,其中,所述任务生成请求包括任务执行内容和时间间隔表达式;为所述任务生成请求分配唯一标识,并根据所述任务执行内容和所述时间间隔表达式,生成任务管理记录数据,并将所述任务管理记录数据存储至预设的数据库表中;将所述任务执行内容、所述时间间隔表达式和所述唯一标识发送至基于quartz框架的任务调度器;通过所述任务调度器解析所述时间间隔表达式,得到任务起始时间和时间间隔数据;当到达所述任务起始时间时,通过所述任务调度器分配对应的计算机资源根据所述时间间隔数据执行所述任务执行内容,得到任务执行结果;根据所述唯一标识,将所述任务执行结果写入所述数据库表中对应的任务管理记录数据中。本方法通过对定时任务进行动态管理,并记录任务管理记录数据,以便于用户清晰的查看定时任务执行状态等信息。
51.请参阅图2,本发明实施例中定时任务管理方法的第二个实施例包括:
52.201、设置用于存储定时任务的数据库表并封装数据库表的数据更新方法;
53.202、集成quartz框架,并为数据库表设置调用接口;
54.203、集成交互界面,并通过调用接口调用数据库表中的数据至交互界面,对交互界面进行配置,以便获取任务生成请求;
55.204、获取用户通过交互界面输入的任务计划信息,其中,任务计划信息包括预设
时间信息、任务执行内容和应用程序编程接口地址;
56.在预先设置用于存储定时任务的数据库表并封装对数据库表的更新方法,生成定时任务管理组件的过程中,在设置数据库表、封装对数据库表的更新方法以及集成quartz框架,并为数据库表和处理队列设置调用接口之后,利用thymeleaf和bootstrap集成交互界面,并打包得到定时任务管理组件;其中,thymeleaf组件用于从数据库表中调用数据至前端页面,bootstrap组件用于设置前端交互界面,以便于能够在用户界面直接进行定时任务的管理操作,使得定时任务管理的方法更加便捷。进一步的,交互界面和定时任务执行都在一个运行项目中,因此利用一个服务器便可实现二者的管理,节约服务器资源。需要说明的是,交互界面上进行添加、修改、停止定时任务时,分别调用scheduler的reschedulejob、deletejob方法,其中,reschedulejob对应于添加和修改定时任务。
57.205、根据预设时间信息,生成对应的时间间隔表达式;
58.206、根据预设时间信息、任务执行内容和应用程序编程接口地址,生成任务生成请求;
59.207、为任务生成请求分配唯一标识,并根据任务执行内容和时间间隔表达式,生成任务管理记录数据,并将任务管理记录数据存储至预设的数据库表中;
60.208、将任务执行内容、时间间隔表达式和唯一标识发送至基于quartz框架的任务调度器;
61.209、通过任务调度器解析时间间隔表达式,得到任务起始时间和时间间隔数据;
62.210、当到达任务起始时间时,通过任务调度器分配对应的计算机资源根据时间间隔数据执行任务执行内容,得到任务执行结果;
63.211、根据唯一标识,将任务执行结果写入数据库表中对应的任务管理记录数据中。
64.本实施例在上一实施例的基础上,增加了交互页面配置过程的过程,通过设置用于存储定时任务的数据库表并封装所述数据库表的数据更新方法;集成quartz框架,并为所述数据库表设置调用接口;集成交互界面,并对所述交互界面进行配置。本实施例进行数据更新方法,调用接口和交互界面的配置,以便获取任务生成请求。
65.请参阅图3,本发明实施例中定时任务管理方法的第三个实施例包括:
66.301、获取任务生成请求,其中,任务生成请求包括任务执行内容和时间间隔表达式;
67.302、获取预设的时间间隔表达式语法规则;
68.303、根据时间间隔表达式语法规则判断时间间隔表达式的字段数量是否完整;
69.304、若字段数量完整,则判断各字段的含义和数值是否满足预设的允许范围;
70.305、若满足预设的允许范围,则时间间隔表达式合法;
71.306、若字段数量不完整或不满足预设的允许范围,则时间间隔表达式不合法,生成对应的预警信息,并将预警信息发送至交互界面;
72.在本实施例中,时间间隔表达式用字符串表示,字符串包含了多个字段,可以是6个字段或是7个字段,每个字段之间使用空格间隔。时间间隔表达式语法规则是现有的语法规则,规则中包括字段的数量和不同字段的取值范围等,在获取时间间隔表达式后,通过判断时间间隔表达式的字段是否为7个或6个,若不是,则说明输入的时间间隔表达式不正确,
需要重新进行设定,当时间间隔表达式的字段数量为是7个或者6个时,则通过表1中各字段允许的值确定是否有字段的数字或含义不在允许的范围,若是,则说明输入的时间间隔表达式不正确,需要重新进行设定。
73.307、当时间间隔表达式合法时,为任务生成请求分配唯一标识,并根据任务执行内容和时间间隔表达式,生成任务管理记录数据,并将任务管理记录数据存储至预设的数据库表中;
74.308、将任务执行内容、时间间隔表达式和唯一标识发送至基于quartz框架的任务调度器;
75.309、通过任务调度器解析时间间隔表达式,得到任务起始时间和时间间隔数据;
76.310、当到达任务起始时间时,通过任务调度器分配对应的计算机资源根据时间间隔数据执行任务执行内容,得到任务执行结果;
77.311、根据唯一标识,将任务执行结果写入数据库表中对应的任务管理记录数据中。
78.本实施例在前实施例的基础上,增加了对时间间隔表达式进行合法性检验的过程,通过获取预设的时间间隔表达式语法规则;根据所述时间间隔表达式语法规则判断所述时间间隔表达式的字段数量是否完整;若所述字段数量完整,则判断各所述字段的含义和数值是否满足预设的允许范围;若满足预设的允许范围,则所述时间间隔表达式合法;若所述字段数量不完整或不满足预设的允许范围,则所述时间间隔表达式不合法,生成对应的预警信息,并将所述预警信息发送至所述交互界面。本方法通过对时间间隔表达式进行合法性检验,避免用户填写时间间隔表达式错误导致定时任务出错。
79.请参阅图4,本发明实施例中定时任务管理方法的第四个实施例包括:
80.401、获取任务生成请求,其中,任务生成请求包括任务执行内容和时间间隔表达式;
81.402、为任务生成请求分配唯一标识,并根据任务执行内容和时间间隔表达式,生成任务管理记录数据,并将任务管理记录数据存储至预设的数据库表中;
82.403、将任务执行内容、时间间隔表达式和唯一标识发送至基于quartz框架的任务调度器;
83.404、通过任务调度器解析时间间隔表达式,得到任务起始时间和时间间隔数据;
84.405、当到达任务起始时间时,通过任务调取器调用数据库表,其中,数据库表中保存了n个定时任务的任务管理记录数据;
85.406、根据n个定时任务的任务管理记录数据,从n个定时任务中筛选m个执行时间在当前时间或当前时间之后的定时任务作为待处理任务;
86.407、根据待处理的任务数量进行计算机资源分配,得到任务生成请求对应的计算机资源;
87.408、根据任务执行内容,确定任务生成请求对应的任务类型;
88.409、获取任务类型对应的共有任务;
89.410、将共有任务和任务执行内容抽象为xml字符串;
90.411、解析xml字符串,生成对应的执行任务,并通过任务生成请求对应的计算机资源调用应用程序编程接口地址对应的应用程序,并通过应用程序根据时间间隔数据执行执
行任务,得到任务执行结果;
91.在本实施例中,基于动态管理定时任务的实现,在动态生成定时任务时,可实时记录定时任务的相关信息,方便用户查看。同时java的模板方法设计模式的方式并且通过传递定时任务关键信息,让任务类执行模板方法,即先后执行共有方法以及具体的定时任务方法,先执行共有方法实时更新定时任务的执行状态信息,如:定时任务的执行次数、上次执行成功时间,下次执行该定时任务时间、上次执行失败时间、执行失败日志等信息,然后执行具体的定时任务,等待执行完成后实时更新任务的执行结果。
92.412、根据唯一标识,将任务执行结果写入数据库表中对应的任务管理记录数据中。
93.本实施例在前实施例的基础上,详细说明了当到达任务起始时间时,通过任务调度器分配对应的计算机资源根据时间间隔数据执行任务执行内容,得到任务执行结果的过程,当到达任务起始时间时,通过任务调取器调用数据库表,其中,数据库表中保存了n个定时任务的任务管理记录数据;根据n个定时任务的任务管理记录数据,从n个定时任务中筛选m个执行时间在当前时间或当前时间之后的定时任务作为待处理任务;根据待处理的任务数量进行计算机资源分配,得到任务生成请求对应的计算机资源;通过任务生成请求对应的计算机资源调用应用程序编程接口地址对应的应用程序,并通过应用程序根据时间间隔数据执行任务执行内容,得到任务执行结果。本方法通过获取当前正在执行的任务的任务管理记录信息,对当前的定时任务对于的计算机资源进行合理分配。
94.请参阅图5,本发明实施例中定时任务管理方法的第五个实施例包括:
95.501、获取任务生成请求,其中,任务生成请求包括任务执行内容和时间间隔表达式;
96.502、为任务生成请求分配唯一标识,并根据任务执行内容和时间间隔表达式,生成任务管理记录数据,并将任务管理记录数据存储至预设的数据库表中;
97.503、将任务执行内容、时间间隔表达式和唯一标识发送至基于quartz框架的任务调度器;
98.504、通过任务调度器解析时间间隔表达式,得到任务起始时间和时间间隔数据;
99.505、当到达任务起始时间时,通过任务调度器分配对应的计算机资源根据时间间隔数据执行任务执行内容,得到任务执行结果;
100.506、根据唯一标识,将任务执行结果写入数据库表中对应的任务管理记录数据中;
101.507、获取用户输入的管理指令,其中管理指令包括暂停指令或查询指令;
102.在本实施例中,通过在定时任务管理中设置交互界面,以便能够通过交互界面实现对定时任务的在线直接管理,能够进一步提升管理定时任务的便捷度,通过交互界面,获取用户输入的管理指令。
103.508、若管理指令为暂停指令,则暂停暂停指令对应的定时任务;
104.在本实施例中,在接收到暂停指令后,通过调用应用程序编程接口地址对应的应用程序,中止应用程序的进程,实现暂停暂停指令对应的定时任务。
105.509、若管理指令为查询指令,则获取数据库表,并分页展示数据库表中的任务管理记录数据。
106.在本实施例中,管理指令具体为查询指令,在用户通过交互页面输入查询指令后,通过响应于查询指令,从数据库表中检索出与查询指令对应的定时任务,并且在对应的定时任务有多个时,通过分页展示的形式展示查询到的定时任务。具体的,通过设置每一页展示的定时任务的数量以及不同展示页面的切换或者跳转方式,实现对与查询指令对应的定时任务的分页展示,从而更便于用户查看定时任务,提升用户的使用体验。
107.本实施例在前实施例的基础上,增加了通过管理指令对定时任务进行管理的过程,通过获取用户输入的管理指令,其中所述管理指令包括暂停指令或查询指令;若所述管理指令为暂停指令,则暂停所述暂停指令对应的定时任务;若所述管理指令为查询指令,则获取所述数据库表,并分页展示所述数据库表中的任务管理记录数据。通过设定暂停指令调用应用程序编程接口地址进行对应应用程序的暂停,便于用户暂停想要暂停的定时任务,通过实现对与查询指令对应的定时任务的分页展示,从而更便于用户查看定时任务,提升用户的使用体验。
108.上面对本发明实施例中定时任务管理方法进行了描述,下面对本发明实施例中定时任务管理装置进行描述,请参阅图6,本发明实施例中定时任务管理装置一个实施例包括:
109.获取模块601,用于获取任务生成请求,其中,所述任务生成请求包括任务执行内容和时间间隔表达式;
110.存储模块602,用于为所述任务生成请求分配唯一标识,并根据所述任务执行内容和所述时间间隔表达式,生成任务管理记录数据,并将所述任务管理记录数据存储至预设的数据库表中;
111.发送模块603,用于将所述任务执行内容、所述时间间隔表达式和所述唯一标识发送至基于quartz框架的任务调度器;
112.解析模块604,用于通过所述任务调度器解析所述时间间隔表达式,得到任务起始时间和时间间隔数据;
113.执行模块605,用于当到达所述任务起始时间时,通过所述任务调度器分配对应的计算机资源根据所述时间间隔数据执行所述任务执行内容,得到任务执行结果;
114.写入模块606,用于根据所述唯一标识,将所述任务执行结果写入所述数据库表中对应的任务管理记录数据中。
115.本发明实施例中,所述定时任务管理装置运行上述定时任务管理方法,所述定时任务管理装置通过获取任务生成请求,其中,所述任务生成请求包括任务执行内容和时间间隔表达式;为所述任务生成请求分配唯一标识,并根据所述任务执行内容和所述时间间隔表达式,生成任务管理记录数据,并将所述任务管理记录数据存储至预设的数据库表中;将所述任务执行内容、所述时间间隔表达式和所述唯一标识发送至基于quartz框架的任务调度器;通过所述任务调度器解析所述时间间隔表达式,得到任务起始时间和时间间隔数据;当到达所述任务起始时间时,通过所述任务调度器分配对应的计算机资源根据所述时间间隔数据执行所述任务执行内容,得到任务执行结果;根据所述唯一标识,将所述任务执行结果写入所述数据库表中对应的任务管理记录数据中。本方法通过对定时任务进行动态管理,并记录任务管理记录数据,以便于用户清晰的查看定时任务执行状态等信息。
116.请参阅图7,本发明实施例中定时任务管理装置的第二个实施例包括:
117.获取模块601,用于获取任务生成请求,其中,所述任务生成请求包括任务执行内容和时间间隔表达式;
118.存储模块602,用于为所述任务生成请求分配唯一标识,并根据所述任务执行内容和所述时间间隔表达式,生成任务管理记录数据,并将所述任务管理记录数据存储至预设的数据库表中;
119.发送模块603,用于将所述任务执行内容、所述时间间隔表达式和所述唯一标识发送至基于quartz框架的任务调度器;
120.解析模块604,用于通过所述任务调度器解析所述时间间隔表达式,得到任务起始时间和时间间隔数据;
121.执行模块605,用于当到达所述任务起始时间时,通过所述任务调度器分配对应的计算机资源根据所述时间间隔数据执行所述任务执行内容,得到任务执行结果;
122.写入模块606,用于根据所述唯一标识,将所述任务执行结果写入所述数据库表中对应的任务管理记录数据中。
123.在本实施例中,所述定时任务管理装置还包括配置模块607,所述配置模块607具体用于:设置用于存储定时任务的数据库表并封装所述数据库表的数据更新方法;集成quartz框架,并为所述数据库表设置调用接口;集成交互界面,并通过所述调用接口调用数据库表中的数据至所述交互界面,对所述交互界面进行配置,以便获取所述任务生成请求。
124.在本实施例中,所述定时任务管理装置还包括请求生成模块608,所述请求生成模块608具体用于:获取用户通过所述交互界面输入的任务计划信息,其中,所述任务计划信息包括预设时间信息、任务执行内容和应用程序编程接口地址;根据所述预设时间信息,生成对应的时间间隔表达式;根据所述预设时间信息、任务执行内容和应用程序编程接口地址,生成任务生成请求。
125.在本实施例中,所述定时任务管理装置还包括合法检验模块609,所述合法检验模块609具体用于:获取预设的时间间隔表达式语法规则;根据所述时间间隔表达式语法规则判断所述时间间隔表达式的字段数量是否完整;若所述字段数量完整,则判断各所述字段的含义和数值是否满足预设的允许范围;若满足预设的允许范围,则所述时间间隔表达式合法;若所述字段数量不完整或不满足预设的允许范围,则所述时间间隔表达式不合法,生成对应的预警信息,并将所述预警信息发送至所述交互界面。
126.在本实施例中,所述执行模块605具体包括:调用单元6051,用于当到达所述任务起始时间时,通过所述任务调取器调用所述数据库表,其中,所述数据库表中保存了n个定时任务的任务管理记录数据;筛选单元6052,用于根据n个定时任务的任务管理记录数据,从n个定时任务中筛选m个执行时间在当前时间或当前时间之后的定时任务作为待处理任务;资源分配单元6053,用于根据所述待处理的任务数量进行计算机资源分配,得到所述任务生成请求对应的计算机资源;程序执行单元6054,用于通过所述任务生成请求对应的计算机资源调用所述应用程序编程接口地址对应的应用程序,并通过所述应用程序根据所述时间间隔数据执行所述任务执行内容,得到任务执行结果。
127.在本实施例中,所述程序执行单元6054具体用于:根据所述任务执行内容,确定所述任务生成请求对应的任务类型;获取所述任务类型对应的共有任务;将所述共有任务和所述任务执行内容抽象为xml字符串;解析所述xml字符串,生成对应的执行任务,并通过所
述任务生成请求对应的计算机资源调用所述应用程序编程接口地址对应的应用程序,并通过所述应用程序根据所述时间间隔数据执行所述执行任务,得到任务执行结果。
128.在本实施例中,所述定时任务管理装置还包括指令模块610,所述指令模块610具体用于:获取用户输入的管理指令,其中所述管理指令包括暂停指令或查询指令;若所述管理指令为暂停指令,则暂停所述暂停指令对应的定时任务;若所述管理指令为查询指令,则获取所述数据库表,并分页展示所述数据库表中的任务管理记录数据。
129.本实施例在上一实施例的基础上,详细描述了各个模块的具体功能以及部分模块的单元构成,通过新增的模块,通过对定时任务进行动态管理,并记录任务管理记录数据,以便于用户清晰的查看定时任务执行状态等信息。
130.上面图6和图7从模块化功能实体的角度对本发明实施例中的中定时任务管理装置进行详细描述,下面从硬件处理的角度对本发明实施例中定时任务管理设备进行详细描述。
131.图8是本发明实施例提供的一种定时任务管理设备的结构示意图,该定时任务管理设备800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)810(例如,一个或一个以上处理器)和存储器820,一个或一个以上存储应用程序833或数据832的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器820和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对定时任务管理设备800中的一系列指令操作。更进一步地,处理器810可以设置为与存储介质830通信,在定时任务管理设备800上执行存储介质830中的一系列指令操作,以实现上述定时任务管理方法的步骤。
132.定时任务管理设备800还可以包括一个或一个以上电源840,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口860,和/或,一个或一个以上操作系统831,例如windows serve,mac os x,unix,linux,freebsd等等。本领域技术人员可以理解,图8示出的定时任务管理设备结构并不构成对本技术提供的定时任务管理设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
133.本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
134.本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述定时任务管理方法的步骤。
135.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统或装置、单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
136.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上
或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read

only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
137.以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献