Adding Custom Utilization

You can customize the Utilization calculation by adding a bean that implements the IUtilizationCalculator interface. Here’s how to do this:

1. Create the Spring Bean

The IUtilizationCalculator contains two methods that need to be overridden:

public interface IUtilizationCalculator {

    /**
     * @param copperContext
     *
     *  Creates the utilization measure in the Limits cube using copper
     */
    void createUtilizationMeasure(ICopperContext copperContext);

    /**
     * @param incident
     * @return the utilization value as per the evaluation
     */
    double computeUtilization(Incident incident);

The createUtilizationMeasure method is used to create the utilization measure in the Limits cube. The computeUtilization method is used to compute the utilization once a limit has been evaluated, and is visible in the Limits Status screen. The class DefaultUtilizationMeasureCalculator handles the default calculation.

If you want to implement your own utilization calculation, for instance $ \dfrac{exposure}{limitValue} $, the custom Spring Bean will look as follows:

@Component
public class MyUtilizationMeasureCalculator implements IUtilizationCalculator {

    @Override
    public void createUtilizationMeasure(ICopperContext copperContext) {
        Copper
                .measure(MEASURE_EXPOSURE)
                .divide(Copper.measure(MEASURE_LIMIT_VALUE))
                .per(Copper.level(DIM_TECHNICAL, HIER_INCIDENT_KEY, HIER_INCIDENT_KEY))
                .doNotAggregateAbove()
                .withName(MEASURE_UTILIZATION)
                .withFormatter(PERCENT_FORMAT)
                .publish(copperContext);
    }

    @Override
    public double computeUtilization(Incident incident) {
        return incident.getMeasureValue() / incident.getLimitValue()[0];
    }
}

2. Import the Spring Bean

Once the bean is created, you need to import it to the project. Once done, Spring will use the custom bean for calculating the utilization.