diff --git a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/WorkflowExecutorActor.java b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/WorkflowExecutorActor.java index 0fb752b3..146b6c09 100644 --- a/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/WorkflowExecutorActor.java +++ b/snail-job-server/snail-job-server-job-task/src/main/java/com/aizuda/snailjob/server/job/task/support/dispatch/WorkflowExecutorActor.java @@ -263,7 +263,8 @@ public class WorkflowExecutorActor extends AbstractActor { } private boolean arePredecessorsComplete(final WorkflowNodeTaskExecuteDTO taskExecute, Set predecessors, - Map> jobTaskBatchMap, WorkflowNode waitExecWorkflowNode, Map workflowNodeMap) { + Map> jobTaskBatchMap, WorkflowNode waitExecWorkflowNode, + Map workflowNodeMap) { // 判断所有节点是否都完成 for (final Long nodeId : predecessors) { @@ -290,12 +291,17 @@ public class WorkflowExecutorActor extends AbstractActor { // 父节点只要有一个是失败的且失败策略是阻塞的则当前节点不处理 if (jobTaskBatches.stream() - .map(JobTaskBatch::getTaskBatchStatus) - .anyMatch(i -> i != JobTaskBatchStatusEnum.SUCCESS.getStatus())) { + .anyMatch(jobTaskBatch -> + jobTaskBatch.getTaskBatchStatus() != JobTaskBatchStatusEnum.SUCCESS.getStatus() + && !JobOperationReasonEnum.WORKFLOW_SUCCESSOR_SKIP_EXECUTION.contains(jobTaskBatch.getOperationReason())) + ) { WorkflowNode preWorkflowNode = workflowNodeMap.get(nodeId); // 根据失败策略判断是否继续处理 if (Objects.equals(preWorkflowNode.getFailStrategy(), FailStrategyEnum.BLOCK.getCode())) { + SnailJobLog.LOCAL.warn("此节点执行失败且失败策略配置了【阻塞】中断执行 [{}] 待执行节点:[{}] parentId:[{}]", nodeId, + taskExecute.getParentId(), + waitExecWorkflowNode.getId() ); return Boolean.FALSE; } }