一种可编排流程的定时作业执行的方法技术

技术编号:28558295 阅读:54 留言:0更新日期:2021-05-25 17:52
本发明专利技术公开了一种可编排流程的定时作业执行的方法,包括6种任务状态,分别为“失效”、“激活”、“正在执行”、“执行成功”、“执行失败”和“手动触发”,任务状态之间的连接线上的各个方法为新建任务、保存任务、激活任务、冻结任务、手动执行一次、启动Scheduler和调用被重写的executeInternal()方法。通过使调度程序按照预先编排好的作业流程一次性执行多个作业,形成作业流,克服了Quartz自身只能调度单个作业的缺点,同时,可以对编排好的作业流执行定时任务,也可以手动执行一次,对定时任务这一功能进行了扩展。

【技术实现步骤摘要】
一种可编排流程的定时作业执行的方法
本专利技术涉及计算机
,具体来说,涉及一种可编排流程的定时作业的方法。
技术介绍
作业调度程序是一种计算机应用程序,用于控制作业程序在无人值守的后台执行。Quartz是一个功能强大的开源作业调度库,几乎可以集成到任何Java应用程序中,为在Java应用程序中进行作业调度提供了简单却强大的机制。SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Quartz作为Spring默认的调度框架,很容易与Spring集成实现灵活可配置的调度功能。现存的Quartz作业调度方案只能调度单个作业,无法一次性按一定的先后顺序来执行多个作业。当一个作业可以拆分成多个子作业,且子作业之间存在相互依赖的执行顺序时,例如,只有当数据导入完成后,才能对数据进行分析,Quartz便无法满足要求。
技术实现思路
针对相关技术中的上述技术问题,本专利技术提出一种可编排流程的定时作业的方法,能够克服现有技术方法的上述不足。为实现上述技术目的,本专利技术的技术方案是这样实现的:一种可编排流程的定时作业的方法,包括:新建任务,输入定时作业任务的名称、任务描述、所使用的触发器、任务类型、备注后,进行保存;保存任务,Web前端将刚出创建的任务详情通过JSON格式传输给Java后端,Java后端通过SpringBoot框架将JSON转化为相应的实体类对象,为任务创建新的任务键,判断任务包含的节点数是否匹配和任务类型;进行激活任务,通过根据任务键在数据库中查询对应的任务记录并映射到实体类对象中,进行判断任务状态,如果状态为“失效”,则将任务状态修改为“激活”;进行冻结任务,通过根据任务键在数据库中查询对应的任务记录并映射到实体类对象中,进行判断任务状态,如果状态不为“正在运行”且不为“手动触发”时,则将任务状态修改为“失效”;进行手动执行一次,通过根据任务键在数据库中查询对应的任务记录并映射到实体类对象中,进行判断任务状态,如果状态为“失效”时,则将任务状态修改为“手动触发”;进行启动Scheduler,Spring框架中封装的Quartz类为QuartzJobBean,令实际的任务类继承QuartzJobBean,并重写executeInternal()方法,在executeInternal()方法中实现任务的实际逻辑,在Scheduler调度实际任务时,调用JobDetail中被重写过的executeInternal()方法;通过executeInternal()方法内容,判断此JobDetail所对应的任务是否被启动过,没有被启动将JobDetail的运行状态设置为“正在执行”,已被启动过的,则执行失败,执行当前以及后继每个作业点并对任务类型和作业类型进行判断,最后将JobDetail的运行状态设置为“执行成功”,则执行完成。本专利技术的有益效果:通过使调度程序按照预先编排好的作业流程一次性执行多个作业,形成作业流,克服了Quartz自身只能调度单个作业的缺点,同时,可以对编排好的作业流执行定时任务,也可以手动执行一次,对定时任务这一功能进行了扩展。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本专利技术实施例所述的一种可编排流程的定时作业执行的方法的定时作业任务各种状态之间的转换关系示意图;图2是根据本专利技术实施例所述的一种可编排流程的定时作业执行的方法的定时作业的新建任务模块的流程示意图。图3是根据本专利技术实施例所述的一种可编排流程的定时作业执行的方法的定时作业的保存任务模块的流程示意图。图4是根据本专利技术实施例所述的一种可编排流程的定时作业执行的方法的定时作业的激活任务模块的流程示意图。图5是根据本专利技术实施例所述的一种可编排流程的定时作业执行的方法的定时作业的冻结任务模块的流程示意图。图6是根据本专利技术实施例所述的一种可编排流程的定时作业执行的方法的定时作业的手动执行一次任务模块的流程示意图。图7是根据本专利技术实施例所述的一种可编排流程的定时作业执行的方法的定时作业的executeInternal()方法的流程示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本专利技术保护的范围。根据本专利技术实施例所述的一种可编排流程的定时作业执行方法,包括:如图2所示,新建任务,输入定时作业任务的名称、任务描述、所使用的触发器、任务类型、(任务类型分为单节点任务和多节点任务,如果为单节点任务,则选择要执行的作业类型,然后选择要执行的具体作业;如果为多节点任务,则绘制相应的多节点作业流,多节点作业流包含起始节点、结束节点、以及中间的实际作业节点,每个作业对应作业流中的一个节点。)输入备注后进行保存;如图3所示,保存任务,先Web前端将任务详情通过JSON格式传输给Java后端,然后Java后端通过SpringBoot框架将JSON转化为相应的自定义实体类ScheduleInputObject的对象scheduleInputObject中,为任务创建新的任务键taskKey,判断任务类型与任务包含的节点数是否匹配。若为单节点任务,则节点数应为1;若为多节点任务,则节点数应大于等于3(包含起始节点、结束节点、以及至少1个实际作业节点)。根据任务类型taskType判断是否为多节点任务。“s”为单节点任务,“c”为多节点任务。如果为单节点任务。检查作业节点类型jobType是否合规(是否为实际作业节点)。将作业节点信息jobBaseInfoDTO通过jobBaseInfoDao写入数据库的daxsch_job_node_info数据表中。将任务信息taskBaseInfoDTO通过taskBaseInfoDao写入数据库的daxsch_task_info数据表中并保存。如果为多节点任务。检查多节点作业流的节点之间的关系是否合规(检查整个多节点作业流是否为一个有向无环图,且所有的路径是否都从起始节点开始,到结束节点结束)。按顺序将作业节点信息jobBaseInfoDTO通过jobBaseInfoDao依次写入数据库的daxsch_job_node_info数据表中。按顺序将作业节点之间的连接信息jobConnDTO通过jobConnDao依次写入数据库的daxsch_job_connection_info本文档来自技高网...

