📅  最后修改于: 2020-10-15 10:57:00             🧑  作者: Mango
正如您看到的.drl(规则文件)具有自己的语法一样,让我们在本章中介绍Rule语法的某些部分。
规则可以包含许多条件和模式,例如-
以上条件检查帐户余额是否为200或客户名称为“ Vivek”。
Drools中的变量名称以Dollar($)符号开头。
Drools可以使用所有本机Java类型甚至Enum。
特殊字符#或//可用于标记单行注释。
对于多行注释,请使用以下格式:
/*
Another line
.........
.........
*/
全局变量是分配给会话的变量。出于各种原因,可以使用它们,如下所示-
对于输入参数(例如,可以在会话之间自定义的常量值)。
对于输出参数(例如,报告-一条规则可以将一些消息写入全局报告变量)。
可以在规则内使用的服务(如日志记录)的入口点。
功能是一项便利功能。它们可以用于条件和后果。函数表示实用程序/帮助程序类的替代方法。例如,
function double calculateSquare (double value) {
return value * value;
}
方言指定条件或结果中任何代码表达式中使用的语法。它包括返回值,评估,内联评估,谓词,显着性表达式,结果等。默认值为Java 。 Drools当前还支持一种叫做MVEL的方言。可以在包级别指定默认的方言,如下所示:
package org.mycompany.somePackage
dialect "mvel"
MVEL是用于基于Java的应用程序的一种表达语言。它支持字段和方法/获取器访问。它基于Java语法。
显着性是规则语法的一个非常重要的功能。解决冲突策略使用显着性来决定首先触发哪个规则。默认情况下,这是主要标准。
我们可以使用显着性来定义触发规则的顺序。显着性具有一个属性,该属性采用任何返回整数类型的表达式(正数和负数均有效)。该值越高,冲突解决策略就会激发一条规则来执行。
salience ($account.balance * 5)
显着性默认值为0。仅在为某些规则分配显着性值时,应牢记这一点。
规则语法中还有很多其他功能/参数,但是在这里我们仅涵盖了重要的功能/参数。
规则结果关键字是规则的“ then ”部分中使用的关键字。
修改-事实的属性可以在规则的随后部分中进行修改。
插入-根据某些条件,如果为true,则可以将新事实插入规则引擎的当前会话。
撤消-如果规则中的特定条件为真,并且您不想对该事实采取其他任何措施,则可以从规则引擎撤回该特定事实。
注–在规则结果中包含条件逻辑(如果语句)被认为是非常不好的做法。大多数时候,应该创建一个新规则。