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自己配置就好啦

下一章预告:规则引擎与RETE算法

【Urule源码解析1】开源可视化规则引擎相关推荐

  1. PHP可视化告警规则引擎,开源可视化规则引擎 决策引擎与规则引擎有什么区别?...

    如何部署JBoss Drools的可视化规则设计工具包 JBoss Drools的可视化规则设计工具包在Drools 4.0的时候叫drools-jbrms. drools-jbrms需要JDK1.5 ...

  2. postgresql snapshot快照源码解析, 快照内容生成规则, 可见性是这样判断的

    postgresql snapshot快照源码解读 ​专栏内容:postgresql内核源码分析 个人主页:我的主页 座右铭:天行健,君子以自强不息:地势坤,君子以厚德载物. 概述 本文主要介绍数据库 ...

  3. [源码解析] PyTorch分布式优化器(1)----基石篇

    [源码解析] PyTorch分布式优化器(1)----基石篇 文章目录 [源码解析] PyTorch分布式优化器(1)----基石篇 0x00 摘要 0x01 从问题出发 1.1 示例 1.2 问题点 ...

  4. Guava RateLimiter限流源码解析和实例应用

    2019独角兽企业重金招聘Python工程师标准>>> 在开发高并发系统时有三把利器用来保护系统:缓存.降级和限流 缓存 缓存的目的是提升系统访问速度和增大系统处理容量 降级 降级是 ...

  5. 美团动态线程池实践思路开源项目(DynamicTp),线程池源码解析及通知告警篇

    大家好,这篇文章我们来聊下动态线程池开源项目(DynamicTp)的通知告警模块.目前项目提供以下通知告警功能,每一个通知项都可以独立配置是否开启.告警阈值.告警间隔时间.平台等,具体代码请看core ...

  6. Android Hawk数据库的源码解析,Github开源项目,基于SharedPreferences的的存储框架

    今天看了朋友一个项目用到了Hawk,然后写了这边文章 一.了解一下概念 Android Hawk数据库github开源项目 Hawk是一个非常便捷的数据库.操作数据库只需一行代码,能存任何数据类型. ...

  7. 轻触开源(三)-Gson项目源码解析_贰

    2019独角兽企业重金招聘Python工程师标准>>> 转载请注明出处:https://my.oschina.net/u/874727/blog/750473 Q:102525062 ...

  8. 【移动开发】Checkout开源库源码解析

    Checkout开源库的源码解析 1.功能介绍 1.1Checkout是什么 Checkout是Android In-App Billing API(v3 +)的一个封装库.In-App Billin ...

  9. 微服务开源框架TARS的RPC源码解析 之 初识TARS C++服务端

    作者:Cony 导语:微服务开源框架TARS的RPC调用包含客户端与服务端,<微服务开源框架TARS的RPC源码解析>系列文章将从初识客户端.客户端的同步及异步调用.初识服务端.服务端的工 ...

  10. SEAL全同态加密开源库(七) rns剩余数系统-源码解析

    SEAL全同态加密开源库(七) rns剩余数系统-源码解析 2021SC@SDUSC 2021-11-14 前言 这是SEAL开源库代码分析报告第六篇,本篇将分析util文件夹中的rns.h和rns. ...

最新文章

  1. 创建个人网站所需php书籍,PHP个人网站架设连环讲(三)
  2. php与ajax技术
  3. numpy数组的索引和切片
  4. 爬取智联招聘(面向对象)
  5. php判断秒为两位数,判“新”函数:得到今天与明天的秒数
  6. burp的intruder报错Payload set 1: Invalid number settings
  7. “新一代互联网安全(BII)管理:理论与实践研讨会”在西安交通大学成功举办...
  8. Python开发者必知的 11 个 Python GUI 库,你用过几个?
  9. VS2008 安装部署工程的小问题
  10. php 嗅探 真实地址,PHP嗅探youku视频的真实flv文件地址!
  11. radius peap mysql_基于Linux Ubuntu的RADIUS服务器搭建
  12. ps换证件照背景颜色
  13. 【PPT】极简PPT设计方法
  14. html中如何使阴影正片叠底,两种方法让你的PPT做出「正片叠底」的效果!
  15. 1和4互素吗_互素是什么意思?1~10中与10互素的数有多少个
  16. 基于深度强化学习的电子商务平台动态定价
  17. 海天蚝油《挑战不可能》清华博士远程驾驶无人车迎战高难度车道
  18. HTML5期末大作业:茶叶主题网页设计——精美自适应绿色茶叶公司网页设计(12页) HTML+CSS+JavaScript
  19. 21天以上的重复会形成习惯
  20. ajax的readyState状态值和onreadystatechange事件,帮助你更好的理解ajax

热门文章

  1. 单片机查表实验c语言,单片机 查表程序设计实验
  2. 机器学习之数据预备、清洗与特征工程
  3. 使用Mapviz、中科图新 进行机器人GPS轨迹卫星地图绘制
  4. 【MATLAB】三维图形绘制 ( plot3 函数 | plot3 绘图示例 | 2D 与 3D 关联 )
  5. matlab神经网络训练结果常用评价指标
  6. EastFax 远程调用Ukey助力医学院
  7. 魔域mysql下载_魔域单机版下载-魔域单机版 登录补丁+私服补丁+SQL下载 (附GM命令大全)-KK下载站...
  8. 3D建模师是吃青春饭的吗?被高薪挖掘的建模人才,靠的是这个
  9. 实验用USB转RS-232下载线制作
  10. Selenium和Firefox对应版本及注意事项