我在下面的规则中遇到问题。这在5.3中工作正常,但抛出错误(必须是布尔表达式)。
String drl="import com.drools.Applicant;"
+ "rule \"Is of valid age\" "
+ " when $a : Applicant(age > 18 && name matches \"(?i).*\"+ name + \"(.|\n|\r)*\")"
+ " then $a.setValid( true ); "
+ " System.out.println(\"validation: \" + $a.isValid());\n"+
"end";
问题在于: "当$ a:申请人(年龄> 18&& name匹配\"(?i)。 \" + name + \"(。| \ n | \ r \ n ) \")"
任何建议。
答案 0 :(得分:1)
表达式不正确,因为name
无法作为表达的一部分解析。使用绑定。
$a : Applicant($n: name, age > 18, name matches \"(?i).*\"+ $name + \"(.|\n|\r)*\")"
(我认为约束没有多大意义 - 它只是一个测试名称是否与自身匹配,前后有或没有任意字符。此外,?i
是多余的。)