如何读取 Drools 内存以检测部分匹配的规则
How to read Drools memory in order to detect partially matched rules
我希望能够以这样一种方式读取 Drools 内存,即使规则最终没有触发,我也可以检测到匹配的条件。
假设我有这个规则:
rule "MyRule"
when
FirstFact(condition == "str")
SecondFast(anotherCondition > 30)
then
...
end
如果我只在内存中插入一个对象 "FirstFact" 并调用 fireAllRules(),则不会触发该规则。但是,我仍然想查明这条规则的第一个条件是否匹配。
我知道这是一个奇怪的要求,它可能需要一些时间来开发,因为它可能不是直截了当的,但如果有办法做到这一点,我很感兴趣。
我正在考虑访问 Drools 内存并访问 Rete 树中包含的所有条件,但我不确定这是否是一个好方法甚至可能。
谢谢!
由于 RETE 的工作方式,您尝试执行的操作是不可能的。请阅读其他问题以了解可能的解决方案:Drools 7, event listener to whenever a rule is activated (even if partially matched)
希望对您有所帮助,
我希望能够以这样一种方式读取 Drools 内存,即使规则最终没有触发,我也可以检测到匹配的条件。
假设我有这个规则:
rule "MyRule"
when
FirstFact(condition == "str")
SecondFast(anotherCondition > 30)
then
...
end
如果我只在内存中插入一个对象 "FirstFact" 并调用 fireAllRules(),则不会触发该规则。但是,我仍然想查明这条规则的第一个条件是否匹配。
我知道这是一个奇怪的要求,它可能需要一些时间来开发,因为它可能不是直截了当的,但如果有办法做到这一点,我很感兴趣。
我正在考虑访问 Drools 内存并访问 Rete 树中包含的所有条件,但我不确定这是否是一个好方法甚至可能。
谢谢!
由于 RETE 的工作方式,您尝试执行的操作是不可能的。请阅读其他问题以了解可能的解决方案:Drools 7, event listener to whenever a rule is activated (even if partially matched)
希望对您有所帮助,