From 9c37879386ac1c100e99d070d4cf5b4cd8d6f3d2 Mon Sep 17 00:00:00 2001 From: byteblogs168 <598092184@qq.com> Date: Wed, 17 Jan 2024 14:37:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=202.6.0=201.=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=9E=E8=B0=83=E6=89=A7=E8=A1=8C=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E6=B5=81=E7=A8=8B=E9=98=BB=E5=A1=9E=E9=97=AE=E9=A2=98?= =?UTF-8?q?=202.=20=E4=BF=AE=E5=A4=8D=E6=9D=A1=E4=BB=B6=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/sql/easy_retry_mysql.sql | 2 +- .../workflow/CallbackWorkflowExecutor.java | 4 +--- .../workflow/ConditionWorkflowExecutor.java | 17 ++++++++++------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/doc/sql/easy_retry_mysql.sql b/doc/sql/easy_retry_mysql.sql index 39d1fb48..31ab73fd 100644 --- a/doc/sql/easy_retry_mysql.sql +++ b/doc/sql/easy_retry_mysql.sql @@ -483,7 +483,7 @@ CREATE TABLE `workflow_node` `workflow_id` bigint(20) NOT NULL COMMENT '工作流ID', `node_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1、任务节点 2、条件节点', `expression_type` tinyint(4) NOT NULL DEFAULT 0 COMMENT '1、SpEl、2、Aviator 3、QL', - `fail_strategy` tinyint(4) NOT NULL DEFAULT 0 COMMENT '失败策略 1、跳过 2、阻塞', + `fail_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '失败策略 1、跳过 2、阻塞', `workflow_node_status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '工作流节点状态 0、关闭、1、开启', `priority_level` int(11) NOT NULL DEFAULT 1 COMMENT '优先级', `node_info` text DEFAULT NULL COMMENT '节点信息 ', diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/workflow/CallbackWorkflowExecutor.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/workflow/CallbackWorkflowExecutor.java index 40898ca0..c6f1b24c 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/workflow/CallbackWorkflowExecutor.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/workflow/CallbackWorkflowExecutor.java @@ -111,9 +111,7 @@ public class CallbackWorkflowExecutor extends AbstractWorkflowExecutor { message = throwable.getMessage(); } - if (JobTaskBatchStatusEnum.SUCCESS.getStatus() == taskBatchStatus) { - workflowTaskExecutor(context); - } + workflowTaskExecutor(context); context.setTaskBatchStatus(taskBatchStatus); context.setOperationReason(operationReason); diff --git a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/workflow/ConditionWorkflowExecutor.java b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/workflow/ConditionWorkflowExecutor.java index e3e9e5ae..37315e8d 100644 --- a/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/workflow/ConditionWorkflowExecutor.java +++ b/easy-retry-server/easy-retry-server-job-task/src/main/java/com/aizuda/easy/retry/server/job/task/support/executor/workflow/ConditionWorkflowExecutor.java @@ -66,8 +66,6 @@ public class ConditionWorkflowExecutor extends AbstractWorkflowExecutor { jobTaskStatus = JobTaskStatusEnum.CANCEL.getStatus(); operationReason = JobOperationReasonEnum.WORKFLOW_NODE_NO_OPERATION_REQUIRED.getReason(); } else { - boolean tempResult = Boolean.TRUE; - DecisionConfig decisionConfig = JsonUtil.parseObject(context.getNodeInfo(), DecisionConfig.class); if (StatusEnum.NO.getStatus().equals(decisionConfig.getDefaultDecision())) { try { @@ -80,11 +78,16 @@ public class ConditionWorkflowExecutor extends AbstractWorkflowExecutor { .select(JobTask::getResultMessage) .eq(JobTask::getTaskBatchId, context.getTaskBatchId())); + Boolean tempResult = null; List taskResult = Lists.newArrayList(); for (JobTask jobTask : jobTasks) { taskResult.add(jobTask.getResultMessage()); boolean execResult = (Boolean) Optional.ofNullable(expressionEngine.eval(decisionConfig.getNodeExpression(), jobTask.getResultMessage())).orElse(Boolean.FALSE); + if (Objects.isNull(tempResult)) { + tempResult = execResult; + } + if (Objects.equals(decisionConfig.getLogicalCondition(), LogicalConditionEnum.AND.getCode())) { tempResult = tempResult && execResult; } else { @@ -98,7 +101,7 @@ public class ConditionWorkflowExecutor extends AbstractWorkflowExecutor { } context.setTaskResult(JsonUtil.toJsonString(taskResult)); - result = tempResult; + result = Optional.ofNullable(tempResult).orElse(Boolean.FALSE); } catch (Exception e) { log.error("执行条件表达式解析异常. 表达式:[{}],参数: [{}]", decisionConfig.getNodeExpression(), context.getTaskResult(), e); taskBatchStatus = JobTaskBatchStatusEnum.FAIL.getStatus(); @@ -142,11 +145,11 @@ public class ConditionWorkflowExecutor extends AbstractWorkflowExecutor { logMetaDTO.setTaskId(jobTask.getId()); if (jobTaskBatch.getTaskBatchStatus() == JobTaskStatusEnum.SUCCESS.getStatus() || JobOperationReasonEnum.WORKFLOW_NODE_NO_OPERATION_REQUIRED.getReason() == context.getOperationReason()) { - EasyRetryLog.REMOTE.info("workflowNodeId:[{}]决策完成. 决策结果:[{}] <|>{}<|>", - context.getWorkflowNodeId(), context.getEvaluationResult(), logMetaDTO); + EasyRetryLog.REMOTE.info("workflowNodeId:[{}]决策完成. 上下文:[{}] 决策结果:[{}] <|>{}<|>", + context.getWorkflowNodeId(), context.getTaskResult(), context.getEvaluationResult(), logMetaDTO); } else { - EasyRetryLog.REMOTE.error("workflowNodeId:[{}] 决策失败. 失败原因:[{}] <|>{}<|>", context.getWorkflowNodeId(), - context.getLogMessage(), logMetaDTO); + EasyRetryLog.REMOTE.error("workflowNodeId:[{}] 决策失败. 上下文:[{}] 失败原因:[{}] <|>{}<|>", + context.getWorkflowNodeId(), context.getTaskResult(), context.getLogMessage(), logMetaDTO); } }