Drools条件匹配失败

Drools条件匹配失败,drools,Drools,我使用的是Drools 4,当我用==比较两个hashmap值时,它不起作用。所有其他运算符,如>=,=126392580000) &&(date=126392580000)和&(date我从未使用过Drools 4.x,因此这些是基于我对5.1.1的(旧)知识的观察结果-在您的情况下,它们可能不准确 eval(fireNextPriority==true) 值得注意的是,这是有效的。eval不维护封闭模式(事实)的上下文,因此通常您必须编写 eval(!firedRules.contai

我使用的是Drools 4,当我用==比较两个hashmap值时,它不起作用。所有其他运算符,如>=,=126392580000)
&&(date=126392580000)和&(date我从未使用过Drools 4.x,因此这些是基于我对5.1.1的(旧)知识的观察结果-在您的情况下,它们可能不准确

 eval(fireNextPriority==true)
值得注意的是,这是有效的。
eval
不维护封闭模式(事实)的上下文,因此通常您必须编写

 eval(!firedRules.contains(Integer.valueOf(23449))
同样的事情

 eval(testObj.getVariableValue("C1TC") == testObj.getVariableValue("Y1TC"))
这是我从5.1开始写的

奇怪的是

testObj.addVariableValue("C1PC", testObj.getVariableValue("C1PC")
testObj.getVariableValue("C1OF"));

(我是否在编辑时弄糟了?)这些更改是在
update
调用之后进行的,这意味着引擎将看不到这些更改。地图条目的更新是否为“C1TC”和/或“Y1TC”在另一条规则中也是如此?那么它们就不等于Drools,即使它们是Java…

请注意,Drools 4已经非常过时,并且没有太多的支持。-有很多可能的原因导致您无法获得预期的结果,但如果没有完整的规则,就不可能说更多。abc是如何声明的?您正在使用的地图在哪里提到e?另外,显示正在进行更新的规则!嗨,劳恩,感谢您的快速响应。我用详细信息更新了“我的问题”。该规则将更新对象中的映射值,这些值是下一个规则的输入。==在条件中失败感谢劳恩。即使我作为最后一个语句尝试更新,但更新的值不可用e表示下一个规则条件。在我的情况下,修改后的值应可用于下一个规则条件。equals失败,因为更新后的值在drools中未更新,可用于java。
 eval(testObj.getVariableValue("C1TC") == testObj.getVariableValue("Y1TC"))
testObj.addVariableValue("C1PC", testObj.getVariableValue("C1PC")
testObj.getVariableValue("C1OF"));