【技术保护点】
1.一种可编排流程的定时作业执行的方法,其特征在于,包括:/n新建任务,输入定时作业任务的名称、任务描述、所使用的触发器、任务类型、备注后,进行保存;/n保存任务,Web前端将刚出创建的任务详情通过JSON格式传输给Java后端,Java后端通过Spring Boot框架将JSON转化为相应的实体类对象,为任务创建新的任务键,判断任务包含的节点数是否匹配和任务类型;/n进行激活任务,通过根据任务键在数据库中查询对应的任务记录并映射到实体类对象中,进行判断任务状态,如果状态为失效,则将任务状态修改为激活;/n进行冻结任务,通过根据任务键在数据库中查询对应的任务记录并映射到实体类对象中,进行判断任务状态,如果状态不为正在运行且不为手动触发时,则将任务状态修改为失效;/n进行手动执行一次,通过根据任务键在数据库中查询对应的任务记录并映射到实体类对象中,进行判断任务状态,如果状态为“失效”时,则将任务状态修改为手动触发;/n进行启动Scheduler,Spring框架中封装的Quartz类为QuartzJobBean,令实际的任务类继承QuartzJobBean,并重写executeInternal()方法,在executeInternal()方法中实现任务的实际逻辑,在Scheduler调度实际任务时,调用JobDetail中被重写过的executeInternal()方法;/n通过executeInternal()方法,判断此JobDetail所对应的任务是否被启动过,没有被启动将JobDetail的运行状态设置为正在执行,已被启动过的,则执行失败,执行当前以及后继每个作业点并对任务类型和作业类型进行判断,最后将JobDetail的运行状态设置为执行成功,则执行完成。/n...

【技术特征摘要】
1.一种可编排流程的定时作业执行的方法,其特征在于,包括:
新建任务,输入定时作业任务的名称、任务描述、所使用的触发器、任务类型、备注后,进行保存;
保存任务,Web前端将刚出创建的任务详情通过JSON格式传输给Java后端,Java后端通过SpringBoot框架将JSON转化为相应的实体类对象,为任务创建新的任务键,判断任务包含的节点数是否匹配和任务类型;
进行激活任务,通过根据任务键在数据库中查询对应的任务记录并映射到实体类对象中,进行判断任务状态,如果状态为失效,则将任务状态修改为激活;
进行冻结任务,通过根据任务键在数据库中查询对应的任务记录并映射到实体类对象中,进行判断任务状态,如果状态不为正在运行且不为手动触发时,则将任务状态修改为失效;
进行手动执行一次,通过根据任务键在数据库中查询对应的任务记录并映射到实体类对象中,进行判断任务状态,如果状态为“失效”时,则将任务状态修改为手动触发;
进行启动Scheduler,Spring框架中封装的Quartz类为QuartzJobBean,令实际的任务类继承QuartzJobBean,并重写executeInternal()方法,在executeInternal()方法中实现任务的实际逻辑,在Scheduler调度实际任务时,调用JobDetail中被重写过的executeInternal()方法;
通过executeInternal()方法,判断此JobDetail所对应的任务是否被启动过,没有被启动将JobDetail的运行状态设置为正在执行,已被启动过的,则执行失败,执行当前以及后继每个作业点并对任务类型和作业类型进行判断,最后将JobDetail的运行状态设置为执行成功,则执行完成。


2.根据权利要求1所述的一种可编排流程的定时作业执行的方法,其特征在于,进行选择任务类型为单节点任务或多节点任务,若为单节点任务,则选择要执行的作业类型和具体作业;若为多节点任务,则绘制相应的多节点作业流,每个作业对应作业流中的一个节点。


3.根据权利要求1所述的一种可编排流程的定时作业执行的方法,其特征在于,保存任务中要进行判断任务类型,若为单节点任务,则要检查作业节点类型是否为实际作业节点,并将作业节点信息写入数据库中,表示保存成功;若为多节点任务,要检查多节点作业流的节点之间的关系是否合规,并按顺序将作业节点之间的连接信息写入数据库中,表示保存成功。


4.根据权利要求1所述的一种可编排流程的定时作业执行的方法,其特征在于,激活任务中要进行判断任务类型为单节点任务或多节点任务,若为单节点任务,则根据任务键在数据库中查询对应的作业节点记录映射到实体类对象中;若为多节点任务,则根据任务键在数据库中查...

【专利技术属性】
技术研发人员:谢水庚郄宇辰孙睿智
申请(专利权)人:北京航天云路有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1