掌桥专利:专业的专利平台
掌桥专利
首页

一种任务调度方法、装置、终端设备及存储介质

文献发布时间:2023-06-19 11:32:36


一种任务调度方法、装置、终端设备及存储介质

技术领域

本申请属于任务调度技术领域,尤其涉及一种任务调度方法、装置、终端设备及存储介质。

背景技术

随着社会的发展,无论在什么样的企业中,都存在着各种各样的业务,这些业务可利用任务调度来实现统一的管理与执行。但随着业务的扩张和各种业务功能的累积,用户对任务处理的要求越来越高,而传统的任务调度却只能对单一的线性连接的简单任务进行处理,并不能处理拓扑关系较为复杂的业务,导致用户的用户体验并不好。

发明内容

本申请实施例提供了一种任务调度方法、装置、终端设备及存储介质,可以解决如何处理拓扑关系较为复杂的业务问题。

第一方面,本申请实施例提供了一种任务调度方法,包括:

从预设的复合任务中选取当前待执行的子任务;

若所述子任务存在依赖的外部任务,则获取所述外部任务的执行情况;

若所述子任务存在前驱任务,则获取所述前驱任务的执行情况;

若所述外部任务的执行情况和所述前驱任务的执行情况均为执行完成,则执行所述子任务;

当所述子任务的执行完成时,若所述复合任务中还存在尚未执行的子任务,则从尚未执行的子任务中重新选取当前待执行的子任务,直至所述复合任务中的各项子任务均执行完成为止。

可选的,在执行所述子任务之后,包括:

若所述子任务执行失败,则获取所述子任务的预设属性,根据所述预设属性确定是否重新执行所述子任务;

若所述子任务执行时间超过预设时间阈值,则根据所述预设属性确定是否重新执行所述子任务;

若所述重新执行操作的次数超过预设重新执行次数,则根据所述预设属性确定是否忽略所述子任务的异常操作。

可选的,所述任务调度方法,包括:

若接收到跳过指令,则根据所述跳过指令在执行所述子任务时跳过执行所述子任务;

若接收到插入指令,则根据所述插入指令在所述子任务的执行过程中插入预设的执行周期;

若接收到删除指令,则根据所述删除指令在所述子任务的执行过程中删除预设的执行周期。

可选的,所述任务调度方法,包括:

若所述复合任务的工作时长大于预设时间阈值,则在所述复合任务中当前执行的子任务执行完成后,结束所述复合任务的工作。

可选的,所述复合任务的创建过程,包括:

获取复合任务信息,根据所述复合任务信息创建所述复合任务;

将预设的任务模板导入所述复合任务中,生成各个子任务,并将所述子任务进行拓扑排列。

可选的,在将预设的任务模板导入所述复合任务中,生成各个子任务之前,包括:

获取接口信息,根据所述接口信息创建任务导入接口;

对所述导入接口进行验证,当验证通过时,获取任务模板信息;

根据所述任务模板信息将验证通过的任务导入接口生成所述任务模板。

可选的,在将所述子任务进行拓扑排列之前,包括:

当接收到拖拽指令时,将预设的任务类型加载到所述复合任务中的预设位置处;

获取任务信息,根据所述任务信息将所述任务类型生成子任务。

第二方面,本申请实施例提供了一种任务调度装置,包括:

选取模块,用于从预设的复合任务中选取当前待执行的子任务;

外部任务模块,用于若所述子任务存在依赖的外部任务,则获取所述外部任务的执行情况;

前驱任务模块,用于若所述子任务存在前驱任务,则获取所述前驱任务的执行情况;

执行模块,用于若所述外部任务的执行情况和所述前驱任务的执行情况均为执行完成,则执行所述子任务;

完成模块,用于当所述子任务的执行完成时,若所述复合任务中还存在尚未执行的子任务,则从尚未执行的子任务中重新选取当前待执行的子任务,直至所述复合任务中的各项子任务均执行完成为止。

第三方面,本申请实施例提供了一种终端设备,包括存储器、处理器、调度器、执行器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一种任务调度方法的步骤。

第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述的计算机程序被处理器执行时实现上述任一种任务调度方法的步骤。

第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一种任务调度方法。

