我最近才开始使用drools,我需要处理心率数据。我需要在drools融合中创建一个规则,当心率数据中有3个或更多峰值超过过去一小时的平均值时触发。下面的图片是我喜欢在心率中发现的一个例子。

我的HeartRate事件有以下字段:
int heartRate;
Date timeStamp;
String macAddress;我知道滑动时间窗口,但你只能使用像min,max,avg这样的基本函数。有人能给我解释一下如何创建这个规则吗?
发布于 2016-04-18 18:34:04
编写检测尖峰的规则,并使用以下属性插入和更新尖峰事实:
declare Spike
@role( event )
int maxHeartRate; ## max/avg rate from events of this spike
Date startTS; ## from first HeartRate to exceed avg+60
Date lastTS; ## from last HeartRate to exceed avg+60
String macAddress;
end使用两个累加值,您可以将一小时内的尖峰计数与心率的heartRate平均值一小时相关联。
请注意,整个策略有一种(微妙的)“模糊性”,因为第一个峰值之前的平均值几乎肯定低于第二个或第三个峰值之前的平均值,因为这包括了峰值的比率。理想情况下,人们应该从平均计算中省略这些。
我认为避免window:time和从时间戳计算所有东西会更容易,甚至可能“手动”维护运行平均值。但是通过编写所有代码来研究这一点,包括测试用例,比我想在这里花费的要多得多。
https://stackoverflow.com/questions/36680343
复制相似问题