分享好友 最新动态首页 最新动态分类 切换频道
规则引擎介绍与使用:Drools、Aviator、QLExpress、EasyRules、URule
2024-12-27 10:26

1.1 什么是规则引擎

        规则引擎是一种嵌入在应用程序中的组件,它实现了将业务决策从应用程序代码中分离出来的功能,并使用预定义的语义模块来编写和执行这些业务决策。       

        规则引擎通常包括一个规则库,其中存储了以某种形式(如脚本、XML文件等)定义的业务规则。当应用程序需要做出决策时,它会将相关数据发送给规则引擎。规则引擎会遍历规则库中的规则,根据数据输入和规则的逻辑进行匹配和评估,最终产生决策结果并返回给应用程序。

1.2 规则引擎特点

  • 特点
    1. 业务与代码分离:规则引擎将业务规则与应用程序代码分离,使得业务规则的修改无需修改代码,降低了维护成本。
    2. 灵活性:支持动态修改规则,以适应业务变化的需求。
    3. 可重用性:规则可以跨多个应用程序和场景重复使用,提高了开发效率。
    4. 可视化设计:许多规则引擎提供了可视化设计器,允许非技术人员通过图形界面来定义和修改规则。
  • 优势
    1. 提高应用程序的灵活性:业务规则的变更不再需要修改和重新部署应用程序代码。
    2. 降低维护成本:业务人员和开发人员可以分工合作,业务人员负责规则的定义和修改,开发人员负责应用程序的开发和维护。
    3. 支持复杂业务逻辑:规则引擎可以处理复杂的业务逻辑和条件判断,提高决策的准确性和效率。

Drools、Aviator、QLExpress、EasyRules、URule是五种不同的规则引擎,它们各自具有不同的特点和优势

  • Drools:用Java语言编写的开源规则引擎,基于Rete算法实现,功能强大且易于集成到Java应用中。
  • Aviator:阿里开源的高性能、轻量级表达式求值引擎,支持运算符重载和多种数据类型。
  • QLExpress:由阿里电商业务驱动的动态脚本引擎解析工具,支持复杂的业务逻辑计算和表达式计算。
  • EasyRules:轻量级的Java规则引擎,提供简单而强大的API来定义和执行规则。
  • URule:一款功能全面的规则引擎,支持可视化配置和复杂的业务规则管理。

2.1 Drools

基本信息

  • 类型:开源业务规则引擎
  • 语言:Java
  • 特点:基于Charles Forgy的RETE算法,具有易于访问企业策略、易于调整以及易于管理的特点。Drools将业务规则从硬编码中解放出来,以规则脚本的形式存放在文件或数据库中,便于业务规则的变更和管理。
  • 应用场景:广泛应用于企业级的业务规则管理和决策支持系统。

优势

  • 功能强大,支持复杂的业务规则表达和推理。
  • 易于与Java应用集成,适合企业级应用开发。
  • 社区活跃,有丰富的文档和案例可供参考。

使用案例

  • 添加Drools 依赖
 
  • 创建 Drools 规则文件

    • 在  中配置你的 KModule

    • 在  下创建一个新的目录 ,并在其中添加你的  规则文件,例如 

 

  • 创建 java实体类

 
  • 测试
 

2. Aviator

基本信息

  • 类型:轻量级脚本语言
  • 语言:基于JVM
  • 特点:Aviator是一门高性能、轻量级的脚本语言,专为Java平台设计。它支持数字、字符串、正则表达式、布尔值等基本类型,并且可以使用所有Java运算符进行运算。Aviator还提供了内置的bigint和decimal类型,用于处理超大整数和高精度运算。
  • 应用场景:适用于规则判断、公式计算、动态脚本控制等多种场景。

优势

  • 语法简洁,易于学习和使用。
  • 性能优越,支持ASM模式直接将脚本翻译成JVM字节码。
  • 扩展性强,可以方便地调用Java方法和库。

使用案例

        Aviator适用于各种需要动态表达式求值的场景,如公式计算、数据处理转换、工作流逻辑判定、规则判断及规则引擎等。

  •  添加 Aviator 依赖
 
  • Aviator demo

 

3. QLExpress

基本信息

  • 类型:弱类型脚本语言
  • 语言:基于JVM
  • 特点:QLExpress是一个轻量级的规则引擎,支持弱类型脚本语言。它具有线程安全、高效执行、安全控制等特点。QLExpress的脚本编译过程可以缓存在本地机器,提高了执行效率。
  • 应用场景:广泛应用于电商业务场景,支持复杂的业务逻辑判断和表达式计算。

优势

  • 编译过程轻量化和灵活。
  • 运行时通过threadLocal保证线程安全。
  • 脚本编译结果可缓存,提升执行效率。

