feat(sj_1.1.0-beta2): 修复保存工作流失败问题

This commit is contained in:
opensnail 2024-07-01 23:06:48 +08:00
parent e73790bb64
commit 8d5ae650b1
5 changed files with 45 additions and 20 deletions

View File

@ -24,19 +24,14 @@ public class DecisionConfig {
*/ */
private String nodeExpression; private String nodeExpression;
/** // /**
* 判定逻辑 and 或者 or // * 判定逻辑 and 或者 or
*/ // */
private Integer logicalCondition; // private Integer logicalCondition;
/** /**
* 是否为其他情况 * 是否为其他情况
*/ */
private Integer defaultDecision; private Integer defaultDecision;
/**
* 决策节点校验内容
*/
private String checkContent;
} }

View File

@ -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.LoginRequired;
import com.aizuda.snailjob.server.web.annotation.RoleEnum; import com.aizuda.snailjob.server.web.annotation.RoleEnum;
import com.aizuda.snailjob.server.web.model.base.PageResult; 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.ExportWorkflowVO;
import com.aizuda.snailjob.server.web.model.request.WorkflowQueryVO; 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.WorkflowRequestVO;
@ -89,8 +90,8 @@ public class WorkflowController {
@PostMapping("/check-node-expression") @PostMapping("/check-node-expression")
@LoginRequired(role = RoleEnum.USER) @LoginRequired(role = RoleEnum.USER)
public Pair<Integer, String> checkNodeExpression(@RequestBody DecisionConfig decisionConfig) { public Pair<Integer, String> checkNodeExpression(@RequestBody @Validated CheckDecisionVO checkDecisionVO) {
return workflowService.checkNodeExpression(decisionConfig); return workflowService.checkNodeExpression(checkDecisionVO);
} }
@LoginRequired @LoginRequired

View File

@ -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 {
/**
* 表达式类型 1SpEl2Aviator 3QL
*/
@NotNull
private Integer expressionType;
/**
* 条件节点表达式
*/
@NotBlank
private String nodeExpression;
/**
* 决策节点校验内容
*/
private String checkContent;
}

View File

@ -3,6 +3,7 @@ package com.aizuda.snailjob.server.web.service;
import cn.hutool.core.lang.Pair; import cn.hutool.core.lang.Pair;
import com.aizuda.snailjob.server.common.dto.DecisionConfig; import com.aizuda.snailjob.server.common.dto.DecisionConfig;
import com.aizuda.snailjob.server.web.model.base.PageResult; 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.ExportWorkflowVO;
import com.aizuda.snailjob.server.web.model.request.WorkflowQueryVO; 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.WorkflowRequestVO;
@ -37,7 +38,7 @@ public interface WorkflowService {
List<WorkflowResponseVO> getWorkflowNameList(String keywords, Long workflowId, String groupName); List<WorkflowResponseVO> getWorkflowNameList(String keywords, Long workflowId, String groupName);
Pair<Integer, String> checkNodeExpression(DecisionConfig decisionConfig); Pair<Integer, String> checkNodeExpression(CheckDecisionVO decisionVO);
void importWorkflowTask(@Valid @NotEmpty(message = "导入数据不能为空") List<WorkflowRequestVO> requests); void importWorkflowTask(@Valid @NotEmpty(message = "导入数据不能为空") List<WorkflowRequestVO> requests);

View File

@ -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.WorkflowTaskConverter;
import com.aizuda.snailjob.server.job.task.support.expression.ExpressionInvocationHandler; 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.base.PageResult;
import com.aizuda.snailjob.server.web.model.request.ExportWorkflowVO; import com.aizuda.snailjob.server.web.model.request.*;
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.WorkflowRequestVO.NodeConfig; 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.WorkflowDetailResponseVO;
import com.aizuda.snailjob.server.web.model.response.WorkflowResponseVO; import com.aizuda.snailjob.server.web.model.response.WorkflowResponseVO;
@ -308,15 +305,15 @@ public class WorkflowServiceImpl implements WorkflowService {
} }
@Override @Override
public Pair<Integer, String> checkNodeExpression(DecisionConfig decisionConfig) { public Pair<Integer, String> checkNodeExpression(CheckDecisionVO decisionVO) {
try { try {
ExpressionEngine realExpressionEngine = ExpressionTypeEnum.valueOf(decisionConfig.getExpressionType()); ExpressionEngine realExpressionEngine = ExpressionTypeEnum.valueOf(decisionVO.getExpressionType());
Assert.notNull(realExpressionEngine, () -> new SnailJobServerException("表达式引擎不存在")); Assert.notNull(realExpressionEngine, () -> new SnailJobServerException("表达式引擎不存在"));
ExpressionInvocationHandler invocationHandler = new ExpressionInvocationHandler(realExpressionEngine); ExpressionInvocationHandler invocationHandler = new ExpressionInvocationHandler(realExpressionEngine);
ExpressionEngine expressionEngine = ExpressionFactory.getExpressionEngine(invocationHandler); ExpressionEngine expressionEngine = ExpressionFactory.getExpressionEngine(invocationHandler);
expressionEngine.eval(decisionConfig.getNodeExpression(), decisionConfig.getCheckContent()); expressionEngine.eval(decisionVO.getNodeExpression(), decisionVO.getCheckContent());
} catch (Exception e) { } catch (Exception e) {
SnailJobLog.LOCAL.error("表达式异常. [{}]", decisionConfig.getNodeExpression(), e); SnailJobLog.LOCAL.error("表达式异常. [{}]", decisionVO.getNodeExpression(), e);
return Pair.of(StatusEnum.NO.getStatus(), e.getMessage()); return Pair.of(StatusEnum.NO.getStatus(), e.getMessage());
} }