规则编译错误:只能在java.lang.Iterable的数组或实例上迭代



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

从dao获取列表:-

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

在流媒体引擎中使用列表规则:-

for(XYZ xyzObj : list) 
{           
}

型号类别:-

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

我在运行tomcat时遇到了异常。"规则编译错误:只能在java.lang.Iterable的数组或实例上迭代"

规则文件:-

导入java.util.List;导入java.util.Iterator;全球com.demo.XXYZ列出

规则"1_Demo_rule"

当道具:RULEDEMO(属性="demo"),然后

  for(XYZ xyzObj : list)          {                   }

结束

由于DRL解析器中的限制,您将根本无法使用for语句的短语法。

考虑到

global List<com.demo.XYZ> list;

使用不太好的

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

最新更新