I want to use ProcessWindowFunction.Context#globalState in my window function. But I don't want to apply ProcessWindowFunction directly to my WindowedStream because I don't want to buffer all the elements of each window. Currently I'm using WindowedStream#aggregate(AggregateFunction, ProcessWindowFunction).
My understanding is that RichFunction.runtimeContext also give access to those global states. That thought naturally pointed me to RichAggregateFunction, RichReduceFunction and RichFoldFunction. However, they all cause runtime error like this: "AggregateFunction can not be a RichFunction. Please use fold(AggregateFunction, WindowFunction) instead." So how can I use an incrementally aggregating window function and have access to global states at the same time?