Drools 教程:Drools 规则引擎架构与示例
什么是 Drools?
Drools 是一款用 Java 编写的开源业务规则管理软件 (BRMS),它为用户提供了多种功能,如业务规则引擎、Web 创作、规则管理应用程序以及决策模型和符号 (DMN) 模型的运行时支持。它使用了先进的 rete 模式匹配算法实现系统。
Drools 在 Apache License 2.0 下发布,与任何 JVM 兼容,并且在 Maven Central Repository 中也可用。
Drools 工具帮助您分离业务流程中的逻辑和数据,并对其进行推理。它支持前向和后向链式推理的 Drools 规则引擎。
Drools 分为两部分
- 创作 – 包括规则文件的开发。
- 运行时 – 包括工作内存的创建和激活的处理。
什么是规则?
规则是知识的一部分,通常表达为“当特定条件发生时,则执行某些任务”。
规则中最关键的部分是其when 部分。一旦when 部分满足,then 部分就会被触发。
语法
When <Condition is true> Then <Take desired Action>
模式匹配方法
模式匹配方法帮助您将新的或旧的事实与生产规则进行比较。这由推理引擎完成。
用于模式匹配的算法有
- Rete 算法
- Leaps 算法
- 线性算法
- Treat 算法
然而,Drools 主要使用的算法是 Rete 算法。
Rete 算法
Rete 算法是一种有用的模式匹配算法,可用于实现生产规则系统。它通过节点共享来牺牲内存以提高速度。它还通过节点共享来减少或消除特定类型的冗余。它在不同事实类型之间执行连接时存储部分匹配。
Drools 规则引擎
Drools 规则引擎是一种基于规则的方法,用于在 Drools 软件中实现专家系统。规则引擎提供专家系统,这些系统是基于知识的系统,可帮助您做出决策,例如做什么以及如何做。它将知识收集到知识库中,可用于推理。
Drools 工具套件
现在,在本 Drools 规则引擎教程中,我们将学习 Drools 工具套件。Drools 套件包含以下五种工具:
- Drools Guvnor:它是 Drools KnowledgeBase 的集中式存储库。
- Drools Flow:它提供工作流和业务流程。
- Drools Fusion:用于复杂事件处理的工具。
- Drools Expert 或规则引擎:用于执行推理的有用工具。
- Drools Planner:提供自动化规划,包括 NP 难题规划问题。
Drools 中的重要组件
现在,在本 Drools 教程中,让我们学习 Drools 的重要组件。
以下是 Drools 中使用的基本术语
- Facts – Facts 代表作为规则输入的*数据*
- Working Memory – 存储 Facts 的地方,用于模式匹配。可以修改、插入和移除。
- Knowledge Session – 此组件包含触发规则所需的所有资源。在此,所有 Facts 被插入到单个会话中,然后匹配的规则被触发。
- Knowledge Base – 它代表了 Drools 生态系统中的知识。它存储了规则所在资源的形成。
- Module – 这是一个模块,存储多个 Knowledge Bases,可以容纳不同的会话。
Drools 的架构
Drools 架构的工作系统如下
步骤 1) 规则被加载到规则库中,并一直可用。
步骤 2) Facts 被断言到工作内存中,然后可以对其进行修改或撤回。
步骤 3) 将新的或现有的 Facts 与生产规则进行匹配的过程称为模式匹配,由规则引擎执行。
步骤 4) 议程允许您使用冲突解决策略来管理冲突规则的执行顺序。
Drools 的特性
以下是 Drools 的重要特性
- 帮助您将应用程序与动态逻辑分离
- 声明式编程
- 知识的集中化
- 速度和可扩展性
- 将逻辑与应用程序分离
- 易于理解的规则
如何在 Eclipse 中添加 Drools 插件
现在,在本 Drools 教程中,让我们学习如何在 Eclipse 中添加 Drools 插件。
步骤 1) 点击 jBPM 集成的“Distribution ZIP”
访问 https://www.drools.org/download/download.html 并点击 jBPM 集成的“Distribution ZIP”。下载后,将其解压到硬盘上。
步骤 2) 安装新软件
在 Eclipse 中,选择“Install New Software”。
步骤 3) 点击“Add”按钮
点击“Add”按钮添加软件。
步骤 4) 浏览文件夹
在下一个屏幕上,点击“Local”并选择“org.drools.updatesite/”文件夹,然后点击“Ok”。
步骤 5) 点击“Next”按钮
在安装修复页面,点击“Next”按钮。
步骤 6) 接受许可协议
接受许可协议,然后点击“next”。
步骤 7) 重启 Eclipse
软件将下载,然后您需要重启 Eclipse。
步骤 8) 安装过程完成
在 Windows > Preferences 菜单中,您会看到 Drools 选项,表明它已安装。
Drools 程序 Hello World 示例
下面是一个 Drools Hello World 程序的示例
package com.sample import com.sample.DroolsTest.Message; rule "Hello World" when m : Message( status ** Message.Hello, myMessage : message ) then System.out.println( myMessage ); m.setMessage( "Goodbye cruel world" ); m.setStatus( Message.GOODBYE ); update( m ); end rule "GoodBye" when Message( status ** Message.GOODBYE, myMessage : message ) then System.out.println( myMessage ); end
什么是向前链与向后链?
前向链引擎会检查事实并推导出一个特定的结论。
考虑一个医疗诊断系统的场景。如果将患者的症状作为事实输入到工作内存中,那么很容易诊断出他患有某种疾病。
前向链引擎
后向链引擎有一个设定的目标,引擎会尝试去满足它。
考虑同样的医疗诊断场景。假设某种疾病正在流行。这个 AI 可以假设某个特定个体患有该疾病,并根据可用信息尝试确定其诊断是否正确。
后向链引擎
为什么使用 Drools 规则引擎?
以下是使用 Drools 规则引擎的主要原因
- 规则对开发人员和业务分析师来说都很容易理解。
- 规则易于维护。
- 规则引擎使用 Rete 算法,该算法指出引擎的性能从不取决于规则的数量。
- 规则可以在不中断应用程序的情况下进行修改和部署。
- 将业务逻辑从相对静态的代码库中外部化。
- 规则以更简单的格式开发,因此业务分析师可以轻松阅读和验证一组规则。
- 规则允许您创建一个可执行的知识库。
- Eclipse 等工具可帮助您管理规则,获得即时响应、身份验证和内容支持。
规则引擎的缺点
以下是使用规则引擎的缺点/弊端
- 开发人员需要投入大量学习精力来了解这种编程方法。
- 规则引擎不是一种安全的问题排查方法。
- 需要理解规则引擎的工作原理以消耗更多内存。
- 对于复杂的分支,有大量的规则。
规则可能会随着时间而改变,并且需要代码更改才能生效。
摘要
- JBoss Drools 是一个业务逻辑集成平台 (BLiP)
- Drools 工具的类型有:1) Drools Guvnor 2) Drools Flow 3) Drools Fusion 4) Drools Expert 5) Drools, Planner。
- Drools 帮助您将应用程序与动态逻辑分离。
- Fact 代表了作为规则输入的*数据*。
- 工作内存是一个存储 Facts 的地方,用于模式匹配。它可以被修改、插入和移除。
- 知识库是一个包含触发规则所需所有资源的组件。
- 知识会话代表了 Drools 生态系统中的知识。
- 知识库代表了 Drools 生态系统中的知识。
- 模块存储多个知识库,可以容纳不同的会话。
- 规则是知识的一部分,通常表达为“当特定条件发生时,则执行某些任务”。
- Drools 是一个规则引擎,它使用基于规则的方法来实现专家系统。
- 前向链引擎会检查事实并推导出一个特定的结论。
- 后向链引擎有一个设定的目标,引擎会尝试去满足它。
- Rete 算法是一种有用的模式匹配算法,可用于实现生产规则系统。
- 规则对开发人员和业务分析师来说都很容易理解。
- 使用 Drools 这样的规则引擎的主要缺点是,它需要开发人员投入大量学习精力来了解这种编程方法。