如何在 Drools 规则中声明一个列表
How to declare a List in Drools rule
我有一个简单的对象构造。 class ContextDroolsObject
有一个名为 objects
的类型 Map
的 属性。在那个地图里面有一个键 "imageThemes"
和一个 ArrayList
而这个规则永远不会匹配:
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() 得到同样的结果。
¿如何匹配列表声明?
对事实对象使用分层结构经常是一个设计缺陷。您可能无法方便地对列表元素进行推理。
无论如何,这是从 ContextDroolsObject 中提取地图内列表的方法。
rule 'Soccer Image Theme'
salience 100
when
s: ContextDroolsObject()
imageThemesList: ArrayList() from s.getObjects().get( "imageThemes" )
then
System.out.println("-----------------------soccer");
end
您好,您可以这样重写您的规则:
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
我有一个简单的对象构造。 class ContextDroolsObject
有一个名为 objects
的类型 Map
的 属性。在那个地图里面有一个键 "imageThemes"
和一个 ArrayList
而这个规则永远不会匹配:
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() 得到同样的结果。
¿如何匹配列表声明?
对事实对象使用分层结构经常是一个设计缺陷。您可能无法方便地对列表元素进行推理。
无论如何,这是从 ContextDroolsObject 中提取地图内列表的方法。
rule 'Soccer Image Theme'
salience 100
when
s: ContextDroolsObject()
imageThemesList: ArrayList() from s.getObjects().get( "imageThemes" )
then
System.out.println("-----------------------soccer");
end
您好,您可以这样重写您的规则:
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