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

如何避免在Drools中硬编码滑动窗口持续时间,并将时间窗口作为参数传递。,drools,drools-guvnor,drools-fusion,Drools,Drools Guvnor,Drools Fusion,我一周前就开始用口水了。 我需要计算一个度量在一个窗口持续时间内的平均值,比如4s。下面是Drools的代码片段,可以完成这项工作 ... over window:time(4s) ... 但是,我想将此值作为规则的输入,该值取自控制面板UI,用户可以在其中指定窗口持续时间 我尝试了许多选项,包括下面的一个,但都无法编译 ... over window:time($SlidingWindowDuration) 谷歌搜索了几个小时,但关于这个主题的文档很少 这方面的任何线索都会对我有

我一周前就开始用口水了。 我需要计算一个度量在一个窗口持续时间内的平均值,比如4s。下面是Drools的代码片段,可以完成这项工作

...  over window:time(4s) ... 
但是,我想将此值作为规则的输入,该值取自控制面板UI,用户可以在其中指定窗口持续时间

我尝试了许多选项,包括下面的一个,但都无法编译

...   over window:time($SlidingWindowDuration) 
谷歌搜索了几个小时,但关于这个主题的文档很少


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

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

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

要绝对动态,您必须显式地实现“窗口”机制。将时间戳作为事件的一个属性并显式设置:然后可以基于时间戳差异进行推理,显式收回旧事件,并使用简单的累积CE计算剩余的平均值