CN107797856B - 基于windows服务的计划任务管控方法、装置及存储介质 - Google Patents

基于windows服务的计划任务管控方法、装置及存储介质 Download PDF

Info

Publication number
CN107797856B
CN107797856B CN201710889217.6A CN201710889217A CN107797856B CN 107797856 B CN107797856 B CN 107797856B CN 201710889217 A CN201710889217 A CN 201710889217A CN 107797856 B CN107797856 B CN 107797856B
Authority
CN
China
Prior art keywords
time
date
execution
current
thread
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.)
Active
Application number
CN201710889217.6A
Other languages
English (en)
Other versions
CN107797856A (zh
Inventor
陈文亮
李亚楠
张鑫
袁星星
许金韬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TIANJIN TONGYANG TECHNOLOGY DEVELOPMENT CO LTD
Original Assignee
TIANJIN TONGYANG TECHNOLOGY DEVELOPMENT CO LTD
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by TIANJIN TONGYANG TECHNOLOGY DEVELOPMENT CO LTD filed Critical TIANJIN TONGYANG TECHNOLOGY DEVELOPMENT CO LTD
Priority to CN201710889217.6A priority Critical patent/CN107797856B/zh
Publication of CN107797856A publication Critical patent/CN107797856A/zh
Application granted granted Critical
Publication of CN107797856B publication Critical patent/CN107797856B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/481Exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

Abstract

一种基于windows服务的计划任务管控方法、装置及存储介质,所述计划任务管控方法为待执行的计划任务以相应的委托方法建立线程,并通过线程阻塞的方式执行线程,并进一步可以将计划任务配置为多个作业,分别创建相应的线程,利用松耦合的线程池管理方式管理线程环境,可以极大地提高重复性或复杂性工作的执行效率。

Description

基于windows服务的计划任务管控方法、装置及存储介质
技术领域
本发明涉及任务的自动处理,更具体涉及一种基于windows服务的计划任务管控方法、装置及计算机可读存储介质。
背景技术
在实际的应用场景中,不是每一个作业要求立即被执行,所以作业可以被安排在将来的某个时候执行。
比如说,一个系统管理员每天晚上可能有一份要执行的任务列表:
·21:00PM:运行信息文件的上载任务
·22:30PM:运行数据报表生成
·23:59PM:进行数据库的备份
那么系统管理员每天晚上只需要做三步操作,但是每步的间隔过长,这无疑就浪费了人力。由此自动化的处理方式即计划任务就应运而生。计划任务通常是指运行一个批量作业的任务,也可称之为批处理。这种批处理一般都是放在后台自动运行,并且不需要与用户交互的。
利用机器来代替人工,节约人工成本,解放人工的需求度越来越高。尤其随着任务的规模与复杂性在持续的上扬,计划任务就显得更为重要了。
当前的应用系统均有计划任务的需求,但多是由系统内部就具体业务单独处理,执行频率可以根据实际需要进行控制,但是与业务的耦合度过高,造成大量的重复操作,浪费人工成本,且无法对所有的计划任务做出全局的管控。
部分是由windows任务计划进行处理,这样就需要开发多个应用程序来供windows任务计划调用,也增加了开发成本,并且无法对各应用程序统一管理。另外,执行频率低,且频率无法定义到秒,无法进行高频操作。
另外一部分是由数据库自身的定时作业处理,这样仅能对数据库内部作业进行计划管理,应有存在局限性。
综上所述,需要操作简单,独立于业务之外(即不需要关心业务的具体流程),且能统一管控各类应用计划执行(适用于多种按时自动执行的任务)的实现方法。
发明内容
有鉴于此,本发明的主要目的在于提供一种基于windows服务的计划任务管控方法、装置及计算机可读存储介质,以期解决上述提及的技术问题中的至少之一。
为实现上述目的,本发明的技术方案如下:
作为本发明的一方面,提供一种基于windows服务的计划任务管控方法,包括以下步骤:
步骤1:为待执行的计划任务以相应的委托方法建立对应的线程,设定开始执行时间;
步骤2:获取系统当前时间,并计算当前时间与开始执行时间的时间间隔;
步骤3:基于定时器,将当前线程阻塞一定时间,时长为步骤2计算出的时间间隔;
步骤4:执行当前线程,并判断当前线程是否执行成功,若未成功执行,则抛出异常,记录错误日志,结束当前线程。
优选地,所述计划任务为周期性计划任务,所述计划任务管控方法还包括:
所述步骤1中还包括判断当前线程是否是周期性计划任务的步骤,如果是,则设定周期性计划任务的标志,以及采集其执行间隔;以及
在所述步骤4后还包括步骤5:当当前线程是周期性计划任务时,将当前线程阻塞所述周期性计划任务的执行间隔后返回步骤4。
优选地,所述步骤1中还包括设定结束时间的步骤;
所述步骤2中还包括对获取的当前时间与结束时间大小的判断:若当前时间小于结束时间,则计算当前时间与开始执行时间的时间间隔;若当前时间大于结束时间,则结束当前线程;
所述步骤4中在执行当前线程前,重新获取当前时间,并判断获取的当前时间与结束时间的大小:若当前时间小于结束时间,则执行当前线程;若当前时间大于或等于结束时间,则结束当前线程。
优选地,所述步骤2中时间间隔的计算包括以下步骤:
步骤21:根据开始执行时间和执行间隔,获取执行时间列表的步骤;
步骤22:将开始执行时间重新赋值为执行时间列表中位于当前时间之后且最接近当前时间的执行时间;
步骤23:计算当前之间与开始执行时间的间隔。
优选地,当所述周期性计划任务在不同日期下循环执行时,所述执行时间列表包括执行日期列表,以通过所述执行日期列表将开始执行时间的日期部分重新赋值为当前时间之后且最接近当前时间的执行日期。
优选地,所述执行日期列表的获取包括以下步骤:
步骤i:设定开始日期、结束日期、上次执行日期、返回条数和执行规则,所述执行规则为按照特定日期或特定间隔地循环执行,其中特定日期为每周、每月或每年内的固定日期;
步骤ii:根据设定的返回条数或执行规则判断是否为循环执行任务,若不是循环执行任务则输出空,结束当前执行日期列表的步骤;
步骤iii:获取当前日期,若当前日期小于开始日期,则将开始日期赋值为当前日期;若当前日期大于结束日期,则输出空,结束当前执行日期列表的步骤;
步骤iv:判断是否存在上次执行日期:若上次执行日期为空,则从开始日期起筛选符合执行规则的日期,直至大于返回条数或结束日期时输出日期列表;反之,则从上次执行日期起筛选符合执行规则的日期,直至大于返回条数或结束日期时输出日期列表。
优选地,将待执行的计划任务分为多个作业,并为每个作业以相应的委托方法建立对应的线程,利用松耦合的线程池管理方式管理线程环境,并为各所述线程分别配置不同的触发器,当一触发器触发后,由调度器实现相应线程的调度。
优选地,将所述计划任务和相应的时间配置持久化至数据库表中。
作为本发明的再一方面,提供一种基于windows服务计划任务管控的装置,包括存储器和处理器,所述存储器中存储有用于在所述处理器上运行的、执行如上所述的计划任务管控方法的计算机程序。
作为本发明的又一方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行如上所述的计划任务管控方法的计算机程序。
基于上述技术方案,本发明的有益效果在于:
1)任务定时自动执行可以极大提高重复性或复杂性工作的执行效率;
2)可以提高执行过程的准确性。人之所以称之为人,因为我们犯错误的频度远高于电脑。把一系列任务自动安置到一个作业中,然后再为这个作业创建一个调度器,到时这个作业就会自动执行了。相对于人的手工处理,我们可以减少大多数的出错机会;
3)统一管控便于掌握全局的任务执行情况;
4)将任务和时间的配置关系存入数据库,每个任务对应唯一的时间配置,可以支持持久化操作,便于追溯历史数据;
5)通过多线程控制可以支持多任务并发执行;
6)便于任何.net framework框架开发的应用引用,调用简单。
附图说明
图1为本发明一实施例的无结束时间的计划任务管控的方法流程图;
图2为本发明一实施例的带结束时间的计划任务管控的方法流程图;
图3为本发明一实施例的周循环执行时获取执行日期列表的方法流程图;
图4为本发明另一实施例的特定间隔循环执行时获取执行日期列表的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
本发明提供的基于windows服务的计划任务管控的方法,具体包括:首先创建新的Windows服务,根据需要的作业创建相应的委托方法,每个作业对应一个唯一的方法,使得方法更加符合作业的流程与要求。
本方法,以Windows服务的形式,在电脑后台自动运行,且不需要与用户进行交互。
在自动运行作业时,使用多线程的方法。对于每个方法,创建一个相应的线程,通过线程阻塞,将作业变成按时自动执行的作业,且根据需要可重复循环进行。各个线程间相互独立运行,互不影响。
用户根据需求个性化配置时间间隔及起始时间、结束时间来调度指定的任务。实现了作业和触发器的多对多关系,把多个作业与不同的触发器进行关联,提高了作业的复用性。并设置持久化机制,可将时间配置与相关任务持久化至数据库表中,每个任务一条记录,对应唯一一个开始执行时间、结束时间、执行间隔,那么每到开始执行时间则会自动执行相应的任务,执行完成后更新开始执行时间为下一次执行时间,便于整体管理和控制。
本发明提供的管控方法基于.net framework 4.5开发框架,以Windows服务形式,利用松耦合的线程池管理方式管理线程环境,委托执行作业。只针对定时计划进行管理,无需关心具体的业务操作,这使计划任务与业务独立开来,从而更为专业化,精细化。
在一实施例中,如图1所示,在无结束时间的情况下,某一线程的执行过程如下:
步骤1:设定开始执行时间和执行间隔,为方便不同用户使用,故将此信息设置在配置文件中,可满足不同需求,另可将多个任务的配置分别存至数据库中,每个任务对应各自的开始执行时间和执行间隔;
步骤2:获取系统当前时间,并计算当前时间与开始执行时间的间隔;
步骤3:基于定时器,将当前线程阻塞一定时间,时长为步骤2计算出的时间间隔;
步骤4:执行当前线程,并判断当前线程是否执行成功,若未成功执行,则抛出异常,记录错误日志。
步骤5:将当前线程阻塞执行间隔时长后返回步骤4。
在另一实施例中,如图2所示,在有结束时间的情况下,某一线程的执行过程如下:
步骤1:设定开始执行时间、执行间隔和结束时间,为方便不同用户使用,故将此信息设置在配置文件中,可满足不同需求,另可将多个任务的配置分别存至数据库中,每个任务对应各自的开始时间、执行间隔和结束时间;
步骤2:获取系统当前时间,判断当前时间是否小于结束时间,如果小于则计算当前时间与开始执行时间的间隔,反之则结束线程;
步骤3:将当前线程阻塞一定时间,时长为步骤2计算出的时间间隔;
步骤4:获取系统当前时间,若当前时间小于结束时间,则执行当前线程,若未成功执行则抛出异常,记录错误日志;若当前时间大于或等于结束时间,则结束当前线程;
步骤5:将当前线程阻塞执行间隔时长后返回步骤4。
进一步地,当初始设定的开始执行时间早于系统当前时间时,或因系统崩溃,需要重新循环执行线程时,通过所述步骤2的具体以下步骤进行时间间隔的计算:
步骤21:根据开始执行时间和执行间隔,获取执行时间列表的步骤;
步骤22:将开始执行时间重新赋值为执行时间列表中位于当前时间之后且最接近当前时间的执行时间;
步骤23:计算当前之间与开始执行时间的时间间隔。
进一步地,当计划任务在不同日期下循环执行时,所述执行时间列表包括执行日期列表,通过所述执行日期列表将开始执行时间的日期部分重新赋值为当前时间之后且最接近当前时间的执行日期。
根据不同的执行规则,如每周、每月或每年的固定日期循环执行或固定日期间隔地循环执行,所述执行日期列表的获取包括以下步骤:
步骤1):设定开始日期、结束日期、上次执行日期、返回条数和执行规则,所述执行规则为按照特定日期或特定间隔地循环执行,其中特定日期为每周、每月或每年内的固定日期;
步骤2):根据设定的返回条数或执行规则判断是否为按照特定日期或特定间隔地循环执行任务,若不是循环执行任务则输出空,结束当前执行日期列表的步骤;
步骤3):获取当前日期,若当前日期小于开始日期,则将开始日期赋值为当前日期;若当前日期大于结束日期,则输出空,结束当前执行日期列表的步骤;
步骤4):判断是否存在上次执行日期:若上次执行日期为空,则从开始日期起逐个筛选符合执行规则的日期,直至大于返回条数或结束日期时输出日期列表;反之,则从上次执行日期起筛选符合执行规则的日期,直至大于返回条数或结束日期时输出日期列表。
具体地,如图3所示的一实施例中,当每周循环执行时,获取执行日期列表的步骤如下:
步骤i:设定开始日期、结束日期、上次执行日期、返回条数(即为返回日期列表的记录数,小于等于0说明不需返回)和循环周列表(由每周几循环确定,如果是每周五,则列表为5;如果是每周一、三、五、日,则列表为1、3、5、0),若返回条数小于或等于零、或循环周列表为空时,则输出空,结束当前执行日期列表的步骤;
步骤ii:获取当前日期,并进行判断:若当前日期大于开始日期,则将当前日期作为开始日期;
步骤iii:判断开始日期与结束日期的大小:若开始日期大于或等于结束日期,则输出空,结束当前日期列表的步骤;
步骤iv:若上次执行日期为空,则将开始日期作为开始计算的日期,反之则将上次执行日期作为开始计算的日期;
步骤v:输出执行日期列表:若日期列表的个数小于返回条数,则筛选符合循环周列表的日期并存入日期列表,直至日期列表的个数大于或等于返回条数,输出日期列表,反之则直接输出日期列表。
又如图4所示的另一实施例,为固定间隔地循环执行时,获取执行日期列表的步骤如下:
步骤I:设定开始日期、结束日期、上次执行日期、执行间隔和返回条数(即为返回日期列表的记录数)的设定,若执行间隔或返回条数小于或等于零,则输出空,结束当前执行日期列表的步骤;
步骤II:获取当前日期,并进行判断:若当前日期大于开始日期,则将当前日期作为开始日期;
步骤III:判断开始日期与结束日期的大小:若开始日期大于或等于结束日期,则输出空,结束当前执行日期列表的步骤;
步骤IV:判断如上次执行日期为空,则将开始日期插入执行日期列表,同时返回条数减1,并赋予i初始值为1,反之则直接赋予i初始值为1;
步骤V:输出执行日期列表:若i小于或等于返回条数,则计算下个执行日期,计算方法为,下个执行日期=上次执行日期或开始日期+执行间隔*i,并判断下个执行日期是否超出结束日期:若下个执行日期没有超出结束日期,则赋值i=i+1,并输出下个日期,循环步骤V,反之则结束输出日期;若i大于返回条数,则输出空,结束当前执行日期列表的步骤。
下面列举具体实施例对本发明的技术方案作进一步说明:
实施例1
计算空气质量指数AQI
在一个环境监测系统中,每个监测站点,每分钟均有多种不同参数的空气参数数值上传到数据库数据表中,系统需要根据各种空气参数计算AQI报表。根据用户需求,系统需要计算AQI小时报表、AQI日报表。
首先创建两个线程,小时线程、日线程,分别用于计算这两种报表。小时线程每小时05分执行,根据小时数据表中参与AQI计算的参数的浓度值计算前一小时的AQI数据并生成AQI小时报表;日线程每天00点20分执行,根据日数据表中参与AQI计算的参数的浓度值计算前一天的AQI数据并生成AQI日报表。报表生成结束后,等待执行间隔时长之后再次执行,如此循环下去,可以通过两个线程实现同时并持续生成这两种报表。
以小时AQI为例,假设当前时间为9:45,结束时间为12:00,设置为每小时的第五分钟执行,则开始执行时间为10:05,计算下次启动时间与当前时间的间隔(10:05-09:45=20),然后将线程阻塞20分钟,到10点05分执行线程用以计算9点的小时AQI,然后将线程阻塞60分钟,到11点05分执行线程用以计算10点的小时AQI,然后将线程阻塞60分钟,到12点05分,因为大于结束时间12点00分,所以结束终止循坏。
实施例2
掉线报警
在一个环境质量监测系统中,由多个环境监测站点组成,当某一个站点某一个参数在连续时间段内没有收到数据,则认为是掉线,然后生成掉线报警记录,按需推送给指定人员。
本系统采用SQLServer数据库,使用ASP.net平台进行程序开发,后台服务由C#语言编写。循环读取分钟数据表中各个站点的各个参数的分钟数据均值,如果在连续时长(可设)内没有监测到该站点该参数的浓度均值,则认为该站点该参数发生报警,然后生成一条报警记录,如果当前时间在发送时间段(可设)内,则将该条报警记录发送给指定人员。
比如为站点1设置掉线时长10分钟(即站点1在10分钟内未接收到实时数据则认为站点1掉线),建立分钟线程,开始启动,读取实时数据表中最后一条分钟数据的时间(2017-07-11 10:01),计算该时间与当前时间(2017-07-11 10:11)的时间间隔(10min),小于等于所设定的掉线时长(10min),不报警;然后将分钟线程阻塞一分钟,下一分钟继续读取实时数据表中最后一条分钟数据的时间(2017-07-11 10:01),计算该时间与当前时间(2017-07-11 10:12)的时间间隔(11min),大于所设定的掉线时长(10min)则报警,如此循环下去。
生成报警记录后,需要按需推送给相关人员,如已经生成报警记录1,设置每周二、周三推送,建立执行推送的线程,假设当前时间是周四,上次执行时间为空,则当前时间与开始执行时间的间隔为5天,到周二开始执行第一次,执行完成后,上次执行时间变为周二,则上次执行时间与下一次执行时间的间隔为1天,到周三开始执行......如此每周循环下去(如设置开始日期为2017-08-10(星期四),结束日期为2017-08-22(星期二),上次执行时间为空,每周二、周三循环,则输出的日期列表为2017-08-15(周二)、2017-08-16(周三)、2017-08-22(周二)。
实施例3
报表计算
在一个环境监测系统中,远程对环境监测设备进行控制,然后设备按照控制指令进行操作,将采集到的数据传入数据库,现需将这些数据按照一定的规则进行计算生成各自的报表,可以采用以下做法:
建立三个线程,分别用于生成三种报表;
为每个线程分别设置它的开始执行时间和执行间隔,将这些信息存入数据库,每到各自的执行时间就开始执行相应的任务,比如为一线程设置为每十分钟的第3分钟执行,二线程设置为每十分钟的第4分钟执行,三线程设置为每十分钟的第5分钟执行,则每个小时的第3、13、23、33、43、53分钟都会执行一线程,第4、14、24、34、44、54分钟都会执行二线程,第5、15、25、35、45、55分钟都会执行三线程;
拿一线程举例,如果现在是27分钟,则当前时间与一线程的开始执行时间间隔为(10-27%10+3%10)%10==6(其中10为执行间隔,3为开始执行时间,27为当前时间的分钟数,%为取余数运算符),然后则会先将一线程阻塞6分钟,再开始执行一线程,执行完成后阻塞10分钟(执行间隔),然后再执行一线程,如此循环下去......到每个线程的开始时间然后分别去执行各个线程,然后将线程按各自的执行间隔进行阻塞,如此循环下去,可以持续同时生成三种报表。
容易理解,本发明提供的计划任务管控方法可以以硬件或硬件和软件的组合的形式来实现,任何这样的软件都可以存储在易失性或非易失性存储设备中,如只读存储器,或存储在诸如随机存取存储器、存储器芯片、存储器器件或存储器集成电路的存储器中,或存储在能够以光学方式或磁性方式进行记录、同时可由计算机读取的只读光盘(CD)、数字多功能盘(DVD)、磁盘或磁带的存储介质中,而不管软件是否能够被删除或重写。
本发明的计划任务管控方法可以通过一种包含存储器和处理器的装置实现,存储器即为上述提及的易失性或非易失性的存储设备,其上存储有实现所述计划任务管控方法的计算机程序,处理器可执行所述计算机程序。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种基于windows服务的计划任务管控方法,其特征在于,包括以下步骤:
步骤1:为待执行的计划任务以相应的委托方法建立对应的线程,设定开始执行时间,判断当前线程是否是周期性计划任务,如果是,则设定周期性计划任务的标志,以及采集其执行间隔;
步骤2:获取系统当前时间,并计算当前时间与开始执行时间的时间间隔,所述计算当前时间与开始执行时间的时间间隔的步骤包括:
步骤21:根据开始执行时间和执行间隔,获取执行时间列表的步骤;
步骤22:将开始执行时间重新赋值为执行时间列表中位于当前时间之后且最接近当前时间的执行时间;
步骤23:计算当前时间与开始执行时间的时间间隔;
步骤3:基于定时器,将当前线程阻塞一定时间,时长为步骤2计算出的时间间隔;
步骤4:执行当前线程,并判断当前线程是否执行成功,若未成功执行,则抛出异常,记录错误日志,结束当前线程;
步骤5:当当前线程是周期性计划任务时,将当前线程阻塞所述周期性计划任务的执行间隔后返回步骤4。
2.根据权利要求1所述的计划任务管控方法,其特征在于,
所述步骤1中还包括设定结束时间的步骤;
所述步骤2中还包括对获取的当前时间与结束时间大小的判断:若当前时间小于结束时间,则计算当前时间与开始执行时间的时间间隔;若当前时间大于结束时间,则结束当前线程;
所述步骤4中在执行当前线程前,重新获取当前时间,并判断获取的当前时间与结束时间的大小:若当前时间小于结束时间,则执行当前线程;若当前时间大于或等于结束时间,则结束当前线程。
3.根据权利要求1所述的计划任务管控方法,其特征在于,当所述周期性计划任务在不同日期下循环执行时,所述执行时间列表包括执行日期列表,以通过所述执行日期列表将开始执行时间的日期部分重新赋值为当前时间之后且最接近当前时间的执行日期。
4.根据权利要求3所述的计划任务管控方法,其特征在于,所述执行日期列表的获取包括以下步骤:
步骤i:设定开始日期、结束日期、上次执行日期、返回条数和执行规则,所述执行规则为按照特定日期或特定间隔地循环执行,其中特定日期为每周、每月或每年内的固定日期;
步骤ii:根据设定的返回条数或执行规则判断是否为循环执行任务,若不是循环执行任务,则输出空,结束当前执行日期列表的步骤;
步骤iii:获取当前日期,若当前日期小于开始日期,则将开始日期赋值为当前日期;若当前日期大于结束日期,则输出空,结束当前执行日期列表的步骤;
步骤iv:判断是否存在上次执行日期:若上次执行日期为空,则从开始日期起筛选符合执行规则的日期,直至大于返回条数或结束日期时输出日期列表;反之,则从上次执行日期起筛选符合执行规则的日期,直至大于返回条数或结束日期时输出日期列表。
5.根据权利要求1-4中任意一项所述的计划任务管控方法,其特征在于,将待执行的计划任务分为多个作业,并为每个作业以相应的委托方法建立对应的线程,利用松耦合的线程池管理方式管理线程环境,并为各所述线程分别配置不同的触发器,当一触发器触发后,由调度器实现相应线程的调度。
6.根据权利要求1-4中任意一项所述的计划任务管控方法,其特征在于,将所述计划任务和相应的时间配置持久化至数据库表中。
7.一种基于windows服务计划任务管控的装置,包括存储器和处理器,所述存储器中存储有用于在所述处理器上运行的、执行如权利要求1至4任意一项所述的计划任务管控方法的计算机程序。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有执行如权利要求1至4任意一项所述的计划任务管控方法的计算机程序。
CN201710889217.6A 2017-09-27 2017-09-27 基于windows服务的计划任务管控方法、装置及存储介质 Active CN107797856B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710889217.6A CN107797856B (zh) 2017-09-27 2017-09-27 基于windows服务的计划任务管控方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710889217.6A CN107797856B (zh) 2017-09-27 2017-09-27 基于windows服务的计划任务管控方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN107797856A CN107797856A (zh) 2018-03-13
CN107797856B true CN107797856B (zh) 2020-12-18

Family

ID=61532536

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710889217.6A Active CN107797856B (zh) 2017-09-27 2017-09-27 基于windows服务的计划任务管控方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN107797856B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108536530B (zh) * 2018-04-02 2021-10-22 北京中电普华信息技术有限公司 一种多线程任务调度方法及装置
CN108958915A (zh) * 2018-06-28 2018-12-07 中国建设银行股份有限公司 定时任务执行方法及装置
CN111754070A (zh) * 2020-05-11 2020-10-09 江苏方天电力技术有限公司 一种变电运维任务按计划自动派发系统及其工作方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129393A (zh) * 2011-03-09 2011-07-20 南京恩瑞特实业有限公司 通用定时任务管理的实现方法
CN102622426A (zh) * 2012-02-27 2012-08-01 杭州闪亮科技有限公司 数据库写入系统及方法
CN104503761A (zh) * 2014-12-30 2015-04-08 浪潮(北京)电子信息产业有限公司 一种利用时间转盘处理定时任务的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129393A (zh) * 2011-03-09 2011-07-20 南京恩瑞特实业有限公司 通用定时任务管理的实现方法
CN102622426A (zh) * 2012-02-27 2012-08-01 杭州闪亮科技有限公司 数据库写入系统及方法
CN104503761A (zh) * 2014-12-30 2015-04-08 浪潮(北京)电子信息产业有限公司 一种利用时间转盘处理定时任务的方法和装置

Also Published As

Publication number Publication date
CN107797856A (zh) 2018-03-13

Similar Documents

Publication Publication Date Title
CN111736969B (zh) 分布式作业调度方法及装置
CN104536811B (zh) 基于hive任务的任务调度方法及装置
CN107797856B (zh) 基于windows服务的计划任务管控方法、装置及存储介质
CN106406993A (zh) 一种定时任务管理方法和系统
CN102226890B (zh) 一种主机批量作业数据监控方法及装置
CN104166590A (zh) 一种实现任务调度的方法及系统
CN111984390A (zh) 任务调度方法、装置、设备及存储介质
CN104765651B (zh) 一种数据处理方法和装置
CN102663543A (zh) 一种用于企业数据统一平台的调度系统
CN112035233A (zh) 大数据批量作业任务调度方法及装置
CN110109741B (zh) 循环任务的管理方法、装置、电子设备及存储介质
CN104407919A (zh) 一种数据处理任务调度系统及方法
CN103744730A (zh) 一种任务调度方法和装置
CN111522719A (zh) 大数据任务状态的监控方法及装置
CN111708625A (zh) 多用户任务执行方法、装置、设备及存储介质
CN111324426A (zh) Oracle数据库任务作业管理调度系统及方法
CN110764747A (zh) 基于Airflow的数据计算调度方法
CN113119127A (zh) 一种rpa机器人的任务调度方法和系统
CN115169658B (zh) 基于npl和知识图谱的库存消耗预测方法、系统和存储介质
CN115098252A (zh) 资源调度方法、设备及计算机可读介质
US7577627B2 (en) Modular SQL rule-based management of job process flow
CN111159188B (zh) 基于DataWorks实现准实时大数据量的处理方法
CN109840184B (zh) 电网设备投运展示的调度方法、系统及设备
CN113419921A (zh) 一种任务监控方法、装置、设备以及存储介质
CN112148442B (zh) 一种etl流程调度的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant