规则引擎easy-rules
简单使用
//创建规则注册需要的规则类
Rules rules = new Rules();
//定义规则json
MVELRuleFactory ruleFactory = new MVELRuleFactory(new JsonRuleDefinitionReader());
Rule rule = ruleFactory.createRule(new StringReader(/*你自己定义的规则json*/));
/*参数说明
大多数业务规则可以用以下定义表示:
name:规则命名空间中的唯一规则名称
description:规则的简要描述
priority:规则的优先级
facts:触发规则时的一组已知事实
conditions:在给定一些事实的情况下,为了应用该规则,需要满足的一组条件
actions:满足条件时要执行的一组操作(可能会添加/删除/修改事实)
*/
/*你自己定义的规则json
{
"actions":["r.addIdToList(399347815889113088);"],
"condition":"(AlgorithmUtil.aa() && AlgorithmUtil.cc())",
"name":"TestBranchConfigRule-399347815889113088",
"priority":1
}
*/
//注册你自己的规则类
rules.register(rule);
//定义要处理的数据(入参数据)
Facts facts = new Facts();
facts.put("class", AlgorithmUtil.class);//定义了一个 类数据
//启动点火
RulesEngine rulesEngine=new DefaultRulesEngine();
rulesEngine.fire(rules,facts);//执行规则
代码说明:
rulesEngine.fire(A,B)
A:为定义的规则
B:为规则计算的数据
facts.put(“class”, AlgorithmUtil.class);//定义了一个数据
你自己定义的规则运算"condition":“(AlgorithmUtil.aa() && AlgorithmUtil.cc())”,
执行AlgorithmUtil里的aa()方法和cc()方法