From 8d5ae650b13677bb046052b0e0ce1c91fb118732 Mon Sep 17 00:00:00 2001 From: opensnail <598092184@qq.com> Date: Mon, 1 Jul 2024 23:06:48 +0800 Subject: [PATCH] =?UTF-8?q?feat(sj=5F1.1.0-beta2):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=B7=A5=E4=BD=9C=E6=B5=81=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/common/dto/DecisionConfig.java | 13 +++----- .../web/controller/WorkflowController.java | 5 +-- .../web/model/request/CheckDecisionVO.java | 31 +++++++++++++++++++ .../server/web/service/WorkflowService.java | 3 +- .../web/service/impl/WorkflowServiceImpl.java | 13 +++----- 5 files changed, 45 insertions(+), 20 deletions(-) create mode 100644 snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/CheckDecisionVO.java 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 8c3509ba..962ed625 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 @@ -24,19 +24,14 @@ public class DecisionConfig { */ private String nodeExpression; - /** - * 判定逻辑 and 或者 or - */ - private Integer logicalCondition; +// /** +// * 判定逻辑 and 或者 or +// */ +// private Integer logicalCondition; /** * 是否为其他情况 */ private Integer defaultDecision; - /** - * 决策节点校验内容 - */ - private String checkContent; - } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/WorkflowController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/WorkflowController.java index fffbd8af..5bdfd4d0 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/WorkflowController.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/WorkflowController.java @@ -6,6 +6,7 @@ import com.aizuda.snailjob.server.common.dto.DecisionConfig; import com.aizuda.snailjob.server.web.annotation.LoginRequired; import com.aizuda.snailjob.server.web.annotation.RoleEnum; import com.aizuda.snailjob.server.web.model.base.PageResult; +import com.aizuda.snailjob.server.web.model.request.CheckDecisionVO; import com.aizuda.snailjob.server.web.model.request.ExportWorkflowVO; import com.aizuda.snailjob.server.web.model.request.WorkflowQueryVO; import com.aizuda.snailjob.server.web.model.request.WorkflowRequestVO; @@ -89,8 +90,8 @@ public class WorkflowController { @PostMapping("/check-node-expression") @LoginRequired(role = RoleEnum.USER) - public Pair checkNodeExpression(@RequestBody DecisionConfig decisionConfig) { - return workflowService.checkNodeExpression(decisionConfig); + public Pair checkNodeExpression(@RequestBody @Validated CheckDecisionVO checkDecisionVO) { + return workflowService.checkNodeExpression(checkDecisionVO); } @LoginRequired diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/CheckDecisionVO.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/CheckDecisionVO.java new file mode 100644 index 00000000..755ae627 --- /dev/null +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/CheckDecisionVO.java @@ -0,0 +1,31 @@ +package com.aizuda.snailjob.server.web.model.request; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author opensnail + * @date 2024-07-01 21:53:45 + * @since sj_1.1.0 + */ +@Data +public class CheckDecisionVO { + + /** + * 表达式类型 1、SpEl、2、Aviator 3、QL + */ + @NotNull + private Integer expressionType; + + /** + * 条件节点表达式 + */ + @NotBlank + private String nodeExpression; + + /** + * 决策节点校验内容 + */ + private String checkContent; +} diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/WorkflowService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/WorkflowService.java index e6e2b008..fccb8155 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/WorkflowService.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/WorkflowService.java @@ -3,6 +3,7 @@ package com.aizuda.snailjob.server.web.service; import cn.hutool.core.lang.Pair; import com.aizuda.snailjob.server.common.dto.DecisionConfig; import com.aizuda.snailjob.server.web.model.base.PageResult; +import com.aizuda.snailjob.server.web.model.request.CheckDecisionVO; import com.aizuda.snailjob.server.web.model.request.ExportWorkflowVO; import com.aizuda.snailjob.server.web.model.request.WorkflowQueryVO; import com.aizuda.snailjob.server.web.model.request.WorkflowRequestVO; @@ -37,7 +38,7 @@ public interface WorkflowService { List getWorkflowNameList(String keywords, Long workflowId, String groupName); - Pair checkNodeExpression(DecisionConfig decisionConfig); + Pair checkNodeExpression(CheckDecisionVO decisionVO); void importWorkflowTask(@Valid @NotEmpty(message = "导入数据不能为空") List requests); diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/WorkflowServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/WorkflowServiceImpl.java index 8b2ffce1..deb17bfd 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/WorkflowServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/WorkflowServiceImpl.java @@ -30,10 +30,7 @@ import com.aizuda.snailjob.server.job.task.support.WorkflowPrePareHandler; import com.aizuda.snailjob.server.job.task.support.WorkflowTaskConverter; import com.aizuda.snailjob.server.job.task.support.expression.ExpressionInvocationHandler; import com.aizuda.snailjob.server.web.model.base.PageResult; -import com.aizuda.snailjob.server.web.model.request.ExportWorkflowVO; -import com.aizuda.snailjob.server.web.model.request.UserSessionVO; -import com.aizuda.snailjob.server.web.model.request.WorkflowQueryVO; -import com.aizuda.snailjob.server.web.model.request.WorkflowRequestVO; +import com.aizuda.snailjob.server.web.model.request.*; import com.aizuda.snailjob.server.web.model.request.WorkflowRequestVO.NodeConfig; import com.aizuda.snailjob.server.web.model.response.WorkflowDetailResponseVO; import com.aizuda.snailjob.server.web.model.response.WorkflowResponseVO; @@ -308,15 +305,15 @@ public class WorkflowServiceImpl implements WorkflowService { } @Override - public Pair checkNodeExpression(DecisionConfig decisionConfig) { + public Pair checkNodeExpression(CheckDecisionVO decisionVO) { try { - ExpressionEngine realExpressionEngine = ExpressionTypeEnum.valueOf(decisionConfig.getExpressionType()); + ExpressionEngine realExpressionEngine = ExpressionTypeEnum.valueOf(decisionVO.getExpressionType()); Assert.notNull(realExpressionEngine, () -> new SnailJobServerException("表达式引擎不存在")); ExpressionInvocationHandler invocationHandler = new ExpressionInvocationHandler(realExpressionEngine); ExpressionEngine expressionEngine = ExpressionFactory.getExpressionEngine(invocationHandler); - expressionEngine.eval(decisionConfig.getNodeExpression(), decisionConfig.getCheckContent()); + expressionEngine.eval(decisionVO.getNodeExpression(), decisionVO.getCheckContent()); } catch (Exception e) { - SnailJobLog.LOCAL.error("表达式异常. [{}]", decisionConfig.getNodeExpression(), e); + SnailJobLog.LOCAL.error("表达式异常. [{}]", decisionVO.getNodeExpression(), e); return Pair.of(StatusEnum.NO.getStatus(), e.getMessage()); }