[ server ] [ scheduler ]- script scheduler update -2
This commit is contained in:
@@ -50,6 +50,24 @@ public class SchedulerController {
|
||||
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();
|
||||
|
||||
|
||||
/**
|
||||
* 查询所有定时脚本任务
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<JobDetail> queryAllScriptScheduleMission();
|
||||
|
||||
/**
|
||||
* 获取正在运行的任务job
|
||||
*
|
||||
@@ -141,5 +133,17 @@ public interface QuartzSchedulerService {
|
||||
*/
|
||||
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.server.beans.po.ScriptSchedulerPO;
|
||||
import io.wdd.server.service.ScriptSchedulerService;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.beanutils.BeanUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.RandomStringUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.quartz.*;
|
||||
import org.quartz.DateBuilder.IntervalUnit;
|
||||
import org.quartz.impl.matchers.GroupMatcher;
|
||||
@@ -23,6 +23,7 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.Resource;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -72,7 +73,8 @@ public class QuartzSchedulerServiceImpl implements QuartzSchedulerService {
|
||||
);
|
||||
this.addMission(
|
||||
AgentScriptSchedulerJob.class,
|
||||
scriptSchedulerDTO.getName(),
|
||||
// 方便删除任务,比较好定位
|
||||
scriptSchedulerDTO.getSchedulerUuid(),
|
||||
SCRIPT_SCHEDULE_MISSION_GROUP_NAME,
|
||||
scriptSchedulerDTO.getDescription(),
|
||||
0,
|
||||
@@ -127,7 +129,6 @@ public class QuartzSchedulerServiceImpl implements QuartzSchedulerService {
|
||||
* @param scriptSchedulerVO 定时脚本任务-前端页面-实体类
|
||||
* @return 定时脚本任务-中间转换状态-实体类
|
||||
*/
|
||||
@SneakyThrows
|
||||
private ScriptSchedulerDTO validateAndConvertToScriptSchedulerDTO(ScriptSchedulerVO scriptSchedulerVO) {
|
||||
|
||||
// 验证cron表达式
|
||||
@@ -156,10 +157,14 @@ public class QuartzSchedulerServiceImpl implements QuartzSchedulerService {
|
||||
|
||||
// 生成DTO对象
|
||||
ScriptSchedulerDTO dto = new ScriptSchedulerDTO();
|
||||
BeanUtils.copyProperties(
|
||||
dto,
|
||||
scriptSchedulerVO
|
||||
);
|
||||
try {
|
||||
BeanUtils.copyProperties(
|
||||
dto,
|
||||
scriptSchedulerVO
|
||||
);
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
// 初始化属性值
|
||||
dto.setAgentTopicNameToFutureResultKeyMap(
|
||||
@@ -170,10 +175,11 @@ public class QuartzSchedulerServiceImpl implements QuartzSchedulerService {
|
||||
dto.setCompleteCommandList(completeCommandList);
|
||||
dto.setTargetMachineList(targetMachineList);
|
||||
|
||||
|
||||
// 生成 scheduler uuid
|
||||
String uuid = RandomStringUtils.randomAlphabetic(32);
|
||||
dto.setSchedulerUuid(uuid);
|
||||
if (StringUtils.isEmpty(scriptSchedulerVO.getSchedulerUuid())) {
|
||||
String uuid = RandomStringUtils.randomAlphabetic(32);
|
||||
dto.setSchedulerUuid(uuid);
|
||||
}
|
||||
|
||||
return dto;
|
||||
}
|
||||
@@ -363,7 +369,9 @@ public class QuartzSchedulerServiceImpl implements QuartzSchedulerService {
|
||||
);
|
||||
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
|
||||
log.info(
|
||||
"new jobTime: {}",
|
||||
"prepare to UPDATE Job {} Group {} to new jobTime: {}",
|
||||
jobName,
|
||||
jobGroupName,
|
||||
jobTime
|
||||
);
|
||||
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
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user