Multi-Step Application Integration
The Multi-Step Application Integration (MSAI) pattern is an extension of the SSAI pattern. MSAI enables the integration of n (source) to m (target) applications. It addresses many-to-many integration, which SSAI cannot, by providing what is known as sequential logical processing. In other words, steps in this pattern are processed sequentially, and rules applied are Boolean logical in nature. Like the single-step pattern, MSAI requires an intermediary to broker the transaction of data between applications. It is often built around an asynchronous event-based system and typically is implemented through the use of Message Queuing Middleware as well. The asynchronous event-based approach creates loose coupling. Although each system is physically independent, they are logically dependent. In other words, interdependencies exist between the application events that can be expressed in terms of transformations and data integration rules. Data elements from one application can drive the retrieval or processing of messages in another application.
The simplest multi-step example in Figure 3.3 involves three applications in which a message from application A is combined with a message from application B that is reformatted for a target application C. It is common for a data element from application A to act as a key to drive the request for information from application B.
Figure 3.3 Multi-Step Application Integration.
In Figure 3.3, the account_id data element from the Customer_Order message is used as the key for a request for a Customer_Billing message from the application. Data elements from both messages are combined and transformed according to the applicable data conversion rules to deliver a Shipping_Order message to the Shipping & Distribution System. Even in a trivial example like this, you can see how the Customer_Billing message has logical dependency on the Customer_Order message. The final Shipping_Order message depends on elements of both the Customer_Order and Customer_Billing messages.
You can, of course, see many more complex variations of the multi-step processing in the example. For instance, instead of just getting the customer billing information, what if the Customer_Order message provided the product codes to allow a check of the inventory system? Each product on the Customer_Order message would be checked for product availability. For n number of order items, this would generate n number of look-ups to the inventory system. Depending on the outcome, multiple output messages could be generated, such as a customer notification email or an entry to the vendors database to generate a reorder of inventory. In this more complex example, multiple outputs can occur. The MSAI pattern is an extensive and flexible pattern allowing for complex application integration to occur.