Events 获取满足条件的最新事件

Events 获取满足条件的最新事件,events,drools,drools-fusion,Events,Drools,Drools Fusion,有什么方法可以得到满足某个谓词的最新事件吗 例如,如果我编写此规则: rule 1: when myObject: MyObject(id == "id1" && name == "name1" && type == "type1") then myObject.doSomething(); 我希望仅当最近插入的id为“id1”的MyObject对象具有给定的名称和类型时,才会触发该规则。 请注意,一次可能有多个具有此id的MyObjec

有什么方法可以得到满足某个谓词的最新事件吗

例如,如果我编写此规则:

rule 1:
  when
    myObject: MyObject(id == "id1" && name == "name1" && type == "type1")
  then
    myObject.doSomething();
我希望仅当最近插入的id为“id1”的
MyObject
对象具有给定的名称和类型时,才会触发该规则。 请注意,一次可能有多个具有此id的
MyObject

本质上,我想这样做:

rule 1:
  when
    myObject: (Get the latest MyObject with its id == "id1") and
    ( myObject.name == "name1" && myObject.type == "type1") )
  then
    myObject.doSomething();

我使用的是Drools 6.2.0。

假设您确实有事件,这需要

declare MyObject
  @role( event )
end
您可以编写以下规则:

rule "latest id1-name1-type1"
when
  myObj: MyObject( id == "id1", name == "name1", type == "type1" )
  not MyObject( this after myObj, id == "id1" )
then
   myObj.doSomething();
end

我对答案做了一些修改,使之准确地反映出我想要的。