我有以下规则:
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中)中,getValue()似乎正在被调用,即使this.name != dataName会导致错误,因为该值是字符串。
基本上,我希望它只在第一个条件为真( && )时计算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发布于 2020-10-02 21:40:23
有趣的是,只有当&&操作符的两个部分都是相同变量的约束时,它才能工作。
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");
endhttps://stackoverflow.com/questions/64118306
复制相似问题