Avoid Re-Calculations

Set the Right Scope

Sometimes a logic (e.g., CFS or Analytics calculation) calculates over and over records which do not change. If a record needs to be calculated only once, it can be marked with some flag and a subsequent calculation should exclude records with this flag. 

The first element of the logic:

if (api.currentItem('AlreadyProcessedByCFS') as Boolean) {
  api.abortCalculation()
  return
}

AlreadyProcessedByCFS.groovy:

return true

Alternatively, when you configure the CFS, specify a filter for the AlreadyProcessedByCFS column, and filter out those items where the value is “true”:

image-20210831-135526.png

Multiple Passes

If you call api.markItemDirty() on an item, it is generally good to in the beginning of the logic and also call api.abortCalculation() afterwards.