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

模式匹配

将新的或现有的事实与生产规则进行匹配的过程称为模式匹配,这是由推理引擎执行的。有多种用于模式匹配的算法,包括:

  • 线性
  • Rete
  • Treat
  • Leaps

Drools 实现并扩展了 Rete 算法。Drools 的 Rete 实现称为 ReteOO,表示 Drools 对面向对象系统进行了 Rete 算法的增强和优化实现。

规则引擎的优势

声明式编程

规则使表达对复杂问题的解决方案变得容易,并能验证这些解决方案。与代码不同,规则是用不太复杂的语言编写的;业务分析师可以轻松阅读和验证一组规则。

逻辑和数据分离

数据驻留在域对象中,业务逻辑驻留在规则中。根据项目的类型,这种分离可能非常有利。

速度和可扩展性

Drools 所基于的 Rete OO 算法已经是一个经过验证的算法。借助 Drools,你的应用程序变得非常可扩展。如果存在频繁的变更请求,则可以添加新规则而无需修改现有规则。

知识集中化

通过使用规则,你创建了一个可执行的知识存储库(知识库)。它是业务策略的单一事实来源。理想情况下,规则的可读性非常强,因此也可以用作文档。

工具集成

Eclipse 等工具提供了编辑和管理规则以及获得即时反馈、验证和内容辅助的方法。还提供审计和调试工具。

广告