任何 Java 企业级应用程序都可以分为三个部分 -
- UI - 用户界面(前端)
- 服务层又连接到数据库
- 业务层
在 Drools 出现之前,我们还没有处理业务逻辑的标准方法。
Drools 是一个业务逻辑集成平台 (BLiP)。它是用 Java 编写的。它是一个由 JBoss 和 Red Hat, Inc. 支持的开源项目。它扩展并实现了 Rete 模式匹配算法。
用外行的话来说,Drools 是一组工具,允许我们对业务流程中的逻辑和数据进行分离和推理。我们需要注意的两个重要关键字是Logic和Data。
Drools 分为两个主要部分:Authoring和Runtime。
- 创作- 创作过程涉及创建规则文件(.DRL 文件)。
- 运行时- 它涉及工作内存的创建和处理激活。
什么是规则引擎?
Drools是一个规则引擎或生产规则系统,使用基于规则的方法来实现专家系统。专家系统是基于知识的系统,它使用知识表示法将获得的知识处理成可用于推理的知识库。
生产规则系统是图灵完整的,重点是知识表示,以简明、非歧义和声明的方式表达命题和一阶逻辑。
生产规则系统的大脑是一个推理引擎,可以扩展到大量的规则和事实。推理引擎将事实和数据与生产规则(也称为产品或规则)相匹配,从而推断出导致行动的结论。
生产规则是一个由两部分组成的结构,使用一阶逻辑对知识表示进行推理。业务规则引擎是一个软件系统,在运行时生产环境中执行一个或多个业务规则。
一个规则引擎允许你定义 "做什么",而不是 "怎么做"。
什么是规则?
规则是一些知识片断,通常表示为:"当某些条件发生时,就做一些任务",也就是if else。
When |
规则中最重要的部分是它的when部分。如果when部分被满足,then部分就会被触发。
rule <rule_name> |
模式匹配
将新的或现有的事实与生产规则相匹配的过程称为模式匹配,它由推理引擎执行。有许多用于模式匹配的算法,包括
- 线性
- 检索
- 处理
- 跃迁
Drools执行并扩展了Rete算法。Drools的Rete实现被称为ReteOO,标志着Drools为面向对象的系统提供了Rete算法的增强和优化实现。
规则引擎的优势
- 声明式编程
规则使得表达困难问题的解决方案变得容易,同时也使解决方案得到验证。与代码不同,规则是用不太复杂的语言编写的;商业分析师可以很容易地阅读和验证一套规则。
- 逻辑和数据的分离
数据存在于领域对象中,商业逻辑存在于规则中。根据项目的类型,这种分离可能是非常有利的。
- 速度和可扩展性
Drools所采用的Rete OO算法已经是一种成熟的算法。在Drools的帮助下,你的应用变得非常可扩展。如果有频繁的变更要求,人们可以添加新的规则而不需要修改现有的规则。
- 知识的集中化
通过使用规则,你创建了一个可执行的知识库(知识库)。它是业务政策的单一真理点。理想情况下,规则是可读的,它们也可以作为文档。
- 工具集成
像Eclipse这样的工具提供了编辑和管理规则的方法,并获得即时反馈、验证和内容帮助。审计和调试工具也是可用的。