2016-11-10 49 views
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。

回答

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 
+0

我做了一些修改答案,使之反映我想要的究竟。 –