feat: 2.6.0

1. 新增表达式检验逻辑
This commit is contained in:
byteblogs168 2024-01-18 10:52:36 +08:00
parent 273a45ce7f
commit 20f056f22f
3 changed files with 22 additions and 11 deletions

View File

@ -1,5 +1,6 @@
package com.aizuda.easy.retry.server.web.controller; package com.aizuda.easy.retry.server.web.controller;
import cn.hutool.core.lang.Pair;
import com.aizuda.easy.retry.server.common.dto.DecisionConfig; import com.aizuda.easy.retry.server.common.dto.DecisionConfig;
import com.aizuda.easy.retry.server.web.annotation.LoginRequired; import com.aizuda.easy.retry.server.web.annotation.LoginRequired;
import com.aizuda.easy.retry.server.web.annotation.RoleEnum; import com.aizuda.easy.retry.server.web.annotation.RoleEnum;
@ -81,8 +82,8 @@ public class WorkflowController {
@PostMapping("/check-node-expression") @PostMapping("/check-node-expression")
@LoginRequired(role = RoleEnum.ADMIN) @LoginRequired(role = RoleEnum.ADMIN)
public void checkNodeExpression(@RequestBody DecisionConfig decisionConfig) { public Pair<Integer, String> checkNodeExpression(@RequestBody DecisionConfig decisionConfig) {
workflowService.checkNodeExpression(decisionConfig); return workflowService.checkNodeExpression(decisionConfig);
} }
} }

View File

@ -1,5 +1,6 @@
package com.aizuda.easy.retry.server.web.service; package com.aizuda.easy.retry.server.web.service;
import cn.hutool.core.lang.Pair;
import com.aizuda.easy.retry.server.common.dto.DecisionConfig; import com.aizuda.easy.retry.server.common.dto.DecisionConfig;
import com.aizuda.easy.retry.server.web.model.base.PageResult; import com.aizuda.easy.retry.server.web.model.base.PageResult;
import com.aizuda.easy.retry.server.web.model.request.WorkflowQueryVO; import com.aizuda.easy.retry.server.web.model.request.WorkflowQueryVO;
@ -33,5 +34,5 @@ public interface WorkflowService {
List<WorkflowResponseVO> getWorkflowNameList(String keywords, Long workflowId); List<WorkflowResponseVO> getWorkflowNameList(String keywords, Long workflowId);
void checkNodeExpression(DecisionConfig decisionConfig); Pair<Integer, String> checkNodeExpression(DecisionConfig decisionConfig);
} }

View File

@ -1,6 +1,7 @@
package com.aizuda.easy.retry.server.web.service.impl; package com.aizuda.easy.retry.server.web.service.impl;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.HashUtil; import cn.hutool.core.util.HashUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.aizuda.easy.retry.common.core.constant.SystemConstants; import com.aizuda.easy.retry.common.core.constant.SystemConstants;
@ -8,6 +9,7 @@ import com.aizuda.easy.retry.common.core.enums.StatusEnum;
import com.aizuda.easy.retry.common.core.expression.ExpressionEngine; import com.aizuda.easy.retry.common.core.expression.ExpressionEngine;
import com.aizuda.easy.retry.common.core.expression.ExpressionFactory; import com.aizuda.easy.retry.common.core.expression.ExpressionFactory;
import com.aizuda.easy.retry.common.core.util.JsonUtil; import com.aizuda.easy.retry.common.core.util.JsonUtil;
import com.aizuda.easy.retry.common.log.EasyRetryLog;
import com.aizuda.easy.retry.server.common.WaitStrategy; import com.aizuda.easy.retry.server.common.WaitStrategy;
import com.aizuda.easy.retry.server.common.config.SystemProperties; import com.aizuda.easy.retry.server.common.config.SystemProperties;
import com.aizuda.easy.retry.server.common.dto.DecisionConfig; import com.aizuda.easy.retry.server.common.dto.DecisionConfig;
@ -326,12 +328,19 @@ public class WorkflowServiceImpl implements WorkflowService {
} }
@Override @Override
public void checkNodeExpression(DecisionConfig decisionConfig) { public Pair<Integer, String> checkNodeExpression(DecisionConfig decisionConfig) {
try {
ExpressionEngine realExpressionEngine = ExpressionTypeEnum.valueOf(decisionConfig.getExpressionType()); ExpressionEngine realExpressionEngine = ExpressionTypeEnum.valueOf(decisionConfig.getExpressionType());
Assert.notNull(realExpressionEngine, () -> new EasyRetryServerException("表达式引擎不存在")); Assert.notNull(realExpressionEngine, () -> new EasyRetryServerException("表达式引擎不存在"));
ExpressionInvocationHandler invocationHandler = new ExpressionInvocationHandler(realExpressionEngine); ExpressionInvocationHandler invocationHandler = new ExpressionInvocationHandler(realExpressionEngine);
ExpressionEngine expressionEngine = ExpressionFactory.getExpressionEngine(invocationHandler); ExpressionEngine expressionEngine = ExpressionFactory.getExpressionEngine(invocationHandler);
expressionEngine.eval(decisionConfig.getNodeExpression(), StrUtil.EMPTY); expressionEngine.eval(decisionConfig.getNodeExpression(), StrUtil.EMPTY);
} catch (Exception e) {
EasyRetryLog.LOCAL.error("表达式异常. [{}]", decisionConfig.getNodeExpression(), e);
return Pair.of(StatusEnum.NO.getStatus(), e.getMessage());
}
return Pair.of(StatusEnum.YES.getStatus(), StrUtil.EMPTY);
} }
} }