1

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

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

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

MyObject我希望仅当最近插入的带有 id 的对象"id1"具有给定的名称和类型时才触发该规则。请注意,一次可能有多个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。

4

1 回答 1

2

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

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
于 2016-11-10T10:00:49.123 回答