如果符合某个标准,我需要编写一条规则,计算过去10秒内我在流中收到的事实数量。
因此,例如,如果在过去10秒内有2辆黑色汽车经过一个十字路口,我想提醒某人。
我有以下规则:
rule "check black cars in 10 seconds" dialect "java"
when
$car : Car(color == Color.BLACK) over window:time(10s);
then
System.out.println("got something");
当我通过一辆黑色轿车时这是有效的,但是,除非有2辆黑色轿车,否则我不希望它开火。我找不到一个很好的例子。
感谢。
答案 0 :(得分:1)
when
accumulate( Car(color == Color.BLACK) over window:time(10s);
$cnt: count(1); $cnt == 2 )
then
当第二辆车在第一辆车的10秒内到达时,这将开火,并且当第三辆车在第二辆车的10秒内到达但在第一辆车后10秒之后到达时会再次点火,但这可以从第一辆车到达你的(含糊的)规范。