The Integration Layer is a key enabler for an SOA as it provides the capability to mediate which includes transformation, routing, and protocol conversion to transport service requests from the service requester to the correct service provider. Thus, it supports the capabilities required for enabling SOA such as routing, protocol support and conversion, messaging/interaction style, support for heterogeneous environment, adapters, service interaction, service enablement, service virtualization, service messaging, message processing, and transformation.
It is the layer in the SOA RA that supports the integration with solution platforms by the other layers in the SOA RA using “adapters”, the access of services by other layers, and the capabilities associated with service transport. It can be thought of as the plumbing which interconnects the SOA.
This layer enables the service consumer/requestor to connect to the correct service provider through the introduction of a reliable set of capabilities. The integration can start with modest point-to-point capabilities for tightly-coupled end-points and cover the spectrum to a set of much more intelligent routing, protocol conversion, and other transformation mechanisms often described as, but not limited to, an Enterprise Service Bus (ESB). WSDL specifies a binding, which implies location where a service is provided, and is one of the mechanisms to define a service contract. An ESB, on the other hand, provides a location-independent mechanism for integration, and service substitution or virtualization.
The integration that occurs here is primarily the integration of Layers 2 through 4 (the “functional” aka horizontal layers of the SOA RA). For example, this is where binding (late or otherwise) of services occurs for process execution. This allows a service to be exposed consistently across multiple customer-facing channels such as web, IVR, XML client, etc. The transformation of response to HTML (for web), VoiceXML (for IVR), XML String, can be done via XSLT functionality supported through a message transformation capability in the Integration Layer.
As shown in Usage of the Integration Layer, the Integration Layer:
Usage of the Integration Layer
There are multiple set of categories of capabilities that the Integration Layer needs to support in the SOA RA. These categories are:
This layer features the following capabilities:
The ABBs responsible for providing these sets of capabilities in the Integration Layer are:
Capability Category |
ABB Name |
Supported Capabilities |
Communication, Service Interaction and Integration |
Integration Controller/ Integration Gateway |
1-7 |
|
Adapter |
1, 2, 3, 6, 7 |
|
Asynchronous Messaging Manager |
4, 8 |
|
Mediator |
1-7 |
|
Router |
5 |
|
Protocol Converter |
6 |
Message Processing |
Message Transformer |
9, 10 |
|
Data Transformer |
9 |
|
Semantic Transformer |
10 |
|
Data Aggregator |
11 |
|
Event Broker |
12 |
|
Event Producer |
12 |
|
Event Listener |
12 |
Quality of Service |
Transaction Manager |
13 |
|
Exception Handler |
14 |
Security |
Quality of Service Layer: Access Controller |
15 |
Management |
Logger |
16 |
|
Auditor |
17 |
|
Quality of Service Layer: Configuration Manager |
18 |
ABB to Capability Mapping for the Integration Layer
This section describes each of the ABBs in the Integration Layer in terms of their responsibilities.
This ABB serves as an entry point to this layer. Other layers interact with this ABB to leverage other ABBs in this layer to fulfill their respective responsibilities. In turn, this ABB is thus responsible for interfacing with other ABBs in this layer and managing the interaction flow among the ABBs in this layer. For example, it delegates to the Router ABB to service requests and it delegates to the Message Transformer ABB for the data, format, and message transformation needs of the other layers.
This ABB is responsible for the interfacing/connectivity of SOA RA layers of a solution to external systems and components and taking a call (message) to the end-point. In particular, it addresses any necessary mediation (router, message transformer, protocol converter) of the elements outside the Integration Layer and the interaction with external systems and components. This ABB should typically be used by ABBs in all SOA RA layers to access external components of solution platforms, providing a consistent integration capability.
This ABB is responsible for handling the service request/response interaction. It also supports the transformation between message formats, conversion of protocols, and routing of service call/messages to the service provider. It uses the Data Transformer ABB and optionally the Semantic Transformer ABB for the transformations. Finally, it supports static service composition to orchestrate and chain services or system calls or messages together in order to compose services statically. It uses ABBs such as Router, Message Transformer, and the Data Aggregator to do this.
This ABB is responsible to route messages between service consumer/requestor and service provider including those based on both content-based routing, straight through message passing. It may change the route of a message, selecting among service providers that support the intent of the requester. Selection criteria for the provider can include content and context of the message as well as knowledge about capabilities of the target candidates and even versioning of service implementation. If a message is routed to one provider, which responds with a failure, the message can be re-routed to another provider. In certain circumstances it may be used to route messages without the involvement of the Mediator ABB to realize straight message pass-through. This ABB may use other ABBs from the Integration Layer such as the Message Transformer ABB, Auditor ABB, Logger ABB, and Exception Handler ABB. It may leverage the Access Controller ABB from the Quality of Service Layer.
This ABB is responsible for transforming messages from one format to the other, including data format transforms into a single “canonical” form or its subset, and transformation across protocols to whatever protocols that are routed. It also supports data enrichment.
This ABB is responsible for semantic/positional mapping of data, so that it conforms to standards. What it does is dependent on the associated standard; e.g., UDEF in general scenarios or in the case of specific lines of business, ICD 10 or LOINC. For example, this ABB transforms and maps a first name and last name in the in-bound data provided by the Mediator ABB to an Integration Layer standard format where the order is reversed. As the semantic interoperability of services becomes more prevalent with the adoption of cloud computing and SaaS, this becomes more important.
This ABB is responsible for transforming data formats from source to target format; e.g., from proprietary to industry standards and vice versa. It integrates with the Information Layer to obtain metadata such as the canonical form, etc.
This ABB is responsible for transforming data across industry standard protocols. For example, a JSON to SOAP conversion or a SOAP/HTTP to a SOAP/JMS or SOAP/Message Queue conversion would be responsibilities of this ABB.
This ABB is responsible for storing and forwarding messages potentially using a message queue and it provides the underlying plumbing to transport messages between service invokers and providers as well as the ability to store and forward the messages. It supports both reliable transport and guaranteed delivery. Message queuing is a common example of a mechanism to support asynchronous messaging. A common feature of this ABB is to support message delivery guarantees and reliability.
This ABB manages transactions and encapsulates transaction handling from the remaining tiers, especially when a composite service invokes a service chain. Types of transaction handling include atomic ACID transactions, two-phase commit, long-running, journaled, and compensating transactions. It leverages standards such as WS* (WS-Coordination, with WS-Atomic Transaction for atomic, ACID transactions and WS-BusinessActivity for long-running transactions) standards to achieve this. Most of the transaction standards specify a set of transaction interaction patterns to address different kinds of transactions.
This ABB supports the ability to compose (aggregate) data from different services/service providers which are interacting with the Integration Layer using the Mediator ABB into one format, after they have been transformed into a consistent “enterprise” format (canonical form) by the Message Transformer ABB. It is used by the Mediator ABB.
See Access Controller ABB in the Quality of Service Layer.
This ABB is responsible for capturing and recording message routing and service invocation activities. It logs data to monitor system exceptions and system stability (data such as resource availability, etc.). This should be interoperable and integrate with the Quality of Service Layer’s monitoring features. It is important from a monitoring and support for compliance perspective.
This ABB is responsible for tracking and monitoring the message routing and service invocation activities. It supports the capture of audit data, the conversion to standard formats such as XDAS and CBE, the encryption of that data during transport, and the obfuscation of sensitive data.
This ABB is responsible for handling system exceptions raised during service invocation and message passing. System exceptions are caused due to software or hardware errors and not due to application logic errors. Application exceptions are treated as business events and handled through the Event Manager.
This ABB is responsible for facilitating event consumers (subscribers, sensors) to subscribe to events and event producers (publishers, emitters) to publish the event and to propagate the event from producers to consumers. It leverages the Asynchronous Messaging Manager ABB, Messaging Transformer ABB, and Router ABB.
This ABB is responsible for generating, publishing, emitting, or producing events.
This ABB is responsible for registering an interest in a particular type of event; i.e., for subscribing to a particular type of event.
See Configuration Manager ABB in the Quality of Service Layer.
The Integration Layer is a critical component of the SOA RA. Its ABBs can be thought of as being logically partitioned into categories which support:
ABBs in the Integration Layer illustrates the ABBs partitioned into key categories:
ABBs in the Integration Layer
The figures below show the inter-relationships and a non-normative sequence of interaction. The final, prescriptive sequence of interaction will be defined by the underlying solution architecture and the standards that the invoking other SOA RA layers support.
Simple Interactions between Consumer and Provider through the Integration Layer
Relationships among ABBs in the Integration Layer
The Integration Layer relies on other cross-cutting layers of the architecture to fulfill its responsibilities.
It relies on the Governance Layer for the following capabilities:
It relies on the Quality of Service Layer for the following capabilities:
Key Interactions of the Integration Layer with Cross-Cutting Layers
Therefore, the Integration Layer interfaces with the following ABBs of cross-cutting layers of the architecture to provide its capabilities:
Horizontal layers of the SOA RA leverage ABBs from this layer to provide their respective capabilities. Horizontal layers of the SOA RA use the Integration Controller ABB in the Integration Layer to access the ABBs in the Integration Layer and capabilities they provide, such as Mediator ABB, Router ABB, Message Transformer ABB, Data Transformer ABB, etc.
Key Interactions of the Integration Layer with Horizontal Layers
Detail Interactions of the Horizontal Layers with the Integration Layer provides a typical interaction with horizontal layers of the SOA RA with the Integration Layer:
Detail Interactions of the Horizontal Layers with the Integration Layer
In the example above:
The Integration Layer also incorporates the support for service virtualization using static routing rules or dynamically at runtime using a service repository and service registry. Service virtualization decouples the location of services for consumers of services. Services are exposed to consumers through a registry, but the exact location decoupled, to support versioning, change of service locality, and administration, without impacting the consumer.
To summarize, the Integration Layer supports capabilities required for enabling SOA such as routing, protocol support and conversion, messaging/interaction style, support for heterogeneous environment, adapters, service interaction, service enablement, service virtualization, service messaging, message processing, and transformation.