我有以下类结构(A类包含B类):
class A {
B object;
...
}
只要B类特定字段的累积平均值高于给定值,我就会尝试做某事。
所以我试着写下以下内容:
when
A($var1 : object)
accumulate( B($num:num) from $var1;
$avg1 : avg ($num); $avg1 < 10000)
then ...
会发生的是,不是在会话中累积所有实体并计算所有实体的平均值,而是分别在每个实体上计算平均值。 所以如果会话已经包含5个大于10000的数值并且插入了另一个,那么&#34;然后&#34;部分被调用6次(每个部分的平均值等于数值本身),而不是只调用一次。
你有什么暗示可以帮助我解决这个问题吗?
感谢。
答案 0 :(得分:0)
您必须累计访问字段num
的字段object
的所有A个事实。
when
accumulate( A( $var1: object );
$avg1: avg($var1.getNum()); $avg1 < 10000)
then ...
将所有B对象作为事实插入也可以让你写出直截了当的
when
accumulate( B( $num: num );
$avg1: avg($num); $avg1 < 10000)
then ...