在 Drools 中,如何检查列表是否不包含具有特定值的对象?

In Drools, how do I check if a list does NOT contain an object with a specific value?

我正在制定一个规则,查看给定对象的列表并检查其中一个字符串字段是否不包含特定值。如果列表中的任何对象包含所述值,那么我希望规则失败。

    when
        $vr: RequestDTO($activeObjects: activeObjects);
        eval(!$activeObjects contains ObjectDTO(this.name == "TEST NAME")); 
    then
        displayModalAction.setMessage("Message to Show");
    end

有没有办法在规则的 when 语句中执行此类操作?

您似乎正在寻找没有名称为 "TEST NAME" 的 ObjectDTO 的 RequestDTO。如果那是正确的,那么试试这个:

when
    RequestDTO($activeObjects: activeObjects)
    not exists(ObjectDTO(name == "TEST NAME") from $activeObjects)
then
    ...