本申请实施例中从预设的复合任务中选取当前待执行的子任务;若所述子任务存在依赖的外部任务,则获取所述外部任务的执行情况;若所述子任务存在前驱任务,则获取所述前驱任务的执行情况;若所述外部任务的执行情况和所述前驱任务的执行情况均为执行完成,则执行所述子任务;当所述子任务的执行完成时,若所述复合任务中还存在尚未执行的子任务,则从尚未执行的子任务中重新选取当前待执行的子任务,直至所述复合任务中的各项子任务均执行完成为止。通过本申请实施例,从预设的复合任务中选取待执行的子任务,通过检测当前子任务是否存在外部任务或前驱任务,来避免子任务在某些情况未完成时就去执行,从而致使执行结果出现偏差,当外部任务及前驱任务均执行完成时,再执行当前子任务,当前子任务执行完成后,再判断复合任务中是否还存在子任务,再从尚未执行的子任务中选取待执行的子任务,直至复合任务中的各项子任务均执行完成,从而处理了拓扑关系较为复杂的业务问题。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的任务调度方法的第一种流程示意图;

图2是本申请实施例提供的任务调度方法的第二种流程示意图;

图3是本申请实施例提供的任务调度方法的第三种流程示意图;

图4是本申请实施例提供的任务调度方法的第四种流程示意图;

图5是本申请实施例提供的任务调度方法的第五种流程示意图;

图6是本申请实施例提供的任务调度方法的第六种流程示意图;

图7是本申请实施例提供的任务调度方法的第七种流程示意图;

图8是本申请实施例提供的任务调度装置的结构示意图;

图9是本申请实施例提供的终端设备的结构示意图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。

应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

图1所示为本申请实施例中一种任务调度方法的流程示意图,如图1所示,所述任务调度方法可以包括如下步骤:

步骤S101、从预设的复合任务中选取当前待执行的子任务。

在本实施例中,从预先创建好的复合任务选取待执行的子任务。其中,上述待执行的子任务可按照拓扑顺序进行选取,进而促使选取出来的子任务去执行相关操作。

可选的,上述选取方式可以是复合任务中的子任务以拓扑排列的顺序进行选取。

可以理解的是,当命令预先创建的复合任务工作时,从复合任务的开始节点出发按照一定的顺序开始执行各个子任务,如图2所示,因各个子任务的外部情况不同,也就是满足子任务执行的前提条件不同,故各个子任务的实际执行的时间要根据其外部情况来决定,所以存在着选取出来的子任务不符合执行条件,从而有重新进行选取的情况发生。

步骤S102、若所述子任务存在依赖的外部任务,则获取所述外部任务的执行情况。

在本实施例中,在选取出当前待执行的子任务之后,对当前待执行的子任务的外部情况进行检测,若检测出当前待执行的子任务存在与其进行任务依赖的外部任务,则获取所依赖的外部任务的执行情况,根据外部任务的执行情况决定是否执行当前待执行的子任务。其中,上述存在依赖的外部任务是指与当前待执行的子任务进行任务依赖的外部任务,也就是指当前待执行的子任务依赖于某一外部任务的执行情况来进行自身的任务执行,而这里的外部任务是独立于这个复合任务之外的任务,它可以是另一个复合任务中的子任务,也可以是单独执行的简单任务,如图2所示,图2中的子任务3存在外部任务。

可选的,在复合任务中每一个子任务都可以依赖一个或多个外部任务,且其所依赖的外部任务相对于子任务来说是低频的。其中,上述低频的意思是任务执行的频率周期对比于子任务来说比较少。例如,当前子任务的执行频率周期为每隔一分钟执行一次,那么其依赖的外部任务就要低于上述子任务的执行频率周期,例如每隔一小时执行一次。当子任务存在依赖的外部任务时,要保证当前周期的外部任务已经执行成功,子任务才可以执行。一般情况下,子任务是根据当天的外部任务在当前时段的最后一次执行情况为依据。

可选的,若与上述子任务存在依赖的外部任务没有执行时,上述子任务不执行,直到检测到与其进行外部依赖的任务执行成功后,上述子任务再进行执行。可以理解的是,若上述子任务还存在其他外部条件,则就根据其他外部条件与外部任务均满足的条件下,再执行上述子任务。

