CN101901164A - 时间计划调度模块和方法 - Google Patents
时间计划调度模块和方法 Download PDFInfo
- Publication number
- CN101901164A CN101901164A CN200910085019XA CN200910085019A CN101901164A CN 101901164 A CN101901164 A CN 101901164A CN 200910085019X A CN200910085019X A CN 200910085019XA CN 200910085019 A CN200910085019 A CN 200910085019A CN 101901164 A CN101901164 A CN 101901164A
- Authority
- CN
- China
- Prior art keywords
- task
- time
- next execution
- management unit
- bit stream
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种时间计划调度模块和方法,所述模块包括:计划管理单元,用于周期性检查是否到达其所存储的任务列表中各任务的下次执行时间;若是,则发出执行所述任务的指令;自动化任务接口,用于在接收到所述指令后,调用所述任务的任务程序;至少一个存储单元,用于按照任务类型分类存储所述各任务的任务信息,在所述计划管理单元获取某个任务的下次执行时间时,根据所述某个任务的任务信息计算出下次执行时间并提供给所述计划管理单元。本发明的时间计划调度模块方便应用程序直接嵌入使用,便于对任务的统一管理和触发,对不同操作系统的复用性好,而且应用程序可以根据需要方便的自定义增加任务类型。
Description
技术领域
本发明涉及应用程序中的自动控制领域,特别是涉及一种时间计划调度模块和方法。
背景技术
时间计划调度程序通常使用在操作系统中,包括windows操作系统中的任务计划程序、Linux操作系统中的crond监控程序等,此外,在军事领域的一些自动化处理系统中也有应用。
时间计划调度程序一般向该程序的用户提供对时间的定制以及在所述定制的时间到达后执行任务的定制,之后时间计划调度程序自行检测与判断,并在定制的时间执行定制的任务。
现有的时间计划调度程序,其任务的对象是操作系统级的可执行程序,这些可执行程序是以进程为单位来执行的,因此一些应用程序中的任务需要编写成可以运行在该操作系统上的可执行程序。由于这些可执行程序与应用程序同等级,因此编写这些可执行程序的工作量非常大;而且,所述可执行程序与应用程序彼此互相独立,当有些任务的可执行程序在运行过程中需要对应的应用程序上下文信息时,需要花费很大代价通过与应用程序间的通信来获得该应用程序的上下文信息并且有些时候还可能无法获得这些上下文信息,因此该任务的可执行程序无法最大限度的发挥它的作用,甚至还有些时候根本无法实现。
所以,现有的一些应用程序由于需要时间计划调度功能,在开发应用程序的过程中将该功能的程序和任务程序都编写进应用程序中,一般不使用操作系统自带的时间计划调度程序。因为该任务程序与系统级的可执行程序相比已经大大简化,使编写任务程序的工作量大大减小;而且由于任务程序运行在应用程序中,所以可以轻松获得应用程序的上下文信息,保障了任务程序的正常执行。
但是,在应用程序开发时考虑到编写简单、速度快等原因,软件程序中的时间计划功能程序与该应用程序整体的耦合性非常强,不易拆分出来;而且即使拆分出来也带有过强的原应用程序特征,不适应其他应用程序的需要。因此,每个需要时间计划调度功能的应用程序都要单独进行该功能的开发与编写,开发的质量很难保证,而且极大地影响了应用程序的开发效率。因此,迫切需要一种统一的时间调度模块,以方便应用程序使用。
发明内容
本发明的目的是提供一种时间计划调度模块和方法,以实现时间计划调度功能由统一的时间计划调度模块管理和维护。
本发明提供了一种时间计划调度模块,所述时间计划调度模块包括:计划管理单元,用于周期性检查是否到达其所存储的任务列表中各任务的下次执行时间;若是,则发出执行所述任务的指令;自动化任务接口,用于在接收到所述指令后,调用所述任务的任务程序;所述任务程序满足所述自动化任务接口的格式;至少一个存储单元,用于按照任务类型分类存储所述各任务的任务信息,在所述计划管理单元获取某个任务的下次执行时间时,根据所述某个任务的任务信息计算出下次执行时间并提供给所述计划管理单元。
优选的,所述计划管理单元还用于:接收所在应用程序发送的任务信息,根据所述任务信息更新存储的任务列表。
具体的,所述计划管理单元包括:检测子单元,用于检测是否到达所述周期性检查的时间;获取子单元,用于在所述检测子单元检测到达所述周期性检查的时间时,从与所述任务列表中当前被检查任务的任务类型对应的存储单元获取所述当前被检查任务的下次执行时间;判断子单元,用于判断所述下次执行时间是否为当前时间;指令发送子单元,用于在所述判断子单元的判断结果为是时,发出执行所述当前被检查任务的指令。
具体的,所述任务类型包括:一次性任务、重复任务、每周任务或每天任务;所述存储单元包括:存储子单元,用于存储所述任务列表中所述任务的任务信息;计算子单元,用于在所述计划管理单元获取某个任务的下次执行时间时,根据所述任务的任务信息计算出下次执行时间并提供给所述计划管理单元。
优选的,所述时间计划调度模块还包括计划任务接口,用于从所述存储单元获取所述计划管理单元需要的所述下次执行时间并返回给所述计划管理单元,将所述计划管理单元发出的所述指令发送给自动化任务接口。
本发明还提供了一种时间计划调度方法,所述方法包括:当检测到达周期性检查存储的任务列表的时间时,从与当前检查任务的任务类型对应的存储单元获取所述任务的下次执行时间;判断所述下次执行时间是否为当前时间;若所述判断结果为是,则通过自动化任务接口调用所述任务的任务程序;所述任务程序满足所述自动化任务接口的格式。
优选的,所述方法还包括:接收所在应用程序发送的任务信息,根据所述任务信息更新存储的所述任务列表。
所述从与当前检查任务的任务类型对应的存储单元获取所述任务的下次执行时间具体为:计划管理单元向与所述任务的任务类型对应的存储单元查询所述任务的下次执行时间;所述存储单元根据所述任务的任务信息计算出下次执行时间并提供给所述计划管理单元。
当所述任务为一次性任务时,所述根据任务的任务信息计算出下次执行时间具体为:将下次执行时间赋值为所述一次性任务的执行时间。
当所述任务为重复任务时,所述根据任务的任务信息计算出下次执行时间具体为:判断当前时间是否在所述重复任务的开始时间和结束时间之间;若是,则将下次执行时间赋值为所述重复任务的开始时间;当判断出所述下次执行时间不为当前时间时,为所述下次执行时间增加第一时间间隔。
当所述任务为每周任务时,所述根据任务的任务信息计算出下次执行时间具体为:判断当前时间的星期是否属于所述每周任务指定执行的星期;若是,则将日期段赋值为当前日期;若否,则计算最近的下次执行日期并赋值给日期段;将设定的执行时间赋值给时间段,将所述日期段和时间段组合并赋值给下次执行时间。
当所述任务为每天任务时,所述根据任务的任务信息计算出下次执行时间具体为:判断当前时间是否在所述每天任务的起始时间和终止时间之间;若是,则将下次执行时间赋值为所述每天任务的起始时间;当判断出所述下次执行时间不为当前时间时,为所述下次执行时间增加第二时间间隔。
优选的,在所述获取任务的下次执行时间前,还包括:判断所述当前检查任务的状态;若所述任务的状态为有效,则执行所述计算下次执行时间的步骤。
本发明的时间计划调度模块和方法,由于所述时间计划调度模块作为一个独立的模块,方便需要时间计划调度功能的应用程序直接嵌入使用;通过提供自动化任务接口,使应用程序按照该自动化任务接口的格式编写的任务程序都能够使用该时间计划调度模块进行统一管理和触发;而且能够保证使用该模块的应用程序提供的时间计划调度功能的质量,提高了应用程序整体开发的效率;所述时间计划调度模块在不同操作系统上的复用性好;另外,应用程序可以根据需要方便的自定义增加任务类型。
附图说明
图1是本发明时间计划调度模块实施例的结构示意图;
图2是本发明时间计划调度模块实施例中的计划管理单元的结构示意图;
图3是本发明时间计划调度模块实施例检查任务列表的一个具体实施例的流程示意图;
图4是本发明时间计划调度方法实施例的流程示意图;
图5是本发明时间计划调度方法实施例中一次性任务存储单元计算下次执行时间的流程示意图;
图6是本发明时间计划调度方法实施例中重复任务存储单元计算下次执行时间的流程示意图;
图7是本发明时间计划调度方法实施例中每周任务存储单元计算下次执行时间的流程示意图;
图8是本发明时间计划调度方法实施例中每天任务存储单元计算下次执行时间的流程示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明实施例作进一步详细的说明。
本发明提供了一种时间计划调度模块的实施例,所述时间计划调度模块为所在应用程序中的独立模块。所述时间计划调度模块在程序开发过程中嵌入程序本身,是面向应用程序的,不同于现有的面向最终程序用户的时间计划调度程序。本发明时间计划调度方法适用于.Net开发平台开发出的应用程序。如图1所示,所述时间计划调度模块1包括:
计划管理单元10,用于周期性检查是否到达其所存储的任务列表中各任务的下次执行时间;若是,则发出执行所述任务的指令。
计划管理单元10存储并管理任务列表,任务列表中包括所述时间计划调度模块1嵌入的应用程序的所有任务,每个任务包括任务标识、任务类型、执行时间信息、任务程序标识等信息。
自动化任务接口20,用于在接收到所述指令后,调用所述任务的任务程序。
所述任务程序位于所述应用程序中,并且满足所述自动化任务接口20的格式。所述自动化任务接口20提供了任务程序的规范格式,应用程序若要使用所述时间计划调度模块1,就需要按照该规范格式编写任务程序,按照该规范格式编写的任务程序都可以被时间计划调度模块1管理和执行。该规范格式与现有的写成系统级的应用程序所要执行的规范格式相比要简化很多,所需付出的代价小。所述任务的任务程序标识可以携带在所述计划管理单元10发出的指令中,所述任务程序标识可以为任务程序名称、任务程序编号等。
自动化任务接口20IAutomation是提供给使用本发明的应用程序所实现的自动化任务接口,主要包括Guid、名称Name、参数Parameter和Do方法。其中,要求Do方法不能阻塞当前线程,若阻塞则需要采用其他线程,比如采用用户程序中的其他线程来实现。
至少一个存储单元30,用于按照任务类型分类存储所述任务列表中各任务的任务信息,在所述计划管理单元10获取某个任务的下次执行时间时,根据所述某个任务的任务信息计算出下次执行时间并提供给所述计划管理单元10。
所述任务列表中管理的是各个任务,至于任务的详细任务信息存储在存储单元30中。所述任务信息可以包括任务标识、任务类型、执行时间信息、任务程序标识等。所述任务类型可以包括:重复任务,即给定开始时间、结束时间与执行周期的计划任务,该任务从开始时间按设置的执行周期被时间计划调度模块1予以执行;一次性任务,即对时间的设定是通过一个时间点完成的,在该时间点到达时,该任务被执行;每周任务,即时间设置是按一星期中不同天中的固定时间来执行相关任务的,比如每周二和周四执行某任务;每天任务,即设定一天当中的固定时间以及间隔周期,该任务每天在设定的时间和间隔周期后得到执行。所述任务类型可以根据应用程序的实际需要,自定义任务类型并添加。所述执行时间信息根据不同的任务类型而有所差别,例如对于一次性任务,所述执行时间信息包括执行时间,而对于重复任务,所述执行时间信息包括开始时间、结束时间和第一时间间隔等。
存储单元30用于按照任务类型分类存储所述任务列表中各任务的任务信息,以及当计划管理单元10获取某个任务的下次执行时间时,负责计算下次执行时间并提供给计划管理单元10。
所述存储单元30可以使用内存中的存储空间,所述任务信息也可以同时存储在硬盘等存储介质中,以避免操作系统意外掉电导致内存中的任务信息丢失。
所述存储单元30包括:
存储子单元,用于存储所述任务列表中所述任务的任务信息;
计算子单元,用于在所述计划管理单元获取某个任务的下次执行时间时,根据所述任务的任务信息计算出下次执行时间并提供给所述计划管理单元。
所述任务类型可以包括:一次性任务、重复任务、每周任务或每天任务等。具体的,多个所述存储单元30可以包括一次性任务存储单元、重复任务存储单元、每周任务存储单元和每天任务存储单元,分别用于存储一次性任务、重复任务、每周任务和每天任务的任务信息。
当所述任务为一次性任务时,所述存储单元30为一次性任务存储单元,所述一次性任务存储单元包括:
第一存储子单元,用于存储所述任务列表中一次性任务的任务信息;
第一计算子单元,用于在所述计划管理单元10获取某个一次性任务的下次执行时间时,根据所述一次性任务的任务信息计算出下次执行时间并提供给所述计划管理单元10。
一次性任务存储单元在当前检查的任务为一次性任务时,将下次执行时间赋值为所述一次性任务的执行时间,并把所述下次执行时间提供给所述计划管理单元10。
当所述任务为重复任务时,所述存储单元30为重复任务存储单元,所述重复任务存储单元包括:
第二存储子单元,用于存储所述任务列表中重复任务的任务信息;
第二计算子单元,用于在所述计划管理单元10获取某个重复任务的下次执行时间时,根据所述重复任务的任务信息计算出下次执行时间并提供给所述计划管理单元10。
重复任务存储单元在当前检查的任务为重复任务时,判断当前时间是否在所述重复任务的开始时间和结束时间之间;若是,则将下次执行时间赋值为所述重复任务的开始时间并提供给所述计划管理单元10;当所述计划管理单元10判断出所述下次执行时间不为当前时间时,为所述下次执行时间增加第一时间间隔,并将增加后的下次执行时间重新提供给所述计划管理单元10。
所谓下次执行时间为当前时间是指:所述下次执行时间不大于当前时间,且所述下次执行时间和当前时间的差值满足设定的偏差范围。
当所述任务为每周任务时,所述存储单元30为每周任务存储单元,所述每周任务存储单元包括:
第三存储子单元,用于存储所述任务列表中每周任务的任务信息;
第三计算子单元,用于在所述计划管理单元10获取某个每周任务的下次执行时间时,根据所述每周任务的任务信息计算出下次执行时间并提供给所述计划管理单元10。
每周任务单元在当前检查的任务为每周任务时,判断当前时间的星期是否属于所述每周任务指定执行的星期,若是,则将日期段赋值为当前日期,若否,则计算最近的下次执行日期并赋值给日期段;将设定的执行时间赋值给时间段,将所述日期段和时间段组合并赋值给下次执行时间,并把所述下次执行时间提供给所述计划管理单元10。
当所述任务为每天任务时,所述存储单元30为每天任务存储单元,所述每天任务存储单元包括:
第四存储子单元,用于存储所述任务列表中每天任务的任务信息;
第四计算子单元,用于在所述计划管理单元10获取某个每天任务的下次执行时间时,根据所述每天任务的任务信息计算出下次执行时间并提供给所述计划管理单元10。
每天任务存储单元在当前检查的任务为每天任务时,判断当前时间是否在所述每天任务的起始时间和终止时间之间;若是,则将下次执行时间赋值为所述任务的起始时间并提供给所述计划管理单元10;当所述计划管理单元10判断出所述下次执行时间不为当前时间时,为所述下次执行时间增加第二时间间隔,并将增加后的下次执行时间重新提供给所述计划管理单元10。
计划管理单元10中的ProcessCheckTasks方法为检测是否到达遍历检查任务表时间的核心方法,该方法在独立的线程(可以使用线程沲优化)中执行,每经过设定的CheckTaskPeriodTimeSpanTicks时间周期,对任务列表中的所有任务进行时间检查,当发现有满足时间条件的任务时,发出执行该任务的指令。
如图2所示,所述计划管理单元10可以包括:检测子单元101、获取子单元102、判断子单元103、指令发送子单元104。
检测子单元101,用于检测是否到达所述周期性检查的时间;
获取子单元102,用于在所述检测子单元101检测到达所述周期性检查的时间时,从与所述任务列表中当前被检查任务的任务类型对应的存储单元30获取所述当前被检查任务的下次执行时间;
判断子单元103,用于判断所述下次执行时间是否为当前时间;
指令发送子单元104,用于在所述判断子单元103的判断结果为是时发出执行所述当前被检查任务的指令。
所述计划管理单元10还用于:接收所在应用程序发送过来的任务信息,根据所述任务信息更新存储的任务列表。当计划管理单元10接收到应用程序发送的任务信息后,会根据所述任务信息更新存储的任务列表;所述更新为:通过所述任务信息,计划管理单元10对存储的任务列表执行新增任务、删除已有的某个任务或修改已有任务等操作。所述任务列表可以包括多个任务,每个任务包括任务标识、任务类型、执行时间信息、任务程序标识等信息。
应用程序将用户设定的参数处理成时间计划调度模块1能够识别的任务信息并发送给时间计划调度模块1。应用程序通过发送任务信息可以实现对计划任务的增加、删除、修改等操作。
优选的,所述时间计划调度模块还包括计划任务接口40,用于从所述存储单元30获取所述计划管理单元10需要的所述下次执行时间并返回给所述计划管理单元10,将所述计划管理单元10发出的所述指令发送给自动化任务接口20。
计划任务接口40主要包括:NextExecuteTime方法用于判断计划任务的下次执行时间,也即本发明的时间判断技术实现的抽象载体;Automation用于不同的应用程序根据自己需要而实现的自动化任务;ScheduledTaskType则是计划任务的类型参数。计划任务分为两部分,一部分是本发明所涉及的时间计划调度,另一部分则是不同的应用程序所要执行的任务IAutomation。
通过所述计划任务接口40,使得计划管理单元10可以通过计划任务接口40来接收所需的存储单元30上的任务信息和发送执行某个任务的指令。所述计划管理单元10上存储的是计划任务接口40格式的信息,计划管理单元10需要的任务信息通过计划任务接口40实现最终获取,并且发送执行任务的指令也是通过计划任务接口40发送给自动化任务接口20。当新增任务类型时,整个时间计划调度模块1增加一个新任务类型的存储单元30即可。通过计划任务接口40可以很容易的实现任务类型的扩展。
优选的,所述计划管理单元10还用于:在所述获取任务的下次执行时间前,判断所述当前检查任务的状态。当所述任务的状态为有效时,再执行获取该任务的下次执行时间的步骤。
所述时间计划调度模块1还可以包括计划任务抽象类单元50,用于实现所述计划任务接口40,执行不同类型任务的公共操作,如对任务的获取操作。
下面通过一个具体的例子对上述时间计划调度模块实施例的工作流程进行详细描述。请结合图3,以遍历检查任务列表时检查的任务为重复任务为例。
S601,计划管理单元10接收应用程序发送的任务信息,根据所述任务信息更新存储的任务列表。
S602,计划管理单元10检测是否到达遍历检查所述任务列表的时间,若是,则进入步骤S603,若否,则继续检测;
S603,计划管理单元10按照任务列表中的任务类型(重复任务)通过计划任务接口40向重复任务存储单元获取所述重复任务的下次执行时间;
S604,计划管理单元10判断下次执行时间是否当前时间;若是,执行步骤S606,若否,执行步骤S605;
S605,重复任务存储单元为下次执行时间增加第一时间间隔,并提供给计划管理单元10,进入步骤S604;
S606,计划管理单元10通过自动化任务接口20执行所述重复任务;
S607,计划管理单元10检查任务列表中的下一个任务。
本实施例的时间计划调度模块作为一个独立的模块,方便需要时间计划调度功能的应用程序直接嵌入使用;通过提供自动化任务接口,使应用程序按照该自动化任务接口的格式编写的任务程序都能够使用该时间计划调度模块进行统一管理和触发;由于该时间计划调度模块经过多次调试和检测,能够保证使用该模块的应用程序提供的时间计划调度功能的质量,提高了应用程序整体开发的效率;而且,在支持.Net开发平台的操作系统中,所述时间计划调度模块都可以直接使用,同时,使用该时间计划调度模块的应用程序中按照所述时间计划调度模块的自动化任务接口格式编写的任务程序都不用改写,因此所述时间计划调度模块在不同操作系统上的复用性好;另外,应用程序可以根据需要自定义任务类型,在所述时间计划调度模块中增加新任务类型的存储单元即可,简单方便。
本发明还提供了一种时间计划调度方法的实施例,所述方法为本发明时间计划调度模块的时间计划调度方法。如图4所示,所述方法包括:
S101,当检测到达周期性检查存储的任务列表的时间时,从与当前检查任务的任务类型对应的存储单元获取所述任务的下次执行时间。
当计划管理单元检测到达周期性检查存储的任务列表的时间时,会从与当前检查任务的任务类型对应的存储单元获取所述任务的下次执行时间。
所述从与当前检查任务的任务类型对应的存储单元获取所述任务的下次执行时间具体为:计划管理单元向与所述任务的任务类型对应的存储单元查询所述任务的下次执行时间;所述存储单元根据所述任务的任务信息计算出下次执行时间并提供给所述计划管理单元。
S102,判断所述下次执行时间是否为当前时间;若所述判断结果为是,则通过自动化任务接口调用所述任务的任务程序。
所述任务程序位于所述计划调度模块所在的应用程序中,并且满足所述自动化任务接口的格式。
计划管理单元根据获得的下次执行时间,判断所述下次执行时间是否为当前时间。判断所述下次执行时间是否为当前时间具体为:判断所述下次执行时间是否大于当前时间,若否,则判断所述下次执行时间与当前时间的差值是否满足设定的偏差范围。
优选的,在所述计划管理单元获取任务的下次执行时间前,还包括:所述计划管理单元判断所述当前检查任务的状态;若所述任务的状态为有效,则执行所述存储单元计算下次执行时间的步骤,若任务状态为无效,则结束对该任务的检查。
优选的,所述方法还包括:接收所在应用程序发送的任务信息,根据所述任务信息更新存储的所述任务列表。
所述接收应用程序发送任务信息的步骤与所述检测和判断时间的步骤相互独立,不限制执行的先后顺序。
当计划管理单元接收到所在应用程序发送的任务信息后,会根据所述任务信息更新存储的任务列表;所述更新为:通过所述任务信息,计划管理单元对存储的任务列表执行新增任务、删除已有的某个任务或修改已有任务等操作。所述任务列表可以包括多个任务,每个任务包括任务标识、任务类型、执行时间信息、任务程序标识等信息。所述任务的任务类型可以为重复任务、一次性任务、每天任务或每周任务等。
A)当所述任务为一次性任务时,所述存储单元为一次性任务存储单元,所述一次性任务存储单元根据所述一次性任务的任务信息计算出下次执行时间具体为:将下次执行时间赋值为所述一次性任务的执行时间。
参见图5,所述一次性任务存储单元判断所述一次性任务的下次执行时间是否为当前时间的具体流程为:
S201,将下次执行时间m_nextExecuteTime赋值为所述一次性任务的执行时间m_executeTime;
S202,判断所述下次执行时间m_nextExecuteTime是否大于当前时间;若否,则进入步骤S203,若是,则结束该判断流程;
S203判断所述下次执行时间m_executeTime和当前时间的差值是否满足设定的偏差范围。
在判断出该任务的下次执行时间为当前时间后,还包括步骤S204:执行所述一次性任务。
B)当所述任务为重复任务时,所述存储单元为重复任务存储单元,所述重复任务存储单元根据任务的任务信息计算出下次执行时间具体为:判断当前时间是否在所述重复任务的开始时间和结束时间之间;若是,则将下次执行时间赋值为所述重复任务的开始时间;当判断出所述下次执行时间不为当前时间时,为所述下次执行时间增加第一时间间隔。
参见图6,所述重复任务存储单元判断所述重复任务的下次执行时间是否为当前时间的具体流程为:
S301,判断当前时间是否在重复任务的开始时间m_beginTime和结束时间m_finishTime之间;若是,则进入步骤S302,若否,则结束该判断流程;
S302,将下次执行时间m_nextExecuteTime赋值为所述重复任务的开始时间m_beginTime;
S303,判断所述下次执行时间m_nextExecuteTime是否大于当前时间;若否,则进入步骤S304,若是,则结束该判断流程;
S304,判断所述下次执行时间m_nextExecuteTime和当前时间的差值是否满足设定的偏差范围;若否,则进入步骤S306;
S306,为所述下次执行时间增加第一时间间隔m_interval,并进入步骤S303。
在判断出该任务的下次执行时间为当前时间后,还包括步骤S305:执行所述重复任务。
判断重复任务时,是从任务的开始时间递增第一时间间隔m_interval来找到该任务下次执行的时间。
C)当所述任务为每周任务时,所述存储模块为每周任务存储单元,所述每周任务存储单元根据任务的任务信息计算出下次执行时间具体为:判断当前时间的星期是否属于所述每周任务指定执行的星期;若是,则将日期段赋值为当前日期;若否,则计算最近的下次执行日期并赋值给日期段;将设定的执行时间赋值给时间段,将所述日期段和时间段组合并赋值给下次执行时间。
参见图7,所述每周任务存储单元判断所述每周任务的下次执行时间是否为当前时间的具体流程为:
S401,判断当前时间的星期是否属于所述每周任务指定执行的星期;若是,则进入步骤S402,若否,则进入步骤S403;
S402,将日期段m_weekDay赋值为当前日期,进入步骤S404;
S403,计算最近的下次执行日期并赋值给日期段m_weekDay,进入步骤S404;
S404,将设定的执行时间赋值给时间段m_timeOfDay,将所述日期段和时间段组合并赋值给下次执行时间m_nextExecuteTime;
S405,判断所述下次执行时间m_nextExecuteTime是否大于当前时间;若否,则进入步骤S406,若是,则结束该判断流程;
S406,判断所述下次执行时间m_nextExecuteTime和当前时间的差值是否满足设定的偏差范围。
在判断出该任务的下次执行时间为当前时间后,还包括步骤S407:执行所述每周任务。
D)当所述任务为每天任务时,所述存储单元为每天任务存储单元,所述每天任务存储单元根据任务的任务信息计算出下次执行时间具体为:判断当前时间是否在所述每天任务的起始时间和终止时间之间;若是,则将下次执行时间赋值为所述每天任务的起始时间;当判断出所述下次执行时间不为当前时间时,为所述下次执行时间增加第二时间间隔。
参见图8,所述每天任务存储单元判断所述重复任务的下次执行时间是否为当前时间的具体流程为:
S501,判断当前时间是否在所述每天任务的起始时间m_startTime和终止时间m_endTime之间;若是,则进入步骤S502,若否,则结束该判断流程;
S502,将下次执行时间m_nextExecuteTime赋值为所述任务的起始时间m_startTime;
S503,判断所述下次执行时间m_nextExecuteTime是否大于当前时间;若否,则进入步骤S504,若是,则结束该判断流程;
S504,判断所述下次执行时间m_nextExecuteTime和当前时间的差值是否满足设定的偏差范围;若否,则进入步骤S506;
S506,为所述下次执行时间增加第二时间间隔m_interval,并进入步骤S503。
在判断出该任务的下次执行时间为当前时间后,还包括步骤S505:执行所述每天任务。
判断每天任务时,是从任务的起始时间递增第二时间间隔m_interval来找到该任务下次执行的时间。
本实施例的时间计划调度方法,通过本发明的独立的时间计划调度模块内部各单元之间的协作,能够实现对计划任务的时间计划调度;所述时间计划调度模块能够使需要时间计划调度功能的应用程序直接将该模块嵌入使用;通过该模块提供自动化任务接口,使应用程序按照该自动化任务接口的格式编写的任务程序都能够使用该时间计划调度模块进行统一管理和触发;由于该时间计划调度模块经过多次调试和检测,能够保证使用该模块的应用程序提供的时间计划调度功能的质量,提高了应用程序整体开发的效率;而且,在支持.Net开发平台的操作系统中,所述时间计划调度模块都可以直接使用,同时,使用该时间计划调度模块的应用程序中按照所述时间计划调度模块的自动化任务接口格式编写的任务程序都不用改写,因此所述时间计划调度模块在不同操作系统上的复用性好;另外,应用程序可以根据需要自定义任务类型,在所述时间计划调度模块中增加新任务类型的存储单元即可,简单方便。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (13)
1.一种时间计划调度模块,其特征在于,所述时间计划调度模块包括:
计划管理单元,用于周期性检查是否到达其所存储的任务列表中各任务的下次执行时间;若是,则发出执行所述任务的指令;
自动化任务接口,用于在接收到所述指令后,调用所述任务的任务程序;所述任务程序满足所述自动化任务接口的格式;
至少一个存储单元,用于按照任务类型分类存储所述各任务的任务信息,在所述计划管理单元获取某个任务的下次执行时间时,根据所述某个任务的任务信息计算出下次执行时间并提供给所述计划管理单元。
2.如权利要求1所述的时间计划调度模块,其特征在于,所述计划管理单元还用于:接收所在应用程序发送的任务信息,根据所述任务信息更新存储的任务列表。
3.如权利要求1所述的时间计划调度模块,其特征在于,所述计划管理单元包括:
检测子单元,用于检测是否到达所述周期性检查的时间;
获取子单元,用于在所述检测子单元检测到达所述周期性检查的时间时,从与所述任务列表中当前被检查任务的任务类型对应的存储单元获取所述当前被检查任务的下次执行时间;
判断子单元,用于判断所述下次执行时间是否为当前时间;
指令发送子单元,用于在所述判断子单元的判断结果为是时,发出执行所述当前被检查任务的指令。
4.如权利要求1所述的时间计划调度模块,其特征在于,所述任务类型包括:一次性任务、重复任务、每周任务或每天任务;所述存储单元包括:
存储子单元,用于存储所述任务列表中所述任务的任务信息;
计算子单元,用于在所述计划管理单元获取某个任务的下次执行时间时,根据所述任务的任务信息计算出下次执行时间并提供给所述计划管理单元。
5.如权利要求1-4任一项所述的时间计划调度模块,其特征在于,所述时间计划调度模块还包括计划任务接口,用于从所述存储单元获取所述计划管理单元需要的所述下次执行时间并返回给所述计划管理单元,将所述计划管理单元发出的所述指令发送给自动化任务接口。
6.一种时间计划调度方法,其特征在于,所述方法包括:
当检测到达周期性检查存储的任务列表的时间时,从与当前检查任务的任务类型对应的存储单元获取所述任务的下次执行时间;
判断所述下次执行时间是否为当前时间;若所述判断结果为是,则通过自动化任务接口调用所述任务的任务程序;
所述任务程序满足所述自动化任务接口的格式。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
接收所在应用程序发送的任务信息,根据所述任务信息更新存储的所述任务列表。
8.如权利要求6所述的方法,其特征在于,所述从与当前检查任务的任务类型对应的存储单元获取所述任务的下次执行时间具体为:
计划管理单元向与所述任务的任务类型对应的存储单元查询所述任务的下次执行时间;
所述存储单元根据所述任务的任务信息计算出下次执行时间并提供给所述计划管理单元。
9.如权利要求8所述的方法,其特征在于,当所述任务为一次性任务时,所述根据任务的任务信息计算出下次执行时间具体为:
将下次执行时间赋值为所述一次性任务的执行时间。
10.如权利要求8所述的方法,其特征在于,当所述任务为重复任务时,所述根据任务的任务信息计算出下次执行时间具体为:
判断当前时间是否在所述重复任务的开始时间和结束时间之间;若是,则
将下次执行时间赋值为所述重复任务的开始时间;
当判断出所述下次执行时间不为当前时间时,为所述下次执行时间增加第一时间间隔。
11.如权利要求8所述的方法,其特征在于,当所述任务为每周任务时,所述根据任务的任务信息计算出下次执行时间具体为:
判断当前时间的星期是否属于所述每周任务指定执行的星期;若是,则将日期段赋值为当前日期;若否,则计算最近的下次执行日期并赋值给日期段;
将设定的执行时间赋值给时间段,将所述日期段和时间段组合并赋值给下次执行时间。
12.如权利要求8所述的方法,其特征在于,当所述任务为每天任务时,所述根据任务的任务信息计算出下次执行时间具体为:
判断当前时间是否在所述每天任务的起始时间和终止时间之间;若是,则
将下次执行时间赋值为所述每天任务的起始时间;
当判断出所述下次执行时间不为当前时间时,为所述下次执行时间增加第二时间间隔。
13.如权利要求6-12任一项所述的方法,其特征在于,在所述获取任务的下次执行时间前,还包括:判断所述当前检查任务的状态;若所述任务的状态为有效,则执行所述计算下次执行时间的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910085019XA CN101901164B (zh) | 2009-05-27 | 2009-05-27 | 时间计划调度模块和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910085019XA CN101901164B (zh) | 2009-05-27 | 2009-05-27 | 时间计划调度模块和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101901164A true CN101901164A (zh) | 2010-12-01 |
CN101901164B CN101901164B (zh) | 2012-07-04 |
Family
ID=43226716
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910085019XA Active CN101901164B (zh) | 2009-05-27 | 2009-05-27 | 时间计划调度模块和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101901164B (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567829A (zh) * | 2010-12-22 | 2012-07-11 | 海洋王照明科技股份有限公司 | 一种任务管理的方法及系统 |
CN103049321A (zh) * | 2012-12-27 | 2013-04-17 | 中国建设银行股份有限公司 | 智能化任务处理装置以及智能任务处理方法 |
CN103197969A (zh) * | 2013-03-27 | 2013-07-10 | 百度在线网络技术(北京)有限公司 | 一种分布式定时任务控制装置及方法 |
CN105099741A (zh) * | 2014-05-19 | 2015-11-25 | 中兴通讯股份有限公司 | 北向接口自动下发业务的方法及装置 |
CN105426257A (zh) * | 2015-12-25 | 2016-03-23 | 北京奇虎科技有限公司 | 任务的执行方法及装置 |
CN105630585A (zh) * | 2015-12-21 | 2016-06-01 | 北京奇虎科技有限公司 | 周期性任务的处理方法及装置 |
CN105824692A (zh) * | 2015-01-07 | 2016-08-03 | 中国移动通信集团湖南有限公司 | 一种系统调度方法和装置 |
CN103744730B (zh) * | 2014-01-27 | 2017-01-11 | 北京京东尚科信息技术有限公司 | 一种任务调度方法和装置 |
CN106354557A (zh) * | 2016-08-29 | 2017-01-25 | 佛山市美的清湖净水设备有限公司 | 基于时间片任务调度系统的家电及其控制方法、控制器 |
CN106874079A (zh) * | 2016-06-08 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 一种任务执行的方法及装置 |
CN107441587A (zh) * | 2016-05-31 | 2017-12-08 | 上海微创生命科技有限公司 | 输液泵 |
CN107545053A (zh) * | 2017-08-24 | 2018-01-05 | 郑州云海信息技术有限公司 | 一种集群系统缓存查询方法及设备 |
CN108279971A (zh) * | 2018-01-26 | 2018-07-13 | 中国银行股份有限公司 | 一种定时执行任务的方法及装置 |
CN109298925A (zh) * | 2018-09-27 | 2019-02-01 | 郑州云海信息技术有限公司 | 一种周期任务的定时启动方法、系统及相关装置 |
CN110456737A (zh) * | 2019-04-30 | 2019-11-15 | 北京云迹科技有限公司 | 用于机器人的任务自动部署方法及装置 |
CN112015526A (zh) * | 2019-05-30 | 2020-12-01 | 杭州海康威视数字技术股份有限公司 | 一种算法加载方法、装置及电子设备 |
CN113064704A (zh) * | 2021-03-18 | 2021-07-02 | 北京沃东天骏信息技术有限公司 | 任务处理方法、装置、电子设备和计算机可读介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020035580A (ko) * | 2000-06-27 | 2002-05-11 | 요트.게.아. 롤페즈 | 스케줄을 결정하는 방법, 스케줄러 및, 시스템 |
JP4074296B2 (ja) * | 2005-03-25 | 2008-04-09 | 株式会社東芝 | スケジューリング可能性判定方法、リアルタイムシステム及びプログラム |
CN1862575B (zh) * | 2005-08-19 | 2011-08-03 | 华为技术有限公司 | 计划调度定时任务的方法 |
-
2009
- 2009-05-27 CN CN200910085019XA patent/CN101901164B/zh active Active
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567829A (zh) * | 2010-12-22 | 2012-07-11 | 海洋王照明科技股份有限公司 | 一种任务管理的方法及系统 |
CN103049321A (zh) * | 2012-12-27 | 2013-04-17 | 中国建设银行股份有限公司 | 智能化任务处理装置以及智能任务处理方法 |
CN103049321B (zh) * | 2012-12-27 | 2015-12-02 | 中国建设银行股份有限公司 | 智能化任务处理装置以及智能任务处理方法 |
CN103197969B (zh) * | 2013-03-27 | 2017-02-08 | 百度在线网络技术(北京)有限公司 | 一种分布式定时任务控制装置及方法 |
CN103197969A (zh) * | 2013-03-27 | 2013-07-10 | 百度在线网络技术(北京)有限公司 | 一种分布式定时任务控制装置及方法 |
CN103744730B (zh) * | 2014-01-27 | 2017-01-11 | 北京京东尚科信息技术有限公司 | 一种任务调度方法和装置 |
CN105099741A (zh) * | 2014-05-19 | 2015-11-25 | 中兴通讯股份有限公司 | 北向接口自动下发业务的方法及装置 |
CN105824692A (zh) * | 2015-01-07 | 2016-08-03 | 中国移动通信集团湖南有限公司 | 一种系统调度方法和装置 |
CN105824692B (zh) * | 2015-01-07 | 2019-06-14 | 中国移动通信集团湖南有限公司 | 一种系统调度方法和装置 |
CN105630585A (zh) * | 2015-12-21 | 2016-06-01 | 北京奇虎科技有限公司 | 周期性任务的处理方法及装置 |
CN105426257A (zh) * | 2015-12-25 | 2016-03-23 | 北京奇虎科技有限公司 | 任务的执行方法及装置 |
CN105426257B (zh) * | 2015-12-25 | 2019-06-07 | 北京奇虎科技有限公司 | 任务的执行方法及装置 |
CN107441587A (zh) * | 2016-05-31 | 2017-12-08 | 上海微创生命科技有限公司 | 输液泵 |
CN106874079A (zh) * | 2016-06-08 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 一种任务执行的方法及装置 |
CN106354557A (zh) * | 2016-08-29 | 2017-01-25 | 佛山市美的清湖净水设备有限公司 | 基于时间片任务调度系统的家电及其控制方法、控制器 |
CN107545053A (zh) * | 2017-08-24 | 2018-01-05 | 郑州云海信息技术有限公司 | 一种集群系统缓存查询方法及设备 |
CN107545053B (zh) * | 2017-08-24 | 2021-01-22 | 苏州浪潮智能科技有限公司 | 一种集群系统缓存查询方法及设备 |
CN108279971A (zh) * | 2018-01-26 | 2018-07-13 | 中国银行股份有限公司 | 一种定时执行任务的方法及装置 |
CN109298925A (zh) * | 2018-09-27 | 2019-02-01 | 郑州云海信息技术有限公司 | 一种周期任务的定时启动方法、系统及相关装置 |
CN109298925B (zh) * | 2018-09-27 | 2021-10-15 | 郑州云海信息技术有限公司 | 一种周期任务的定时启动方法、系统及相关装置 |
CN110456737A (zh) * | 2019-04-30 | 2019-11-15 | 北京云迹科技有限公司 | 用于机器人的任务自动部署方法及装置 |
CN112015526A (zh) * | 2019-05-30 | 2020-12-01 | 杭州海康威视数字技术股份有限公司 | 一种算法加载方法、装置及电子设备 |
CN113064704A (zh) * | 2021-03-18 | 2021-07-02 | 北京沃东天骏信息技术有限公司 | 任务处理方法、装置、电子设备和计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101901164B (zh) | 2012-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101901164B (zh) | 时间计划调度模块和方法 | |
CN101416157A (zh) | 用于对工作流中的延续建模的框架 | |
CN101268620B (zh) | 用于管理设备管理对象的设备管理系统和方法 | |
US8195309B2 (en) | System for scheduling using an external calendaring service | |
US6789101B2 (en) | Automation system uses resource manager and resource agents to automatically start and stop programs in a computer network | |
CN101218557A (zh) | 用于存储器迁移的系统和方法 | |
CN103092645B (zh) | 一种基于微内核技术的地理空间信息应用系统及其实现方法 | |
CN101004681A (zh) | 嵌入式系统动态补丁长跳转的实现方法 | |
CN108491254A (zh) | 一种数据仓库的调度方法及装置 | |
CN102508717B (zh) | 一种应用于多核处理器的内存调度方法及装置 | |
CN103377101A (zh) | 一种测试系统和测试方法 | |
CN101770433A (zh) | 通用驱动方法和通用驱动设备 | |
CN105051681A (zh) | 利用平台层协调应用程序部署 | |
CN101753619B (zh) | 用于扩展服务模型的方法和系统 | |
CN102487522A (zh) | 终端设备的管理方法和网关设备 | |
CN102932200A (zh) | 一种信息流节点处理时限的监控方法及装置 | |
CN102511041A (zh) | 将因果律归因于程序执行能力修改和动态修改程序执行能力 | |
KR100671146B1 (ko) | 통합 생산관리 시스템 인터페이스 장치 | |
US20070028241A1 (en) | Scheduled job execution management | |
US10061612B1 (en) | Job scheduler for remote maintenance of servers and workstations | |
CN101349994B (zh) | 一种定位程序错误的方法、系统及装置 | |
Martorell et al. | Partial Updates of AUTOSAR Embedded Applications--To What Extent? | |
WO2013073029A1 (ja) | 情報提供装置、方法、およびプログラム | |
JP2003242313A (ja) | 業務進捗制御装置及びその方法と、業務進捗制御プログラム及びそのプログラムを記録した記録媒体 | |
US8332812B2 (en) | Method of exchanging data and control methods between software components and re-useable software components |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |