You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Current »

This page gives some advice to create a new Aggregation function.

This page is under construction.


Interfaces for a new function

An aggregation function needs to implement one of the following interfaces:

  • de.uniol.inf.is.odysseus.aggregation.functions.IIncrementalAggregationFunction
    An incremental aggregation functions gets a notification when an element gets valid (enters the window) or gets invalid (leaves the window). You have to hold a state to return the current aggregation value on request. 
    • void addNew(T newElement);
      This method is called when a new element gets valid. You should add this value to the state.
      For example AVG function: State holds sum and count. sum += newElement and count++ 
    • void removeOutdated(Collection<T> outdatedElements, T trigger, PointInTime pointInTime);
      This method is called when a set of elements get invalid. You should remove these values from the state.
      For example AVG function: For each element in outdatedElements: sum -= element and count-- 
    • Object[] evalute(T trigger, PointInTime pointInTime);
      This method is called when a new aggregation value should returned.
      For example AVG function: return sum/count 
  • de.uniol.inf.is.odysseus.aggregation.functions.INonIncrementalAggregationFunction
    An non-incremental function gets a set of all elements in the current window. It does not have to hold a state.
    • Object[] evaluate(Collection<T> elements, T trigger, PointInTime pointInTime);
      This method is called when a new aggregation value should returned. elements holds all elements in the window that starts at pointInTime

 

  • No labels