The Consumer Layer is the point where consumers interact with the SOA. It enables an SOA to support a client-independent, channel-agnostic set of functionality, which is separately consumed and rendered through one or more channels (client platforms and devices). Thus, it is the point of entry for interactive consumers (humans and other applications/systems) and services from external sources (e.g., Business-to-Business (B2B) scenarios).
In fact the Consumer Layer is the entry point for all external consumers, external to the SOA. This can be other systems, other SOAs, cloud service consumers, human users, etc.
This decoupling between the consumer and the rest of the underlying SOA provides organizations with the ability to support agility, enhanced re-use, and improve quality and consistency. Channels can be thought of as the platforms by which SOA consumers access services through the SOA. Examples of channels would be web front-ends, and IVR (Interactive Voice Response) systems, which could both leverage the same core functionality within the SOA.
It is thus important to note that SOA decouples the user interface (channel), and thus the consumer, from the components and the implementation of the functionality. Examples of this include Service Component Architecture (SCA) Components [10], portlets, WSRP (Web Services for Remote Portlets 2.0) [14], and B2B integration interfaces. Thus, the SOA enables us to cater for human interactive interfaces (user interfaces) as well as system (application or software) consumers.
The Consumer Layer is that part of the SOA which enables channel-independent access to business processes and services supported by various applications and platforms. This is important for the effective use and adoption of the SOA.
Thus, the Consumer Layer provides the capabilities required to deliver IT functions and data to end users and as the entry point for consumers into the SOA RA. These capabilities enable specific users to customize preferences, integrate with consumer channels, including rich clients (mashups and Ajax [20]) and act as a mechanism for the underlying SOA to expose its functionality. Standards (such as WSRP) may leverage services at the application interface or presentation level. Its capabilities include the ability to quickly create the front end of the business processes and the composite applications to respond to changes in the market. It provides the point where in-bound consumer requests have security and other Quality of Service (QoS) policies asserted to ensure that the request is secure and brought into the context of the SOA.
The Consumer Layer provides the ability to integrate services from within the SOA, and the ability to transform, integrate, and personalize information into the content and mediate with the consumer channels (both for user and non-user interfaces).
There are multiple categories of capabilities that the Consumer 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 Consumer Layer are:
Capability Category |
ABB Name |
Supported Capabilities |
Consumer Services |
Consumer |
1 |
|
Client (Channel) |
2 |
Presentation Services |
Presentation Adapter |
4 |
|
Presentation Controller |
3, 6, 7 |
|
Presentation Flow Manager |
5 |
|
Composite View |
3 |
|
Consumer/User Profile Manager |
4, 6 |
|
Personalization Manager |
6 |
Backend Integration |
Integration Layer: Integration Controller |
8 |
|
Integration Layer: Data Transformer |
9 |
Caching and Streaming Content |
Cache |
10-11 |
Security and Privacy |
Governance Layer: Policy Manager |
12 |
ABB to Capability Mapping for the Consumer Layer
This section describes each of the ABBs in the Consumer Layer in terms of their responsibilities.
This ABB is the individual consumer (actor) that uses the services supported by the SOA RA. The consumer can be human or a system.
This ABB interacts with the Presentation Controller ABB to use the underlying services, integrating the consumer of services supported by the SOA RA. It is the element in the SOA which the consumer interacts with. As such, it provides the point interaction for the consumer. The key responsibilities include dealing with the nature of interaction that the client has with the consumer in terms of:
Examples of clients may be IVRs, rich-clients (JSF, Ajax), mobile applications, etc. It will be where Web 2.0 client support will go (for example, the ability to create mashups). It is also the component that renders the view to the consumer.
This ABB is responsible for integrating the client with the rest of the Consumer Layer. It accepts client-specific information and separates client-specific standards from the rest of the Consumer Layer, transforming data into formats that the rest of the Consumer Layer understands.
This ABB is responsible for handling the orchestration, decomposition, and composition of the view rendered by the client. It uses the Presentation Flow Manager ABB, Composite View ABB, and other ABBs to create the view and to submit requests to retrieve data from other layers in the SOA RA.
This ABB is responsible for supporting navigation and control flow in the Consumer Layer. It is an important part in the assemblage of a view component to send back and render in the client.
This ABB is responsible for assembling data received from various services and creates a composite view which is orchestrated and then passed on to the client for rendering.
This ABB is responsible for supporting the personalization of the interface and the presentation to a particular consumer’s wants and needs. It will be used both by the Client ABB and Presentation Controller ABB. It can be used for controlling individual consumer features or the creation of profiles based on roles.
This ABB allows users to customize the appearance of the user interface according to personal preferences. The customization is accomplished partly through administrative set-up, which defines the default settings and access rights to user interfaces/web pages. It supports both:
See Integration Controller ABB in the Integration Layer.
See Data Transformer ABB in the Integration Layer.
This ABB is responsible for supporting the scalability of the layer and supporting the caching of interaction data to improve performance.
See Policy Manager ABB in the Governance Layer.
See Access Controller ABB in the Quality of Service Layer.
See Data Repository ABB in the Information Layer.
The ABBs in the Consumer Layer can be thought of as being logically partitioned into categories which support:
Ability to support presentation, the creation of composite views and presentation control, content composition and decomposition, and the consumer-centric configuration of views
ABBs in the Consumer Layer
In the Consumer Layer, there is a logical partitioning between integration with the consumer, integration with the services components of the SOA, integration with some of the cross-cutting SOA layers (information and QoS), and the functionality for the creation of service invocations (requests) to the SOA and composing the returned and cached content to the consumer. Consumers can be human or system. The scenarios below illustrate usage of the Consumer Layer. The first scenario shows the interaction with human service consumers initiating the interaction with the SOA. The second scenario shows the interaction with systematic (non-human) service consumers initiating the interaction with the SOA. It is important to note that practically there is no real difference between human and non-human actors – they all represent interactions with the SOA. The extent of differences between the two scenarios really is driven by the nature of the interaction and the channel, and is thus very solution-specific. These examples have been provided as illustrative examples. The third scenario is a multi-channel scenario illustrating a typical environment involving both human and other actors. As it shows, the Consumer Layer provides the separation of concerns to enable the SOA to have maximum re-usability and agility, leveraging the core services in the Integration Layer and Business Process Layer and the capabilities of the rest of the SOA.
Interaction of a Human Service Consumer with the SOA via the Consumer Layer
Interaction of a Systematic (Non-Human) Service Consumer with the SOA via the Consumer Layer
A Typical SOA Usage Scenario with Multiple Consumers using Multiple Channels
A Typical SOA Usage Scenario with Multiple Consumers using Multiple Channels shows multiple entry points (consumers) making requests using multiple clients. Each channel has a unique platform/client and needs to be integrated using specific instantiations of the presentation adapter (which is why we show multiple instances of the ABBs).
The Consumer Layer relies on 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:
It relies on the Information Layer for the following capabilities:
It relies on the Integration Layer for the following capabilities:
Key Interactions of the Consumer Layer with Cross-Cutting Layers
Therefore, the Consumer Layer interfaces with the following ABBs of cross-cutting layers of the architecture to provide its capabilities:
Within the Consumer Layer, the client/channel primarily interacts with the Consumer Profile Manager ABB and the Presentation Controller ABB and also contains configuration information for the other ABBs in the Consumer Layer. The Presentation Controller ABB interacts with the Integration Controller to provide support for the interaction of the services in the Services Layer being used by the consumer. In addition, the Presentation Controller ABB may work with the Data Transformer to map data from native formats offered from the existing operational systems in the services to the formats needed to support the client/channel. Consumers interact with the Service Registry and Service Repository to get the service description information needed to support the interaction with the service.
Key Interactions of the Consumer Layer with Horizontal Layers
This layer provides the SOA with a point of integration between consumer requests and the underlying SOA. It separates dependencies from how the services are implemented and what the consumers are. Standards such as WSRP enable web service integration, encapsulating users, and letting different SOA solutions be used. The architecture lets organizations and industry organizations maintain consistent standards and common implementations.