日期:2014-05-17  浏览次数:20864 次

drools中insert,update等导致死循环的问题
本帖最后由 pingguonjb 于 2013-11-22 20:44:22 编辑
在读Drools5规则引擎开发教程(http://wenku.baidu.com/view/a6516373f242336c1eb95e7c.html)第30页的代码清单2--18时,有一疑问:该段代码(标红的部分)(rule1的insert处)会不会导致死循环啊??? 跪求大侠解惑!!

代码::
#created on: 2009-8-26 
package test 
import java.util.List; 
 
query "query fact count
 Customer(); 
end 
 
rule "rule1" 
  salience 2 
  when 
   eval(true); 
  then  
  Customer cus=new Customer(); 
  cus.setName("张三"); 
  cus.setAge(1); 
   insert(cus);
 
end 

rule "rule2" 
  salience 1 
  when 
  $customer:Customer(name=="张三",age<10); 
  then  
  $customer.setAge($customer.getAge()+1); 
   update($customer); 
  System.out.println("----------"+$customer.getName()); 
end 
Drools

------解决方案--------------------
能加日志么,跟一下看看
------解决方案--------------------
加上no-loop属性, 这样同一个rule不会被重复执行