流口水无止境地在一个规则中循环?

时间:2018-12-04 16:08:23

标签: java drools rule-engine business-rules drools-planner

我使用流口水做一些逻辑,DRL就是这样。我的问题是,当我添加“ rules:Rules()”时,循环将首先在“年轻”中循环播放,直到年龄大于19岁,但是如果我删除“ rules:Rules()”,则仅在年轻时循环一次。有人可以告诉我为什么吗?

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

1 个答案:

答案 0 :(得分:0)

您应该使用modify来让Drools知道您正在更改person的状态。

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