1 规则引擎入门:Drools概述和基本原理

637 阅读7分钟

1.0 概述

本章节旨在为读者提供 Drools 规则引擎的基础知识和认识。在本章中,我们将对 Drools 规则引擎进行概述,详细介绍其定义、历史发展、功能特点、应用领域等方面的内容。通过本章的学习,读者将对 Drools 规则引擎有一个初步的了解,为后面的学习做铺垫。

1.1 概念

1.1.1 什么是规则引擎

规则引擎是一种软件系统,它通过编写、执行和管理业务规则来实现动态决策。规则引擎是一种高效的决策支持系统,可以根据指定的规则和数据来自动地决策和处理业务请求。

1.1.2 为什么要用规则引擎?

  • 声明式编程

规则引擎允许您说“该怎么做”,而不是“怎么做”。基于该思想,使用规则可以使表达困难问题的解决方案变得容易,并且规则比代码容易阅读。

  • 逻辑与数据分离

数据在域对象中,逻辑在规则中,随着将来的变化,逻辑可以更容易维护,可以将逻辑全部组织在一个或多个非常不同的规则文件中,而不是将逻辑分布在许多域对象或控制器中。

  • 规则集中管理

通过使用规则,可以创建可执行的规则库,并将这些规则集中编写和管理。如存放到某个目录或者数据库。

  • 可读性高

通过创建对象模型以及(可选)为问题域建模的领域特定语言,可以设置自己编写与自然语言非常接近的规则。他们以自己的语言表达自己的逻辑,这可能是非技术领域的专家可以理解的,并且所有程序都经过检查,而技术知识则隐藏在常规代码中。

1.1.3 什么时候使用?

Drools规则引擎通常在以下情况下使用:

    1. 业务规则复杂:当业务规则复杂,且需要实时更新或扩展时,Drools可以帮助开发人员快速高效地管理规则。
    2. 决策流程复杂:当决策流程复杂,且需要支持实时决策时,Drools可以帮助开发人员以灵活的方式执行决策流程。
    3. 需要处理大量数据:当需要处理大量数据,并对其进行实时分析和决策时,Drools可以帮助开发人员以高效的方式处理数据。
    4. 需要动态决策:当需要在应用程序中动态地更改决策时,Drools可以帮助开发人员实现这一目标。

总的来说,如果您需要解决一个复杂的业务问题,需要动态地处理决策流程,或者需要处理大量数据,则Drools可能是一个不错的选择。然而,最终的决策应该根据具体需求和环境来做出。

1.2 基本组件

Drools 规则引擎的架构是一种分层的系统结构,每一层都有特定的职责和功能。主要的架构层包括:

  1. Rules:我们自己定义的业务规则,比如我们自己写的规则文件。所有规则必须至少包含触发规则的条件和规则规定的操作。
  2. Production memory:规则存储在 Drools 引擎中的位置。
  3. Facts:输入或更改到 Drools 引擎中的数据,Drools 引擎匹配规则条件以执行适用规则。在规则中修改了Fact对象的值,真实的JavaBean的数据也会发生改变。 比如:当我们调用ksession.insert(对象),那么插入的这个对象就可以理解成Facts对象。
  4. Working memory:facts 在 Drools 引擎中存储的位置。
  5. Pattern matcher:匹配器,将Rule Base中所有的规则与Working memory中的Fact对象进行模式匹配,匹配成功的规则将被激活并放入到Agenda中。
  6. Agenda:议程,执行Agenda中被激活的排好序的规则。

1.3 与其他规则引擎的对比

除了Drools以外,还有一些其他规则引擎,包括:

  • CLIPS
  • Jess
  • OpenL Tablets
  • JBoss Rules/Drools Fusion
  • IBM Operational Decision Manager (ODM)
  • Azul Zulu Rule Engine

下面是一个Drools与其他规则引擎的对比表:

FeatureDroolsCLIPSJessOpenL TabletsJBoss Rules/Drools FusionIBM ODMAzul Zulu Rule Engine
开源/商业商业开源商业商业商业商业商业
语言支持JavaCLIPSJessJavaJavaJavaJava
可视化界面支持不支持支持不支持支持支持支持
规则表达式语言DSL/FLRCLIPSJessExcelDSL/FLRODMPegaRules PRPC
事实模型POJO原生类型POJOPOJOPOJOXOMPOJO
性能中等较高较高中等中等中等

从上表可以看出,Drools和其他规则引擎之间存在一些差异,例如语言支持、可视化界面、规则表达式语言、事实模型等。因此,选择规则引擎时,需要考虑自己的业务需求和技术能力,以及引擎的性能、易用性、可扩展性等因素。此外,也需要考虑预算和开源/商业授权模型等因素。

1.4 流程引擎与规则引擎

流程引擎和规则引擎是两种不同的软件系统,各有其独特的特点。

流程引擎是一种自动化业务流程的软件系统,它可以帮助您管理复杂的业务流程。流程引擎通常使用图形界面来定义业务流程,并且能够自动地执行流程中的各个步骤。

规则引擎是一种可以根据特定规则自动处理业务数据的软件系统。规则引擎使用特定的语言(如DRL)定义规则,并且能够在数据发生变化时自动地执行规则。

流程引擎和规则引擎之间有着密切的关联,它们可以互相配合工作,以实现更强大的业务自动化。例如,您可以在流程引擎中定义业务流程,并在流程的某些步骤中使用规则引擎来自动处理业务数据。

流程引擎与规则引擎对比表:

特征流程引擎规则引擎
功能主要功能是控制工作流程的顺序和执行方式,执行完整的业务流程。主要功能是制定规则,对业务数据进行自动决策。
适用范围适用于需要定义明确的流程,按照预定义的流程进行业务处理。适用于处理复杂,模糊的业务规则,进行快速决策。
可配置性对于流程的配置是固定的,不能自行调整。规则引擎支持动态配置,可以自行调整规则。
灵活性流程引擎对于流程的变更不够灵活,需要进行大量的开发工作。规则引擎支持动态修改规则,更加灵活。
效率流程引擎的效率一般不高,因为需要对每一个流程步骤进行详细的控制。规则引擎的效率较高,因为只需要判断是否满足规则即可,不需要对每一步进行控制。
操作方式可以触发人工任务,对流程进行修改根据规则条件的符合情况,决策出处理方式并自动执行
数据处理数据是以流程变量的形式存储的数据是以对象形式存储的
日志记录可以记录流程执行的详细信息,包括每一步操作的详细信息可以记录规则执行的详细信息,包括规则条件的符合情况

总的来说,流程引擎和规则引擎是两种不同的软件系统,但它们可以结合在一起,以实现更强大的业务自动化。