2013-12-12 180 views
1

我想迭代一個ArrayList並使用規則內的jboss drools添加到另一個ArrayList。Drools:如何迭代列表並添加到另一個列表

我有一個pojo的列表。我的pojo返回一個列表{「a」,「b」,「c」,「」,「」,「」}。我想迭代列表並想添加不等於「」(不是列表中的空元素)的元素。

我怎樣才能做到這一點與流口水?

有沒有什麼辦法讓元素數不等於「」與滴水。

我的規則如下。

rule "rule1" 
when 
    dpojo:DroolsPojo(answers!=null) 
then 
    List list = dpojo.getAnswers(); 
    //want to iterate the list here 
end 

如何用drools做到這一點?

回答

2

所以規則只需要在答案實例變量不爲空時觸發?使用方言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 

在這裏,我做的collect(迭代)的時候子句。

+1

這比寫在裏面容易。 –

1

在右邊你只寫普通的舊Java代碼:

List list = dpojo.getAnswers(); 
for(Object obj: list){ 
    String s = (String)obj; 
    if(s.length() > 0){ ... } 
} 

解析器不喜歡仿製藥(嗎?),所以你必須要繼續解決這一問題。

+0

我無法用於每個循環。我用於循環,它正在工作。 –

相關問題