检查列表中的对象是否具有drools值

时间:2014-03-07 17:47:37

标签: list object drools

我在检查列表中的对象是否具有drools值时遇到了一些问题。

我的模特就是这个

class Products{
    private List<Approver> approvalPath;
}
class Approver{
    private String employeeName;
}

所以,我需要制定一个像这样的规则

rule "member"
    when
        //approvalPath has an approver with name "Charles" (for example)
    then
        //do something
end

我该怎么做?

2 个答案:

答案 0 :(得分:7)

以下是两个版本。

when
  $app: Approver( employeeName == "Charles" )
  Products( approvalPath contains $pp )

when
  Products( $ap: approvalPath )
  Approver( employeeName == "Charles" ) from $ap

Number 1需要插入Approver对象作为事实。

答案 1 :(得分:0)

rule member
when
    $p : Products()
    $a : Approver( name == "Charles" ) from $p.approvalPath
then
...
end

上述规则将为列表中名为Charles的每个审批人触发一次。如果您只想触发一次规则,无论Charles在列表中有多少批准者,只需将第二行包含在exists(...)中。