[ server ] [ scheduler ]- script scheduler update -2
This commit is contained in:
@@ -50,6 +50,24 @@ public class SchedulerController {
|
|||||||
return R.ok(octopusQuartzService.queryAllScriptScheduleMission());
|
return R.ok(octopusQuartzService.queryAllScriptScheduleMission());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "[脚本]-删除定时脚本任务")
|
||||||
|
@PostMapping(value = "/script/delete")
|
||||||
|
public R<Boolean> deleteScriptScheduler(
|
||||||
|
@RequestParam(value = "scriptJobUUID") @ApiParam(value = "scriptJobUUID", name = "定时脚本任务UUID") String scriptJobUUID
|
||||||
|
) {
|
||||||
|
|
||||||
|
return R.ok(octopusQuartzService.deleteScriptScheduleMission(scriptJobUUID));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "[脚本]-修改定时脚本任务")
|
||||||
|
@PostMapping(value = "/script/modify")
|
||||||
|
public R<JobDetail> modifyScriptScheduler(
|
||||||
|
@ApiParam(name = "scheduleScript") @RequestBody() ScriptSchedulerVO scriptSchedulerVO
|
||||||
|
) {
|
||||||
|
|
||||||
|
return R.ok(octopusQuartzService.modifyScriptScheduleMission(scriptSchedulerVO));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------
|
* --------------------------------------------------------------
|
||||||
* 普通的定时任务查询功能
|
* 普通的定时任务查询功能
|
||||||
|
|||||||
@@ -110,14 +110,6 @@ public interface QuartzSchedulerService {
|
|||||||
*/
|
*/
|
||||||
List<Map<String, Object>> queryAllMission();
|
List<Map<String, Object>> queryAllMission();
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询所有定时脚本任务
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
List<JobDetail> queryAllScriptScheduleMission();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取正在运行的任务job
|
* 获取正在运行的任务job
|
||||||
*
|
*
|
||||||
@@ -141,5 +133,17 @@ public interface QuartzSchedulerService {
|
|||||||
*/
|
*/
|
||||||
HashMap<String, String> createScriptScheduledMission(ScriptSchedulerVO scriptSchedulerVO);
|
HashMap<String, String> createScriptScheduledMission(ScriptSchedulerVO scriptSchedulerVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有定时脚本任务
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<JobDetail> queryAllScriptScheduleMission();
|
||||||
|
|
||||||
|
|
||||||
|
boolean deleteScriptScheduleMission(String schedulerUuid);
|
||||||
|
|
||||||
|
|
||||||
|
JobDetail modifyScriptScheduleMission(ScriptSchedulerVO scriptSchedulerVO);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,11 +9,11 @@ import io.wdd.rpc.scheduler.config.QuartzSchedulerUtils;
|
|||||||
import io.wdd.rpc.scheduler.job.AgentScriptSchedulerJob;
|
import io.wdd.rpc.scheduler.job.AgentScriptSchedulerJob;
|
||||||
import io.wdd.server.beans.po.ScriptSchedulerPO;
|
import io.wdd.server.beans.po.ScriptSchedulerPO;
|
||||||
import io.wdd.server.service.ScriptSchedulerService;
|
import io.wdd.server.service.ScriptSchedulerService;
|
||||||
import lombok.SneakyThrows;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.beanutils.BeanUtils;
|
import org.apache.commons.beanutils.BeanUtils;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.RandomStringUtils;
|
import org.apache.commons.lang3.RandomStringUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.quartz.*;
|
import org.quartz.*;
|
||||||
import org.quartz.DateBuilder.IntervalUnit;
|
import org.quartz.DateBuilder.IntervalUnit;
|
||||||
import org.quartz.impl.matchers.GroupMatcher;
|
import org.quartz.impl.matchers.GroupMatcher;
|
||||||
@@ -23,6 +23,7 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -72,7 +73,8 @@ public class QuartzSchedulerServiceImpl implements QuartzSchedulerService {
|
|||||||
);
|
);
|
||||||
this.addMission(
|
this.addMission(
|
||||||
AgentScriptSchedulerJob.class,
|
AgentScriptSchedulerJob.class,
|
||||||
scriptSchedulerDTO.getName(),
|
// 方便删除任务,比较好定位
|
||||||
|
scriptSchedulerDTO.getSchedulerUuid(),
|
||||||
SCRIPT_SCHEDULE_MISSION_GROUP_NAME,
|
SCRIPT_SCHEDULE_MISSION_GROUP_NAME,
|
||||||
scriptSchedulerDTO.getDescription(),
|
scriptSchedulerDTO.getDescription(),
|
||||||
0,
|
0,
|
||||||
@@ -127,7 +129,6 @@ public class QuartzSchedulerServiceImpl implements QuartzSchedulerService {
|
|||||||
* @param scriptSchedulerVO 定时脚本任务-前端页面-实体类
|
* @param scriptSchedulerVO 定时脚本任务-前端页面-实体类
|
||||||
* @return 定时脚本任务-中间转换状态-实体类
|
* @return 定时脚本任务-中间转换状态-实体类
|
||||||
*/
|
*/
|
||||||
@SneakyThrows
|
|
||||||
private ScriptSchedulerDTO validateAndConvertToScriptSchedulerDTO(ScriptSchedulerVO scriptSchedulerVO) {
|
private ScriptSchedulerDTO validateAndConvertToScriptSchedulerDTO(ScriptSchedulerVO scriptSchedulerVO) {
|
||||||
|
|
||||||
// 验证cron表达式
|
// 验证cron表达式
|
||||||
@@ -156,10 +157,14 @@ public class QuartzSchedulerServiceImpl implements QuartzSchedulerService {
|
|||||||
|
|
||||||
// 生成DTO对象
|
// 生成DTO对象
|
||||||
ScriptSchedulerDTO dto = new ScriptSchedulerDTO();
|
ScriptSchedulerDTO dto = new ScriptSchedulerDTO();
|
||||||
BeanUtils.copyProperties(
|
try {
|
||||||
dto,
|
BeanUtils.copyProperties(
|
||||||
scriptSchedulerVO
|
dto,
|
||||||
);
|
scriptSchedulerVO
|
||||||
|
);
|
||||||
|
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
// 初始化属性值
|
// 初始化属性值
|
||||||
dto.setAgentTopicNameToFutureResultKeyMap(
|
dto.setAgentTopicNameToFutureResultKeyMap(
|
||||||
@@ -170,10 +175,11 @@ public class QuartzSchedulerServiceImpl implements QuartzSchedulerService {
|
|||||||
dto.setCompleteCommandList(completeCommandList);
|
dto.setCompleteCommandList(completeCommandList);
|
||||||
dto.setTargetMachineList(targetMachineList);
|
dto.setTargetMachineList(targetMachineList);
|
||||||
|
|
||||||
|
|
||||||
// 生成 scheduler uuid
|
// 生成 scheduler uuid
|
||||||
String uuid = RandomStringUtils.randomAlphabetic(32);
|
if (StringUtils.isEmpty(scriptSchedulerVO.getSchedulerUuid())) {
|
||||||
dto.setSchedulerUuid(uuid);
|
String uuid = RandomStringUtils.randomAlphabetic(32);
|
||||||
|
dto.setSchedulerUuid(uuid);
|
||||||
|
}
|
||||||
|
|
||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
@@ -363,7 +369,9 @@ public class QuartzSchedulerServiceImpl implements QuartzSchedulerService {
|
|||||||
);
|
);
|
||||||
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
|
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
|
||||||
log.info(
|
log.info(
|
||||||
"new jobTime: {}",
|
"prepare to UPDATE Job {} Group {} to new jobTime: {}",
|
||||||
|
jobName,
|
||||||
|
jobGroupName,
|
||||||
jobTime
|
jobTime
|
||||||
);
|
);
|
||||||
trigger = trigger
|
trigger = trigger
|
||||||
@@ -554,6 +562,57 @@ public class QuartzSchedulerServiceImpl implements QuartzSchedulerService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean deleteScriptScheduleMission(String schedulerUuid) {
|
||||||
|
|
||||||
|
// 直接构造
|
||||||
|
JobKey jobKey = new JobKey(
|
||||||
|
schedulerUuid,
|
||||||
|
SCRIPT_SCHEDULE_MISSION_GROUP_NAME
|
||||||
|
);
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
return scheduler.deleteJob(jobKey);
|
||||||
|
|
||||||
|
} catch (SchedulerException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JobDetail modifyScriptScheduleMission(ScriptSchedulerVO scriptSchedulerVO) {
|
||||||
|
|
||||||
|
String uuid = scriptSchedulerVO.getSchedulerUuid();
|
||||||
|
|
||||||
|
// 直接构造
|
||||||
|
JobKey jobKey = new JobKey(
|
||||||
|
uuid,
|
||||||
|
SCRIPT_SCHEDULE_MISSION_GROUP_NAME
|
||||||
|
);
|
||||||
|
|
||||||
|
JobDetail jobDetail = null;
|
||||||
|
try {
|
||||||
|
jobDetail = scheduler.getJobDetail(jobKey);
|
||||||
|
} catch (SchedulerException e) {
|
||||||
|
// job 不存在或者什么信息
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// 该Job存在
|
||||||
|
// 修改JobDetail信息
|
||||||
|
ScriptSchedulerDTO scriptSchedulerDTO = validateAndConvertToScriptSchedulerDTO(scriptSchedulerVO);
|
||||||
|
|
||||||
|
// 修改 Mission相应的 cron时间信息
|
||||||
|
updateMission(
|
||||||
|
uuid,
|
||||||
|
SCRIPT_SCHEDULE_MISSION_GROUP_NAME,
|
||||||
|
scriptSchedulerDTO.getCronExpress()
|
||||||
|
);
|
||||||
|
|
||||||
|
return jobDetail;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取所有正在运行的job
|
* 获取所有正在运行的job
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user