Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt

Use this file to discover all available pages before exploring further.

The initial load of Atoti Limits data allows you to bulk load limits and incidents when the application first starts and connects to your Atoti Server instance. The loading process can be customized to fit your needs through configuration properties or by implementing your own custom service.

Initial load configuration properties

How to customize the initial load data location

By default, Atoti Limits will attempt to load the data from CSV files located in the directory specified by the limits.initial-load.root-dir property. When Atoti Limits starts and connects to your Atoti Server instance, it will look in the location specified by this property for a subdirectory with the name of your Atoti Server instance which is specified by the limits.autoconfiguration.server-name property.
The limits.autoconfiguration.server-name property is autoconfigured by default, but you can set it explicitly in the configuration for your Atoti Server if needed.
The default directory for Atoti Limits data is ./src/main/resources/data. If you need to change this location, set the limits.initial-load.root-dir property to the desired path in your application.yml file.

How to customize the initial load data file patterns

Within the directory specified by the limits.initial-load.root-dir property, Atoti Limits will look for files that match the patterns specified by the limits.initial-load.file-path-matchers.* properties. The default patterns are:
Property NameDefault ValueDescription
limits.initial-load.file-path-matchers.limitsglob:**/*limits_approve*.csvPattern to match limit files
limits.initial-load.file-path-matchers.limit-structuresglob:**/*limit_structures*.csvPattern to match limit structure files
limits.initial-load.file-path-matchers.incidentsglob:**/incident/**/*incident*.csvPattern to match incident files
limits.initial-load.file-path-matchers.as-of-dateglob:**/*as_of_date*.csvPattern to match AsOfDate files
To customize these patterns, set these properties accordingly in your application.yml file. If you only wish to customize the pattern for some of the file types, you can set only those specific properties, and the others will use the default values.

How to customize the file loading service

If you need to customize the initial load process beyond what is possible with the configuration properties, you can implement your own file loading service by creating a custom ILimitsFileLoadingService implementation to replace the default DefaultLimitsFileLoadingService.
/**
 * <b>ILimitsFileLoadingService</b>
 *
 * <p>This interface defines the methods for loading limits data from CSV files.
 *
 * <p>Implementations of this interface should ensure that the data is loaded in the correct order
 * as described in the {@link #loadLimitsData(String)} method.
 *
 * @author ActiveViam
 */
@FunctionalInterface
public interface ILimitsFileLoadingService {

  /**
   * Loads all limits data, including asOfDate, limit structures, limits, and incidents. This method
   * is intended to be called when Limits first connects to a server. Besides the AsOfDate, the
   * ordering of the calls is important to ensure that the data is loaded correctly:
   *
   * <ol>
   *   <li>1. Load the AsOfDate (this could be done at any point in this sequence)
   *   <li>2. Load the limit structures before the limits because creating limits requires
   *       information from the structures.
   *   <li>3. Load the limits before the incidents because creating incidents requires information
   *       from the limits
   *   <li>4. Load the incidents last because they are dependent on the limits.
   * </ol>
   *
   * @param serverName the name of the server for which to load the limits data
   */
  void loadLimitsData(String serverName);
}
Once you have created your custom implementation, expose it as a Spring bean in your project and Spring will use it instead of the default implementation.