使用案例

  •  添加QLExpress依赖
 
  • 使用案例

 

4. EasyRules

基本信息

  • 类型:轻量级Java规则引擎
  • 语言:Java
  • 特点:EasyRules是一个简单而强大的Java规则引擎,提供了轻量级框架和易于学习的API。它基于POJO的开发与注解的编程模型,支持从简单规则创建组合规则的能力。
  • 应用场景:适用于需要简单规则管理和执行的应用场景。

优势

  • 易于学习和使用。
  • 支持组合规则和表达式语言。
  • 基于注解的编程模型降低了开发难度。

5. URule

基本信息(由于信息较少,以下部分基于通用理解和规则引擎的一般特点

  • 类型:开源规则引擎
  • 语言:Java
  • 特点:URule是一个功能全面的规则引擎,通过界面配置实现规则管理。它可能支持多种业务场景下的规则定义和执行,提供了灵活的配置选项和强大的规则管理能力。
  • 应用场景:适用于需要复杂规则管理和配置的应用场景。
最新文章
谷歌SEO优化时,为何internal page会替代home page显示?
在SEO的浩瀚世界里,每一个细节都关乎网站的生死存亡。我曾无数次深入探索,试图揭开谷歌搜索引擎的神秘面纱。今天,我想和大家聊聊一个有趣且至关重要的现象:在谷歌SEO优化过程中,为何internal page(内页)有时会替代home page(首页)
百度关键词优化软件排名,哪款工具更高效提升搜索排名?
在当下这个信息爆炸的时代,搜索引擎优化(SEO)成为了众多网站和企业在网络世界中立足的关键。而百度,作为中国最大的搜索引擎,其关键词优化更是众多网络营销策略中的重中之重。基于我多年的实战经验和对行业的深刻理解,我发现选择合适
第六章(项目进度管理)
项目进度管理包括为管理项目按时完成所需的各个过程。 项目进度计划(Schedule)说明了项目如何以及何时交付项目范围中定义的产品、服务 和成果。创建 WBS 最底层得到的是工作包,但是为了更好的估算活动持续时间和活动
QQ群排名引流的两种方式,适合各类粉丝
QQ群大家都不陌生,可以说是在微信群之前最火的了。虽然说现在它的热度已经没有那么高了,但是并不影响我们利用它进行引流操作。虽然本篇文章的标题写的是群排名引流,不过我今天分享的是QQ群的两种引流方式。方式一相信大家也碰到过,不管
系统还原不能用怎么办?联想笔记本自动修复无法进入系统
联想 Lenovo ideapad 700-15ISK 笔记本电脑 ,windows补丁强制更新升级后,出现 “正在准备自动修复”【如图1】,诸位可能还有别的问题,不一而足,我自己的电脑是还有 “我们正在安装一个系统更新,请稍后”【如图2】,电脑会一直重复循环
骗子酒馆正版
骗子酒馆是一款以PC端游《骗子酒馆》为主题的自制策略RPG游戏。在游戏中,玩家将扮演一位酒馆里的牌局参与者,与三位伙伴同桌博弈,目标是成为最终存活的赢家。游戏提供四种牌型,包括K、Q、A和小丑牌,每局开始时系统会随机翻出一张底牌,
鼎益丰兑付危机背后,投资者能否找回自己的血汗钱?资金盘 虚拟货币241209
大家好,我是丹丹,一家软件kaifa公司的商业模式策划导师!(如有疑问/联/系/编辑:DANCE5927)“鼎益丰奇迹”:高收益背后的风险谜团,投资者何去何从?在投资的世界里,是否存在一种“稳赚不赔”的秘籍?当一家企业声称能提供超高年化收
遵义爱采购运营介绍
百度爱采购有哪些功能?发布产品标题有哪些技巧?百度爱采购是一个B2B平台所以我们的产品要能准确的对应百度的类目,这个有利于展现的准确性。有些客户会问我们的产品可以上百度爱采购不,请找下百度类目,有属于你的分类就可以进行开通。
网站标题该如何进行SEO优化?
1、title标题尽可能不相同 重复或者相近的标题会让蜘蛛误以为是重复内容,不能很好的通过页面分析出大体的内容,从而造成用户体验不好,所以对于title标题应尽可能的不一样,不重复。 2、简明精练,突出主旨
美术装备之画板的购买要点介绍,快乐收藏!
美术装备之画板的购买要点是什么?下面我们来了解一下。美术装备之画板必须做到,画架稳固,画板平整,绘图板的质量与其加工材料密不可分分的关系,通常常见的木材和金属材料,木制画架应用广泛,性价比高,但使用一段时间后支撑平稳度会变
相关文章
推荐文章
发表评论
0评