规则编译错误:只能遍历数组或java.lang.Iterable的实例

时间:2014-09-01 07:27:21

标签: java mongodb drools

我是mongoDb和drools的新手。 我在drools中编写一个规则,它正在迭代一个java列表。但是当运行tomcat时,它会给出规则编译错误。

从dao获取清单: -

List<XYZ> list = new ArrayList<XYZ>();
Query q = query(where("id").is(userId));
list = getMongoOperation().find(q, XYZ.class, "XYZ"); 

在drools引擎中使用list规则: -

for(XYZ xyzObj : list) 
{           
}

模特课: -

@Document(collection="XYZ")
public class XYZ 
{
}

运行tomcat时出现异常。 “规则编译错误:只能迭代数组或java.lang.Iterable的实例”

规则文件: -

  

import java.util.List; import java.util.Iterator;全球com.demo.XYZ   列表

     

规则'1_Demo_Rule'

     

当道具:RULEDEMO(属性==“演示”)然后

  for(XYZ xyzObj : list)          {                   }

1 个答案:

答案 0 :(得分:0)

由于DRL解析器的限制,您将无法使用for-statement的短语法。

鉴于此

global List<com.demo.XYZ> list;

使用不那么好的

for( int i = 0; i < list.size(); i++ ){
    XYZ xyzObj = list.get(i);
    // ...
}