veryrule
特性
规则管理工具(veryrule-platform)
查看规则模板、编辑规则模板、删除规则模板、
测试、场景
使用
//定义不带返回值条件
@Rule(code = RuleCode.NOTNULL,name = "指定key不可为空", desc = "指定key不可为空", type = RuleType.CONDATION)
public class NotNullRuleCondation implements IRuleCondation,IRuleTest {
@Override
public void contation(Map param, R rule) throws Exception {
String ruleKey = rule.getRuleKey();
String[] keys = null;
if(ruleKey.indexOf(",")>0) {
keys = ruleKey.split(",");
}else {
keys = new String[] {ruleKey};
}
for(String key :keys) {
Object data = param.get(key);
if(data==null) {
throw new Exception(key+rule.getRuleErrMsg());
}else {
if("".equals(data.toString().trim())) {
throw new Exception(key+rule.getRuleErrMsg());
}
}
}
}
@Override
public Map ruleTest(R rule) {
Map result = new HashMap();
Rule ruleAnnotation = this.getClass().getAnnotation(Rule.class);
if(rule!=null&&rule.getRuleCode().equals(ruleAnnotation.code())) {
result.put(rule.getRuleCode(), ruleAnnotation.name());
}
return result;
}
}
//初始化
//可指定规则类
VeryRule veryRule = VeryRule.builder().condation(NotNullRuleAction.class).resultCondation(...).action(...).listener(...);
//可指定规则包路径
VeryRule veryRule = VeryRule.builder().rulePackage("com.lexinda.veryrule.base").listener(TestRuleListener.class)
//单独使用
Map param = new HashMap<>();
param.put("a", "123a");
RuleBo nn = new RuleBo("notNull", "a,c", "", "不可为空",RuleType.CONDATION);
veryRule.fire(param, nn);
//匹配spring
//匹配spring-boot
//veryrule包路径
veryrule.rulePackage=com.lexinda.veryrule.base
//读取集成规则
veryrule.loadDefaultRule=true
//开启注解
veryrule.useAspect=true
//自定义切面(取值,校验...)
veryrule.aspectBean=com.lexinda.veryrule.aspect.VeryRuleAspect
//只定义监听器
veryrule.listenerBean=com.lexinda.veryrule.platform.listener.VeryRuleListener
//springAOP-单个规则,规则类型缺省为不带返回值的条件
@VeryRuleSingle(ruleCode = RuleCode.NOTNULL, ruleKey = "currentPage,ruleType", ruleErrMsg = "不能为空")
//springAOP-编排规则流
@VeryRuleFlow(ruleFlowCode = "test")
留言与评论(共有 0 条评论) “” |