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;
import cn.hutool.core.lang.Pair;
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.RoleEnum;
@ -74,15 +75,15 @@ public class WorkflowController {
@GetMapping("/workflow-name/list")
@LoginRequired(role = RoleEnum.USER)
public List<WorkflowResponseVO> getWorkflowNameList(
@RequestParam(value = "keywords", required = false) String keywords,
@RequestParam(value = "workflowId", required = false) Long workflowId) {
@RequestParam(value = "keywords", required = false) String keywords,
@RequestParam(value = "workflowId", required = false) Long workflowId) {
return workflowService.getWorkflowNameList(keywords, workflowId);
}
@PostMapping("/check-node-expression")
@LoginRequired(role = RoleEnum.ADMIN)
public void checkNodeExpression(@RequestBody DecisionConfig decisionConfig) {
workflowService.checkNodeExpression(decisionConfig);
public Pair<Integer, String> checkNodeExpression(@RequestBody DecisionConfig decisionConfig) {
return workflowService.checkNodeExpression(decisionConfig);
}
}

View File

@ -1,5 +1,6 @@
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.web.model.base.PageResult;
import com.aizuda.easy.retry.server.web.model.request.WorkflowQueryVO;
@ -33,5 +34,5 @@ public interface WorkflowService {
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;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.HashUtil;
import cn.hutool.core.util.StrUtil;
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.ExpressionFactory;
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.config.SystemProperties;
import com.aizuda.easy.retry.server.common.dto.DecisionConfig;
@ -326,12 +328,19 @@ public class WorkflowServiceImpl implements WorkflowService {
}
@Override
public void checkNodeExpression(DecisionConfig decisionConfig) {
ExpressionEngine realExpressionEngine = ExpressionTypeEnum.valueOf(decisionConfig.getExpressionType());
Assert.notNull(realExpressionEngine, () -> new EasyRetryServerException("表达式引擎不存在"));
ExpressionInvocationHandler invocationHandler = new ExpressionInvocationHandler(realExpressionEngine);
ExpressionEngine expressionEngine = ExpressionFactory.getExpressionEngine(invocationHandler);
expressionEngine.eval(decisionConfig.getNodeExpression(), StrUtil.EMPTY);
public Pair<Integer, String> checkNodeExpression(DecisionConfig decisionConfig) {
try {
ExpressionEngine realExpressionEngine = ExpressionTypeEnum.valueOf(decisionConfig.getExpressionType());
Assert.notNull(realExpressionEngine, () -> new EasyRetryServerException("表达式引擎不存在"));
ExpressionInvocationHandler invocationHandler = new ExpressionInvocationHandler(realExpressionEngine);
ExpressionEngine expressionEngine = ExpressionFactory.getExpressionEngine(invocationHandler);
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);
}
}