feat(sj_1.1.0-beta2): 修复保存工作流失败问题
This commit is contained in:
parent
e73790bb64
commit
8d5ae650b1
@ -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;
|
||||
|
||||
}
|
||||
|
@ -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<Integer, String> checkNodeExpression(@RequestBody DecisionConfig decisionConfig) {
|
||||
return workflowService.checkNodeExpression(decisionConfig);
|
||||
public Pair<Integer, String> checkNodeExpression(@RequestBody @Validated CheckDecisionVO checkDecisionVO) {
|
||||
return workflowService.checkNodeExpression(checkDecisionVO);
|
||||
}
|
||||
|
||||
@LoginRequired
|
||||
|
@ -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;
|
||||
}
|
@ -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<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);
|
||||
|
||||
|
@ -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<Integer, String> checkNodeExpression(DecisionConfig decisionConfig) {
|
||||
public Pair<Integer, String> 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());
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user