2017-04-24 23 views
0

我有一个包含一个Collection或一组值的数组。 我想写这种形式的规则:如何编写Drools规则来验证数组或列表中的多个值

rule "listRule" 

when 
$first: from list1() and $first!= "a" and $first!="b" 
$second: from list1() and $second!="c" and $second != "z" 
then 
System.out.println(" this works!") 

end 

的目标是能够评估如果列表或阵列具有2个或更多个对象($第一,$第二等等),每个满足他们的不同状况。它可以是一个数组或列表。

回答

1

插入多个String[]List<String>对象几乎肯定是一个坏主意,因为您将无法识别这些对象。但这里是如何:

rule "listRule" 
when 
    $list: ArrayList() 
    $s1: String(toString != "a" && != "b") from $list 
    $s2: String(this != $s1, toString !="c" && != "z") from $list 
then 
    System.out.println("Strings: " + $s1 + " - " + $s2); 
end 
+0

为我工作。感谢你的回答。我可以有一个还是在那里?从$ list 或$ s2:String(this!= $ s1,toString!=“c”&&!=“z”)从$ s1:String(toString!=“a”&&!=“b”)from $ list列表 –

+0

是的。用括号围绕两个模式。 ---但它没有意义,因为可以以更简单的方式实现相同的效果。 – laune