JBoss Drools проверяет условия один раз

Я внедрил Drools в свой Java-проект. Все правила срабатывают, но условия проверяются только один раз сразу после срабатывания.

Так ведет себя Друлс? Мне нужно, чтобы он постоянно проверял логическое значение на наличие изменений.


person cwrwatson    schedule 07.02.2011    source источник


Ответы (1)


Вот как ведет себя механизм правил с прямой цепочкой (что чрезвычайно эффективно).

Если ваш факт изменится (например, если изменится результат его логического свойства/метода), обработчик правил должен быть уведомлен workingMemory.updated(fact, factHandle). Затем механизм правил активирует все правила (и ни одно правило больше), которые необходимо активировать на основе этого изменения.

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

person Geoffrey De Smet    schedule 08.02.2011
comment
Да, я согласен с @Geoffrey De Smet. Вам нужно обновить сессию последними фактами. Или вы можете использовать атрибут без цикла. Когда последствие правила изменяет факт, это приводит к тому, что Правило снова активируется, вызывая рекурсию. - person Nikunj; 08.02.2011