规则条件
规则可以包含许多条件和模式,如:
账户(余额= 200)
客户(name ==“Vivek”)
上述条件检查帐户余额是200还是客户名称是“Vivek”。
规则中的变量
Drools中的变量名称以Dollar($)符号开头。
$ account:Account()
$ account是Account()类的变量
Drools可以与所有本机Java类型甚至Enum一起使用。
规则中的注释
特殊字符#或//可用于标记单行注释。
对于多行注释,请使用以下格式:
/*
Another line
………
………
*/
全局变量
全局变量是分配给会话的变量。它们可以由于各种原因使用如下:
对于输入参数(例如,可以从会话到会话定制的常量值)。
对于输出参数(例如,报告 - 规则可以向全局报告变量写入一些消息)。
诸如日志记录等服务的入口点,可以在规则中使用。
规则中的功能
功能是一个方便的功能。它们可以用于条件和后果。函数代表了实用程序/助手类的替代方法。例如,
function double calculateSquare (double value) {
return value * value;
}
方言
方言指定在任何条件或结果中的任何代码表达式中使用的语法。它包括返回值,evals,inline evals,predicates,salience表达式,后果等等。默认值为Java。Drools目前支持一种称为MVEL的方言。可以在包级别指定默认方言,如下所示:
package org.mycompany.somePackage
dialect “mvel”
MVEL方言
MVEL是基于Java的应用程序的表达式语言。它支持字段和方法/ getter访问。它基于Java语法。
凸显
显着性是规则语法的一个非常重要的特征。冲突解判断略使用了显着性来决定先制定哪个规则。默认情况下,这是主要的标准。
我们可以使用显着性来定义触发规则的顺序。Salience有一个属性,它接受任何返回一些int类型的表达式(正数和负数都是有效的)。价值越高,通过解决冲突战略就可以获得一条规则。
salience ($account.balance * 5)
默认的显着值为0.在将突出值分配给某些规则时,请记住这一点。
规则语法中有很多其他功能/参数,但是我们仅在这里介绍了重要的内容。
规则结果关键词
规则后果关键字是在规则的“ then ”部分中使用的关键字。
修改 -的事实属性可以在被修改,然后在规则的一部分。
插入 - 根据某些条件,如果为true,可以在Rule Engine的当前会话中插入一个新的事实。
收回 -如果特定的条件是在一个规则真实,你不想采取执行这一事实别的,你可以退离规则引擎的特定事实。
注意:在规则结果中具有条件逻辑(if语句)被认为是非常糟糕的做法。大多数时候,应该创造一个新的规则。