【Urule原始碼解析1】開源視覺化規則引擎

Geoffrey.Yip?發表於2018-04-08

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怎麼巢狀):

【Urule原始碼解析1】開源視覺化規則引擎

於是小葉同學開始百度有沒有運營GG能能夠自己配置生成相關規則的一些框架什麼的,還真的有!它大概長這樣:

【Urule原始碼解析1】開源視覺化規則引擎

(決策集形態)

也可以長這樣:

【Urule原始碼解析1】開源視覺化規則引擎

(決策樹形態)

甚至可以這樣玩(用來算分數簡直不要太爽):

【Urule原始碼解析1】開源視覺化規則引擎

(評分卡形態)

上面三種形態只是Urule的冰山一角,重要的是視覺化配置有木有!比寫死程式碼舒服多了!解放程式設計師雙手的利器(當然還是得看場合和需求滴)

於是小葉同學二話不說把Urule整合進了自己的專案中,按照需求配置了一個一條規則樹:

【Urule原始碼解析1】開源視覺化規則引擎
Urule感染到小葉同學的是,裡面的動作全部可以自定義,比如上圖,業務場景是使用者登入、分享等事件MQ觸發規則校驗,但是有一部分資料可能不從MQ傳遞過來,那麼想要拿到使用者的一些特殊資料,我們們可以調HTTP介面啊!!比如它自帶的一些動作,花樣百出,大部分滿足你想要乾的事。
【Urule原始碼解析1】開源視覺化規則引擎

事成之後,小葉同學趕緊把Urule擼上線,那麼以後的規則就由運營GG自己配置就好啦

【Urule原始碼解析1】開源視覺化規則引擎

下一章預告:規則引擎與RETE演算法

相關文章