feat:(1.2.0-beta1): 1. 优化工作流手动停止时只允许未完成状态才能停止 2. 修复任务停止失败情况

This commit is contained in:
opensnail 2024-09-06 10:11:28 +08:00
parent 680e3fe976
commit a04c5f7c8e
5 changed files with 12 additions and 11 deletions

View File

@ -1,6 +1,7 @@
package com.aizuda.snailjob.server.job.task.dto; package com.aizuda.snailjob.server.job.task.dto;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
/** /**
@ -8,8 +9,9 @@ import lombok.Data;
* @date 2023-12-24 23:00:24 * @date 2023-12-24 23:00:24
* @since 2.6.0 * @since 2.6.0
*/ */
@EqualsAndHashCode(callSuper = true)
@Data @Data
public class CompleteJobBatchDTO { public class CompleteJobBatchDTO extends BaseDTO {
private Long jobId; private Long jobId;
private Long workflowNodeId; private Long workflowNodeId;

View File

@ -12,9 +12,4 @@ import java.time.LocalDateTime;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
public class RealStopTaskInstanceDTO extends BaseDTO { public class RealStopTaskInstanceDTO extends BaseDTO {
/**
* 下次触发时间
*/
private LocalDateTime nextTriggerAt;
} }

View File

@ -1,7 +1,9 @@
package com.aizuda.snailjob.server.job.task.support.result.job; package com.aizuda.snailjob.server.job.task.support.result.job;
import com.aizuda.snailjob.server.job.task.dto.BaseDTO;
import com.aizuda.snailjob.template.datasource.persistence.po.JobTask; import com.aizuda.snailjob.template.datasource.persistence.po.JobTask;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List; import java.util.List;
@ -10,15 +12,13 @@ import java.util.List;
* @date : 2024-09-04 * @date : 2024-09-04
* @since :1.2.0 * @since :1.2.0
*/ */
@EqualsAndHashCode(callSuper = true)
@Data @Data
public class JobExecutorResultContext { public class JobExecutorResultContext extends BaseDTO {
private Long jobId;
private Long workflowNodeId; private Long workflowNodeId;
private Long workflowTaskBatchId; private Long workflowTaskBatchId;
private Long taskBatchId;
private Integer jobOperationReason; private Integer jobOperationReason;
private Integer taskType;
private boolean isRetry; private boolean isRetry;
private List<JobTask> jobTaskList; private List<JobTask> jobTaskList;
@ -32,4 +32,5 @@ public class JobExecutorResultContext {
*/ */
private boolean taskBatchComplete; private boolean taskBatchComplete;
} }

View File

@ -3,6 +3,7 @@ package com.aizuda.snailjob.server.job.task.support.stop;
import akka.actor.AbstractActor; import akka.actor.AbstractActor;
import com.aizuda.snailjob.client.model.StopJobDTO; import com.aizuda.snailjob.client.model.StopJobDTO;
import com.aizuda.snailjob.common.core.model.Result; import com.aizuda.snailjob.common.core.model.Result;
import com.aizuda.snailjob.common.core.util.JsonUtil;
import com.aizuda.snailjob.server.common.akka.ActorGenerator; import com.aizuda.snailjob.server.common.akka.ActorGenerator;
import com.aizuda.snailjob.server.common.cache.CacheRegisterTable; import com.aizuda.snailjob.server.common.cache.CacheRegisterTable;
import com.aizuda.snailjob.server.common.dto.RegisterNodeInfo; import com.aizuda.snailjob.server.common.dto.RegisterNodeInfo;
@ -32,7 +33,7 @@ public class RealStopTaskActor extends AbstractActor {
try { try {
doStop(realStopTaskInstanceDTO); doStop(realStopTaskInstanceDTO);
} catch (Exception e) { } catch (Exception e) {
log.error("停止任务执行失败", e); log.error("停止任务执行失败. [{}]", JsonUtil.toJsonString(realStopTaskInstanceDTO), e);
} }
}).build(); }).build();
} }

View File

@ -223,6 +223,8 @@ public class WorkflowBatchServiceImpl implements WorkflowBatchService {
public Boolean stop(Long id) { public Boolean stop(Long id) {
WorkflowTaskBatch workflowTaskBatch = workflowTaskBatchMapper.selectById(id); WorkflowTaskBatch workflowTaskBatch = workflowTaskBatchMapper.selectById(id);
Assert.notNull(workflowTaskBatch, () -> new SnailJobServerException("workflow batch can not be null.")); Assert.notNull(workflowTaskBatch, () -> new SnailJobServerException("workflow batch can not be null."));
Assert.isTrue(JobTaskBatchStatusEnum.NOT_COMPLETE.contains(workflowTaskBatch.getTaskBatchStatus()),
() -> new SnailJobServerException("workflow batch status completed."));
workflowBatchHandler.stop(id, JobOperationReasonEnum.MANNER_STOP.getReason()); workflowBatchHandler.stop(id, JobOperationReasonEnum.MANNER_STOP.getReason());
return Boolean.TRUE; return Boolean.TRUE;