我尝试在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股票蜱)。我不明白结果的逻辑。
有人可以解释我的伎俩吗?
感谢。
答案 0 :(得分: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
答案 1 :(得分:0)
两个Drools版本会导致两种不同的行为(相同的单元测试)。所以我认为我的误解来自于“windows”行为中的一个错误。这次我不能再具体了。