使用Drools Fusion计算滑动窗口中的事实数量

时间:2014-02-15 16:56:34

标签: drools complex-event-processing drools-fusion

如果符合某个标准,我需要编写一条规则,计算过去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辆黑色轿车,否则我不希望它开火。我找不到一个很好的例子。

感谢。

1 个答案:

答案 0 :(得分:1)

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

当第二辆车在第一辆车的10秒内到达时,这将开火,并且当第三辆车在第二辆车的10秒内到达但在第一辆车后10秒之后到达时会再次点火,但这可以从第一辆车到达你的(含糊的)规范。