【Urule介绍】开源可视化规则引擎

26,031 阅读3分钟

Urule介绍

由于工作需要,我参考了许多优秀JAVA实现的开源规则引擎框架,例如Drools等,但是在茫茫人海中我发现了一个可视化配置基于RETE算法的规则引擎,它的名字叫Urule,下面摘选自Urule官方Wiki:

URule是一款基于RETE算法纯Java的规则引擎产品。在URule当中提供了向导式规则集、脚本式规则集、决策表、
交叉决策表(PRO版)、决策树、评分卡及决策流共七种类型的规则定义方式,配合基于WEB的设计器,可快速实现
规则的定义、维护与发布。

Github项目地址
官方Wiki地址

使用场景

有一天,小叶同学在撸着代码,产品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自己配置就好啦