Drools如何获取列表中的最后一个元素

时间:2013-12-07 03:30:26

标签: java drools

这是我的规则:

rule "rahultest" 
salience 200
no-loop true
when
    $parentObject : parentObject()
    $child : ChildObject() from $parentObject.childs //here I want to put the code like 
then


end

我想只为最后一个元素运行此规则,我该怎么做。

2 个答案:

答案 0 :(得分:2)

假设childs是一个列表而不是null而不是空:

rule "rahultest" 
when
    $parentObject : parentObject()
    $child : ChildObject()
        from $parentObject.getChilds().get( $parentObject.getChilds().getSize() - 1 )
then
 ...
end

您可以将getter getLastChild()添加到parentObject,这会稍微简化一下。

答案 1 :(得分:0)

rule "Last Activity"

    when
        $inst:Instance(  )
        $ev:Event( activity=="Verify Exit" )
          from $inst.getEvents().get($inst.getEvents().size() - 1 )
    then 
        SendMessage.ReportMessage(kcontext,$inst);      
    end