Article Managing Physical File Storage

The Verint Community platform's Centralized File Storage System abstracts physical file storage from logical file storage and includes support for physically storing files on the operation system's file system, Amazon S3, or Azure Blob Storage. Additional physical file storage providers can be added to support storing files elsewhere.

Why Should I Create a New File Storage Provider?

A new file storage provider should only be required to physically store files on a new physical technology or service. Verint Community includes support for operating system file storage (local hard drive or UNC share), Amazon S3, and Azure Blob Storage. If another storage system, for example, a different cloud storage provider must be used, a new file storage provider can be used and configured to be used by the centralized file system.

File Storage Provider Considerations

When developing new file storage providers, it is important to ensure that CFS expectations are supported. Key considerations include:

  1. The provider implementation must have a public, parameterless constructor
  2. The implementation of ICentralizedFileStorageProvider must be complete (all sync and async calls must be implemented, events should be fired, etc)
  3. File store keys must be between 1 and 255 characters
  4. Paths must be between 0 and 769 characters
  5. File names must be between 1 and 255 characters
  6. Paths should be considered as prefixes, not delimited "folders" when searching for sub-folders
  7. Paths are delimited by the CentralizedFileStorage.DirectorySeparator character.
  8. Paths created with the AddPath() method are expected to be returned by GetPaths() calls even if the path contains no files
  9. The provider is responsible for removing unused paths if a physical representation of the path (without respect to files) is required by the underlying physical implementation
  10. The provider is responsible for providing an implementation of ICentralizedFile for files returned by the provider which includes a full implementation

Provider Interface Types

File storage providers are defined using the ICentralizedFileStorageProvider  interface. A new instance of the implementation will be created for each CFS file store configured to use the provider. For each file store, the provider will be instantiated and the instance will be notified of the file store it represents via the Initialize() method, which provides the file store key and a dictionary of key/values (from CFS Environment Configuration ) which can be used to provide configuration information to the provider. The members required by ICentralizedFileStorageProvider should be self-descriptive with respect to the considerations listed above.

Configuration

The configuration of CFS file storage providers is managed by the Environment Configuration in the CentralizedFileStorage section.