如何读取Drools内存以检测部分匹配的规则

时间:2018-08-27 14:37:22

标签: java drools rule-engine rete

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

说我有这个规则:

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

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

我知道这是一个很奇怪的要求,可能会花一些时间开发,因为它可能并不简单,但是我有兴趣这样做。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

由于RETE的工作方式,您试图做的事情是不可能的。请阅读其他问题,以获取可能的解决方案的想法:Drools 7, event listener to whenever a rule is activated (even if partially matched)

希望有帮助,