quartz2.2.1的基本操做

明:本文爲博主原創文章,未經博主容許不得轉載。java

[java] view plain copy服務器

在CODE上查看代碼片派生到個人代碼片

  1. /** 
  2.      * 添加任務到任務隊列 
  3.      *  
  4.      * @param scheduleJob 
  5.      * @throws SchedulerException 
  6.      * @throws ClassNotFoundException 
  7.      */  
  8.     public ScheduleJob addJob(ScheduleJob job) throws SchedulerException, ClassNotFoundException {  
  9.         if (job == null || !ScheduleJob.STATUS_RUNNING.equals(job.getJobStatus())) {  
  10.             return null;  
  11.         }  
  12.   
  13.         Scheduler scheduler = schedulerFactoryBean.getScheduler();  
  14.         log.debug(scheduler  
  15.                 + ".......................................................................................add");  
  16.         TriggerKey triggerKey = TriggerKey.triggerKey(job.getJobName(), job.getJobGroup());  
  17.   
  18.         CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);  
  19.   
  20.         // 不存在,建立一個  
  21.         if (null == trigger) {  
  22.             Class clazz = Class.forName(job.getBeanClass());  
  23.   
  24.             JobDetail jobDetail = JobBuilder.newJob(clazz).withIdentity(job.getJobName(), job.getJobGroup()).build();  
  25.   
  26.             jobDetail.getJobDataMap().put("scheduleJob", job);  
  27.   
  28.             CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());  
  29.   
  30.             trigger = TriggerBuilder.newTrigger().withIdentity(job.getJobName(), job.getJobGroup())  
  31.                     .withSchedule(scheduleBuilder).build();  
  32.   
  33.             scheduler.scheduleJob(jobDetail, trigger);  
  34.         } else {  
  35.             // Trigger已存在,那麼更新相應的定時設置  
  36.             CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());  
  37.   
  38.             // 按新的cronExpression表達式從新構建trigger  
  39.             trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();  
  40.   
  41.             // 按新的trigger從新設置job執行  
  42.             scheduler.rescheduleJob(triggerKey, trigger);  
  43.         }  
  44.   
  45.         // 獲得任務下一次的計劃執行時間  
  46.         Date nextProcessTime = trigger.getNextFireTime();  
  47.         job.setNextProcessTime(nextProcessTime);  
  48.         return job;  
  49.     }  
  50.   
  51.     /** 
  52.      * 服務器啓動,加載job_status=1的任務到任務隊列中 
  53.      *  
  54.      * @throws Exception 
  55.      */  
  56.     @PostConstruct  
  57.     public void init() throws Exception {  
  58.   
  59.         Scheduler scheduler = schedulerFactoryBean.getScheduler();  
  60.   
  61.         // 這裏獲取任務信息數據  
  62.         List<ScheduleJob> jobList = scheduleJobMapper.getAllJobs();  
  63.   
  64.         for (ScheduleJob job : jobList) {  
  65.             addJob(job);  
  66.         }  
  67.     }  
  68.   
  69.     /** 
  70.      * 獲取全部計劃中的任務列表 
  71.      *  
  72.      * @return 
  73.      * @throws SchedulerException 
  74.      */  
  75.     @Deprecated  
  76.     public List<ScheduleJob> getAllJob() throws SchedulerException {  
  77.         Scheduler scheduler = schedulerFactoryBean.getScheduler();  
  78.         GroupMatcher<JobKey> matcher = GroupMatcher.anyJobGroup();  
  79.         Set<JobKey> jobKeys = scheduler.getJobKeys(matcher);  
  80.         List<ScheduleJob> jobList = new ArrayList<ScheduleJob>();  
  81.         for (JobKey jobKey : jobKeys) {  
  82.             List<? extends Trigger> triggers = scheduler.getTriggersOfJob(jobKey);  
  83.             for (Trigger trigger : triggers) {  
  84.                 ScheduleJob job = new ScheduleJob();  
  85.                 job.setJobName(jobKey.getName());  
  86.                 job.setJobGroup(jobKey.getGroup());  
  87.                 job.setDescription("觸發器:" + trigger.getKey());  
  88.                 Trigger.TriggerState triggerState = scheduler.getTriggerState(trigger.getKey());  
  89.                 job.setJobStatus(triggerState.name());  
  90.                 if (trigger instanceof CronTrigger) {  
  91.                     CronTrigger cronTrigger = (CronTrigger) trigger;  
  92.                     String cronExpression = cronTrigger.getCronExpression();  
  93.                     job.setCronExpression(cronExpression);  
  94.                 }  
  95.                 jobList.add(job);  
  96.             }  
  97.         }  
  98.         return jobList;  
  99.     }  
  100.   
  101.     /** 
  102.      * 獲取全部正在運行的job 
  103.      *  
  104.      * @return 
  105.      * @throws SchedulerException 
  106.      */  
  107.     @Deprecated  
  108.     public List<ScheduleJob> getRunningJob() throws SchedulerException {  
  109.         Scheduler scheduler = schedulerFactoryBean.getScheduler();  
  110.         List<JobExecutionContext> executingJobs = scheduler.getCurrentlyExecutingJobs();  
  111.         List<ScheduleJob> jobList = new ArrayList<ScheduleJob>(executingJobs.size());  
  112.         for (JobExecutionContext executingJob : executingJobs) {  
  113.             ScheduleJob job = new ScheduleJob();  
  114.             JobDetail jobDetail = executingJob.getJobDetail();  
  115.             JobKey jobKey = jobDetail.getKey();  
  116.             Trigger trigger = executingJob.getTrigger();  
  117.             job.setJobName(jobKey.getName());  
  118.             job.setJobGroup(jobKey.getGroup());  
  119.             job.setDescription("觸發器:" + trigger.getKey());  
  120.             Trigger.TriggerState triggerState = scheduler.getTriggerState(trigger.getKey());  
  121.             job.setJobStatus(triggerState.name());  
  122.             if (trigger instanceof CronTrigger) {  
  123.                 CronTrigger cronTrigger = (CronTrigger) trigger;  
  124.                 String cronExpression = cronTrigger.getCronExpression();  
  125.                 job.setCronExpression(cronExpression);  
  126.             }  
  127.             jobList.add(job);  
  128.         }  
  129.         return jobList;  
  130.     }  
  131.   
  132.     /** 
  133.      * 暫停一個job 
  134.      *  
  135.      * @param scheduleJob 
  136.      * @throws SchedulerException 
  137.      */  
  138.     @Deprecated  
  139.     public void pauseJob(ScheduleJob scheduleJob) throws SchedulerException {  
  140.         Scheduler scheduler = schedulerFactoryBean.getScheduler();  
  141.         JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());  
  142.         scheduler.pauseJob(jobKey);  
  143.     }  
  144.   
  145.     /** 
  146.      * 恢復一個job 
  147.      *  
  148.      * @param scheduleJob 
  149.      * @throws SchedulerException 
  150.      */  
  151.     @Deprecated  
  152.     public void resumeJob(ScheduleJob scheduleJob) throws SchedulerException {  
  153.         Scheduler scheduler = schedulerFactoryBean.getScheduler();  
  154.         JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());  
  155.         scheduler.resumeJob(jobKey);  
  156.     }  
  157.   
  158.     /** 
  159.      * 刪除一個job 
  160.      *  
  161.      * @param scheduleJob 
  162.      * @throws SchedulerException 
  163.      */  
  164.     public void deleteJob(ScheduleJob scheduleJob) throws SchedulerException {  
  165.         Scheduler scheduler = schedulerFactoryBean.getScheduler();  
  166.         JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());  
  167.         scheduler.deleteJob(jobKey);  
  168.     }  
  169.   
  170.     /** 
  171.      * 當即執行job 
  172.      *  
  173.      * @param scheduleJob 
  174.      * @throws SchedulerException 
  175.      */  
  176.     public void runAJobNow(ScheduleJob scheduleJob) throws SchedulerException {  
  177.         Scheduler scheduler = schedulerFactoryBean.getScheduler();  
  178.         JobKey jobKey = JobKey.jobKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());  
  179.         scheduler.triggerJob(jobKey);  
  180.     }  
  181.   
  182.     /** 
  183.      * 更新job時間表達式 
  184.      *  
  185.      * @param scheduleJob 
  186.      * @throws SchedulerException 
  187.      */  
  188.     public ScheduleJob updateJobCron(ScheduleJob scheduleJob) throws SchedulerException {  
  189.         Scheduler scheduler = schedulerFactoryBean.getScheduler();  
  190.   
  191.         TriggerKey triggerKey = TriggerKey.triggerKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());  
  192.   
  193.         CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);  
  194.   
  195.         CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression());  
  196.   
  197.         trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();  
  198.   
  199.         scheduler.rescheduleJob(triggerKey, trigger);  
  200.         // 獲得任務下一次的計劃執行時間  
  201.         Date nextProcessTime = trigger.getNextFireTime();  
  202.         scheduleJob.setNextProcessTime(nextProcessTime);  
  203.   
  204.         return scheduleJob;  
  205.     }  

