High-Level Architecture¶
The level of detail is intentionally kept to a minimum to keep the document brief. For additional details, please contact the Integration Hub team.
Overview¶
All integrations within the Integration Hub follow a layered architecture. The number of layers could vary, but typically, an integration resolves into three layers:
- Experience Layer (XAPI)
- Process Layer (PAPI)
- System Layer (SAPI)
This section briefly discusses each layer of the Notification API.
Layered Architecture
This section does not aim to explain the layered architecture termed by experience, process and system in general. For more information on the general concept, please refer to "Architecting “The Three Layers” for MuleSoft – A Lesson In History" and "Distinction between system-, process and experience APIs" articles.
Each layer is composed of VETRO components which are part of the ipaas-framework.
Re-usable VETRO Components
The Sanger Integration Hub has developed VETRO into a re-usable work that contains an executor that orchestrates the VETRO components. It is responsible for reading the configuration, and executing the VETRO components according to a flow declared in the flow configuration. The framework is also responsible for handling errors, and provides logging and auditing capabilities.
The framework is integrated into the layers, and each step within a layer is executed using the framework’s execution utilities.
Note
The framework runs within an execution environment using a flow configuration that defines an ordered list of VETRO steps. Each layer includes its own flow configuration, and the framework executes the steps in the specified order for each invocation.
Experience Layer¶
The experience layer exposes the underlying notification system to the consumers. It accepts user requests, performs authorisation checks, validates the incoming requests, and delegates handling of the request to the other layers.
Process Layer¶
The process layer orchestrates which notification needs to go to which external API - Email, Slack and/or FreshService. It is the layer that performs aggregation of notifications based on the priority key.
System Layer¶
This is the most work-heavy layer for the Notification API. It consists of message queues and consumer processes that collectively work in order to deliver the notification(s) received by XAPI. The last layer of consumers invoke the notification channels that each notification is aimed for.
