我有一个简单的对象构造。类ContextDroolsObject
具有名为Map
的{{1}}类型的属性。在该地图中,有一个objects
的密钥"imageThemes"
,此规则永远不会匹配:
ArrayList
我也尝试过使用相同结果的List()。
¿如何匹配列表声明?
答案 0 :(得分:3)
您好,您可以这样重写您的规则:
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
答案 1 :(得分:1)
对事实对象使用层次结构通常是一个设计缺陷。您可能无法在列表元素上方便地进行推理。
无论如何,这是从ContextDroolsObject中提取地图中的列表的方法。
rule 'Soccer Image Theme'
salience 100
when
s: ContextDroolsObject()
imageThemesList: ArrayList() from s.getObjects().get( "imageThemes" )
then
System.out.println("-----------------------soccer");
end