具体示例而非限定,因子任务相对于其所依赖的外部任务来说是高频的,故设定子任务在每天的上午8点和下午5点分别执行一次,与上述子任务进行任务依赖的外部任务每天上午11点执行,那么当上午8点执行的子任务准备执行时,检测到其存在所依赖的外部任务,且外部任务并没有开始执行,就不执行当前子任务,直到检测到外部任务上午11点执行完成后,再根据11点的外部任务的执行情况去执行子任务,当下午5点执行的子任务准备执行时,根据外部任务最后一次执行情况,也就是11点执行的外部任务的执行情况去执行。

步骤S103、若所述子任务存在前驱任务,则获取所述前驱任务的执行情况。

在本实施例中,在选取出当前待执行的子任务之后,对当前待执行的子任务的外部情况进行检测,若检测出当前待执行的子任务存在前驱任务,则获取上述前驱任务的执行情况,根据前驱任务的执行情况决定是否执行当前待执行的子任务。其中,上述前驱任务是指复合任务中对各个子任务进行拓扑排列之后,与当前待执行的子任务进行连接,并排序在当前待执行的子任务之前的任务,当前驱任务执行完成之后,才可执行上述子任务。

可选的,在复合任务中每一个子任务都可以有一个或多个前驱任务。若上述子任务有两个前驱任务,如图2所示,图2中的子任务4存在两个前驱任务,分别是子任务1和子任务2,那么需子任务1和子任务2均执行完成的情况下,才可执行子任务4。可以理解的是,若上述子任务还存在其他外部条件,则就根据其他外部条件与前驱任务均满足的条件下,再执行上述子任务。

具体示例而非限定,当前驱任务B执行完成后,将其后驱子任务A选取为当前待执行的子任务,且子任务A还有另外的前驱任务C,这时子任务A的前驱任务有两个,分别是前驱任务B和前驱任务C,前驱任务B已执行完成,这时需检测前驱任务C的执行情况,根据前驱任务C的执行情况决定是否执行子任务A。其中,上述后驱任务是指复合任务中对各个子任务进行拓扑排列之后,与当前待执行的子任务进行连接,且排序在当前待执行的子任务之后的任务,在当前待执行的子任务执行完成之后,可以按照拓扑顺序选择其后驱任务作为下一个待执行的子任务。

步骤S104、若所述外部任务的执行情况和所述前驱任务的执行情况均为执行完成,则执行所述子任务。

在本实施例中,当检测到当前待执行的子任务的外部任务和前驱任务的执行情况均为执行完成时,就执行当前待执行的子任务。

可选的,若当前待执行的子任务只有外部任务没有前驱任务的话,就在其外部任务执行完成的情况下,执行当前待执行的子任务;若当前待执行的子任务只有前驱任务没有外部任务的话,就在其前驱任务执行完成的情况下,执行当前待执行的子任务;若当前待执行的子任务前驱任务和外部任务均有两个及两个以上的话,就在其两个及两个以上的前驱任务和外部任务执行完成的情况下,执行当前待执行的子任务。

步骤S105、当所述子任务的执行完成时,若所述复合任务中还存在尚未执行的子任务,则从尚未执行的子任务中重新选取当前待执行的子任务,直至所述复合任务中的各项子任务均执行完成为止。

在本实施例中,在上述选取的当前待执行的子任务执行完成之后,若检测到复合任务中还存在尚未执行的子任务,则从上述尚未执行的子任务中重新选取子任务作为当前待执行的子任务,直到检测到复合任务中的各项子任务均执行完成为止。其中,上述选取方式可以按照拓扑顺序选取当前执行完成的子任务的后驱任务,若经过上述步骤之后,后驱任务外部环境没有满足执行条件,也就是说后驱任务还存在另外的前驱任务,且另外的前驱任务并没有开始执行,又或者是后驱任务还存在外部任务,且外部任务并没有开始执行等等,那么就按照拓扑排列的顺序重新选取另一个。

可以理解的是,复合任务可以形成有向无环图,也就是复合任务中的各个子任务可以进行复杂的拓扑排列,如图2所示,当各个子任务按照拓扑排列执行完成之后,复合任务才会执行完成。

