2014-02-14 1 views
0

У меня есть 5 групп правил с несколькими правилами в каждой группе правил.В DROOLS Expert Я хочу пропустить группу правил после того, как запущено какое-либо одно правило (группа активации не работает)

rule "R1" 
    dialect "mvel" 
    ruleflow-group 'RG1'  
    lock-on-active true 

rule "R2" 
    dialect "mvel" 
    ruleflow-group 'RG1'  
    lock-on-active true 

rule "R3" 
    dialect "mvel" 
    ruleflow-group 'RG1'  
    lock-on-active true 

rule "AR4" 
    dialect "mvel" 
    ruleflow-group 'ARG2' 
    lock-on-active true 

rule "AR5" 
    dialect "mvel" 
    ruleflow-group 'ARG2' 
    lock-on-active true 

Вставить несколько фактов одного типа в kiesession. 20 из них.
Я запускаю fireallrules на сессии, и все факты оцениваются правильно.

, но теперь есть новое требование, чтобы, если R1 срабатывает, мы должны пропустить группу правил RG1 для этого факта и перейти к правилам ARG2.

Я попытался добавить группу активации «ACTRG1» ко всем правилам в группе потока правил «RG1» и группе активации «ACTRG2» ко всем правилам в группе потока правил «ARG2», и она не срабатывала правил.

Я использую DROOLS 6.0.0.Final.

Любая помощь приветствуется. Если вам нужна дополнительная информация, я буду рад предоставить ее.

Еще одна вещь: если я вставляю один факт за раз в kiesession, тогда я могу использовать drools.getWorkingMemory(). ClearRuleFlowGroup ("{Agenda}"); и он отлично работает.
Но если я использую несколько фактов, то он прекращает обработку группы правил-потоков для всех фактов в сеансе.

ответ

1

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

Если вы можете сформулировать требования достаточно точно, мы сможем помочь вам разобраться в деталях. Вам нужны дополнительные условия, которые отделяют R1 от R2 и R3 соответственно и логику, которая отвечает требованиям, которые заставили вас добавить lock-on-active.

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