2015-05-08 3 views
0

Я пытаюсь выполнить правила, написанные на рабочем столе Kie, и интегрирован с сервером Kie Exceution и получил ответ, как ожидалось. Но мое rquirement должно выполнить только одно конкретное правило для списка больших правил. Каковы возможные пути, которые я могу достичь. Я использовал группу активации, группу потока правил, но не повезло. Если кто-то может помочь мне в этом.Kee workbench Таблица управляемых решений Выполнение только одного правила

Я создал таблицу принятия решений в KIE Workbench. и источник был создан таким образом

package demo.drools_examples; 
    //from row number: 1 
    rule "Row 1 Rule1" 
    dialect "mvel" 
    when 
     f1 : Account(accountType == "Regular") 
    then 
     f1.setBaseAmount(10.0); 
     f1.setBaseThreshold(10.0); 
     calculateAmount(f1); 
     calculateThreshold(f1); 
    end 
    //from row number: 2 
    rule "Row 2 Rule1" 
    dialect "mvel" 
    when 
     f1 : Account(accountType == "Registered") 
    then 
     f1.setBaseAmount(5.0); 
     f1.setBaseThreshold(15.0); 
     calculateAmount(f1); 
     calculateThreshold(f1); 
    end 
    //from row number: 3 
    rule "Row 3 Rule1" 
    dialect "mvel" 
    when 
     f1 : Account(accountType == "Saving") 
    then 
     f1.setBaseAmount(20.0); 
     f1.setBaseThreshold(10.0); 
     calculateAmount(f1); 
     calculateThreshold(f1); 
    end 

Как я могу определить saliance, активация группы или любой другой политики, чтобы назвать только правило 1, а не вызывать fireallRules (1) .. Пожалуйста, помогите мне

ответ

0

Вы должны вызвать fireAllRules, но с изюминкой:

AgendaFilter af = new SingleRuleFilter("Row 1 Rule1"); 
int nFired = kieSession.fireAllRules(af); 

И вам нужно только написать что-то вроде этого:

public class SingleRuleFilter implements AgendaFilter { 
    private String name; 
    public SingleRuleFilter(String name){ 
     this.name = name; 
    } 
    public boolean accept(Activation activation){ 
     return activation.getRule().getName().equals(name); 
    } 
} 
Смежные вопросы