可选的,若复合任务中尚未执行的子任务在经历上述步骤之后,均不满足执行条件,则进行等待,直至检测到某一子任务的执行条件满足的情况下,再去执行。

可选的,如图3所示,在步骤S104之后包括:

步骤S301、若所述子任务执行失败,则获取所述子任务的预设属性,根据所述预设属性确定是否重新执行所述子任务。

在本实施例中,在复合任务中建立子任务的过程中,获取任务的任务信息,根据任务信息预先设置子任务的各个参数的属性值,例如,当子任务执行失败后,是否要重新执行失败的子任务,以及重新执行子任务的次数等等。通过对子任务属性值的设置,若当前子任务执行失败,则根据预设的参数的属性值来确定是否重新执行失败的子任务。

具体示例而非限定,预设子任务若执行失败时重新执行子任务,在当前子任务执行失败后,根据预设属性重新执行失败的子任务。

可选的,若子任务执行失败,可进行报警提醒,可以通过将日志查询模块在复合任务中将失败的子任务标红,以便于用户立刻发现问题,从而进行实时控制,还可以通过发邮件等方式来提醒用户,这里不做限定。

步骤S302若所述子任务执行时间超过预设时间阈值,则根据所述预设属性确定是否重新执行所述子任务。

在本实施例中,在复合任务中建立子任务的过程中,获取任务的任务信息,根据任务信息预先设置子任务的各个参数的属性值,例如当子任务执行时间超过预设时间阈值后,是否要重新执行超时的子任务,以及重新执行子任务的次数等等。通过对子任务属性值的设置,若当前子任务执行时间超过预设时间阈值,则根据预设的参数的属性值来确定是否重新执行超时的子任务。

具体示例而非限定,预设子任务若执行时间超过预设时间阈值时重新执行子任务,在当前子任务执行时间超过预设时间阈值后,根据预设属性重新执行失败的子任务。

可选的,根据每个子任务执行情况的不同,来确定不同的时间阈值,这里的时间阈值是指预设的子任务的执行时间,一般时间阈值设定相对于子任务的正常执行时间来说会多一些,多的时间为用户认同的超时时间。

可选的,可将子任务分为两种执行方式,一种是同步执行,一种是异步执行。同步执行的子任务响应速度很快,一般执行和响应接近于同步的,这时设置时间阈值较小;异步执行的子任务响应速度很慢,一般执行和响应时间差可能会有几个小时,这时设置时间阈值较大。

可选的,若子任务执行时间超过预设时间阈值,可以进行报警提醒,用户可根据相关的提醒进行实时的参数更改,例如,时间阈值的更改、强制成功等。以便于子任务执行成功。

步骤S303、若所述重新执行操作的次数超过预设重新执行次数,则根据所述预设属性确定是否忽略所述子任务的异常操作。

在本实施例中,当子任务进行重新执行操作时,在上述子任务重新执行操作的次数超过预设的重新执行次数之后,子任务的执行还是出现失败的或者是超时的等异常时,根据预先设置子任务的各个参数的属性值来确定是否忽略子任务的异常操作,也就是当子任务重新执行操作次数超过预设重新执行次数时是否自动忽略异常。若忽略所述子任务的异常操作,则子任务执行成功,继续进行后续判断,上述过程如图4所示。

具体示例而非限定,预设子任务若重新执行操作次数超过预设重新执行次数时自动忽略所述子任务的异常操作,在当前子任务重新执行操作次数超过预设重新执行次数后,根据预设属性自动忽略所述子任务的异常操作。

可选的,若接收到跳过指令,则根据所述跳过指令在执行所述子任务时跳过执行所述子任务。

在本实施例中,若在复合任务的工作过程中,用户可以实时对任务进行控制,比如下发子任务的跳过指令,若任务调度中心接收到某个子任务的跳过指令,也就是说该子任务不再执行,当执行到该子任务时跳过,进行下一个子任务的执行。其中,上述跳过指令中包括这个子任务的相关信息,也就是对这个子任务起标识性的信息。

可选的,若接收到插入指令,则根据所述插入指令在所述子任务的执行过程中插入预设的执行周期。

