java - 如何在 Drools 规则中声明列表

标签 java drools rule-engine rule

我有一个简单的对象构造。 ContextDroolsObject 类有一个 Map 类型的属性,称为 objects。在该 map 内有一个带有 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

关于java - 如何在 Drools 规则中声明列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41870929/

相关文章:

javascript - 逻辑表达式可视化工具

java - 在 drools 中传递参数

java - 如何在 Jenkins 中注入(inject)属性文件并在 Java 代码中使用它的值

groovy - Spock + Drools 测试

java - android platfrom,Dalvik字节码或 native 机器码过程中的哪种代码?

java - Drools:字符串全局变量的奇怪行为

java - PatternDescr 内的 Drools AndDescr(和 OrDescr)

java - 流口水规则不触发

java - 如何在java中创建透明的JFrame背景但保持按钮可见?

java - Eclipse 在 Ubuntu 12 中无法找到 JVM