如何避免在Drools中硬编码滑动窗口持续时间并将时间窗口作为参数传递。

时间:2014-07-30 19:03:07

标签: drools drools-guvnor drools-fusion

我一周前开始使用drools。 我需要计算一个窗口持续时间的度量平均值,比如4s。下面的Drools代码片段将完成这项工作。

...  over window:time(4s) ... 

但是,我希望将此值作为规则的输入,其值来自控制面板UI,其中某人(比如客户)可以指定窗口持续时间。

我尝试了很多选项,包括下面的选项,但是没有编译。

...   over window:time($SlidingWindowDuration) 

用谷歌搜索了几个小时,但是关于这个主题的文档很少。

这方面的任何线索对我都有很大的帮助。

1 个答案:

答案 0 :(得分:0)

滑动窗口的长度:时间不能动态设置。 (我认为这是因为动态长度会导致无法推断自动删除过时事件的到期偏移量。)

请注意,如果用户引擎启动之前设置此长度并在之后保持不变,则可以将持续时间插入规则文本中,即时编译(仅限规则)需要最后一刻编辑)并执行。

要绝对动态,你必须明确地实现“窗口”机制。使时间戳成为事件的一个属性并明确地设置它:然后你可以根据时间戳差异进行推理,明确地收回旧事件并使用简单的累积CE计算剩下的所有事件的平均值。