在本实施例中,若在复合任务的工作过程中,接收到某个子任务的插入指令,分析插入指令中所包含的预设执行周期是多少,根据插入指令将插入指令中所包含的执行周期插入到子任务的执行过程中,子任务可以执行插入指令中所包含的执行周期。也就是说在子任务原有的执行周期的基础上再插入一个预设的子任务的执行周期,根据上述插入指令,子任务在执行过程中会根据插入指令中所包含的预设的执行周期,除了执行其原预设的周期之外,还来执行插入指令中所包含的预设的特定的周期,提高了子任务的执行频率。其中,上述插入指令是指在任务的执行过程中插入特定的周期;上述预设的执行周期是指中途插入的周期的执行频率,例如每周的周一上午8点运行一次。

可选的,上述插入指令也可应用于复合任务,可以综合调控复合任务中的各个子任务。例如,复合任务的固定执行周期为每个月末下午5点时运行一次,在此基础之上将包含每周六上午9点运行一次的插入指令发送给任务调度中心,则任务调度中心就利用其内部的执行器除了在每个月末下午5点时运行一次复合任务之外,在每周六上午9点也会运行一次,从而带动其内部的子任务随之运行。

可选的,若接收到删除指令,则根据所述删除指令在所述子任务的执行过程中删除预设的执行周期。

在本实施例中,在本实施例中,若在复合任务的工作过程中,接收到某个子任务的删除指令,分析删除指令中所包含的预设执行周期是多少,根据删除指令将删除指令中所包含的执行周期插入到子任务的执行过程中,子任务在执行的过程中当执行的时间符合删除指令标记执行周期时,不执行这个时间段的子任务。根据上述删除指令,子任务在执行其原预设的周期时,若检测到当前的执行周期符合删除指令中所包含的预设的特定的周期时,不执行当前周期,以便更好的控制子任务,提高效率。其中,上述删除指令是指在任务的执行过程中删除特定的周期。

可选的,上述删除指令也可应用于复合任务,可以综合调控复合任务中的各个子任务。例如,复合任务的固定执行周期为每个月末下午5点时运行一次,在此基础之上,因5月有特殊活动,故5月不执行复合任务,则可以将包含5月末下午5点运行一次的删除指令发送给任务调度中心,则任务调度中心就利用其内部的执行器在5月末下午5点的时候不执行复合任务,从而其内部的子任务也不会执行。

可选的,若所述复合任务的工作时长大于预设时间阈值,则在所述复合任务中当前执行的子任务执行完成后,结束所述复合任务的工作。

在本实施例中,因复合任务是综合调控其中的各个子任务的,故预先在复合任务中设定工作时间也就是上述预设的时间阈值,若在复合任务工作时,其工作的时长大于预设时间阈值,也就是说当前复合任务在规定的时间内没有完成工作致使其超时,则当复合任务当前执行的子任务执行完成后,不再重新选取下一个未执行的子任务,且结束复合任务的工作,以防止复合任务的工作时间过长而导致状况发生。其中,上述时间阈值根据复合任务的正常工作时长来确定,一般时间阈值设定相对于复合任务的正常执行时间来说会多一些,多的时间为用户认同的超时时间。

可选的,在因复合任务的工作时长大于预设时间阈值,而结束上述超时的复合任务的工作后,可以选择根据运行结果,更改部分参数之后,重新运行上述超时的复合任务,例如更改超时时间;也可以选择继续从复合任务中的执行完成的子任务出发,选取下一个未执行的子任务继续运行。

可选的,所述复合任务的创建过程,包括:

获取复合任务信息,根据所述复合任务信息创建所述复合任务。

在本实施例中,根据用户发出的创建复合任务的创建指令,获取复合任务信息,根据所获取的复合任务信息创建复合任务。其中,上述复合任务信息是指创建复合任务所需的属性信息,可根据用户需求的不同进行调整,所述复合任务信息包括但不限于是正常周期、插入周期、排除周期、任务重新执行次数、同步任务超时时间、异步任务超时时间等。上述正常周期指上述复合任务的执行周期;上述插入周期指上述插入指令中所携带的执行周期;上述排除周期指上述删除指令中所携带的执行周期。

将预设的任务模板导入所述复合任务中,生成各个子任务,并将所述子任务进行拓扑排列。

