Creating a Class with a Metric Function
Procedure
-  
		  Create a class that extends either 
			 SingleValueMetricFunction or 
			 MultiValueMetricFunction.
		   
		  
public class MyMetric extends SingleValueMetricFunction{...}
 -  
		  Override the 
			 init() 
			 method. The 
			 init() method belongs to the abstract class, 
			 AbstractMetricFunction.
		   
		  
public void init(Fact fact, Measurement measurement, MetricNode startNode, DimensionHierarchy dh) throws java.lang.Exception
For more information about the API, refer to the TIBCO Service Performance Manager Java API reference pages.
The init() method has the one-time initialization of the metric function for a series of metric nodes starting at the leaf node and moving up to the parent node in the rollup hierarchy.
For example, here you can store the current value for a sum computation. Then you can use this current value in the compute function at each level and add this current value to the existing sum at that level (Stored in the "context").
 -  
		  Override the 
			 compute() method. This is where you load the previous state from 
			 RtaContext. Use the current value set in 
			 init() 
			 to compute the new value.
		   
		  
public abstract compute(MetricNode metricNode, SingleValueMetric<N> metric, RtaNodeContext context)
For more information about the API, refer to the TIBCO Service Performance Manager Java API reference pages.
 
