获取满足条件的最新事件

Getting the latest event satisfying a condition

有什么方法可以获取满足某个谓词的最新事件吗?

例如,如果我写这个规则:

rule 1:
  when
    myObject: MyObject(id == "id1" && name == "name1" && type == "type1")
  then
    myObject.doSomething();

我希望仅当最近插入的 ID 为 "id1"MyObject 对象具有给定的名称和类型时才触发规则。 请注意,一次可能有多个 MyObject 具有此 ID。

本质上,我想做这样的事情:

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