Drools规则检查具有复合值限制的集合

时间:2011-01-03 10:33:26

标签: collections contains rules drools

我想检查一个集合是否包含三个元素。在java中我会做

!(collection.contains("s1") && collection.contains("s2") && collection.contains("s3"))

如何使用drools执行此操作?我搜索了两个小时并试了一下但是找不到解决这个“简单”问题的方法。我找到了“复合值限制”这是我真正需要的,但它不适用于集合和“包含”运算符。

我很感激你的回答。

拿但

2 个答案:

答案 0 :(得分:2)

这就是Java代码的作用:

Collection( this not contains "s1" ||
            this not contains "s2" ||
            this not contains "s3")

答案 1 :(得分:0)

我认为,你可以采用规则方言“java”    以下示例可以帮助您。

global java.util.ArrayList responseList

rule "checkCollectionRule"
    dialect "java"
    salience -1

    when

        eval(ifContains(responseList, val1, val2.....))

    then

        responseList.add(new Boolean("true"));

end


function Boolean ifContains(List responseList, String val1, String val2,....) {
    return (responseList.contains("s1") && responseList.contains("s2") && responseList.contains("s3"));

}

希望这有帮助。    感谢。