Quartz2.x任务计划调度操作工具类

   根据Quartz2.2.1版本封装的工具类,记录与此用于备忘:

Java代码  

  1. package com.yida.framework.base.util.quartz;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import org.quartz.CronScheduleBuilder;  
  7. import org.quartz.CronTrigger;  
  8. import org.quartz.Job;  
  9. import org.quartz.JobBuilder;  
  10. import org.quartz.JobDetail;  
  11. import org.quartz.JobKey;  
  12. import org.quartz.Scheduler;  
  13. import org.quartz.SchedulerException;  
  14. import org.quartz.Trigger.TriggerState;  
  15. import org.quartz.TriggerBuilder;  
  16. import org.quartz.TriggerKey;  
  17. import org.quartz.impl.matchers.GroupMatcher;  
  18. import org.springframework.scheduling.quartz.SchedulerFactoryBean;  
  19.   
  20. import com.yida.framework.base.util.AppUtil;  
  21. import com.yida.framework.modules.po.Task;  
  22. import com.yida.framework.modules.po.TaskGroup;  
  23. import com.yida.framework.modules.po.TaskSchedule;  
  24.   
  25. /** 
  26.  * @ClassName: SchedulerUtils 
  27.  * @Description: Quartz任务计划调度工具类 
  28.  * @author Lanxiaowei(736031305@qq.com) 
  29.  * @date 2015年12月10日 下午4:47:12 
  30.  * 
  31.  */  
  32. public class SchedulerUtils {  
  33.     //Trigger各种状态:  
  34.     //None:Trigger已经完成,且不会在执行,或者找不到该触发器,或者Trigger已经被删除  
  35.     //NORMAL:正常状态   
  36.     //PAUSED:暂停状态   
  37.     //COMPLETE:触发器完成,但是任务可能还正在执行中   
  38.     //BLOCKED:线程阻塞状态   
  39.     //ERROR:出现错误  
  40.   
  41.       
  42.     /** 
  43.      * @throws ClassNotFoundException  
  44.      * @Author: Lanxiaowei(736031305@qq.com) 
  45.      * @Title: addTaskSchedule 
  46.      * @Description: 添加任务计划 
  47.      * @param @param taskSchedule 
  48.      * @param @return 
  49.      * @param @throws SchedulerException 
  50.      * @return int 
  51.      * @throws 
  52.      */  
  53.     public static int addTaskSchedule(TaskSchedule taskSchedule) throws SchedulerException, ClassNotFoundException {  
  54.         Task task = taskSchedule.getTask();  
  55.         if(null == task) {  
  56.             //任务计划尚未绑定任务  
  57.             return -1;  
  58.         }  
  59.         TaskGroup group = task.getGroup();  
  60.         String groupName = null;  
  61.         if(null != group) {  
  62.             groupName = group.getTaskGroupName();  
  63.         } else {  
  64.             groupName = BaseTask.DEFAULT_GROUP;  
  65.         }  
  66.         SchedulerFactoryBean schedulerFactory =   
  67.                 (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory");  
  68.         Scheduler scheduler = schedulerFactory.getScheduler();  
  69.           
  70.         TriggerKey triggerKey = TriggerKey.triggerKey(taskSchedule.getScheduleName(),   
  71.             groupName);  
  72.         CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);  
  73.           
  74.         if (null == trigger) {  
  75.             //这里是任务类的class  
  76.             JobDetail jobDetail = JobBuilder.newJob((Class<? extends Job>) Class.forName(task.getTaskClass()))  
  77.                 .withIdentity(taskSchedule.getScheduleName(), groupName).build();  
  78.             String uniqueKey = taskSchedule.getScheduleName() + "#$#" + task.getTaskName()   
  79.                 + "#$#" + groupName;  
  80.             jobDetail.getJobDataMap().put(uniqueKey, taskSchedule);  
  81.             //表达式调度构建器  
  82.             CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(taskSchedule  
  83.                 .getCronExpression());  
  84.             trigger = TriggerBuilder.newTrigger().withIdentity(taskSchedule.getScheduleName(), groupName)  
  85.                 .withSchedule(scheduleBuilder).build();  
  86.             scheduler.scheduleJob(jobDetail, trigger);  
  87.         } else {  
  88.             CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(taskSchedule  
  89.                 .getCronExpression());  
  90.             trigger = trigger.getTriggerBuilder().withIdentity(triggerKey)  
  91.                 .withSchedule(scheduleBuilder).build();  
  92.             scheduler.rescheduleJob(triggerKey, trigger);  
  93.         }  
  94.         return 1;  
  95.     }  
  96.       
  97.     /** 
  98.      * @Author: Lanxiaowei(736031305@qq.com) 
  99.      * @Title: pauseJob 
  100.      * @Description: 暂停任务计划 
  101.      * @param @param taskScheduleName     任务计划名称 
  102.      * @param @param taskGroupName        任务分组名称 
  103.      * @param @throws SchedulerException 
  104.      * @return void 
  105.      * @throws 
  106.      */  
  107.     public static void pauseJob(String taskScheduleName,String taskGroupName) throws SchedulerException {  
  108.         SchedulerFactoryBean schedulerFactory =   
  109.                 (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory");  
  110.         Scheduler scheduler = schedulerFactory.getScheduler();  
  111.         JobKey jobKey = JobKey.jobKey(taskScheduleName, taskGroupName);  
  112.         scheduler.pauseJob(jobKey);  
  113.     }  
  114.       
  115.     /** 
  116.      * @Author: Lanxiaowei(736031305@qq.com) 
  117.      * @Title: pauseJob 
  118.      * @Description: 批量暂停任务计划 
  119.      * @param @param groupMatcher 
  120.      * @param @throws SchedulerException 
  121.      * @return void 
  122.      * @throws 
  123.      */  
  124.     public static void pauseJob(GroupMatcher<JobKey> groupMatcher) throws SchedulerException {  
  125.         SchedulerFactoryBean schedulerFactory =   
  126.                 (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory");  
  127.         Scheduler scheduler = schedulerFactory.getScheduler();  
  128.         //GroupMatcher创建示例,groupContains即任务分组名称中包含指定字符的任务计划全部暂停  
  129.         //GroupMatcher<JobKey> groupMatcher = GroupMatcher.groupContains("xxxx");  
  130.         scheduler.pauseJobs(groupMatcher);  
  131.     }  
  132.       
  133.     /** 
  134.      * @Author: Lanxiaowei(736031305@qq.com) 
  135.      * @Title: pauseAllJob 
  136.      * @Description: 暂停所有任务计划 
  137.      * @param @throws SchedulerException 
  138.      * @return void 
  139.      * @throws 
  140.      */  
  141.     public static void pauseAllJob() throws SchedulerException {  
  142.         SchedulerFactoryBean schedulerFactory =   
  143.                 (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory");  
  144.         Scheduler scheduler = schedulerFactory.getScheduler();  
  145.         scheduler.pauseAll();  
  146.     }  
  147.       
  148.     /** 
  149.      * @Author: Lanxiaowei(736031305@qq.com) 
  150.      * @Title: resumeJob 
  151.      * @Description: 恢复任务计划 
  152.      * @param @param taskScheduleName     任务计划名称 
  153.      * @param @param taskGroupName        任务分组名称 
  154.      * @param @throws SchedulerException 
  155.      * @return void 
  156.      * @throws 
  157.      */  
  158.     public static void resumeJob(String taskScheduleName,String taskGroupName) throws SchedulerException {  
  159.         SchedulerFactoryBean schedulerFactory =   
  160.                 (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory");  
  161.         Scheduler scheduler = schedulerFactory.getScheduler();  
  162.         JobKey jobKey = JobKey.jobKey(taskScheduleName, taskGroupName);  
  163.         scheduler.resumeJob(jobKey);  
  164.     }  
  165.       
  166.     /** 
  167.      * @Author: Lanxiaowei(736031305@qq.com) 
  168.      * @Title: resumeAllJob 
  169.      * @Description: 恢复所有任务计划 
  170.      * @param @throws SchedulerException 
  171.      * @return void 
  172.      * @throws 
  173.      */  
  174.     public static void resumeAllJob() throws SchedulerException {  
  175.         SchedulerFactoryBean schedulerFactory =   
  176.                 (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory");  
  177.         Scheduler scheduler = schedulerFactory.getScheduler();  
  178.         scheduler.resumeAll();  
  179.     }  
  180.       
  181.     /** 
  182.      * @Author: Lanxiaowei(736031305@qq.com) 
  183.      * @Title: deleteJob 
  184.      * @Description: 删除任务计划 
  185.      * @param @param taskScheduleName 
  186.      * @param @param taskGroupName 
  187.      * @param @throws SchedulerException 
  188.      * @return void 
  189.      * @throws 
  190.      */  
  191.     public static void deleteJob(String taskScheduleName,String taskGroupName) throws SchedulerException {  
  192.         SchedulerFactoryBean schedulerFactory =   
  193.                 (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory");  
  194.         Scheduler scheduler = schedulerFactory.getScheduler();  
  195.         JobKey jobKey = JobKey.jobKey(taskScheduleName, taskGroupName);  
  196.         scheduler.deleteJob(jobKey);  
  197.     }  
  198.       
  199.     /** 
  200.      * @Author: Lanxiaowei(736031305@qq.com) 
  201.      * @Title: deleteJob 
  202.      * @Description: 批量删除任务计划 
  203.      * @param @param taskScheduleList 
  204.      * @param @throws SchedulerException 
  205.      * @return void 
  206.      * @throws 
  207.      */  
  208.     public static void deleteJob(List<TaskSchedule> taskScheduleList) throws SchedulerException {  
  209.         if(null == taskScheduleList || taskScheduleList.size() <= 0) {  
  210.             return;  
  211.         }  
  212.         SchedulerFactoryBean schedulerFactory =   
  213.                 (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory");  
  214.         Scheduler scheduler = schedulerFactory.getScheduler();  
  215.         List<JobKey> jobKeyList = new ArrayList<JobKey>();  
  216.         for(TaskSchedule taskSchedule : taskScheduleList) {  
  217.             Task task = taskSchedule.getTask();  
  218.             if(null == task) {  
  219.                 continue;  
  220.             }  
  221.             String taskGroupName = null;  
  222.             TaskGroup group = task.getGroup();  
  223.             if(null != group) {  
  224.                 taskGroupName = group.getTaskGroupName();  
  225.             } else {  
  226.                 taskGroupName = BaseTask.DEFAULT_GROUP;  
  227.             }  
  228.             String taskScheduleName = taskSchedule.getScheduleName();  
  229.             JobKey jobKey = JobKey.jobKey(taskScheduleName, taskGroupName);  
  230.             jobKeyList.add(jobKey);  
  231.         }  
  232.         scheduler.deleteJobs(jobKeyList);  
  233.     }  
  234.       
  235.     /** 
  236.      * @Author: Lanxiaowei(736031305@qq.com) 
  237.      * @Title: cancleJob 
  238.      * @Description: 取消任务计划 
  239.      * @param @param taskScheduleName 
  240.      * @param @param taskGroupName 
  241.      * @param @throws SchedulerException 
  242.      * @return void 
  243.      * @throws 
  244.      */  
  245.     public static void cancleJob(String taskScheduleName,String taskGroupName) throws SchedulerException {  
  246.         SchedulerFactoryBean schedulerFactory =   
  247.                 (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory");  
  248.         Scheduler scheduler = schedulerFactory.getScheduler();  
  249.         TriggerKey triggerKey = TriggerKey.triggerKey(taskScheduleName,taskGroupName);  
  250.         scheduler.unscheduleJob(triggerKey);  
  251.     }  
  252.       
  253.     /** 
  254.      * @Author: Lanxiaowei(736031305@qq.com) 
  255.      * @Title: canleJob 
  256.      * @Description: 批量取消任务计划 
  257.      * @param @param taskScheduleList 
  258.      * @param @throws SchedulerException 
  259.      * @return void 
  260.      * @throws 
  261.      */  
  262.     public static void canleJob(List<TaskSchedule> taskScheduleList) throws SchedulerException {  
  263.         if(null == taskScheduleList || taskScheduleList.size() <= 0) {  
  264.             return;  
  265.         }  
  266.         SchedulerFactoryBean schedulerFactory =   
  267.                 (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory");  
  268.         Scheduler scheduler = schedulerFactory.getScheduler();  
  269.         List<TriggerKey> triggerKeyList = new ArrayList<TriggerKey>();  
  270.         for(TaskSchedule taskSchedule : taskScheduleList) {  
  271.             Task task = taskSchedule.getTask();  
  272.             if(null == task) {  
  273.                 continue;  
  274.             }  
  275.             String taskGroupName = null;  
  276.             TaskGroup group = task.getGroup();  
  277.             if(null != group) {  
  278.                 taskGroupName = group.getTaskGroupName();  
  279.             } else {  
  280.                 taskGroupName = BaseTask.DEFAULT_GROUP;  
  281.             }  
  282.             String taskScheduleName = taskSchedule.getScheduleName();  
  283.             TriggerKey triggerKey = TriggerKey.triggerKey(taskScheduleName,taskGroupName);  
  284.             triggerKeyList.add(triggerKey);  
  285.         }  
  286.         scheduler.unscheduleJobs(triggerKeyList);  
  287.     }  
  288.       
  289.     /** 
  290.      * @Author: Lanxiaowei(736031305@qq.com) 
  291.      * @Title: checkJobExist 
  292.      * @Description: 检测任务计划是否存在 
  293.      * @param @param taskScheduleName 
  294.      * @param @param taskGroupName 
  295.      * @param @return 
  296.      * @param @throws SchedulerException 
  297.      * @return boolean 
  298.      * @throws 
  299.      */  
  300.     public static boolean checkJobExist(String taskScheduleName,String taskGroupName) throws SchedulerException {  
  301.         SchedulerFactoryBean schedulerFactory =   
  302.                 (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory");  
  303.         Scheduler scheduler = schedulerFactory.getScheduler();  
  304.         JobKey jobKey = JobKey.jobKey(taskScheduleName, taskGroupName);  
  305.         return scheduler.checkExists(jobKey);  
  306.     }  
  307.       
  308.     /** 
  309.      * @throws SchedulerException  
  310.      * @Author: Lanxiaowei(736031305@qq.com) 
  311.      * @Title: returnJobState 
  312.      * @Description: 返回任务计划的运行状态  
  313.      *               BLOCKED:5 
  314.      *               ERROR:4 
  315.      *               COMPLETE:3 
  316.      *               PAUSED:2 
  317.      *               NORMAL:1 
  318.      *               NONE:0 
  319.      * @param @param taskScheduleName 
  320.      * @param @param taskGroupName 
  321.      * @param @return 
  322.      * @return int 
  323.      * @throws 
  324.      */  
  325.     public static int returnJobState(String taskScheduleName,String taskGroupName) throws SchedulerException {  
  326.         SchedulerFactoryBean schedulerFactory =   
  327.                 (SchedulerFactoryBean)AppUtil.getBean("schedulerFactory");  
  328.         Scheduler scheduler = schedulerFactory.getScheduler();  
  329.         TriggerKey triggerKey = TriggerKey.triggerKey(taskScheduleName,taskGroupName);  
  330.         return scheduler.getTriggerState(triggerKey).ordinal();  
  331.     }  
  332. }  

 转载:http://iamyida.iteye.com/blog/2263216

时间: 2024-10-31 10:23:48

Quartz2.x任务计划调度操作工具类的相关文章

如何在Web工程中实现任务计划调度

好多朋友用过Windows的任务计划,也有不少程序迷自己曾写过时钟报警.系统自动关机等趣味程序,可却很少有朋友在Web工程中实现过类似功能.今天有空把笔者先前曾在Tomcat上实现的类似功能,搬出来与大家共享. 早在几年前,我公司跟某市财政局合作项目开发,为加强财政局对所属单位财务状况的有效监管,开发.实施了财政局数据中心项目.此项目采用B/S加C/S混合结构模式.财政局Web服务器上架设数据同步接收装置,由市属单位每天下班前把财务信息通过HTTP协议上传至财政局中心服务器,与Web服务器上的接

在J2EE环境中使用Quartz企业级计划调度器(2)

3 自动启动Servlets 我们希望在应用被部署或容器启动时就提交任务.我们必须在web模块并重启动的时候 初始化QuartzInitializerServlet 和 howto.quartz.servlet.QuartzServlet.为了达到 这个目的,我们需要在Web应用的部署描述符(web.xml)中增加以下内容: <servlet> <servlet-name>QuartzInitializer</servlet-name> <display-name

在J2EE环境中使用Quartz企业级计划调度器(1)

Quartz 是来自OpenSymphony的一个开发源代码的企业级工作计划调度器.要了解详情以及下载Quartz请访问http://www.quartzscheduler.org/quartz/.你可以在你的J2EE应用如EJB中使用Quartz来调度工作计划.本文将会介绍在你的J2EE应用中如何使用Quartz来安排工作计划.文章中将会使用Oracle应用服务器10g J2EE容器(OC4J 9.0.4)作为J2EE容器的例子. Quartz 支持多种类型的工作和触发器,但其中最流行的就是c

java属性文件properties常用操作工具类

对于java.util.Properties类,通常我们只需要做到以下3个学习目标: 1.认识properties文件,理解其含义,会正确创建properties文件. 2.会使用java.util.Properties类来操作properties文件. 3.掌握相对路径,能正确书写一个properties文件的相对路径. 而在平时的工作中,会遇到各种各样的需求,以下是一个封装. package com.herman.util; import java.io.File; import java.

java文件操作工具类_java

最近为了修改大量收藏的美剧文件名,用swing写了个小工具,代码是文件处理部分,具体内容如下 package datei.steuern; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter

java日期操作工具类(获取指定日期、日期转换、相隔天数)_java

本文实例为大家分享了java日期操作工具类,获取指定日期前一天.后一天:日期转换:两个日期之间相隔天数等工具类,供大家参考,具体内容如下 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; public class

乐视计划进军生鲜类电商市场,8.18上线“乐生活”

网易科技讯 8月8日消息,乐视计划进军生鲜类电商市场,预计将于8月18日上线"乐生活",域名为http://lelife.com.点击该域名,可看乐生活的logo,并且显示为"乐视控股旗下企业",页面中间则预告该乐生活将于8月18日正式上线. 据了解,乐生活的负责人为乐视控股的酒类垂直电商平台网酒网CEO李锐,乐生活副总裁由本来生活网副总经理蒋政文出任.乐视还在临汾建有生态农业基地,进行种植采摘.旅游观光.休闲娱乐.酿造加工等多种商业项目. 近来,乐视较为活跃,昨日

浅谈生产计划调度与控制之生产管理问题

制造过程是制造系统从原材料投入生产开始到产品生产出来准备交付使用的全过程,其中设计,加工,装配一般又称为制造工艺过程.由于产品及制造过程的综合性,制造过程又分为: 1.基本制造过程:指直接生产对象转换成产品的制造过程: 2.辅助制造过程:指为保证基本制造过程正常进行的各种辅助产品的制造过程.如工艺装备的加工等: 3.制造服务过程:指为基本制造过程和帮助制造过程中各种生产活动服务的过程,如采购. 4.附属产品制造过程:在制造本系统主要产品的同时,一些附属产品的制造过程. 制造系统的生产管理就是指对

C# 枚举操作工具类

<span style="font-size:14px;">using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using System.ComponentModel; using System.Collections; using System.Collections.Specialized; names