From df420dc13cff0c5ac4293ef7dc7cc66b15d22a6d Mon Sep 17 00:00:00 2001 From: opensnail <598092184@qq.com> Date: Mon, 1 Jul 2024 14:40:37 +0800 Subject: [PATCH] =?UTF-8?q?fix(sj=5F1.1.0-beta2):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E8=8A=82=E7=82=B9=E6=89=A7=E8=A1=8C=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=EF=BC=8C=E6=89=A7=E8=A1=8C=E5=90=8E=E7=BB=AD=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../snailjob/server/common/dto/DecisionConfig.java | 4 ++++ .../executor/workflow/CallbackWorkflowExecutor.java | 9 +++++---- .../executor/workflow/DecisionWorkflowExecutor.java | 5 ++++- .../executor/workflow/JobTaskWorkflowExecutor.java | 5 ++--- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/dto/DecisionConfig.java b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/dto/DecisionConfig.java index f30889ef3..382070274 100644 --- a/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/dto/DecisionConfig.java +++ b/snail-job-server/snail-job-server-common/src/main/java/com/aizuda/snailjob/server/common/dto/DecisionConfig.java @@ -2,6 +2,8 @@ package com.aizuda.snailjob.server.common.dto; import lombok.Data; +import java.util.Map; + /** * 决策节点配置 * @@ -32,4 +34,6 @@ public class DecisionConfig { */ private Integer defaultDecision; + private Map check; + } diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/executor/workflow/CallbackWorkflowExecutor.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/executor/workflow/CallbackWorkflowExecutor.java index d223f3df7..df5ee83ff 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/executor/workflow/CallbackWorkflowExecutor.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/executor/workflow/CallbackWorkflowExecutor.java @@ -29,8 +29,10 @@ import java.util.Objects; import java.util.Set; import java.util.concurrent.TimeUnit; +import static com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum.WORKFLOW_CONDITION_NODE_EXECUTION_ERROR; import static com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum.WORKFLOW_DECISION_FAILED; import static com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum.WORKFLOW_NODE_NO_REQUIRED; +import static com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum.WORKFLOW_SUCCESSOR_SKIP_EXECUTION; /** * @author xiaowoniu @@ -40,8 +42,7 @@ import static com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum.WORKF @Component @RequiredArgsConstructor public class CallbackWorkflowExecutor extends AbstractWorkflowExecutor { - private static final Set NO_REQUIRED_CONFIG = Sets.newHashSet(WORKFLOW_NODE_NO_REQUIRED.getReason(), - WORKFLOW_DECISION_FAILED.getReason()); + private static final String CALLBACK_TIMEOUT = "10"; private final RestTemplate restTemplate; @@ -63,7 +64,7 @@ public class CallbackWorkflowExecutor extends AbstractWorkflowExecutor { context.setOperationReason(JobOperationReasonEnum.NONE.getReason()); context.setJobTaskStatus(JobTaskStatusEnum.SUCCESS.getStatus()); - if (NO_REQUIRED_CONFIG.contains(context.getParentOperationReason())) { + if (WORKFLOW_SUCCESSOR_SKIP_EXECUTION.contains(context.getParentOperationReason())) { // 针对无需处理的批次直接新增一个记录 context.setTaskBatchStatus(JobTaskBatchStatusEnum.CANCEL.getStatus()); context.setOperationReason(JobOperationReasonEnum.WORKFLOW_NODE_NO_REQUIRED.getReason()); @@ -164,7 +165,7 @@ public class CallbackWorkflowExecutor extends AbstractWorkflowExecutor { SnailJobLog.REMOTE.info("节点[{}]回调成功.\n回调参数:{} \n回调结果:[{}] <|>{}<|>", context.getWorkflowNodeId(), context.getWfContext(), context.getEvaluationResult(), jobLogMetaDTO); } else if (jobTaskBatch.getTaskBatchStatus() == JobTaskStatusEnum.CANCEL.getStatus()) { - if (NO_REQUIRED_CONFIG.contains(context.getParentOperationReason())) { + if (WORKFLOW_SUCCESSOR_SKIP_EXECUTION.contains(context.getParentOperationReason())) { SnailJobLog.REMOTE.warn("节点[{}]取消回调. 取消原因: 当前任务无需处理 <|>{}<|>", context.getWorkflowNodeId(), jobLogMetaDTO); } else { diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/executor/workflow/DecisionWorkflowExecutor.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/executor/workflow/DecisionWorkflowExecutor.java index 00533559f..1a2b57a0d 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/executor/workflow/DecisionWorkflowExecutor.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/executor/workflow/DecisionWorkflowExecutor.java @@ -28,9 +28,12 @@ import org.springframework.stereotype.Component; import java.util.Objects; import java.util.Optional; +import java.util.Set; +import static com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum.WORKFLOW_CONDITION_NODE_EXECUTION_ERROR; import static com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum.WORKFLOW_DECISION_FAILED; import static com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum.WORKFLOW_NODE_NO_REQUIRED; +import static com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum.WORKFLOW_SUCCESSOR_SKIP_EXECUTION; /** * @author xiaowoniu @@ -63,7 +66,7 @@ public class DecisionWorkflowExecutor extends AbstractWorkflowExecutor { Boolean result = (Boolean) Optional.ofNullable(context.getEvaluationResult()).orElse(Boolean.FALSE); - if (result || (Sets.newHashSet(WORKFLOW_NODE_NO_REQUIRED.getReason(), WORKFLOW_DECISION_FAILED.getReason()).contains( context.getParentOperationReason()))) { + if (result || (WORKFLOW_SUCCESSOR_SKIP_EXECUTION.contains( context.getParentOperationReason()))) { // 多个条件节点直接是或的关系,只要一个成功其他节点就取消且是无需处理状态 taskBatchStatus = JobTaskBatchStatusEnum.CANCEL.getStatus(); jobTaskStatus = JobTaskStatusEnum.CANCEL.getStatus(); diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/executor/workflow/JobTaskWorkflowExecutor.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/executor/workflow/JobTaskWorkflowExecutor.java index 489474f3e..71776f18b 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/executor/workflow/JobTaskWorkflowExecutor.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/executor/workflow/JobTaskWorkflowExecutor.java @@ -17,6 +17,7 @@ import org.springframework.stereotype.Component; import java.util.Objects; import java.util.Set; +import static com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum.WORKFLOW_CONDITION_NODE_EXECUTION_ERROR; import static com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum.WORKFLOW_DECISION_FAILED; import static com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum.WORKFLOW_NODE_CLOSED_SKIP_EXECUTION; import static com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum.WORKFLOW_NODE_NO_REQUIRED; @@ -31,8 +32,6 @@ import static com.aizuda.snailjob.common.core.enums.JobOperationReasonEnum.WORKF @RequiredArgsConstructor public class JobTaskWorkflowExecutor extends AbstractWorkflowExecutor { - private static final Set NO_REQUIRED_CONFIG = Sets.newHashSet(WORKFLOW_NODE_NO_REQUIRED.getReason(), - WORKFLOW_DECISION_FAILED.getReason()); @Override public WorkflowNodeTypeEnum getWorkflowNodeType() { @@ -57,7 +56,7 @@ public class JobTaskWorkflowExecutor extends AbstractWorkflowExecutor { @Override protected void doExecute(WorkflowExecutorContext context) { - if (NO_REQUIRED_CONFIG.contains(context.getParentOperationReason())) { + if (WORKFLOW_SUCCESSOR_SKIP_EXECUTION.contains(context.getParentOperationReason())) { // 针对无需处理的批次直接新增一个记录 context.setTaskBatchStatus(JobTaskBatchStatusEnum.CANCEL.getStatus()); context.setOperationReason(JobOperationReasonEnum.WORKFLOW_NODE_NO_REQUIRED.getReason());