Integration Suite architecture

From Public wiki

Jump to: navigation, search

Simply put, the task of a data integration is to transport messages from a data source to at least one data consumer. Our integration suite allows us to transport messages in a number of different ways: we can use HTTP(S), (S)FTP, file and email.

Effectively, a message is just a piece of data to be passed from one system to another. When sending a message to a third party application, it is usually necessary to transform the source data into a form which the third party will understand. Likewise, data which is captured from third parties generally needs to be transformed into a form which is relevant to the local application. Our integration suite includes a powerful data transformation package which allows us to produce and parse strings in a number of forms, including XML, SOAP (using a WSDL file) and CSV.

Within our integration suite, Magento modules act as the configuration; they tell the rest of the suite how to transform data and how to send and consume messages. When we produce a new integration – for example, between Magento and a payment gateway – we do so by creating a new Magento module which is designed to enable the integration suite to communicate specifically with that third party.

Contents

Code base

The code base comprising Ampersand's integration suite is divided into several layers.

Library

The bottommost layer of the integration suite is the library. The library layer contains the bulk of the functionality required to produce data integrations, but is not concerned with administration interfaces or integrations with specific third parties. Instead, it provides us with the tools necessary to integrate with external systems. The library layer is obfuscated and no one outside of the Ampersand organisation is permitted access to its source code.

The files comprising the library layer are located within the lib/Ampersand directory.

Application core modules

Sitting atop the library layer is the core application layer – hereafter the 'core layer' – which is comprised of a number of Magento modules. While the library layer provides functionality which allows us to integrate with external systems, the core layer builds upon that functionality to provide us with the tools needed to build actual Magento integration modules. The code comprising the core layer is not obfuscated. This approach is intended to provide transparency to third party developers so that they may extend, not modify Ampersand's modules; any changes to Ampersand's core files are likely to be eradicated by any future upgrades to those files which Ampersand might provide.

The files comprising the core modules are located within the app/code/core/Ampersand directory.

Application community modules

Sitting atop the core layer is the community application layer – hereafter the 'community layer' – which is comprised of a number of Magento modules. The Magento modules comprising the community layer of the integration suite contain any configuration and logic required to integrate with specific external systems. Most clients will only use a subset of the modules comprising the community layer, depending on which systems they wish to integrate with, while clients will always possess the entirety of the core and library layers. As with the core layer, the code within the community layer is not obfuscated. However, if developers wish to alter the functionality of a community module they should extend it, not modify it, as any modifications to community modules will likely be wiped out by any future upgrades provided by Ampersand.

The files comprising the community modules are located within the app/code/community/Ampersand directory.

Personal tools