Java 如何在Drools规则中声明列表
我有一个简单的对象结构。类Java 如何在Drools规则中声明列表,java,drools,rule-engine,rule,Java,Drools,Rule Engine,Rule,我有一个简单的对象结构。类ContextDroolsObject具有类型为Map的属性,称为objects。在该地图中有一个键“imageThemes”,带有ArrayList,此处的规则从不匹配: import java.util.ArrayList; import java.util.Map; import com.my.ContextDroolsObject; dialect 'java' rule 'Soccer Image Theme' salience 100
ContextDroolsObject
具有类型为Map
的属性,称为objects
。在该地图中有一个键“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
对事实对象使用层次结构通常是一个设计缺陷。您可能无法方便地对列表元素进行推理 无论如何,这是从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
嗨,您可以通过以下方式重写规则:
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
我刚试过,没用。我在发现这个缺陷的第一天就评论了这个缺陷设计,因为我以前使用过其他规则引擎,但是。。。这里有一个更聪明的建筑师…我刚试过,但没有成功。我在发现这个缺陷的第一天就评论了这个缺陷设计,因为我以前使用过其他规则引擎,但是。。。这里有一个更聪明的建筑师。。。