在本实施例中,提前预设好需批量进行的一些任务的任务模板,将预先设置好的任务模板导入复合任务中,直接生成各个子任务,其相关任务信息已存在于各个子任务中,并对这些子任务在开始节点之下进行拓扑排列,可构成一个有向无环图。该过程通过批量将模板导入复合任务,生成各个子任务,可以避免子任务发生遗漏以及某些子任务的任务信息出现错误,可以提高复合任务中加入子任务的效率及子任务的正确性,并降低运营人员创建调度任务的工作量。

可以理解的是,复合任务的创建可以对其内部的各个子任务做整体的控制。

可选的,上述预先设置好的任务模块可通过可视化拖拽的方式导入复合任务中,且在该过程中若用户有需求,可以实时的对子任务的任务信息进行更改。

可选的,如图5所示,若创建简单任务,则直接获取任务信息,根据任务信息创建简单任务。

可选的,如图6所示,在将预设的任务模板导入所述复合任务中,生成各个子任务之前包括:

步骤S601、获取接口信息,根据所述接口信息创建任务导入接口。

在本实施例中,根据用户发出的创建任务导入接口的创建指令,获取接口信息,根据所获取的接口信息创建任务导入接口。其中,上述接口信息可根据用户需求的不同进行调整,所述接口信息包括但不限于是接口名称、URL请求地址、请求方式、接口描述等。上述任务导入接口是创建一个接口,根据这个接口可生成任务模板并转换成子任务。

步骤S602、对所述导入接口进行验证,当验证通过时,获取任务模板信息。

步骤S603、根据所述任务模板信息将验证通过的任务导入接口生成所述任务模板。

在本实施例中,对创建好的导入接口进行验证,当接口的验证通过时,获取创建任务模板所需要的任务模板信息,通过任务模板信息将验证通过的任务导入接口生成任务模板。其中,上述任务模板信息是指创建任务模块所需的任务属性信息,可根据需求由用户自行填写更改,包括但不限于是响应超时的时间、重新执行的次数、是否自动忽略异常等;上述任务模板指所有任务信息均已设置好,可直接将任务模板导入复合任务中生成子任务,不用再添加其他任务信息。

可选的,上述任务模板可根据用户发出的转换指令,从中选择出对应的任务模板直接转换成子任务或者是简单任务。

可选的,上述导入接口的验证有多种方式,在此不做限定,例如,通过验证接口返回数据是否与预期结果一致,来确定接口验证是否通过。

可选的,如图7所示,在生成任务模板之前验证当前有哪些批量任务,根据接口信息可生成与批量任务对应的任务模板。当生成上述任务模板之后,执行上述任务模板,并查看执行日志,当执行日志显示的内容符合预期结果,就证明上述任务模板验证通过,可以进行使用,通过层层的验证提高了复合任务的正确性。

可选的,在将所述子任务进行拓扑排列之前包括:

当接收到拖拽指令时,将预设的任务类型加载到所述复合任务中的预设位置处。

获取任务信息,根据所述任务信息将所述任务类型生成子任务。

在本实施例中,预先设置一些当前设备支持的常用任务类型,当接收到关于某一任务类型的拖拽指令时,将这一预设的任务类型加载到创建复合任务中子任务的编辑区的预设位置处,并获取关于这一任务类型的任务信息,根据任务信息将加载到复合任务中的任务类型生成子任务。其中,上述任务信息是指创建子任务所需的任务属性信息,可根据需求由用户自行填写更改,包括但不限于是响应超时的时间、重新执行的次数、是否自动忽略异常等。

可以理解的是,上述任务模板可批量生成相同的子任务,任务模板中的相关任务信息已经填入,也可进行相应的更改,但一般改动不大;而由任务类型所生成的子任务,则是根据用户需求填入相关任务信息,在不需进行批量导入的子任务,可通过任务类型生成子任务的方式加载到复合任务中。

可选的,上述任务类型可以根据用户需求自行扩展,上述任务类型还包括开始任务类型,开始任务类型用于任务的开始处,任务以开始任务类型在复合任务中形成的开始节点来开始执行任务,因此其他的任务类型生成的子任务位于开始类型生成的开始节点之后。

