[英]How to declare a List in Drools rule
我有一个简单的对象构造。 类ContextDroolsObject
具有Map
类型的属性,称为objects
。 在该映射内,有一个带有ArrayList
的键"imageThemes"
,这里的规则永远不匹配:
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
我也尝试过用List()获得相同的结果。
¿如何匹配列表声明?
嗨,您可以通过以下方式重写规则:
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
对事实对象使用分层结构通常是设计缺陷。 您可能无法方便地对列表元素进行推理。
无论如何,这是从ContextDroolsObject提取地图中列表的方法。
rule 'Soccer Image Theme'
salience 100
when
s: ContextDroolsObject()
imageThemesList: ArrayList() from s.getObjects().get( "imageThemes" )
then
System.out.println("-----------------------soccer");
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.