分享好友 最新资讯首页 最新资讯分类 切换频道
规则引擎选型及简单应用
2024-12-29 17:43

规则引擎实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。
规则引擎具体执行可以分为接受数据输入,解释业务规则,根据业务规则做出业务决策几个过程,使用规则引擎可以把复杂、
冗余的业务规则同整个支撑系统分离开,做到架构的可复用移植。

规则引擎选型及简单应用

 

相对于业务系统,规则引擎可以认为是一个独立于业务系统的模块,负责一些规则的计算等。
一般来说,规则引擎主要应用在下面的场景中:

  • 风控模型配置,风控是规则引擎
  • 用户积分等配置,如日常操作引起积分变化等
  • 简单的离线计算,各类数据量比较小的统计等

目前的规则引擎系统中,使用较多的开源规则引擎是Drools,另外还有商用的规则管理系统BRMS是ILOG JRules。

Drools是一个基于Java的开源规则引擎,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效。

目前版本是5.0.1,Drools从5.0后分为四个模块:

  • Drools Guvnor (BRMS/BPMS)
  • Drools Expert (rule engine)
  • Drools Flow (process/workflow)
  • Drools Fusion (cep/temporal reasoning)

drools代码地址

drools应用文档

Ilog Jrules是完整的业务规则管理系统(BRMS),它提供了对整个企业业务规则进行建模、编写、测试、部署和维护所必需的所有工具。

Ilog Jrules主要包括以下4个组件:

  • Rule Studio(RS) 面向开发人员使用的开发环境,用于规则的建模和编写
  • Rule Scenario Manager 规则测试工具
  • Rule Team Server(RTS) 基于Web的管理环境,面向业务人员使用,用于规则发布、管理、存储
  • Rule Execution Server(RES) 面向运维人员使用,用于规则执行、监控

Ilog Jrules主页

这两款规则引擎设计和实现都比较复杂,学习成本高,适用于大型应用系统。

Easy Rules是我偶然间看到的一个规则引擎实现,相比Drools等企业级规则引擎,Easy Rules的应用非常简单,学习成本低,容易上手。

下面重点介绍这款轻量级的规则引擎 Easy Rules。

Easy Rules官方主页:http://www.easyrules.org/

Easy Rules提供以下功能:

  • 轻量级框架和易于学习的API
  • 基于POJO的开发
  • 通过高效的抽象来定义业务规则并轻松应用它们
  • 支持创建复合规则

Easy rules的工程可以从Github下载,构建需要Maven支持。


Easy Rules打包后是一个单独的jar,使用时需要添加相关文件到工程中,或者添加Maven依赖:



大多数业务规则可以表示为以下定义:

  • 名称:一种唯一的规则名称
  • 描述:对规则的简要描述
  • 优先级:相对于其他规则的优先级
  • 条件:设置规则执行时需要满足的条件
  • 操作:设置的条件满足时执行的操作

我们可以通过扩展Easy Rules提供的Rule interface来定义规则,或者通过注解,定义自己的规则类。

下面是内置的Rule接口:



Easy Rules的引擎实例会维护一个不同规则的注册空间,每个Engine可以被视为一个单独的名称空间。
多条规则将会按照他们的自然顺序去执行,也就是默认的优先级。

要创建一个规则引擎和注册规则,可以使用下面的静态方法:


执行下面的操作启动规则执行:




下面通过一个简单的Hello World示例来展示Easy Rules的具体应用。

通过注解创建一个具体的规则类:


接下来创建一个规则引擎的实例,注册并且启动这个规则:


规则启动后会通过一个简单的条件判断(控制台输入),然后执行接下来的动作(输出规则信息)。

除了规则引擎基础的规则执行功能, Easy Rules还支持监听规则执行情况,为规则执行配置调度器,
集成Spring等功能。

 

关于规则引擎的选型和简单应用就介绍到这里,除了风控等大型的应用系统,一些独立的小型产品需求中,可以合理应用规则引擎实现业务与规则的分离,降低系统间耦合,上面介绍的Easy Rules就是一个不错的选择。

最新文章
Atlantis Word Processor
Atlantis Word Processor最新版是一款非常优秀的文字处理软件,该工具为用户准备了一款非常不错的编辑环境,包含了200个热键,帮
android标题栏尺寸,Android平台设计规范19条(轻松入门)
@亚茹有李 妹子整理了19条Android平台的设计规范,尺寸+组成元素+字体+操作栏+多面板布局+触摸
3.1 cat:合并文件或查看文件内容
  可以理解为英文单词concatenate的缩写,其功能是连接多个文件并且打印到屏幕输出,或者重定向到指定的文件中。
5G浏览器 6.8.38
360加固REQUEST_DELETE_PACKAGES 未知权限VIBRATE允许振动WRITE_EXTERNAL_STORAGE允许程序写入外部存储,如SD卡上写文件READ_EXT
2020最新运营干货分享:Facebook营销推广小技巧
虽然经历了用户数据被盗的麻烦事情,但是Facebook营销推广还是很重要的,它是品牌最常用的社交媒体推广渠道,Facebook在全球市场
AI 无人直播:优势与劣势并存
随着科技的飞速发展,AI 无人直播逐渐走进人们的视野,成为一种新兴的直播方式。它在带来诸多便利的同时,也存在着一些不容忽视
AI绘画最佳实践|用腾讯云智能图片融合优化AI绘画的效果
上一篇文章《》提到用腾讯云智能AI能力如何实现简易版的AI绘画,发布后受到大量网友关注,也在思考还能不能做出更好的效果。最近
1分钟读懂真假Facebook店铺及二者优缺点!
近日,UEESHOP推出了Facebook店铺对接功能,能一键同步独立站产品到Facebook店铺上,是目前国内唯一对接上这一功能的SaaS系统建
2023新年分享一下深藏不漏75个BT磁力搜索网站汇总,资源搜索必备。
大家好!今天为你们带来是75个BT磁力网站。分享一下的75个神级网站,有了它你也能成为资源大咖。不同的网站搜索到的资源也不尽相
cms使用说明
CMS使用说明:轻松构建与管理高效网站内容管理系统(CMS)是一种强大的工具,可以帮助企业和个人快速构建、管理和更新网站内容。