Как читать память Drools для обнаружения частично совпадающих правил - PullRequest
0 голосов
/ 27 августа 2018

Я хотел бы иметь возможность читать память Drools таким образом, чтобы я мог определить, какое условие соответствует, даже если правило не сработало в конце.

Скажите, у меня есть это правило:

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

Если я вставлю в память только объект «FirstFact» и вызову fireAllRules (), правило не будет запущено. Но все же я хотел бы отследить, что первое условие этого правила соответствовало.

Я понимаю, что это странное требование, и может потребоваться некоторое время, чтобы развиться, поскольку это, вероятно, не будет простым, но если есть способ сделать это, я заинтересован.

Я думал о том, чтобы получить доступ к памяти Drools и посетить все условия, содержащиеся в дереве Rete, но я не уверен, хороший ли это подход или вообще возможен.

Спасибо!

1 Ответ

0 голосов
/ 27 августа 2018

Из-за того, как работает RETE, то, что вы пытаетесь сделать, невозможно. Пожалуйста, прочтите этот другой вопрос, чтобы получить представление о возможном решении: Утешает 7, слушатель событий, когда правило активируется (даже если частично соответствует)

Надеюсь, это поможет,

...