feat: 2.6.0
1. 新增表达式检验逻辑
This commit is contained in:
parent
273a45ce7f
commit
20f056f22f
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user