2012-05-30 2 views
9

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

Information in this thread is an option but it is essentially IF/THEN/ELSE

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

благодаря

ответ

14

Я не уверен, если я понимаю ваш вопрос, но с использованием комбинации активации групп и стратегий разрешения традиционного конфликта может добиться того, что вам нужно. Например, предположим, что у вас есть 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" 
... 

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

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

Смежные вопросы