Как читать память Drools для обнаружения частично совпадающих правил
Я хотел бы иметь возможность читать память Drools таким образом, чтобы я мог определить, какое условие соответствует, даже если правило не сработало в конце.
Скажи, что у меня есть это правило:
rule "MyRule"
when
FirstFact(condition == "str")
SecondFast(anotherCondition > 30)
then
...
end
Если я вставлю в память только объект "FirstFact" и вызову fireAllRules(), правило не будет запущено. Но все же я хотел бы отследить, что первое условие этого правила соответствовало.
Я понимаю, что это странное требование, и может потребоваться некоторое время, чтобы развиться, поскольку это, вероятно, не будет простым, но если есть способ сделать это, я заинтересован.
Я думал о том, чтобы получить доступ к памяти Drools и посетить все условия, содержащиеся в дереве Rete, но я не уверен, является ли это хорошим подходом или даже возможным.
Спасибо!
1 ответ
Из-за того, как работает RETE, то, что вы пытаетесь сделать, невозможно. Пожалуйста, прочитайте этот другой вопрос, чтобы получить представление о возможном решении: Drools 7, слушатель событий, когда правило активируется (даже если оно частично соответствует)
Надеюсь, поможет,