Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Drools规则中声明列表_Java_Drools_Rule Engine_Rule - Fatal编程技术网

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

我刚试过,没用。我在发现这个缺陷的第一天就评论了这个缺陷设计,因为我以前使用过其他规则引擎,但是。。。这里有一个更聪明的建筑师…我刚试过,但没有成功。我在发现这个缺陷的第一天就评论了这个缺陷设计,因为我以前使用过其他规则引擎,但是。。。这里有一个更聪明的建筑师。。。