Drools - 简介
任何 Java 企业级应用程序都可以分为三个部分 −
- UI − 用户界面(前端)
- 服务层,依次连接到数据库
- 业务层
我们有许多框架可以同时处理 UI 和服务层,例如 Spring 和 Struts。然而,在 Drools 出现之前,我们还没有一种处理业务逻辑的标准方法。
什么是 Drools?
Drools 是一个业务逻辑集成平台 (BLiP)。它是用 Java 编写的。它是一个由 JBoss 和 Red Hat, Inc. 支持的开源项目。它扩展并实现了 Rete 模式匹配算法。
通俗地说,Drools 是一个工具集合,它允许我们分离和推理业务流程中的逻辑和数据。我们需要注意的两个重要关键字是逻辑和数据。
Drools 分为两个主要部分:创作和运行时。
创作 − 创作过程涉及创建规则文件(.DRL 文件)。
运行时 −它涉及创建工作记忆和处理激活。
什么是规则引擎?
Drools 是规则引擎或生产规则系统,它使用基于规则的方法来实现专家系统。专家系统是基于知识的系统,它使用知识表示将获得的知识处理成可用于推理的知识库。
生产规则系统是图灵完备的,专注于知识表示,以简洁、无歧义和声明的方式表达命题和一阶逻辑。
生产规则系统的大脑是一个推理引擎,它可以扩展到大量规则和事实。推理引擎将事实和数据与生产规则(也称为生产或规则)进行匹配,以推断出导致操作的结论。
生产规则是一个两部分结构,它使用一阶逻辑对知识表示进行推理。业务规则引擎是一种在运行时生产环境中执行一个或多个业务规则的软件系统。
规则引擎允许您定义"做什么"而不是"怎么做"。
什么是规则?
规则是知识的片段,通常表达为"当某些条件发生时,然后执行某些任务。"
When <Condition is true> Then <Take desired Action>
规则中最重要的部分是其when部分。如果满足when部分,则触发then部分。
rule <rule_name> <attribute> <value> when <conditions> then <actions> end
模式匹配
将新事实或现有事实与产生规则进行匹配的过程称为模式匹配,由推理引擎执行。模式匹配使用多种算法,包括−
- Linear
- Rete
- Treat
- Leaps
Drools 实现并扩展了 Rete 算法。Drools Rete 实现称为 ReteOO,这意味着 Drools 对面向对象系统的 Rete 算法进行了增强和优化。
规则引擎的优势
声明式编程
规则使表达困难问题的解决方案变得容易,并且解决方案也得到了验证。与代码不同,规则是用不太复杂的语言编写的;业务分析师可以轻松阅读和验证一组规则。
逻辑和数据分离
数据驻留在域对象中,业务逻辑驻留在规则中。根据项目的类型,这种分离可能非常有利。
速度和可扩展性
Drools 所基于的 Rete OO 算法已经是一种经过验证的算法。借助 Drools,您的应用程序将变得非常具有可扩展性。如果有频繁的变更请求,则可以添加新规则,而无需修改现有规则。
知识集中化
通过使用规则,您可以创建一个可执行的知识存储库(知识库)。它是业务策略的单一事实点。理想情况下,规则的可读性很高,因此也可以用作文档。
工具集成
Eclipse 等工具提供了编辑和管理规则以及获得即时反馈、验证和内容帮助的方法。还提供审计和调试工具。