- Drools 教程
- Drools - 首页
- Drools - 简介
- Drools - Eclipse 插件
- Drools - 运行时
- Drools - 创建 Drools 程序
- Drools - 常用术语
- Drools - 规则编写
- Drools - 规则语法
- Drools - Drools 程序示例
- Drools - 调试
- Drools 有用资源
- Drools - 快速指南
- Drools - 有用资源
- Drools - 讨论
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 等工具提供了编辑和管理规则以及获得即时反馈、验证和内容辅助的方法。还提供审计和调试工具。