正如你看到的.drl(规则文件)都有自己的语法,让我们盖这个章介绍规则语法的某些部分。
在规则中的条件
规则可以包含很多的条件和模式,如:
- Account (balance == 200)
- Customer (name == “Vivek”)
上述条件检查帐户余额是200或客户名称是 “Vivek”.
在规则中的变量
在Drools中的变量名称以美元($)符号开始。
- $account : Account( )
- $account is the variable for Account() class
Drools可与所有本地Java类型,甚至枚举工作。
在规则中的注释
特殊字符,# 或 //,可用于标记单行注释。
对于多行注释,请使用以下格式:
/*
Another line
.........
.........
*/
全局变量
全局变量分配给会话变量。它们可用于各种原因如下:
-
对于输入参数(可从会话定制会话。例如,常量值)。
-
对于输出参数(例如,报告,规则可以写一些消息给全局报表变量)。
-
切入点的服务,如日志记录,这可以在规则中使用。
在规则中的函数
函数是一个方便的功能。它们可以在条件和后果使用。函数代表的替代工具/辅助类。例如,
function double calculateSquare (double value) { return value * value; }
方言
方言指定任何代码的表达是在条件或因此所使用的语法。它包括返回值,evals,内联evals,谓词突性表达式,后果,并依此类推。默认值是Java。目前,Drools支持多了一个叫做方言MVEL。默认方言可以指定在包级别如下:
package org.mycompany.somePackage dialect "mvel"
MVEL 方言
MVEL是基于Java的应用程序的表达式语言。它支持字段和方法/getter访问。它是基于Java的语法。
突显
突显是规则语法的一个非常重要的特点。突显使用的冲突解决策略,以决定哪些规则首先触发。默认情况下,它是主要标准。
我们可以用突性来定义的击发规则的顺序。突显有一个属性,这需要一个返回数字类型为int(正数和负数是有效)的任何表达式。该值越高,就越有可能的规则将被拾起的冲突解决策略触发。
salience ($account.balance * 5)
默认的显着值是0分配显着值只有一些规则时,我们应该记住这一点。
有很多的规则语法等特性/参数,但我们只涵盖了重要的位置。
规则后果关键词
规则后果关键字是规则“then”的一部分使用的关键字。
-
Modify – fact属性可在随后部分的规则进行修改。
-
Insert – 基于一些条件,如果true,可以插入一个新的事实到规则引擎会话。
-
Retract – 如果一个特定的条件是一个true的规则,则不采取其他任何就事实,可以从规则引擎收回特定事实。
注意:它被认为是一个非常不好的做法,有一个条件逻辑(if语句)规则的后果之内。大多数时候,一个新的规则应该被创建。