代码拉取完成,页面将自动刷新
同步操作将从 lexinda/veryrule 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
可设置单个规则或配置规则包路径
可单行代码调用
可自定义监听器
可测试规则是否触达
可注解调用(结合spring开启切面)
可自定义注解配置和取值
可使用线程池处理带返回值的条件(异步)规则
可使用内置规则流工具创建场景及规则流
可使用内置规则流工具编辑条件规则执行顺序(无返回值规则、带返回值(同步)规则)
规则流管理:新增、编辑、删除、禁用、复制、 查看规则模板、编辑规则模板、删除规则模板、 测试、场景、接口文档
规则场景:新增、编辑、删除。
规则管理:新增、编辑、删除。
规则工具:检测创建未使用的规则
//定义不带返回值条件
@Rule(code = RuleCode.NOTNULL,name = "指定key不可为空", desc = "指定key不可为空", type = RuleType.CONDATION)
public class NotNullRuleCondation implements IRuleCondation {
@Override
public <R extends RuleBo> void contation(Map<String, Object> 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 <R extends RuleBo> Map<String, Object> ruleTest(R rule) {
// Map<String,Object> result = new HashMap<String,Object>();
// 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<String, Object> param = new HashMap<>();
param.put("a", "123a");
RuleBo nn = new RuleBo("notNull", "a,c", "", "不可为空",RuleType.CONDATION);
veryRule.fire(param, nn);
//匹配spring
<bean class="com.lexinda.veryrule.spring.VeryRuleScanConfigurer">
<property name="rulePackage"
value="com.lexinda.veryrule.base" />
<property name="loadDefaultRule"
value="true" />
<property name="useAspect"
value="true" />
<property name="aspectBean"
value="com.lexinda.veryrule.aspect.VeryRuleAspect" />
<property name="listenerBean"
value="com.lexinda.veryrule.platform.listener.VeryRuleListener" />
</bean>
//匹配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")
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。