可选的,可在复合任务工作的过程中实时查看复合任务调度的日志,并通过日志可查看各个子任务的执行进度,并根据进度情况可以实时控制各个子任务的执行,例如对选中子任务进行强制成功、强制失败、跳过执行、重新执行等实时控制的技术手段,且各个子任务根据当前执行情况的不同显示以不同的颜色及大小,便于用户查阅,并进行对应的操作。例如,将执行失败的子任务显示为红色、运行中的子任务显示为黄色、没有运行的子任务显示为黑色等。其中,上述强制成功指当子任务发生异常时,控制子任务强制成功,以避免影响其后驱任务的进行;上述跳过执行指根据用户需求跳过子任务,该子任务不再执行。

可选的,可对复合任务添加标签,通过标签去查询该复合任务,并根据标签进行分组管理,以便于不同部门或者项目组之间调度任务的权限隔离。

本申请实施例中从预设的复合任务中选取当前待执行的子任务;若所述子任务存在依赖的外部任务,则获取所述外部任务的执行情况;若所述子任务存在前驱任务,则获取所述前驱任务的执行情况;若所述外部任务的执行情况和所述前驱任务的执行情况均为执行完成,则执行所述子任务;当所述子任务的执行完成时,若所述复合任务中还存在尚未执行的子任务,则从尚未执行的子任务中重新选取当前待执行的子任务,直至所述复合任务中的各项子任务均执行完成为止。通过本申请实施例,从预设的复合任务中选取待执行的子任务,通过检测当前子任务是否存在外部任务或前驱任务,来避免子任务在某些情况未完成时就去执行,从而致使执行结果出现偏差,当外部任务及前驱任务均执行完成时,再执行当前子任务,当前子任务执行完成后,再判断复合任务中是否还存在子任务,再从尚未执行的子任务中选取待执行的子任务,直至复合任务中的各项子任务均执行完成,从而处理了拓扑关系较为复杂的业务问题。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

图8所示为本申请实施例中一种任务调度装置的结构示意图,如图5所示,所述任务调度装置可以包括:

选取模块81,用于从预设的复合任务中选取当前待执行的子任务。

外部任务模块82,用于若所述子任务存在依赖的外部任务,则获取所述外部任务的执行情况。

前驱任务模块83,用于若所述子任务存在前驱任务,则获取所述前驱任务的执行情况。

执行模块84,用于若所述外部任务的执行情况和所述前驱任务的执行情况均为执行完成,则执行所述子任务。

完成模块85,用于当所述子任务的执行完成时,若所述复合任务中还存在尚未执行的子任务,则从尚未执行的子任务中重新选取当前待执行的子任务,直至所述复合任务中的各项子任务均执行完成为止。

可选的,所述任务调度装置还可以包括:

第一重新执行模块,用于若所述子任务执行失败,则获取所述子任务的预设属性,根据所述预设属性确定是否重新执行所述子任务。

第二重新执行模块,用于若所述子任务执行时间超过预设时间阈值,则根据所述预设属性确定是否重新执行所述子任务。

忽略异常操作模块,用于若所述重新执行操作的次数超过预设重新执行次数,则根据所述预设属性确定是否忽略所述子任务的异常操作。

可选的,所述任务调度装置还可以包括:

跳过任务模块,用于若接收到跳过指令,则根据所述跳过指令在执行所述子任务时跳过执行所述子任务。

插入周期模块,用于若接收到插入指令,则根据所述插入指令在所述子任务的执行过程中插入预设的执行周期。

删除周期模块,用于若接收到删除指令,则根据所述删除指令在所述子任务的执行过程中删除预设的执行周期。

可选的,所述任务调度装置还可以包括:

结束工作模块,用于若所述复合任务的工作时长大于预设时间阈值,则在所述复合任务中当前执行的子任务执行完成后,结束所述复合任务的工作。

可选的,所述任务调度装置还可以包括:

创建模块,用于获取复合任务信息,根据所述复合任务信息创建所述复合任务。

拓扑排列模块,用于将预设的任务模板导入所述复合任务中,生成各个子任务,并将所述子任务进行拓扑排列。

可选的,所述任务调度装置还可以包括:

获取模块,用于获取接口信息,根据所述接口信息创建任务导入接口。

