Drools - иерархия правил и условное выполнение

Мне было интересно, есть ли способ определить иерархию (а не только порядок выполнения) между правилами и контролировать выполнение правила - т.е. если сработало родительское правило, то следующие не должны оцениваться и т. Д.

Информация в этом потоке является вариантом, но по сути IF / THEN / ELSE

Есть другой вариант?

Благодарность


person shikarishambu    schedule 30.05.2012    source источник


Ответы (1)


Я не уверен, что понимаю ваш вопрос, но использование комбинации групп активации и традиционных стратегий разрешения конфликтов может дать вам то, что вам нужно. Например, предположим, что у вас есть 3 правила, A, B и C. Вы хотите использовать, скажем, заметность, чтобы дать им приоритет выполнения в этом порядке, и после того, как одно из них будет выполнено, никакое другое правило в этой группе не должно выполняться. . Вы можете определить их так:

rule A
    salience 30
    activation-group "x"
...

rule B
    salience 20
    activation-group "x"
...

rule C
    salience 10
    activation-group "x"
...

Заметность гарантирует, что если A активируется, он сначала выстрелит, затем B, а затем C, если они были активированы. Группа активации гарантирует, что после срабатывания одного из правил все остальные активированные правила в этой группе будут отменены. Итак, допустим, что в вашем сеансе активируются правила B и C, но не A, тогда B сработает, а C будет отменено.

Обратите внимание, что группы активации не препятствуют повторной активации правил позже. Он просто отменяет любые активации, которые в настоящее время находятся в повестке дня, в то время, когда одно из правил в группе стреляет.

person Edson Tirelli    schedule 01.06.2012