我想写收集/积累基于时间操作值的规则。积累/收集基于时间操作
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