适用范围:本文是基于 Drools 7.54.0.Final 的学习笔记。文中的模块名称和 API 可能随大版本变化,实际选型或升级时请以当前官方文档为准。

什么是规则引擎

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

通俗地说,就是将代码中的 if...else... 决策逻辑提取到独立的规则库中。规则变更可以与应用程序代码解耦,但仍应经过版本管理、测试和发布流程。

规则 引擎解决了哪些问题

  • 将业务规则与应用程序解耦,独立存储与部署。
  • 可以低成本的、快速的由业务人员直接更新业务规则,无需开发人员的参与。
  • 开发人员可以通过稳定的事实模型和规则接口协作,降低业务规则频繁变化对应用代码的影响。

市面上比较有名的规则引擎

  • 开源的代表:Drools
  • 商业的代表:iLog、VisualRules

Drools介绍

KIE(Knowledge Is Everything)是 JBoss 生态中的综合项目,Drools 是其中的规则引擎项目。
Drools是一个业务规则管理系统,具有基于前向链和后向链推理的规则引擎,可以快速可靠地评估业务规则和复杂事件处理。
规则引擎也是创建专家系统的基本构建块,在人工智能中,专家系统是模拟人类专家决策能力的计算机系统。

官方文档地址

Drools中的重要库

  • Knowledge-api.jar:这提供了接口和工厂。它还有助于清楚地显示什么是用户 API,什么是引擎 API。
  • Knowledge-internal-api.jar:提供内部接口和工厂。
  • drools-core.jar:这是核心 Drools 引擎,运行时组件。包含 RETE 引擎和 LEAPS 引擎。如果您正在预编译规则(并通过 Package 或
    RuleBase 对象进行部署),则这是唯一的运行时依赖项。
  • drools-compiler.jar:这包含编译器/构建器组件以获取规则源,并构建可执行的规则库。这通常是您的应用程序的运行时依赖项,但如果您正在预编译规则,则不必如此。这取决于drools-core。
  • drools-jsr94.jar:这是符合 JSR-94 的实现,它本质上是在 drools-compiler 组件之上的一层。请注意,由于 JSR-94
    规范的性质,并非所有功能都可以通过此接口轻松公开。在某些情况下,直接使用 Drools API 会更容易,但在某些环境中,JSR-94 是强制性的。
  • drools-decisiontables.jar:这是决策表“编译器”组件,它使用 drools-compiler 组件。这支持 excel 和 CSV 输入格式。

Docker部署DroolsWorkBench与KieServer

链接地址

规则引擎drools语法整理

链接地址