规则引擎框架哪家强?这2个开源项目你应当知道,一个是Drools,另一个是...没想到吧(带私活源码)

 临时来活儿了,由于项目需要,预研了下规则引擎,领导让找个合适的规则引擎框架。

关于这一部分,之前确实没用过,遇事不决,先问百度。

百度上是这么介绍规则引擎的:

规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。

图片

应用案例

某电商平台促销活动:活动规则是根据⽤户购买订单的⾦额给⽤户送相应的积分:

  • 购买的越多送的积分越多

  • ⽤户可以使⽤积分来兑换相应的商品

我们这次活动的⼒度很⼤,肯定会吸引很多的⽤户参加,产品经理⼩王兴⾼采烈唾液横⻜的对⼩明讲到。

⽤户购买的⾦额和对应送多少积分的规则如下:

图片

⼩明⼀看,这需求果然简单呀,作为⼀个⼯作了两三年的程序员来讲,这不就是⼩case,半天搞定,送积分的⼼代码如下:

public void execute() throws Exception {
  List<Order> orderList = getInitData();
  for (int i=0; i<orderList.size(); i++){
    Order order = orderList.get(i);
    if (order.getAmout() <= 100){
      order.setScore(0);
      addScore(order);
    }else if(order.getAmout() > 100 && order.getAmout() <= 50{
      order.setScore(100);
      addScore(order);
    }else if(order.getAmout() > 500 && order.getAmout() <= 100{
      order.setScore(500);
      addScore(order);
    }else{
      order.setScore(1000);
      addScore(order);
    }
  }
}

上线运⾏了半天之后,财务部的⼩财突然监测到活动账户的⾦额⼤为减少,领导于是调整规则变成了这样:200元以下不给积分,1000元以 下给100积分…

活动效果不理想,和领导商议了⼀下,改为最初规则的1.5倍,及150元⼀下不给积分,750元以下给100积分…

图片

当规则在不断的变化过程中,⼩明想这样下去⾮得被他们弄死,必须要找找有什么技术可以将活动规则和代码解耦,不管规则如何变化,执⾏端不⽤动。

⼩明搜了半天还真有这样的东⻄,那就是规则引擎,那么规则引擎到底是什么东⻄呢?我们来看看。

优势

关于规则的优势,大家可能看到题目就已经猜出了大概,确实,正如猜测的这样。

  1. 可以提高效率,管理流程自动化,即使现代商业规则异常复杂。

  2. 市场要求业务规则经常变化,IT系统必须依据业务规则的变化快速、低成本的更新。

  3. 可快速、低成本的更新,业务人员应能直接管理IT系统中的规则,不需要程序开发人员参与。

常见的规则引擎有:easy-rules,Drools。

这两个都是解决常见的业务场景,比如电商会员服务的等级、积分、权益等模块中。

可以简单的了解:

  • easy-rules: 更轻量,在小的需求中使用

  • Drools:重量级选手,在金融、电信这类行业使用

图片

Drools 是什么?

图片

Drools 是为 Java 量身定制的基于 Charles Forgy 的 RETE 算法的规则引擎的实现。具有了 OO 接口的 RETE, 使得商业规则有了更自然的表达。

开发语言:Java

官网:www.drools.org

开源地址:https://github.com/kiegroup/drools

easy-rules

一句话简介:用于 Java 的简单、粗暴的规则引擎。

  • 轻量级库和易于学习的 API

  • 基于 POJO 的开发,带有注释编程模型

  • 用于定义业务规则并使用 Java 轻松应用它们的有用抽象

  • 从原始规则创建复合规则的能力

  • 使用表达式语言(如 MVEL、SpEL 和 JEXL)定义规则的能力

开源地址:https://github.com/j-easy/easy-rules

总结

简单对比两个规则引擎:

图片

更新情况:

easy-rules更新记录还在两年前,而Drools在本周内还在更新。在选用框架的时候,根据项目需要,看是简单业务还是复杂应用,选择合适的框架。

显然,Drools 目前表现的更活跃,功能更强大,同时意味着更高的学习维护成本。

写在最后(私活源码)

推荐一个后台管理系统。功能完整,代码结构清晰。值得推荐。

项目介绍

本项目系统是一款基于 SpringBoot + Bootstrap 的极速后台开发框架,可以用于所有的 Web 应用程序,易读易懂。RuoYi 支持集群,支持多数据源,支持分布式事务,拥有完善的权限管理。页面美观,完全响应式布局让你无论是电脑、平板还是手机等,都可随意使用。

图片

运行系统

  1. 首先我们将项目下载到本地,在 Gitee 下载页面下载解压到工作目录。

  2. 导入到 Eclipse,菜单 File -> Import,然后选择 Maven -> Existing Maven Projects,点击 Next > 按钮,选择工作目录,然后点击 Finish 按钮,即可成功导入。

  3. 创建数据库 ry 并导入数据脚本 ry_2021xxxx.sqlquartz.sql

  4. 打开项目运行 com.ruoyi.RuoYiApplication.java,出现如下图表示启动成功。

(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙
.-------. ____ __
| _ _ \ \ \ / /
| ( ' ) | \ _. / '
|(_ o _) / _( )_ .'
| (_,_).' __ ___(_ o _)'
| |\ \ | || |(_,_)'
| | \ `' /| `-' /
| | \ / \ /
''-' `'-' `-..-'

  1. 最后打开浏览器,输入:(http://localhost:80 (opens new window)) (默认账户/密码: admin/admin123 )若能正常登陆即说明搭建成功。

内置功能

本项目系统内置了多种后台管理的功能,包含系统管理、系统监控、系统工具。

系统管理
  • 用户管理:用户是系统操作者,该功能主要完成系统用户配置。

  • 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。

  • 菜单管理:配置系统菜单,操作权限,按钮权限标识等。

  • 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。

  • 岗位管理:配置系统用户所属担任职务。

  • 字典管理:对系统中经常使用的一些较为固定的数据进行维护。

  • 参数管理:对系统动态配置常用参数。

  • 通知公告:系统通知公告信息发布维护。

  • 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。

  • 登录日志:系统登录日志记录查询包含登录异常。

系统监控
  • 在线用户:当前系统中活跃用户状态监控。

  • 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。

  • 服务监控:监视当前系统 CPU、内存、磁盘、堆栈等相关信息。

  • 缓存监控:对系统的缓存查询,查看、清理等操作。

系统工具
  • 表单构建:拖动表单元素生成相应的HTML代码。

  • 代码生成:前后端代码的生成(java、html、xml、sql)支持 CRUD 下载 。

  • 系统接口:根据业务代码自动生成相关的 api 接口文档。

项目介绍

相信大家很多人都被公司领导要求过,说让大家来开发一个微信公众号的后台系统吧,大家是不是对微信这个各种繁琐的条件弄得非常头疼,今天给大家分享出一块源代码,大家以后如果有需要的,可以直接拿过来复制一下使用呦。

本项目系统是一个支持公众号管理系统,支持多公众号接入。本项目提供公众号菜单、自动回复、公众号素材、简易CMS、等管理功能,请注意本项目仅为管理后台界面,需配合后端程序wx-api一起使用。

项目简介

本项目系统是一个微信公众号管理系统,目前主要实现了如下功能:

● 公众号菜单管理
● 消息自动回复
● 素材管理
● 模板消息
● 粉丝管理

同时它提供了如下跟公众号无关的功能

● CMS文章管理
● 对象存储
● 权限管理(管理后台菜单权限、接口权限、角色权限)

技术选型

  • 核心框架:Spring Boot

  • 安全框架:Apache Shiro

  • 持久层框架:MyBatis-Plus

  • 公众号开发框架:WxJava

  • 后端脚手架:renren-fast

  • 页面交互:Vue2.x

  • UI框架:ElementUI

  • 管理后台界面模板:renren-fast-vue

  • 富文本编辑器:tinymce5

功能演示

           

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

源码获取方式:

​扫码关注本号,后台回复 私活

扫码关注本号,后台回复 私活

持续关注本号,分享更多私活源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值