qlexpress - QLExpress 规则引擎 简单案例

QLExpress官方git地址: https://github.com/alibaba/QLExpress

案例:

案例:没有房产,租房住的人每个月可以领取1000元的住房补贴。

两个条件:1 没有房产,2 租房住。

首先引入QLExpress

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>QLExpress</artifactId>
  <version>3.2.0</version>
</dependency>

项目结构一览

项目结构

PersonInfo类
PersonInfo
PersonServ类
PersonServ类

RunnerUtil类
RunnerUtil类
MacroEnum类
MacroEnum类

此时项目结构已经搭建完成。

方法调用,结果展示

在RunnerUtil中新建一个方法,用于判断用户是否具有领取租房补贴的权利
在这里插入图片描述

在main方法中调用测试

在这里插入图片描述

输出结果(设置了isTrace为true,所以会跟踪步骤,易于调试)
在这里插入图片描述

结果解析
在这里插入图片描述

执行流程

  1. 首先在expressRunner用中文替换了一些基本操作符。
  2. 然后用中文绑定了java类中的方法,比如"是否有房产"绑定了PersonServ中的hasHouse方法。
  3. 定义了一些macro宏定义的枚举类。列如"有房产",调用了"是否有房产"方法,传入了person1
  4. 调用,定义一个personInfo实体类,传入判断条件为"无房产 并且 租房住"。
  5. 这时候ql会调用"无房产"宏定义,"无房产"宏定义调用了"是否有房产"方法,在"是否有房产"方法中,取出personInfo中的hasHouse属性,为0,与传入的0做比较,相等,则返回true,表示此用户无房产。
  6. 之后调用"租房住"宏定义,"租房住"宏定义调用了"是否租房住"方法,在"是否租房住"方法中,取出personInfo中的rentHouse属性,为0,与传入的1做比较,不相等,则返回false,表示用户并不是租房住的。
  7. 因为是 并且 操作符,true加false 为false。所有最终返回结果为false。
  8. false表示用户没有领取租房补贴的权利。
  9. 自此,执行完毕。

总结

有点烦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章