drools是一个规则引擎,可以将开发从业务中解放出来,不用重复写不同的业务、然后测试、上线,只需要将业务规则配置到drl文件,然后每次有新业务需求的时候,只需要改一下配置文件,项目不需要重新上线。drools帮你装载规则,解析规则,应用规则到你的业务。总之,使用drools你可以将业务规则的判定放在引擎里面去做,程序中只保留需要的业务数据。
比如抽奖,其实抽奖每次规则都是差不多的,无非就是换个规则,比如新手大礼包,过生日,过节,然后就是礼品的类目、数量会变化,我们将这些业务数据放到facet里面,然后将规则配置到drl文件中,然后每次修改drl规则文件,拿到刚才说的那些业务数据,利用drools装载的规则进行判断,看用户是否中奖。
这里提供一个例子,是活动相关的,根据数据的初始值匹配规则、执行规则、产生结果。
1.drl配置文件
package promotionRule;
import mydrools.Promotion;
rule step1
salience 100
lock-on-active true
when
$promotionRule : Promotion(getPurchaseNum()== 0&&getGoodsName()=="机油")
then
$promotionRule.setPurchaseNum($promotionRule.getPurchaseNum()+10);
$promotionRule.recordPointLog("只要