我正在使用Optaplanner 6.2Final版本,除匹配运算符外,一切正常。 为了解释更多,这是我的规则。
rule "TEST REG EXP OPERATOR"
when
$cheese:Cheese($cheese.type matches "(Buffulo)?\\S*Mozarella")
then
scoreHolder.addSoftConstraintMatch(kcontext, 1);
end
以下是抛出的异常:
Exception in thread "main" [Error: unable to resolve method: com.app.test.domain.Cheese.$cheese() [arglength=0]]
[Near : {... $cheese.type ~= "(Buffulo)?\\S*Mozarella" ....}]
注意:如果我在类型前删除 $ cheese。声明,则规则没有问题。这很好用:
$cheese:Cheese($cheese.type == "Buffulo")
任何建议都将不胜感激。
更新 事实证明,在我检查完所有版本之后,以下仅在drools核心版本6.2.0.Final和6.3.0.Final上抛出异常。它正在使用其他版本。
$cheese:Cheese($cheese.type matches "(Buffulo)?\\S*Mozarella")
答案 0 :(得分:0)
如果你想让它发挥作用:
$cheese1:Cheese(type matches "(Buffulo)?\\SMozarella")
$cheese2:Cheese($cheese1.name matches "A.*", id>$cheese1.id)
您必须使用方法调用:
$cheese1:Cheese(type matches "(Buffulo)?\\SMozarella")
$cheese2:Cheese($cheese1.getName() matches "A.*", id>$cheese1.getId())
这假设您一直遵循JavaBeans约定(如您所愿)。但更好的方法是使用
$cheese1:Cheese(type matches "(Buffulo)?\\SMozarella",
name matches "A.*", $id1: id )
$cheese2:Cheese( id > $id1 )