分享好友 最新资讯首页 最新资讯分类 切换频道
规则引擎选型及简单应用
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就是一个不错的选择。

最新文章
AI写作:原型设计的智能加速器
作为一名AI爱好者,我积累了许多实用的AI生成工具。今天,我想分享一些我经常使用的工具,这些工具不仅能帮助
BT玩游戏盒变态版手机版V3.2.2安卓最新版
BT玩游戏盒变态版手机版是一款BT折扣游戏盒子,内置大量游戏福利,还有传奇、策略、卡牌、回合制、玄幻、二次元、冒险、三国等游
bi及大数据分析 bi大数据分析可视化处理
目录一、概述二、 FineBI 产品组成三、FineBI 架构四、功能概述1)数据准备(数据源)1、多数据源支撑2、数据管理3、数据关联4、
AI写作在线,引领你进入创作的新时代
在信息时代的今天,人工智能(AI)的发展已经深入到了各行各业,带来了无数的便利和创新。其中之一就是AI写作,通过人工智能技术
5种最流行的AI编程语言
有没有兴趣来了解更多与AI开发有关的内容? 本文将介绍创建AI程序时可以使用的5种最佳语言。Python Python语法简单࿰
Al Logo Maker
Al Logo Maker官网,人工智能标志生成工具AI Logo Maker是一个简单的Logo创作的工具,它引入了人工智能技术,使您能够轻松创建先
2023 QQ微信防红浏览器跳转源码
防红跳转源码是指一种用于隐藏URL真实地址的技术,在点击某个链接时,会先跳转到一个中间页面,再由该页面跳转到真实的目标页面
Embedding技术在推荐系统中的应用
编辑:子墨为客 Embedding是用一个低维稠密的向量来“表示”一个对象(这里的对象泛指一切可推荐的事物,比如商品、电影、音乐、
1688大牌个护家清同源店!植护、洁柔、心相印、维达、联合利华、威露士、绿伞全都找到啦!收藏起来!
创作立场声明:自己整理的大牌个护家清品牌的1688同源店,希望能够多多少少帮助到小伙伴们省到真金白银hey!是我呀!我又来啦!
9个已开源的GPT4平替分享(附开源代码+论文)
GPT(Generative Pre-trained Transformer)是一种基于Transformer的预训练语言模型,其源代码是由OpenAI开发并开源的,您可以在