Urule介绍
由于工作需要,我参考了许多优秀JAVA实现的开源规则引擎框架,例如Drools等,但是在茫茫人海中我发现了一个可视化配置基于RETE算法的规则引擎,它的名字叫Urule,下面摘选自Urule官方Wiki:
URule是一款基于RETE算法纯Java的规则引擎产品。在URule当中提供了向导式规则集、脚本式规则集、决策表、
交叉决策表(PRO版)、决策树、评分卡及决策流共七种类型的规则定义方式,配合基于WEB的设计器,可快速实现
规则的定义、维护与发布。
复制代码
使用场景
有一天,小叶同学在撸着代码,产品MM找到小叶同学,评审一个每日登陆活动的需求,需求大概是这样的:
-5级以下用户登陆送5元红包
-5级以上用户登陆送10元红包
复制代码
小叶同学一看,So easy!两行代码敲下去就提测上线了:
//登陆事件触发代码
if (user.getLevel() <= 5) {
//发放5元红包
rewardGenerator.send("5元红包");
} else {
//发放10元红包
rewardGenerator.send("10元红包");
}
复制代码
过了一天,运营GG找产品MM反馈说活动太火爆,被褥羊毛太严重了,要修改一下规则:
-用户必须实名认证
-5级以下用户登陆送3元红包
-5级以上用户登陆送7元红包
复制代码
小叶同学沉着脸改完逻辑:
//没有实名认证不给奖励!!!
if (!user.isRealNameAuth()) {
return;
}
if (user.getLevel() <= 5) {
//发放3元红包
rewardGenerator.send("3元红包");
} else {
//发放7元红包
rewardGenerator.send("7元红包");
}
复制代码
再过了一周,运营GG找到产品MM说玩法太单一,没有达到活动效果,要增加活动的可玩性,需求又改成了这样:
-用户必须实名认证
-5级以下用户
-登陆送3元红包;
-每日分享文章到朋友圈送1次抽奖机会;
-论坛回帖15字以上超过10次赠送50元满减券;
-5级以上用户
-登录送7元红包;
-每日分享文章到朋友圈送2次抽奖机会;
-论坛签到送1次抽奖机会;
-论坛回帖1字以上赠送100元满减券;
复制代码
刚拿到PRD的小叶同学的表情是这样的(当时心想的应该是那么多if else怎么嵌套):
于是小叶同学开始百度有没有运营GG能能够自己配置生成相关规则的一些框架什么的,还真的有!它大概长这样:
也可以长这样:
甚至可以这样玩(用来算分数简直不要太爽):
上面三种形态只是Urule的冰山一角,重要的是可视化配置有木有!比写死代码舒服多了!解放程序员双手的利器(当然还是得看场合和需求滴)
于是小叶同学二话不说把Urule整合进了自己的项目中,按照需求配置了一个一条规则树:
Urule感染到小叶同学的是,里面的动作全部可以自定义,比如上图,业务场景是用户登录、分享等事件MQ触发规则校验,但是有一部分数据可能不从MQ传递过来,那么想要拿到用户的一些特殊数据,咱们可以调HTTP接口啊!!比如它自带的一些动作,花样百出,大部分满足你想要干的事。事成之后,小叶同学赶紧把Urule撸上线,那么以后的规则就由运营GG自己配置就好啦
下一章预告:规则引擎与RETE算法