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 8c3509baf..962ed6255 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 fffbd8af9..5bdfd4d01 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 000000000..755ae627f --- /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 e6e2b0086..fccb81554 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 8b2ffce11..deb17bfd0 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()); }