[英]Drools: how to implement and ( && ) condition inside not expression?
我有以下规则:
rule " data value > 50 for 10 seconds "
dialect "java"
when
data: MyData(name.contains("double") && getValue()> 50) from entry-point "dataEntryPoint"
not(
myData(this.name==dataName,
getValue() < 50 ,
this after[0,10s] data ) from entry-point "dataEntryPoint" )
then
doSmthg();
end
数据类型包含在名称中,我只想在双精度值上编写此规则。 但是,似乎在第二个表达式(在 not 内部)中,即使 this.name != dataName 也会调用getValue() ,这会导致错误,因为该值是一个字符串。
基本上,如果第一个条件为真( && ),我希望它只评估 getValue() 。
我只有在添加 not() 条件时才会遇到这个问题。
当我删除它时, getValue() > 50 仅在第一个条件为真时评估。
rule " data value > 50 for 10 seconds "
dialect "java"
when
data: MyData(name.contains("double") && getValue()> 50) from entry-point "dataEntryPoint"
then
doSmthg();
end
有趣的是,它仅在&&
运算符的两个部分都是同一变量的约束时才起作用。
rule "data value > 50 for 10 seconds"
dialect "java"
when
data: MyData(name contains "double" && value > 50) from entry-point "dataEntryPoint"
not(
MyData(name == data.name,
value instanceof Number && value < 50,
this after[0,10s] data) from entry-point "dataEntryPoint")
then
System.out.println("alert");
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.