如果字符串列表的任何值是另一个字符串列表的成员,我很难找到如何检入drools。
when
//any value of stringList1 member of stringList2
then
// whatever...
我想,我可能会使用forall操作,但仍然无法找到方法。任何帮助..?
假设我的验证bean类似于:
public final class StringListValidationBean {
private List<String> stringList1;
private List<String> stringList2;
//... gets & sets
}
答案 0 :(得分:1)
试试这个:
rule someString
when
$l1: List()
$s: String() from $l1
List( hashCode > $l1.hashCode, this contains $s )
then
System.out.println( "both: " + $s );
end
如果必须使用ValidationBean,则可以从bean中引用列表:
$vb: ValidationBean( $sl1: stringList1 )
$s: String() from $sl1
ValidationBean( this == $vb, stringList2 contains $s )
这将触发两个列表中包含的每个String。
另一种方法是使用List.retainAll()的DRL函数,类似于
function boolean (List l1, List l2){
List is = new ArrayList( l1 );
is.retainAll( l2 );
return is.size() > 0;
}
或者让函数返回带有公共字符串的List。