我想在drool的when部分使用in build关键字匹配来匹配字符串。

例如

rule "test"
when Foo( fooid : id )
     Bar( barid : id, barid not matches "ID=" + fooid + ", " + name )
then ...

它似乎不起作用,因为它在抱怨“ID =” + fooid +“,” +名称。

但是,如果我删除所有参数,它将运行,即仅保留“ID =“

因此,问题似乎出在如何在匹配模式中包含更多参数,您将如何解决呢?

谢谢

最佳答案

在检查规则之前,您可以同时保存fooid和barid吗?不知道是否可能,您可以尝试一下。

string fooid = Food id // use correct syntax
string barid = Bar id // use correct syntax
string checkstring = "ID=" + fooid + "," + name

rule "test"
    when
        barid: String(this not matches "(?i)." + checkstring)
    then
        System.out.println(checkstring);
    end

注释:

(?i)-忽略大小写

10-04 19:28