1

我尝试在 Drools 5.4.0.Final 中使用滑动时间窗口,并给出以下官方文档片段:

StockTick() over window:time( 2m )

StockTick( company == "RHT" ) over window:length( 10 )

我在想混合形式是有效的:

StockTick( company == "RHT" ) over window:time( 2m )

但是,除非我弄错了,否则它的行为并不像预期的那样(即只考虑过去 2 分钟内发生的 RHT 股票报价)。我不明白结果的逻辑。

有人可以解释一下这个技巧吗?

谢谢。

4

2 回答 2

1

查看drools-fusion-docs章节2.6.1. Sliding Time Windows有一个汇总示例。这是一个适合您需要的变体。

rule "At least one RHT in the last 2 minutes"
when
    Number( intValue > 0 ) from accumulate(
        $tick = StockTick( company == "RHT" ) over window:time( 2m ),
        count( $tick ) )
then
    // do something here
end
于 2013-03-21T08:10:36.637 回答
0

两个 Drools 版本会导致两种不同的行为(相同的单元测试)。所以我认为我的误解来自“windows”行为中的一个错误。这次我不能说得更具体了。

于 2013-04-02T12:47:17.707 回答