smart原则简单案例,java规则引擎使用场景
以一个案例说明 案例:首先引入QLExpress项目结构一览方法调用,结果展示总结
QLExpress官方git地址: https://github.com/alibaba/QLExpress 案例:
案例:没有房产,租房住的人每个月可以领取1000元的住房补贴。
两个条件:1 没有房产,2 租房住。
首先引入QLExpress com.alibaba QLExpress 3.2.0 项目结构一览
PersonInfo类
PersonServ类
RunnerUtil类
MacroEnum类
此时项目结构已经搭建完成。
方法调用,结果展示
在RunnerUtil中新建一个方法,用于判断用户是否具有领取租房补贴的权利
在main方法中调用测试
输出结果(设置了isTrace为true,所以会跟踪步骤,易于调试)
结果解析
执行流程
首先在expressRunner用中文替换了一些基本操作符。然后用中文绑定了java类中的方法,比如"是否有房产"绑定了PersonServ中的hasHouse方法。定义了一些macro宏定义的枚举类。列如"有房产",调用了"是否有房产"方法,传入了person和1。调用,定义一个personInfo实体类,传入判断条件为"无房产 并且 租房住"。这时候ql会调用"无房产"宏定义,"无房产"宏定义调用了"是否有房产"方法,在"是否有房产"方法中,取出personInfo中的hasHouse属性,为0,与传入的0做比较,相等,则返回true,表示此用户无房产。之后调用"租房住"宏定义,"租房住"宏定义调用了"是否租房住"方法,在"是否租房住"方法中,取出personInfo中的rentHouse属性,为0,与传入的1做比较,不相等,则返回false,表示用户并不是租房住的。因为是 并且 操作符,true加false 为false。所有最终返回结果为false。false表示用户没有领取租房补贴的权利。自此,执行完毕。 总结
有点烦。