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;
|
private String nodeExpression;
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 判定逻辑 and 或者 or
|
// * 判定逻辑 and 或者 or
|
||||||
*/
|
// */
|
||||||
private Integer logicalCondition;
|
// private Integer logicalCondition;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否为其他情况
|
* 是否为其他情况
|
||||||
*/
|
*/
|
||||||
private Integer defaultDecision;
|
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.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
|
||||||
|
@ -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 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);
|
||||||
|
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user