[java] view plain copyapp

在CODE上查看代碼片派生到個人代碼片

  1. Schdulejob實體類:  

[java] view plain copyui

在CODE上查看代碼片派生到個人代碼片

  1. <pre name="code" class="java">public class ScheduleJob {  
  2.   
  3.     public static final String STATUS_RUNNING = "1";  
  4.     public static final String STATUS_NOT_RUNNING = "0";  
  5.   
  6.     private Long jobId;  
  7.     /** 
  8.      * 任務建立時間 
  9.      */  
  10.     private Date createTime;  
  11.     /** 
  12.      * 任務更新時間 
  13.      */  
  14.     private Date updateTime;  
  15.     /** 
  16.      * 上一次執行時間 
  17.      */  
  18.     private Date lastProcessTime;  
  19.     /** 
  20.      * 下次計劃執行時間 
  21.      */  
  22.     private Date nextProcessTime;  
  23.     /** 
  24.      * 任務名稱 
  25.      */  
  26.     private String jobName;  
  27.     /** 
  28.      * 任務分組 
  29.      */  
  30.     private String jobGroup;  
  31.     /** 
  32.      * 任務狀態 是否啓動任務 
  33.      */  
  34.     private String jobStatus;  
  35.     /** 
  36.      * cron表達式 
  37.      */  
  38.     private String cronExpression;  
  39.     /** 
  40.      * 描述 
  41.      */  
  42.     private String description;  
  43.     /** 
  44.      * 任務執行時調用哪一個類的方法 包名+類名 
  45.      */  
  46.     private String beanClass;  
  47.   
  48.     private List<JobParam> JobParamList;  
  49.   
  50.     public Long getJobId() {  
  51.         return jobId;  
  52.     }  
  53.   
  54.     public void setJobId(Long jobId) {  
  55.         this.jobId = jobId;  
  56.     }  
  57.   
  58.     public Date getCreateTime() {  
  59.         return createTime;  
  60.     }  
  61.   
  62.     public void setCreateTime(Date createTime) throws ParseException {  
  63.         this.createTime = createTime;  
  64.     }  
  65.   
  66.     public Date getUpdateTime() {  
  67.         return updateTime;  
  68.     }  
  69.   
  70.     public void setUpdateTime(Date updateTime) {  
  71.         this.updateTime = updateTime;  
  72.     }  
  73.   
  74.     public String getJobName() {  
  75.         return jobName;  
  76.     }  
  77.   
  78.     public void setJobName(String jobName) {  
  79.         this.jobName = jobName;  
  80.     }  
  81.   
  82.     public String getJobGroup() {  
  83.         return jobGroup;  
  84.     }  
  85.   
  86.     public void setJobGroup(String jobGroup) {  
  87.         this.jobGroup = jobGroup;  
  88.     }  
  89.   
  90.     public String getJobStatus() {  
  91.         return jobStatus;  
  92.     }  
  93.   
  94.     public void setJobStatus(String jobStatus) {  
  95.         this.jobStatus = jobStatus;  
  96.     }  
  97.   
  98.     public String getCronExpression() {  
  99.         return cronExpression;  
  100.     }  
  101.   
  102.     public void setCronExpression(String cronExpression) {  
  103.         this.cronExpression = cronExpression;  
  104.     }  
  105.   
  106.     public String getDescription() {  
  107.         return description;  
  108.     }  
  109.   
  110.     public void setDescription(String description) {  
  111.         this.description = description;  
  112.     }  
  113.   
  114.     public String getBeanClass() {  
  115.         return beanClass;  
  116.     }  
  117.   
  118.     public void setBeanClass(String beanClass) {  
  119.         this.beanClass = beanClass;  
  120.     }  
  121.   
  122.     public List<JobParam> getJobParamList() {  
  123.         return JobParamList;  
  124.     }  
  125.   
  126.     public void setJobParamList(List<JobParam> jobParamList) {  
  127.         JobParamList = jobParamList;  
  128.     }  
  129.   
  130.     public Date getNextProcessTime() {  
  131.         return nextProcessTime;  
  132.     }  
  133.   
  134.     public void setNextProcessTime(Date nextProcessTime) {  
  135.         this.nextProcessTime = nextProcessTime;  
  136.     }  
  137.   
  138.     public Date getLastProcessTime() {  
  139.         return lastProcessTime;  
  140.     }  
  141.   
  142.     public void setLastProcessTime(Date lastProcessTime) {  
  143.         this.lastProcessTime = lastProcessTime;  
  144.     }  
  145.       
  146. }  
相關文章
相關標籤/搜索