2013-06-23 5 views
0

У меня есть .drl-файл, который содержит более 100 правил. Существует приблизительно 40 правил, таких как правило «1», около 35, как правило «2», а остальные - правило «3».Вложенные правила в Drools

rule "1" 
    when 
     m: MyBeanClass(something1 == "train" && something2 == somevalue2) 
    then 
     m.setSomeThing(someOtherValue); 
     update(m); 
    end 

rule "2" 
    when 
     m: MyBeanClass(something1 == "bus" && something2 == somevalue2) 
    then 
     m.setSomeThing(someOtherValue); 
     update(m); 
    end 

rule "3" 
    when 
     m: MyBeanClass(something1 == "car" && something2 == somevalue2) 
    then 
     m.setSomeThing(someOtherValue); 
     update(m); 
    end 

обжиге все правила, все правила будут выполнены, , которые я не хочу. Если «something1» не равно «train», я хочу, чтобы поток выполнения напрямую перешел к 41-му правилу, которое здесь похоже на правило «2».

Просьба предложить.

Спасибо, Shardul

ответ

0

Я бы три правила видимости для «автомобиля», «автобуса», и «поезда», чтобы установить значение, а затем 41 правило приняло в том, что области действия значения и работать на нем.

Вам по-прежнему приходится писать 44 правила, но вам не нужно повторять 41 для каждого случая обзора.

+0

Спасибо @duffymo! Итак, вы предполагаете, что я должен установить другую переменную в первых 40 правилах, так что если «something1» НЕ равно «поезд», он не будет выполнять первые 40. Кроме того, я не уверен, что «правила определения области». -Shardul – Shardul