- Drools 教程
- Drools - 首页
- Drools - 简介
- Drools - Eclipse 插件
- Drools - 运行时
- Drools - 创建 Drools 程序
- Drools - 常用术语
- Drools - 规则编写
- Drools - 规则语法
- Drools - Drools 程序示例
- Drools - 调试
- Drools 有用资源
- Drools - 快速指南
- Drools - 有用资源
- Drools - 讨论
Drools - 规则语法
正如您所看到的,.drl(规则文件)有其自身的语法,让我们在本节中介绍规则语法的一部分。
规则中的条件
规则可以包含许多条件和模式,例如:
- Account (balance == 200)
- Customer (name == “Vivek”)
上述条件检查 Account 余额是否为 200 或 Customer 名称是否为“Vivek”。
规则中的变量
Drools 中的变量名以美元符号 ($) 开头。
- $account − Account( )
- $account 是 Account() 类的变量
Drools 可以使用所有原生 Java 类型,甚至枚举类型。
规则中的注释
特殊字符 # 或 // 可用于标记单行注释。
对于多行注释,请使用以下格式
/* Another line ......... ......... */
全局变量
全局变量是分配给会话的变量。它们可以出于各种原因使用,如下所示:
用于输入参数(例如,可以从会话到会话自定义的常量值)。
用于输出参数(例如,报告——规则可以将某些消息写入全局报告变量)。
用于日志记录等服务的入口点,可以在规则中使用。
规则中的函数
函数是一个便利特性。它们可以在条件和结果中使用。函数表示实用程序/帮助程序类的替代方案。例如,
function double calculateSquare (double value) { return value * value; }
方言
方言指定在条件或结果中的任何代码表达式中使用的语法。它包括返回值、evals、内联 evals、谓词、salience 表达式、结果等。默认值为 **Java**。Drools 目前支持另一种称为 **MVEL** 的方言。默认方言可以在包级别指定,如下所示:
package org.mycompany.somePackage dialect "mvel"
MVEL 方言
MVEL 是一种用于基于 Java 的应用程序的表达式语言。它支持字段和方法/getter 访问。它基于 Java 语法。
Salience
Salience 是规则语法的一个非常重要的特性。Salience 用于冲突解决策略来决定首先触发哪个规则。默认情况下,它是主要标准。
我们可以使用 salience 来定义规则的触发顺序。Salience 具有一个属性,该属性采用任何返回 int 类型数字的表达式(正数和负数均有效)。值越高,冲突解决策略选择该规则触发的可能性就越大。
salience ($account.balance * 5)
默认的 salience 值为 0。在仅为某些规则分配 salience 值时,我们应该牢记这一点。
规则语法中还有许多其他功能/参数,但我们在这里只介绍了重要的部分。
规则结果关键字
规则结果关键字是在规则的“**then**”部分中使用的关键字。
**Modify** - 事实的属性可以在规则的 **then** 部分中修改。
**Insert** - 基于某个条件,如果为真,则可以将新的事实插入到规则引擎的当前会话中。
**Retract** - 如果规则中的特定条件为真,并且您不想对该事实执行任何其他操作,则可以从规则引擎中撤回该特定事实。
**注意** - 在规则结果中使用条件逻辑(if 语句)被认为是非常不好的做法。大多数情况下,应该创建新的规则。