0

我希望能够以这样一种方式读取 Drools 内存,即使该规则最终没有触发,我也可以检测到哪个条件匹配。

说我有这个规则:

rule "MyRule"
when
   FirstFact(condition == "str")
   SecondFast(anotherCondition > 30)
then
...
end

如果我只在内存中插入一个对象“FirstFact”并调用 fireAllRules(),则不会触发该规则。但是,我仍然想追查这条规则的第一个条件是否匹配。

我知道这是一个奇怪的要求,可能需要一些时间来开发,因为它可能并不简单,但如果有办法做到这一点,我很感兴趣。

我正在考虑访问 Drools 内存并访问 Rete 树中包含的所有条件,但我不确定这是否是一个好方法甚至可能。

谢谢 !

4

1 回答 1

1

由于 RETE 的工作方式,您尝试做的事情是不可能的。请阅读此其他问题以了解可能的解决方案:Drools 7, event listener to 每当规则被激活时(即使部分匹配)

希望能帮助到你,

于 2018-08-27T15:59:26.280 回答