规则引擎 Easy rule 使用总结

   日期:2024-12-27    作者:nzusb 移动:http://ljhr2012.riyuangf.com/mobile/quote/73764.html

    easy Rule就是一个轻量级的规则引擎,它可以直接注入spring bean类,可以查看github上对它的介绍:GitHub - j-easy/easy-rules: The simple, stupid rules engine for Java

      easy rules是一个简单而强大的java规则引擎,它有以下特性

  • 轻量级框架
  • 学习成本低
  • 基于POJO 为定义业务引擎提供有用的抽象和简便的应用
  • 从原始的规则组合成复杂的规则

它主要包括几个主要的类或接口:Rule,RulesEngine,RuleListener,Facts

还有几个主要的注解@Action,@Condition,@Fact,@Priority,@Rule

使用easy rules有两种方式

  1. 实现Rule接口,并实现其evaluate和execute方法。
  2. 使用@Rule注解修饰POJO

目录

EasyRule源码

几种创建规则的方式

使用easy Rule实战


查看下源码

 

由上面代码可以知道:一个规则由名称、描述、优先级三个属性和判断、执行两个方法组成,实现Rule接口,和使用@Rule,@Condition,@Action,@Priority,@Fact注解的效果是一样的。
 

 

 RulesEngine负责检查和开启规则,同时可以得到规则引擎的参数和规则监听器列表

 

RuleListener  规则执行过程的监听器,可以监听规则是否触发,规则执行的结果

 
 

Facts就是一个hashmap,通过注解@Fact(String value),其中的value是map的key,可以拿到Facts中的value。

大致的步骤

  1. 创建各种规则,即rule.可以通过 pojo 或 RuleBuilder API 两种方式创建。
  2. 创建规则容器Rules rules = new Rules();
  3. 注册创建的规则rules.add(rule);
  4. 创建流,即facts.流控制规则的参数输入.Facts facts = new Facts();facts.add("参数名", 参数值);
  5. 创建引擎,即RulesEngine。
  6. 由引擎把facts和rules结合进行处理,RulesEngine.fire(rules, facts);
  • 流式创建规则
 
 

  • 注解形式
 
  •  创建规则文件
 

解析yml规则文件

 
  • 注解加流式形式创建规则
 

 加载规则到规则引擎,并注入参数触发规则

 
 

下面给出自己的一个使用easy rule规则引擎调用业务类的例子

1:封装 规则引擎

 

可以看到上面我是直接注入的参数是业务类,Spring管理的业务类,并且直接调用业务类方法,并且传入参数。

具体的注入参数,以及业务类

这里我写了一个线程池,通过阻塞队列来并发执行规则

 

我们通过上面注入的规则监听器去监听规则的执行情况 ,下面是我自己定义的监听类,实现类  RuleListener接口

 

 

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号