mirror of
https://github.com/PowerJob/PowerJob.git
synced 2025-07-17 00:00:04 +08:00
fix: the problem of failed to save workflow and job
This commit is contained in:
parent
8909584976
commit
3923937f6c
@ -83,15 +83,14 @@ public class TimingStrategyService {
|
||||
/**
|
||||
* 计算下次的调度时间并检查校验规则
|
||||
*
|
||||
* @param preTriggerTime 上次触发时间(nullable)
|
||||
* @param timeExpressionType 定时表达式类型
|
||||
* @param timeExpression 表达式
|
||||
* @param startTime 起始时间(include)
|
||||
* @param endTime 结束时间(include)
|
||||
* @return 下次的调度时间
|
||||
*/
|
||||
public Long calculateNextTriggerTimeWithInspection(Long preTriggerTime, TimeExpressionType timeExpressionType, String timeExpression, Long startTime, Long endTime) {
|
||||
Long nextTriggerTime = calculateNextTriggerTime(preTriggerTime, timeExpressionType, timeExpression, startTime, endTime);
|
||||
public Long calculateNextTriggerTimeWithInspection( TimeExpressionType timeExpressionType, String timeExpression, Long startTime, Long endTime) {
|
||||
Long nextTriggerTime = calculateNextTriggerTime(null, timeExpressionType, timeExpression, startTime, endTime);
|
||||
if (TimeExpressionType.INSPECT_TYPES.contains(timeExpressionType.getV()) && nextTriggerTime == null) {
|
||||
throw new PowerJobException("time expression is out of date: " + timeExpression);
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ public class JobService {
|
||||
if (!CollectionUtils.isEmpty(request.getNotifyUserIds())) {
|
||||
jobInfoDO.setNotifyUserIds(SJ.COMMA_JOINER.join(request.getNotifyUserIds()));
|
||||
}
|
||||
LifeCycle lifecycle = Optional.of(request.getLifecycle()).orElse(LifeCycle.EMPTY_LIFE_CYCLE);
|
||||
LifeCycle lifecycle = Optional.ofNullable(request.getLifecycle()).orElse(LifeCycle.EMPTY_LIFE_CYCLE);
|
||||
jobInfoDO.setLifecycle(JSON.toJSONString(lifecycle));
|
||||
// 检查定时策略
|
||||
timingStrategyService.validate(request.getTimeExpressionType(), request.getTimeExpression(), lifecycle.getStart(), lifecycle.getEnd());
|
||||
@ -255,7 +255,7 @@ public class JobService {
|
||||
jobInfo.setTimeExpression(null);
|
||||
} else {
|
||||
LifeCycle lifeCycle = LifeCycle.parse(jobInfo.getLifecycle());
|
||||
Long nextValidTime = timingStrategyService.calculateNextTriggerTimeWithInspection(jobInfo.getNextTriggerTime(), TimeExpressionType.CRON, jobInfo.getTimeExpression(), lifeCycle.getStart(), lifeCycle.getEnd());
|
||||
Long nextValidTime = timingStrategyService.calculateNextTriggerTimeWithInspection(TimeExpressionType.of(jobInfo.getTimeExpressionType()), jobInfo.getTimeExpression(), lifeCycle.getStart(), lifeCycle.getEnd());
|
||||
jobInfo.setNextTriggerTime(nextValidTime);
|
||||
}
|
||||
// 重写最后修改时间
|
||||
|
@ -88,12 +88,12 @@ public class WorkflowService {
|
||||
if (req.getLifeCycle() != null) {
|
||||
wf.setLifecycle(JSON.toJSONString(req.getLifeCycle()));
|
||||
}
|
||||
if (TimeExpressionType.FREQUENT_TYPES.contains(req.getTimeExpressionType().getV())){
|
||||
if (TimeExpressionType.FREQUENT_TYPES.contains(req.getTimeExpressionType().getV())) {
|
||||
// 固定频率类型的任务不计算
|
||||
wf.setTimeExpression(null);
|
||||
}else {
|
||||
LifeCycle lifeCycle = Optional.of(req.getLifeCycle()).orElse(LifeCycle.EMPTY_LIFE_CYCLE);
|
||||
Long nextValidTime = timingStrategyService.calculateNextTriggerTimeWithInspection(wf.getNextTriggerTime(), TimeExpressionType.CRON, wf.getTimeExpression(), lifeCycle.getStart(), lifeCycle.getEnd());
|
||||
} else {
|
||||
LifeCycle lifeCycle = Optional.ofNullable(req.getLifeCycle()).orElse(LifeCycle.EMPTY_LIFE_CYCLE);
|
||||
Long nextValidTime = timingStrategyService.calculateNextTriggerTimeWithInspection(TimeExpressionType.of(wf.getTimeExpressionType()), wf.getTimeExpression(), lifeCycle.getStart(), lifeCycle.getEnd());
|
||||
wf.setNextTriggerTime(nextValidTime);
|
||||
}
|
||||
// 新增工作流,需要先 save 一下获取 ID
|
||||
|
@ -39,7 +39,7 @@ public class JobController {
|
||||
private JobInfoRepository jobInfoRepository;
|
||||
|
||||
@PostMapping("/save")
|
||||
public ResultDTO<Void> saveJobInfo(@RequestBody SaveJobInfoRequest request) throws Exception {
|
||||
public ResultDTO<Void> saveJobInfo(@RequestBody SaveJobInfoRequest request) {
|
||||
jobService.saveJob(request);
|
||||
return ResultDTO.success(null);
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import tech.powerjob.common.enums.ExecuteType;
|
||||
import tech.powerjob.common.enums.ProcessorType;
|
||||
import tech.powerjob.common.enums.TimeExpressionType;
|
||||
import tech.powerjob.common.model.AlarmConfig;
|
||||
import tech.powerjob.common.model.LifeCycle;
|
||||
import tech.powerjob.common.utils.CommonUtils;
|
||||
import tech.powerjob.server.common.SJ;
|
||||
import tech.powerjob.common.enums.DispatchStrategy;
|
||||
@ -139,7 +140,7 @@ public class JobInfoVO {
|
||||
|
||||
private String dispatchStrategy;
|
||||
|
||||
private String lifecycle;
|
||||
private LifeCycle lifecycle;
|
||||
|
||||
private AlarmConfig alarmConfig;
|
||||
|
||||
@ -168,6 +169,9 @@ public class JobInfoVO {
|
||||
if (!StringUtils.isEmpty(jobInfoDO.getAlarmConfig())){
|
||||
jobInfoVO.setAlarmConfig(JSON.parseObject(jobInfoDO.getAlarmConfig(),AlarmConfig.class));
|
||||
}
|
||||
if (!StringUtils.isEmpty(jobInfoDO.getLifecycle())){
|
||||
jobInfoVO.setLifecycle(LifeCycle.parse(jobInfoDO.getLifecycle()));
|
||||
}
|
||||
|
||||
return jobInfoVO;
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package tech.powerjob.server.web.response;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import tech.powerjob.common.enums.TimeExpressionType;
|
||||
import tech.powerjob.common.model.LifeCycle;
|
||||
import tech.powerjob.common.model.PEWorkflowDAG;
|
||||
import tech.powerjob.server.common.SJ;
|
||||
import tech.powerjob.server.common.constants.SwitchableStatus;
|
||||
@ -46,7 +47,7 @@ public class WorkflowInfoVO {
|
||||
*/
|
||||
private String timeExpressionType;
|
||||
/**
|
||||
* 时间表达式,CRON/NULL/LONG/LONG
|
||||
* 时间表达式,CRON/NULL/LONG/LONG
|
||||
*/
|
||||
private String timeExpression;
|
||||
|
||||
@ -64,6 +65,8 @@ public class WorkflowInfoVO {
|
||||
*/
|
||||
private List<Long> notifyUserIds;
|
||||
|
||||
private LifeCycle lifeCycle;
|
||||
|
||||
private Date gmtCreate;
|
||||
|
||||
private Date gmtModified;
|
||||
@ -78,6 +81,9 @@ public class WorkflowInfoVO {
|
||||
if (!StringUtils.isEmpty(wfDO.getNotifyUserIds())) {
|
||||
vo.setNotifyUserIds(SJ.COMMA_SPLITTER.splitToList(wfDO.getNotifyUserIds()).stream().map(Long::valueOf).collect(Collectors.toList()));
|
||||
}
|
||||
if (!StringUtils.isEmpty(wfDO.getLifecycle())) {
|
||||
vo.lifeCycle = LifeCycle.parse(wfDO.getLifecycle());
|
||||
}
|
||||
return vo;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user