Spring與quartz集成後的定時任務工廠類

請先參考:http://blog.csdn.net/feiyang123_/article/details/46372711
package org.phoenix.web.quartz;

import org.phoenix.web.email.SpringBeanFactory;
import org.phoenix.web.model.TaskModel;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.SchedulerException;
import org.quartz.TriggerBuilder;
import org.quartz.TriggerKey;
import org.quartz.impl.StdScheduler;
import org.springframework.scheduling.quartz.QuartzJobBean;

/**
 * 定時任務工廠,對任務進行增刪改操作
 * @author mengfeiyang
 *
 */

public class JobFactory {
    private static String JOB_GROUP_NAME = "phoenix.case.job";  
    
	public static String addJob(Class<? extends QuartzJobBean> clazz,TaskModel taskModel){
		try{
		 StdScheduler scheduler = (StdScheduler)SpringBeanFactory.getInstance().getBeanById("schedulerFactoryBean");	
		 TriggerKey triggerKey = TriggerKey.triggerKey(taskModel.getId()+"", JOB_GROUP_NAME);
         CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
         JobDetail jobDetail = JobBuilder.newJob(clazz)
                 .withIdentity(taskModel.getId()+"", JOB_GROUP_NAME)
                 .build();
         jobDetail.getJobDataMap().put("taskModel", taskModel);
         CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(taskModel.getTaskParameter());
          
         trigger = TriggerBuilder.newTrigger()
                 .withIdentity(taskModel.getId()+"", JOB_GROUP_NAME)
                 .withSchedule(scheduleBuilder)
                 .build();
          
         scheduler.scheduleJob(jobDetail, trigger);
		}catch(SchedulerException e){
			e.printStackTrace();
			return e.getCause().toString();
		}
		return "success";
	}
	
	@SuppressWarnings("unchecked")
	public static String updateJob(TaskModel taskModel){
		try{
			StdScheduler scheduler = (StdScheduler)SpringBeanFactory.getInstance().getBeanById("schedulerFactoryBean");
	        JobDetail jobDetail = scheduler.getJobDetail(JobKey.jobKey(taskModel.getId()+"", JOB_GROUP_NAME));  
	        Class<? extends QuartzJobBean> objJobClass = (Class<? extends QuartzJobBean>) jobDetail.getJobClass(); 
	        deleteJob(taskModel);
	        addJob(objJobClass,taskModel);
	        return "success";
		}catch(Exception e){
			return "異常信息:"+e.getMessage();
		}
	}
	
	public static String stopJob(TaskModel taskModel){
		StdScheduler scheduler = (StdScheduler)SpringBeanFactory.getInstance().getBeanById("schedulerFactoryBean");
        JobKey jobKey = JobKey.jobKey(taskModel.getId()+"", JOB_GROUP_NAME);
        try {
            scheduler.pauseJob(jobKey);
            return "success";
        } catch (SchedulerException e) {
            e.printStackTrace();
            return e.getCause().toString();
        }
	}
	
	public static String resumeJob(TaskModel taskModel){
		StdScheduler scheduler = (StdScheduler)SpringBeanFactory.getInstance().getBeanById("schedulerFactoryBean");
        JobKey jobKey = JobKey.jobKey(taskModel.getId()+"", JOB_GROUP_NAME);
        try {
            scheduler.resumeJob(jobKey);
            return "success";
        } catch (SchedulerException e) {
            e.printStackTrace();
            return e.getCause().toString();
        }
	}
	
	public static String deleteJob(TaskModel taskModel){
		StdScheduler scheduler = (StdScheduler)SpringBeanFactory.getInstance().getBeanById("schedulerFactoryBean");
        JobKey jobKey = JobKey.jobKey(taskModel.getId()+"", JOB_GROUP_NAME);
        try {
        	scheduler.pauseTrigger(TriggerKey.triggerKey(taskModel.getId()+"", JOB_GROUP_NAME));// 停止觸發器  
        	scheduler.unscheduleJob(TriggerKey.triggerKey(taskModel.getId()+"", JOB_GROUP_NAME));// 移除觸發器  
            scheduler.deleteJob(jobKey);
            return "success";
        } catch (SchedulerException e) {
            e.printStackTrace();
            return e.getCause().toString();
        }
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章