2013-12-12 3 views
1

ArrayList를 반복하고 jboss drools을 사용하여 다른 ArrayList에 추가하려고합니다.Drools : 목록을 반복하고 다른 목록에 추가하는 방법

나는 목록이있는 pojo가 있습니다. 같은 목록을 반환

Class DroolsPojo{ 
    List<String> answers; 

    //getters and setters 
} 

내 POJO { "A", "B", "C"를, "", "", ""}. 목록을 반복하고 ""(목록의 빈 요소가 아닌) 요소와 같지 않은 요소를 추가하려고합니다.

나는 이것을 drools로 어떻게 할 수 있습니까?

""와 같지 않은 요소 수를 drools로 가져 오는 방법이 있습니까?

내 규칙은 다음과 같습니다.

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

drools로 어떻게 할 수 있습니까? 당신은 그냥 평범한 구식 자바 코드를 작성 오른쪽에

답변

2

따라서 답변 인스턴스 변수가 null이 아니면 규칙을 실행해야합니다. 방언 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 

여기에 나는 때 절에서 수집은 (반복) 할.

+1

이것은 그때 안에 쓰는 것보다 쉽습니다. –

1

는 (? 아직)

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

파서는 제네릭을 좋아하지 않는다 그래서 당신은 그 해결해야합니다.

+0

각 루프마다 사용할 수 없습니다. 나는 for loop를 사용했고 작동 중이다. –

관련 문제