Kaynağa Gözat

feat: update something

shc 1 yıl önce
ebeveyn
işleme
04f86aad36

+ 201 - 203
hnqz-visual/hnqz-daemon-quartz/src/main/java/com/qunzhixinxi/hnqz/daemon/quartz/util/TaskUtil.java

@@ -17,208 +17,206 @@ import static com.qunzhixinxi.hnqz.daemon.quartz.constants.HnqzQuartzEnum.*;
 @Component
 public class TaskUtil {
 
-	/**
-	 * 获取定时任务的唯一key
-	 * @param sysjob
-	 * @return
-	 */
-	public static JobKey getJobKey(SysJob sysjob) {
-		return JobKey.jobKey(sysjob.getJobName(), sysjob.getJobGroup());
-	}
-
-	/**
-	 * 获取定时任务触发器cron的唯一key
-	 * @param sysjob
-	 * @return
-	 */
-	public static TriggerKey getTriggerKey(SysJob sysjob) {
-		return TriggerKey.triggerKey(sysjob.getJobName(), sysjob.getJobGroup());
-	}
-
-	/**
-	 * 添加或更新定时任务
-	 * @param sysjob
-	 * @param scheduler
-	 */
-	public void addOrUpateJob(SysJob sysjob, Scheduler scheduler) {
-		CronTrigger trigger = null;
-		try {
-			JobKey jobKey = getJobKey(sysjob);
-			// 获得触发器
-			TriggerKey triggerKey = getTriggerKey(sysjob);
-			trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
-			// 判断触发器是否存在(如果存在说明之前运行过但是在当前被禁用了,如果不存在说明一次都没运行过)
-			if (trigger == null) {
-				// 新建一个工作任务 指定任务类型为串接进行的
-				JobDetail jobDetail = JobBuilder.newJob(HnqzQuartzFactory.class).withIdentity(jobKey).build();
-				// 将任务信息添加到任务信息中
-				jobDetail.getJobDataMap().put(SCHEDULE_JOB_KEY.getType(), sysjob);
-				// 将cron表达式进行转换
-				CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(sysjob.getCronExpression());
-				cronScheduleBuilder = this.handleCronScheduleMisfirePolicy(sysjob, cronScheduleBuilder);
-				// 创建触发器并将cron表达式对象给塞入
-				trigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder)
-						.build();
-				// 在调度器中将触发器和任务进行组合
-				scheduler.scheduleJob(jobDetail, trigger);
-			}
-			else {
-				CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(sysjob.getCronExpression());
-				cronScheduleBuilder = this.handleCronScheduleMisfirePolicy(sysjob, cronScheduleBuilder);
-				// 按照新的规则进行
-				trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(cronScheduleBuilder)
-						.build();
-				// 将任务信息更新到任务信息中
-				trigger.getJobDataMap().put(SCHEDULE_JOB_KEY.getType(), sysjob);
-				// 重启
-				scheduler.rescheduleJob(triggerKey, trigger);
-			}
-			// 如任务状态为暂停
-			if (sysjob.getJobStatus().equals(JOB_STATUS_NOT_RUNNING.getType())) {
-				this.pauseJob(sysjob, scheduler);
-			}
-		}
-		catch (SchedulerException e) {
-			log.error("添加或更新定时任务,失败信息:{}", e.getMessage());
-		}
-	}
-
-	/**
-	 * 立即执行一次任务
-	 */
-	public static boolean runOnce(Scheduler scheduler, SysJob sysJob) {
-		try {
-			// 参数
-			JobDataMap dataMap = new JobDataMap();
-			dataMap.put(SCHEDULE_JOB_KEY.getType(), sysJob);
-
-			scheduler.triggerJob(getJobKey(sysJob), dataMap);
-		}
-		catch (SchedulerException e) {
-			log.error("立刻执行定时任务,失败信息:{}", e.getMessage());
-			return false;
-		}
-
-		return true;
-	}
-
-	/**
-	 * 暂停定时任务
-	 * @param sysjob
-	 * @param scheduler
-	 */
-	public void pauseJob(SysJob sysjob, Scheduler scheduler) {
-		try {
-			if (scheduler != null) {
-				scheduler.pauseJob(getJobKey(sysjob));
-			}
-		}
-		catch (SchedulerException e) {
-			log.error("暂停任务失败,失败信息:{}", e.getMessage());
-		}
-
-	}
-
-	/**
-	 * 恢复定时任务
-	 * @param sysjob
-	 * @param scheduler
-	 */
-	public void resumeJob(SysJob sysjob, Scheduler scheduler) {
-		try {
-			if (scheduler != null) {
-				scheduler.resumeJob(getJobKey(sysjob));
-			}
-		}
-		catch (SchedulerException e) {
-			log.error("恢复任务失败,失败信息:{}", e.getMessage());
-		}
-
-	}
-
-	/**
-	 * 移除定时任务
-	 * @param sysjob
-	 * @param scheduler
-	 */
-	public void removeJob(SysJob sysjob, Scheduler scheduler) {
-		try {
-			if (scheduler != null) {
-				// 停止触发器
-				scheduler.pauseTrigger(getTriggerKey(sysjob));
-				// 移除触发器
-				scheduler.unscheduleJob(getTriggerKey(sysjob));
-				// 删除任务
-				scheduler.deleteJob(getJobKey(sysjob));
-			}
-		}
-		catch (Exception e) {
-			log.error("移除定时任务失败,失败信息:{}", e.getMessage());
-		}
-	}
-
-	/**
-	 * 启动所有运行定时任务
-	 * @param scheduler
-	 */
-	public void startJobs(Scheduler scheduler) {
-		try {
-			if (scheduler != null) {
-				scheduler.resumeAll();
-			}
-		}
-		catch (SchedulerException e) {
-			log.error("启动所有运行定时任务失败,失败信息:{}", e.getMessage());
-		}
-	}
-
-	/**
-	 * 停止所有运行定时任务
-	 * @param scheduler
-	 */
-	public void pauseJobs(Scheduler scheduler) {
-		try {
-			if (scheduler != null) {
-				scheduler.pauseAll();
-			}
-		}
-		catch (Exception e) {
-			log.error("暂停所有运行定时任务失败,失败信息:{}", e.getMessage());
-		}
-	}
-
-	/**
-	 * 获取错失执行策略方法
-	 * @param sysJob
-	 * @param cronScheduleBuilder
-	 * @return
-	 */
-	private CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob sysJob,
-			CronScheduleBuilder cronScheduleBuilder) {
-		if (MISFIRE_DEFAULT.getType().equals(sysJob.getMisfirePolicy())) {
-			return cronScheduleBuilder;
-		}
-		else if (MISFIRE_IGNORE_MISFIRES.getType().equals(sysJob.getMisfirePolicy())) {
-			return cronScheduleBuilder.withMisfireHandlingInstructionIgnoreMisfires();
-		}
-		else if (MISFIRE_FIRE_AND_PROCEED.getType().equals(sysJob.getMisfirePolicy())) {
-			return cronScheduleBuilder.withMisfireHandlingInstructionFireAndProceed();
-		}
-		else if (MISFIRE_DO_NOTHING.getType().equals(sysJob.getMisfirePolicy())) {
-			return cronScheduleBuilder.withMisfireHandlingInstructionDoNothing();
-		}
-		else {
-			return cronScheduleBuilder;
-		}
-	}
-
-	/**
-	 * 判断cron表达式是否正确
-	 * @param cronExpression
-	 * @return
-	 */
-	public boolean isValidCron(String cronExpression) {
-		return CronExpression.isValidExpression(cronExpression);
-	}
+    /**
+     * 获取定时任务的唯一key
+     *
+     * @param sysjob
+     * @return
+     */
+    public static JobKey getJobKey(SysJob sysjob) {
+        return JobKey.jobKey(sysjob.getJobName(), sysjob.getJobGroup());
+    }
+
+    /**
+     * 获取定时任务触发器cron的唯一key
+     *
+     * @param sysjob
+     * @return
+     */
+    public static TriggerKey getTriggerKey(SysJob sysjob) {
+        return TriggerKey.triggerKey(sysjob.getJobName(), sysjob.getJobGroup());
+    }
+
+    /**
+     * 添加或更新定时任务
+     *
+     * @param sysjob
+     * @param scheduler
+     */
+    public void addOrUpateJob(SysJob sysjob, Scheduler scheduler) {
+        CronTrigger trigger = null;
+        try {
+            JobKey jobKey = getJobKey(sysjob);
+            // 获得触发器
+            TriggerKey triggerKey = getTriggerKey(sysjob);
+            trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
+            // 判断触发器是否存在(如果存在说明之前运行过但是在当前被禁用了,如果不存在说明一次都没运行过)
+            if (trigger == null) {
+                // 新建一个工作任务 指定任务类型为串接进行的
+                JobDetail jobDetail = JobBuilder.newJob(HnqzQuartzFactory.class).withIdentity(jobKey).build();
+                // 将任务信息添加到任务信息中
+                jobDetail.getJobDataMap().put(SCHEDULE_JOB_KEY.getType(), sysjob);
+                // 将cron表达式进行转换
+                CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(sysjob.getCronExpression());
+                cronScheduleBuilder = this.handleCronScheduleMisfirePolicy(sysjob, cronScheduleBuilder);
+                // 创建触发器并将cron表达式对象给塞入
+                trigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder)
+                        .build();
+                // 在调度器中将触发器和任务进行组合
+                scheduler.scheduleJob(jobDetail, trigger);
+            } else {
+                CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(sysjob.getCronExpression());
+                cronScheduleBuilder = this.handleCronScheduleMisfirePolicy(sysjob, cronScheduleBuilder);
+                // 按照新的规则进行
+                trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(cronScheduleBuilder)
+                        .build();
+                // 将任务信息更新到任务信息中
+                trigger.getJobDataMap().put(SCHEDULE_JOB_KEY.getType(), sysjob);
+                // 重启
+                scheduler.rescheduleJob(triggerKey, trigger);
+            }
+            // 如任务状态为暂停
+            if (sysjob.getJobStatus().equals(JOB_STATUS_NOT_RUNNING.getType())) {
+                this.pauseJob(sysjob, scheduler);
+            }
+        } catch (SchedulerException e) {
+            log.error("添加或更新定时任务,失败信息:{}", e.getMessage(), e);
+        }
+    }
+
+    /**
+     * 立即执行一次任务
+     */
+    public static boolean runOnce(Scheduler scheduler, SysJob sysJob) {
+        try {
+            // 参数
+            JobDataMap dataMap = new JobDataMap();
+            dataMap.put(SCHEDULE_JOB_KEY.getType(), sysJob);
+
+            scheduler.triggerJob(getJobKey(sysJob), dataMap);
+        } catch (SchedulerException e) {
+            log.error("立刻执行定时任务,失败信息:{}", e.getMessage(), e);
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * 暂停定时任务
+     *
+     * @param sysjob
+     * @param scheduler
+     */
+    public void pauseJob(SysJob sysjob, Scheduler scheduler) {
+        try {
+            if (scheduler != null) {
+                scheduler.pauseJob(getJobKey(sysjob));
+            }
+        } catch (SchedulerException e) {
+            log.error("暂停任务失败,失败信息:{}", e.getMessage(), e);
+        }
+
+    }
+
+    /**
+     * 恢复定时任务
+     *
+     * @param sysjob
+     * @param scheduler
+     */
+    public void resumeJob(SysJob sysjob, Scheduler scheduler) {
+        try {
+            if (scheduler != null) {
+                scheduler.resumeJob(getJobKey(sysjob));
+            }
+        } catch (SchedulerException e) {
+            log.error("恢复任务失败,失败信息:{}", e.getMessage(), e);
+        }
+
+    }
+
+    /**
+     * 移除定时任务
+     *
+     * @param sysjob
+     * @param scheduler
+     */
+    public void removeJob(SysJob sysjob, Scheduler scheduler) {
+        try {
+            if (scheduler != null) {
+                // 停止触发器
+                scheduler.pauseTrigger(getTriggerKey(sysjob));
+                // 移除触发器
+                scheduler.unscheduleJob(getTriggerKey(sysjob));
+                // 删除任务
+                scheduler.deleteJob(getJobKey(sysjob));
+            }
+        } catch (Exception e) {
+            log.error("移除定时任务失败,失败信息:{}", e.getMessage(), e);
+        }
+    }
+
+    /**
+     * 启动所有运行定时任务
+     *
+     * @param scheduler
+     */
+    public void startJobs(Scheduler scheduler) {
+        try {
+            if (scheduler != null) {
+                scheduler.resumeAll();
+            }
+        } catch (SchedulerException e) {
+            log.error("启动所有运行定时任务失败,失败信息:{}", e.getMessage(), e);
+        }
+    }
+
+    /**
+     * 停止所有运行定时任务
+     *
+     * @param scheduler
+     */
+    public void pauseJobs(Scheduler scheduler) {
+        try {
+            if (scheduler != null) {
+                scheduler.pauseAll();
+            }
+        } catch (Exception e) {
+            log.error("暂停所有运行定时任务失败,失败信息:{}", e.getMessage(), e);
+        }
+    }
+
+    /**
+     * 获取错失执行策略方法
+     *
+     * @param sysJob
+     * @param cronScheduleBuilder
+     * @return
+     */
+    private CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob sysJob,
+                                                                CronScheduleBuilder cronScheduleBuilder) {
+        if (MISFIRE_DEFAULT.getType().equals(sysJob.getMisfirePolicy())) {
+            return cronScheduleBuilder;
+        } else if (MISFIRE_IGNORE_MISFIRES.getType().equals(sysJob.getMisfirePolicy())) {
+            return cronScheduleBuilder.withMisfireHandlingInstructionIgnoreMisfires();
+        } else if (MISFIRE_FIRE_AND_PROCEED.getType().equals(sysJob.getMisfirePolicy())) {
+            return cronScheduleBuilder.withMisfireHandlingInstructionFireAndProceed();
+        } else if (MISFIRE_DO_NOTHING.getType().equals(sysJob.getMisfirePolicy())) {
+            return cronScheduleBuilder.withMisfireHandlingInstructionDoNothing();
+        } else {
+            return cronScheduleBuilder;
+        }
+    }
+
+    /**
+     * 判断cron表达式是否正确
+     *
+     * @param cronExpression
+     * @return
+     */
+    public boolean isValidCron(String cronExpression) {
+        return CronExpression.isValidExpression(cronExpression);
+    }
 
 }