我正在尝试迭代一个ArrayList并使用规则内的jboss drools添加到另一个ArrayList。
我有一个列表的pojo。
Class DroolsPojo{
List<String> answers;
//getters and setters
}
我的pojo返回一个列表,如{“a”,“b”,“c”,“”,“”,“”}。我想迭代列表,并希望添加不等于“”的元素(不是列表中的空元素)。
如何使用drools进行此操作?
有没有办法让dluols得到不等于“”的元素数。
我的规则如下。
rule "rule1"
when
dpojo:DroolsPojo(answers!=null)
then
List list = dpojo.getAnswers();
//want to iterate the list here
end
如何用drools做到这一点?
答案 0 :(得分:3)
所以当答案实例变量不为空时,规则必须触发? 使用方言mvel,这样的事情应该有效:
package drools.xxx
dialect "mvel"
import drools.xxx.DroolsPojo
rule "rule1"
when
$dpojo : DroolsPojo(answers!=null)
$answersWithoutEmptyStrings : List() from collect ( String(length > 0) from $dpojo.answers )
then
insert($answersWithoutEmptyStrings)
end
这里我在when子句中执行collect(iterating)。
答案 1 :(得分:1)
在右侧,您只需编写普通的旧Java代码:
List list = dpojo.getAnswers();
for( Object obj: list ){
String s = (String)obj;
if( s.length() > 0 ){ ... }
}
解析器不喜欢泛型(但是?)所以你必须解决这个问题。