如何解决我应该使用自定义方法还是自定义累积功能
如果我想计算最新的 X(例如 100)值的平均值,并且这个平均值在 (y,z) 值之内,我想我只能创建自定义方法吗?自定义的累加函数将不起作用,因为累加函数(getResult(Serializable context)) 只能接受一个参数。
解决方法
我不确定您从哪里得到的 accumulate
只接受一个参数的印象。您应该参考官方的 Drools documentation,而不是互联网上的随机帖子,因为它们通常是错误的。
文档是这样描述 accumulate
函数的:
积累
使用它来迭代一组对象,为每个元素执行自定义操作,并返回一个或多个结果对象(如果约束评估为真)。该元素是 collect 条件元素的一种更灵活、更强大的形式。您可以在累积条件中使用预定义函数或根据需要实现自定义函数。您还可以在规则条件中使用缩写 acc 表示累加。
使用以下格式定义规则中的累积条件:
accumulate( <source pattern>; <functions> [;<constraints>] )
使用这个和内置的 average
函数,我们可以想出这样的东西:
rule "Example"
when
accumulate( SensorReading( $temperature: temperature );
$avg : average( $temperature );
$avg > 30,$avg < 35 )
then
// only triggers when temperature average is between 30 and 35
end
在这里,我们将累积超过 SensorReading
个对象,取平均值 temperature
,并且仅在平均值介于 30 和 35 之间时触发右侧。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。