как пускает слюни бесконечный цикл в одном правиле?

Я использую слюни, чтобы сделать некоторую логику, DRL такой. Мой вопрос таков: когда я добавляю «правила: правила ()», цикл будет сначала зацикливаться на «молодых» до тех пор, пока возраст не превысит 19 лет, но если я удалю «правила: правила ()», это будет делать только один раз в молодости . Может кто-нибудь сказать мне, почему?

rule "young"
when
   rules:Rules() 
   person:Person(Person.age< 19) 
then
    person.age+=1
    System.out.println("young"); 
end

rule "adult"
when
   rules:Rules() 
   person:Person(Person.age>= 19) 
then
    person.age+=1
    System.out.println("adult"); 
end

person whathaha    schedule 04.12.2018    source источник
comment
Сколько Rules у вас есть в вашем сеансе? Это настоящая RHS ваших правил? Я не понимаю, как они могут вызвать цикл, если вы не используете modify и update   -  person Esteban Aliverti    schedule 05.12.2018


Ответы (1)


Вы должны использовать modify, чтобы сообщить Drools, что вы меняете состояние файла person.

rule "young-without-rules"
when
   $person: Person(age < 19) 
then
    modify ($person) {
       age = age+1
    }
    System.out.println("young"); 
end
person Master Drools    schedule 08.12.2018