Drools规则引擎简介


任何 Java 企业级应用程序都可以分为三个部分 -

  • UI - 用户界面(前端)
  • 服务层又连接到数据库
  • 业务层

在 Drools 出现之前,我们还没有处理业务逻辑的标准方法。
Drools 是一个业务逻辑集成平台 (BLiP)。它是用 Java 编写的。它是一个由 JBoss 和 Red Hat, Inc. 支持的开源项目。它扩展并实现了 Rete 模式匹配算法。
用外行的话来说,Drools 是一组工具,允许我们对业务流程中的逻辑和数据进行分离和推理。我们需要注意的两个重要关键字是LogicData
Drools 分为两个主要部分:AuthoringRuntime
  • 创作- 创作过程涉及创建规则文件(.DRL 文件)。
  • 运行时- 它涉及工作内存的创建和处理激活。

 
什么是规则引擎?
Drools是一个规则引擎或生产规则系统,使用基于规则的方法来实现专家系统。专家系统是基于知识的系统,它使用知识表示法将获得的知识处理成可用于推理的知识库。

生产规则系统是图灵完整的,重点是知识表示,以简明、非歧义和声明的方式表达命题和一阶逻辑。

生产规则系统的大脑是一个推理引擎,可以扩展到大量的规则和事实。推理引擎将事实和数据与生产规则(也称为产品或规则)相匹配,从而推断出导致行动的结论。

生产规则是一个由两部分组成的结构,使用一阶逻辑对知识表示进行推理。业务规则引擎是一个软件系统,在运行时生产环境中执行一个或多个业务规则。

一个规则引擎允许你定义 "做什么",而不是 "怎么做"。
  
什么是规则?
规则是一些知识片断,通常表示为:"当某些条件发生时,就做一些任务",也就是if else。

When
   <Condition is true>
Then
   <Take desired Action>

规则中最重要的部分是它的when部分。如果when部分被满足,then部分就会被触发。

rule  <rule_name>
   <attribute> <value>
      
   when
      <conditions>
      
   then
      <actions>
end

 
模式匹配
将新的或现有的事实与生产规则相匹配的过程称为模式匹配,它由推理引擎执行。有许多用于模式匹配的算法,包括
  • 线性
  • 检索
  • 处理
  • 跃迁

Drools执行并扩展了Rete算法。Drools的Rete实现被称为ReteOO,标志着Drools为面向对象的系统提供了Rete算法的增强和优化实现。
  
规则引擎的优势
  • 声明式编程

规则使得表达困难问题的解决方案变得容易,同时也使解决方案得到验证。与代码不同,规则是用不太复杂的语言编写的;商业分析师可以很容易地阅读和验证一套规则。
  • 逻辑和数据的分离

数据存在于领域对象中,商业逻辑存在于规则中。根据项目的类型,这种分离可能是非常有利的。
  • 速度和可扩展性

Drools所采用的Rete OO算法已经是一种成熟的算法。在Drools的帮助下,你的应用变得非常可扩展。如果有频繁的变更要求,人们可以添加新的规则而不需要修改现有的规则。
  • 知识的集中化

通过使用规则,你创建了一个可执行的知识库(知识库)。它是业务政策的单一真理点。理想情况下,规则是可读的,它们也可以作为文档。
  • 工具集成

像Eclipse这样的工具提供了编辑和管理规则的方法,并获得即时反馈、验证和内容帮助。审计和调试工具也是可用的。