Email Stream Management consists of three components that are enabled by a special license key. Email Stream Management (ESM) allows for extensive customization of MPP processing logic, queries to any external system with SQL or web services, detailed manipulation of emails, mime generation, content controls and more.
ESM makes use of a concept called Generic Engines. Generic Engines enables flexible and powerful configuration of MPP Core. It allows to configure complex email processing logic and to insert this logic into specific places in entire (“hardcoded”) MPP Core logic. It is a kind of configuration language built on top of XML and based on text templates, macro substitutions and conditions.
Building blocks of the feature are Engines. Each Engine when executed checks for Precondition(s) to decide if it should proceed execution, and if yes - does specific Action and computes appropriative Result(s). Engines form processing Pipeline. All Engines in a Pipeline are executed one after another starting from first and ending with last Engine. Depending on a type of a Pipeline there may be used Postprocessor(s) that defines additional processing to be done with email after execution of a Pipeline and there may be set additional requirements on Result(s) returned by each Engine. Result(s) computed by an Engine may be used in any subsequent Engine(s) or Postprocessor(s) to parametrize appropriative processing.
Specific Action that an Engine does depends on Engine type. Engine can provide bridge to an external software (MySQL database, LDAP directory, etc.), access to a useful functionality of a third-party library (regular expressions matching, MIME generation etc.), access to a system resource (saving files, etc.) or something else. The point is that each Engine type performs specialized atomic Action and by combining Engines into a Pipelines administrator can configure complex processing logic that consists of multiple dependent Actions. Available Engine types make a toolbox for creating Pipelines. As number of available Engine types will grow the toolbox will grow thus the number of what functionality administrator can combine together will grow.
Preconditions, Actions, Results and Postprocessors can use as parameters Context Variables (such as email sender, recipient, body part, etc.), Results from previous Engines, Common Functions and Engine Functions. That way interaction of Core Context with Engines and interaction of Engines with each other is provided.