临时来活儿了,由于项目需要,预研了下规则引擎,领导让找个合适的规则引擎框架。
关于这一部分,之前确实没用过,遇事不决,先问百度。
百度上是这么介绍规则引擎的:
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。
应用案例
某电商平台促销活动:活动规则是根据⽤户购买订单的⾦额给⽤户送相应的积分:
-
购买的越多送的积分越多
-
⽤户可以使⽤积分来兑换相应的商品
我们这次活动的⼒度很⼤,肯定会吸引很多的⽤户参加,产品经理⼩王兴⾼采烈唾液横⻜的对⼩明讲到。
⽤户购买的⾦额和对应送多少积分的规则如下:
⼩明⼀看,这需求果然简单呀,作为⼀个⼯作了两三年的程序员来讲,这不就是⼩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积分…
当规则在不断的变化过程中,⼩明想这样下去⾮得被他们弄死,必须要找找有什么技术可以将活动规则和代码解耦,不管规则如何变化,执⾏端不⽤动。
⼩明搜了半天还真有这样的东⻄,那就是规则引擎,那么规则引擎到底是什么东⻄呢?我们来看看。
优势
关于规则的优势,大家可能看到题目就已经猜出了大概,确实,正如猜测的这样。
-
可以提高效率,管理流程自动化,即使现代商业规则异常复杂。
-
市场要求业务规则经常变化,IT系统必须依据业务规则的变化快速、低成本的更新。
-
可快速、低成本的更新,业务人员应能直接管理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 支持集群,支持多数据源,支持分布式事务,拥有完善的权限管理。页面美观,完全响应式布局让你无论是电脑、平板还是手机等,都可随意使用。
运行系统
-
首先我们将项目下载到本地,在
Gitee
下载页面下载解压到工作目录。 -
导入到
Eclipse
,菜单File
->Import
,然后选择Maven
->Existing Maven Projects
,点击Next
> 按钮,选择工作目录,然后点击Finish
按钮,即可成功导入。 -
创建数据库
ry
并导入数据脚本ry_2021xxxx.sql
,quartz.sql
。 -
打开项目运行
com.ruoyi.RuoYiApplication.java
,出现如下图表示启动成功。
(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙
.-------. ____ __
| _ _ \ \ \ / /
| ( ' ) | \ _. / '
|(_ o _) / _( )_ .'
| (_,_).' __ ___(_ o _)'
| |\ \ | || |(_,_)'
| | \ `' /| `-' /
| | \ / \ /
''-' `'-' `-..-'
-
最后打开浏览器,输入:(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
功能演示
源码获取方式:
扫码关注本号,后台回复 私活
扫码关注本号,后台回复 私活
持续关注本号,分享更多私活源码