我想寫收集/積累基於時間操作值的規則。積累/收集基於時間操作
rule "Zone6 Overlap"
when
$i1 : Instance ($e1 : event == " Vel : 20.99-23.98 km/h : " && $name1 : name) from entry-point "Stream"
$i2 : Instance ($e2 : event && $name2 : name && $e2 == $e1 && $name2 != $name1
&& this overlaps $i1) from entry-point "Stream"
then
System.out.println("** Overlap Event: Velocity Zone 6 ** \nPlayer1: " + $i1.getName() + "\nPlayer2: "
+ $i2.getName() + "\nEvent: " + $i1.getEvent() + "\n" + "Start Time (P1): "
+ $i1.getStart() + " - End Time: " + $i1.getEnd() + "\nStart Time (P2): "
+ $i2.getStart() + " - End Time: " + $i2.getEnd() + "\n");
end
這是我的原始規則,它設法獲得兩個持續時間的重疊。
我想創建規則的想法是,看看是否有球員在一場足球比賽的持續時間的任何集體重疊。我想知道是否有多達9名球員在場上以一系列速度行進,這些速度在事件變量中被指定爲一個字符串,這些字符串都是一次重疊的。
我已經試過就積累和收集,但與如何發生的時候收集這些事件,並將它們返回到規則的右側,使他們能夠打印到標準輸出掙扎了幾件事情。
請幫忙。
謝謝。
啊我明白了。是的,這是有道理的。基本上,時間操作符(重疊)是錯誤的方式(應重疊)。 而我只是簡單地需要使用收集功能,而不是積累。 Drools文檔(包括由packt編寫的書籍)似乎推動了積累功能。因此,爲什麼我對是否使用它感到困惑。無論如何,感謝您的幫助。 – Stu
不客氣。如果你不介意,你能否將我的答案標記爲已接受? –
完成。只是想知道你是否可以爲我回答一個簡短的問題: 我聲明瞭一個全局變量,它是一個列表並用特定對象填充它。在滿足條件後,您是否知道如何在RHS上的全局數組中調用這些對象的方法?謝謝。 – Stu