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演算法