“< ⇐ > >=”操作符用于属性的比较时按照默认的排序,比如日期属性使用小于号比较,将按照日期前后排序;当使用在String字符串的比较时,则按照字母顺序进行排序。此操作符仅适用于可进行比较的属性值。

Person( firstName < $otherFirstName )
Person( birthDate < $otherBirthDate )

 “!.”提供了一个默认空校验的操作。使用此操作符时,会先校验当前对象是否为null,如果不为null再调用其方法或属性进行判断。一旦当前操作对象为null,则相当于判断结果为false。

Person( $streetName : address!.street )  
// 上面的写法相当于
Person( address != null, $streetName : address.street )

       matches操作符可使用Java的正则表达式进行字符串的匹配,通常情况下使用正则表达式字符串进行匹配,但也支持变量值为正确的表达式的方式。此操作符仅适用于字符串属性。如果属性值为null,匹配的结果始终为false。

Cheese( type matches “(Buffalo)?\\S*Mozzarella” )

       not matches方法与matches相同,唯一不同的是返回的结果与之相反。

Cheese( type not matches “(Buffalo)?\\S*Mozzarella” )

       contains操作符判断一个集合属性或元素是否包含指定字符串或变量值。仅适用于集合属性。也可以用于替代String.contains()来检查约束条件。not contains用法与之相同,结果取反。

CheeseCounter( cheeses contains “stilton” ) // 包含字符串
CheeseCounter( cheeses contains $var ) // 包含变量  
Cheese( name contains “tilto” )
Person( fullName contains “Jr” )
String( this contains “foo” )

memberOf用来检查属性值是否属于集合,此集合的表示必须为变量。not memberOf使用方法相同,结果取反。

CheeseCounter( cheese memberOf $matureCheeses )

       soundslike的效果与matches相似,但它用来检查一个字符串的发音是否与指定的字符十分相似(使用英语发音)。

// 匹配 “fubar” 或 “foobar” Cheese( name soundslike ‘foobar’ )

       str操作用来比较一个字符串是否以指定字符串开头或结尾,有可以用于比较字符串的长度。

Message( routingValue str[startsWith] “R1” )  
Message( routingValue str[endsWith] “R2” )  
Message( routingValue str[length] 17 )

       in和notin用来匹配一组数据中是否含一个或多个匹配的字符串,使用的方法与数据库中in的使用方法相似。待匹配的数据可以是字符串、变量。

Person( $cheese : favouriteCheese )
Cheese( type in ( “stilton”, “cheddar”, $cheese ) )
运算符优先级
操作类型 操作符 备注
(嵌套/空安全)属性访问 .!. 非标准java语义
List/Map访问 [ ] 非标准java语义
约束绑定 : 非标准java语义
乘除 \*/%  
加减 \+-  
移位 <<>>>>>   
关系 <>⇐>=instanceof  
==!= 未使用标准java语义,某些语义相当于equals。
非短路AND &  
非短路异或 ^  
非短路包含OR |  
逻辑与 &&  
逻辑或 ||  
三元运算符 ? :  
逗号分隔,相当于and , 非标准java语义

相关技术视频

QQ技术交流2群:715840230

CSDN学院:《Drools7规则引擎进阶教程》

CSDN学院:《Drools7规则引擎入门教程》

CSDN学院:《Drools7系列优惠套餐》



drools规则引擎之DRL特殊操作符插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://choupangxia.com/2019/08/27/drools%e8%a7%84%e5%88%99%e5%bc%95%e6%93%8e%e4%b9%8bdrl%e7%89%b9%e6%ae%8a%e6%93%8d%e4%bd%9c%e7%ac%a6/