验证模块,用于对所述导入接口进行验证,当验证通过时,获取任务模板信息。

转换模块,用于根据所述任务模板信息将验证通过的任务导入接口生成所述任务模板。

可选的,所述任务调度装置还可以包括:

加载模块,用于当接收到拖拽指令时,将预设的任务类型加载到所述复合任务中的预设位置处。

生成模块,用于获取任务信息,根据所述任务信息将所述任务类型生成子任务。

本申请实施例中从预设的复合任务中选取当前待执行的子任务;若所述子任务存在依赖的外部任务,则获取所述外部任务的执行情况;若所述子任务存在前驱任务,则获取所述前驱任务的执行情况;若所述外部任务的执行情况和所述前驱任务的执行情况均为执行完成,则执行所述子任务;当所述子任务的执行完成时,若所述复合任务中还存在尚未执行的子任务,则从尚未执行的子任务中重新选取当前待执行的子任务,直至所述复合任务中的各项子任务均执行完成为止。通过本申请实施例,从预设的复合任务中选取待执行的子任务,通过检测当前子任务是否存在外部任务或前驱任务,来避免子任务在某些情况未完成时就去执行,从而致使执行结果出现偏差,当外部任务及前驱任务均执行完成时,再执行当前子任务,当前子任务执行完成后,再判断复合任务中是否还存在子任务,再从尚未执行的子任务中选取待执行的子任务,直至复合任务中的各项子任务均执行完成,从而处理了拓扑关系较为复杂的业务问题。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述系统实施例以及方法实施例中的对应过程,在此不再赘述。

图9为本申请实施例提供的终端设备的结构示意图。为了便于说明,仅示出了与本申请实施例相关的部分。

如图9所示,该实施例的终端设备9包括:至少一个处理器900(图9中仅示出一个),与所述处理器900连接的存储器901,调度器902,执行器903以及存储在所述存储器901中并可在所述至少一个处理器900上运行的计算机程序904,例如任务调度程序。所述处理器900执行所述计算机程序904时实现上述各个任务调度方法实施例中的步骤,例如图1所示的步骤S101至S105。或者,所述处理器900执行所述计算机程序904时实现上述各装置实施例中各模块的功能,例如图8所示模块81至85的功能。所述调度器902用于任务调度。所述执行器903用于任务调度后的任务执行

示例性的,所述计算机程序904可以被分割成一个或多个模块,所述一个或者多个模块被存储在所述存储器901中,并由所述处理器900执行,以完成本申请。所述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序904在所述终端设备9中的执行过程。例如,所述计算机程序602可以被分割成选取模块81、外部任务模块82、前驱任务模块83、执行模块84、完成模块85,各模块具体功能如下:

选取模块81,用于从预设的复合任务中选取当前待执行的子任务。

外部任务模块82,用于若所述子任务存在依赖的外部任务,则获取所述外部任务的执行情况。

前驱任务模块83,用于若所述子任务存在前驱任务,则获取所述前驱任务的执行情况。

执行模块84,用于若所述外部任务的执行情况和所述前驱任务的执行情况均为执行完成,则执行所述子任务。

完成模块85,用于当所述子任务的执行完成时,若所述复合任务中还存在尚未执行的子任务,则从尚未执行的子任务中重新选取当前待执行的子任务,直至所述复合任务中的各项子任务均执行完成为止。

所述终端设备9可包括,但不仅限于,处理器900、存储器901、调度器902、执行器903。本领域技术人员可以理解,图9仅仅是终端设备9的举例,并不构成对终端设备9的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备、总线等。

所称处理器900可以是中央处理单元(Central Processing Unit,CPU),该处理器900还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器901在一些实施例中可以是所述终端设备9的内部存储单元,例如终端设备9的硬盘或内存。所述存储器901在另一些实施例中也可以是所述终端设备9的外部存储设备,例如所述终端设备9上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器901还可以既包括所述终端设备9的内部存储单元也包括外部存储设备。所述存储器901用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器901还可以用于暂时地存储已经输出或者将要输出的数据。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。

以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

相关技术
  • 一种任务调度方法、装置、终端设备及存储介质
  • 一种嵌入式OS任务调度方法、装置、终端设备及存储介质
技术分类

06120112966174