2017-01-26 16 views
0

간단한 개체 구성이 있습니다. 클래스 ContextDroolsObjectobjects이라는 Map 유형의 속성을가집니다. 그지도 내부가 결코 여기에 ArrayList와 키 "imageThemes"이 규칙은 없습니다 일치 :Drools 규칙 목록을 선언하는 법

import java.util.ArrayList; 
import java.util.Map; 
import com.my.ContextDroolsObject; 

dialect 'java' 


rule 'Soccer Image Theme' 
    salience 100 
    when 
     s : ContextDroolsObject() 
     objectsm : Map() from s.objects 
     imageThemesList : ArrayList() from outputsm.imageThemes 
    then 
System.out.println("-----------------------soccer"); 
    end 

나는 또한 같은 결과 목록()을 시도했습니다.

¿ 어떻게 목록 선언과 일치합니까?

답변

1

안녕하세요이 방법으로 규칙을 다시 작성할 수 있습니다 :

import java.util.ArrayList; 
import java.util.Map; 
import com.my.ContextDroolsObject; 

dialect 'java' 


rule 'Soccer Image Theme' 
salience 100 
when 
    s : ContextDroolsObject(imageThemesList : objects#Map.get("imageThemes")) 
then 
    System.out.println("-----------------------soccer"); 
end 
0

사실 개체에 대한 계층 구조를 사용하면 종종 디자인 결함이됩니다. 목록 요소보다 편리하게 추론 할 수 없을 수도 있습니다.

어쨌든, 이것은 ContextDroolsObject에서지도 내에서 목록을 추출하는 방법입니다.

rule 'Soccer Image Theme' 
    salience 100 
when 
    s: ContextDroolsObject() 
    imageThemesList: ArrayList() from s.getObjects().get("imageThemes") 
then 
    System.out.println("-----------------------soccer"); 
end 
+0

난 그냥 시도했습니다, 그것은 작동하지 않았다. 전에 내가 다른 규칙 엔진을 사용했기 때문에 발견 한 첫날 결함 설계에 대해 언급했지만, 여기에는 건축가로서 똑똑한 사람이 있습니다 ... – eduyayo