import org.quartz.JobBuilder; //导入方法依赖的package包/类
/**
* 新增job
*
* @param inputObject
* @param outputObject
* @throws Exception
*/
public boolean updateTask(TaskScheduled taskScheduled) {
String jobGroup = taskScheduled.getTaskGroup();
if (DataUtil.isEmpty(jobGroup)) {
jobGroup = "ds_job";
}
String jobName = taskScheduled.getTaskName();
if (DataUtil.isEmpty(jobName)) {
jobName = String.valueOf(System.currentTimeMillis());
}
String cronExpression = taskScheduled.getTaskCron();
String targetObject = taskScheduled.getTargetObject();
String targetMethod = taskScheduled.getTargetMethod();
String jobDescription = taskScheduled.getTaskDesc();
String jobType = taskScheduled.getJobType();
String taskType = taskScheduled.getTaskType();
JobDataMap jobDataMap = new JobDataMap();
if (TaskType.dubbo.equals(taskType)) {
jobDataMap.put("targetSystem", taskScheduled.getTargetSystem());
}
jobDataMap.put("targetObject", targetObject);
jobDataMap.put("targetMethod", targetMethod);
jobDataMap.put("taskType", taskType);
jobDataMap.put("contactName", taskScheduled.getContactName());
jobDataMap.put("contactEmail", taskScheduled.getContactEmail());
JobBuilder jobBuilder = null;
if (JobType.job.equals(jobType)) {
jobBuilder = JobBuilder.newJob(BaseJob.class);
} else if (JobType.statefulJob.equals(jobType)) {
jobBuilder = JobBuilder.newJob(StatefulJob.class);
}
if (jobBuilder != null) {
JobDetail jobDetail = jobBuilder.withIdentity(jobName, jobGroup).withDescription(jobDescription)
.storeDurably(true).usingJobData(jobDataMap).build();
Trigger trigger = TriggerBuilder.newTrigger().withSchedule(CronScheduleBuilder.cronSchedule(cronExpression))
.withIdentity(jobName, jobGroup).withDescription(jobDescription).forJob(jobDetail)
.usingJobData(jobDataMap).build();
try {
JobDetail detail = scheduler.getJobDetail(new JobKey(jobName, jobGroup));
if (detail == null) {
scheduler.scheduleJob(jobDetail, trigger);
} else {
scheduler.addJob(jobDetail, true);
scheduler.rescheduleJob(new TriggerKey(jobName, jobGroup), trigger);
}
return true;
} catch (SchedulerException e) {
logger.error("SchedulerException", "SchedulerException", e);
throw new BusinessException(e);
}
}
return false;
}