1

我需要编写一个规则来计算过去 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 辆黑色汽车,否则我不希望它开火。我找不到一个很好的例子。

谢谢。

4

1 回答 1

1
when
accumulate( Car(color == Color.BLACK) over window:time(10s);
            $cnt: count(1); $cnt == 2 )
then

这将在第二辆车在第一辆车的 10 秒内到达时触发,并且当第三辆车在第二辆车的 10 秒内到达但迟于第一辆车后 10 秒到达时再次触发,但这就是可以从你的(模糊) 规格。

于 2014-02-15T18:17:07.357 回答