SOA Reference Architecture – Consumer Layer

 

Overview

Context and Typical Flow

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).

Capabilities

There are multiple categories of capabilities that the Consumer Layer needs to support in the SOA RA. These categories are:

  • Consumer Services: This category of capabilities addresses the support of interaction with consumers.
  • Presentation Services: This category of capabilities addresses the support of presentation services, which include a presentation, composite view and presentation control, and the consumer-centric configuration of views.
  • Backend Integration: This category of capabilities addresses the integration of the Consumer Layer with backend and legacy systems using SOA and services and transforms their information and incorporates it into content.
  • Caching and Streaming Content: This category of capabilities addresses the support of information buffering and performance, and supports the operation of the Consumer Layer.
  • Security and Privacy: Capabilities that address the support of QoS, information protection, and security.
  • Information Access: This category of capabilities addresses the sharing of data and metadata across the layers of the SOA RA such as QoS attributes, attributes defining common rules to be used across the layers, etc.

This layer features the following capabilities:

Consumer Services

  1. Ability to consume (use) the SOA, through a program or an individual who requests a service
  2. Ability to support consumer interaction and integration; i.e., the ability to capture the input from the user (consumer) of the SOA and provide the response to the consumer

Presentation Services

  1. Ability to support the creation of a presentation view by the composition of a number of atomic components
  2. Ability to configure information which will support specific capabilities associated with ensuring consistency (similar to a style guide)
  3. Ability to provide navigation logic and flow for the processing of consumer interactions (presentation control)
  4. Ability to provide the Consumer Layer with the ability to support customer-specific information (enabled by the Information Layer) and personalization and customer-specific preferences to be used by the presentation controller for navigation and content presentation purposes
  5. Ability to configure components in the Consumer Layer based on consumer request scenarios

Backend Integration

  1. Ability to mediate services from other SOA layers such as the Business Process Layer and the Integration Layer into the Consumer Layer; it provides the ability to integrate the underlying SOA into the Consumer Layer
  2. Ability to support the translation of input data/content from a format supported by the user of the SOA to a format required by the other layers of the SOA and to convert content returned from them into a user acceptable response format

Caching and Streaming Content

  1. Ability includes the handling of streaming content
  2. Ability to cache interaction data to improve performance and quality

Security and Privacy

  1. Ability to provide access to authentication/authorization capabilities (enabled through policies) to be used by the presentation controller to allow/prevent what content can be presented to the consumer
  2. Ability to filter to control access to the underlying SOA
  3. Ability to monitor the usage of the Consumer Layer components

Information Access

  1. Ability to access data and metadata through the Information Layer

Architecture Building Blocks (ABBs)

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

Details of ABBs and Supported Capabilities

Details of ABBs

This section describes each of the ABBs in the Consumer Layer in terms of their responsibilities.

Consumer

This ABB is the individual consumer (actor) that uses the services supported by the SOA RA. The consumer can be human or a system.

Client (aka Channel)

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:

  • What data is provided?
  • What will be the format?
  • What will be the interaction?

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.

Presentation Adapter

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.

Presentation Controller

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.

Presentation Flow Manager

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.

Composite View

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.

Consumer/User Profile Manager

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.

Personalization Manager

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:

  • Rule-based personalization to select content for the user such as a rule might display special discounts to gold customers, but only during the summer months
  • Collaborative filtering technology-based personalization to select content based on common interests or behaviors

Integration Layer: Integration Controller

See Integration Controller ABB in the Integration Layer.

Integration Layer: Data Transformer

See Data Transformer ABB in the Integration Layer.

Cache

This ABB is responsible for supporting the scalability of the layer and supporting the caching of interaction data to improve performance.

Governance Layer: Policy Manager

See Policy Manager ABB in the Governance Layer.

Quality of Service Layer: Access Controller

See Access Controller ABB in the Quality of Service Layer.

Information Layer: Data Repository

See Data Repository ABB in the Information Layer.

Structural Overview of the Layer

The ABBs in the Consumer Layer can be thought of as being logically partitioned into categories which support:

  • Ability to support the interaction of the SOA with consumers

Ability to support presentation, the creation of composite views and presentation control, content composition and decomposition, and the consumer-centric configuration of views

  • Ability to integrate information from services from the SOA and transform their information and incorporate it into content (Content here refers to any information returned to the consumer. This can be text, images, data, etc. What it physically is, is very solution-specific and will also vary based on the kind of consumer.)
  • Ability to support information buffering and performance, and support the operation of the Consumer Layer
  • Ability to support QoS, information protection, and security
  • Ability to address the sharing of metadata across the layers of the SOA RA

ABBs in the Consumer Layer

Inter-Relationships between the ABBs

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).

Significant Intersection Points with other Layers

Interaction with Cross-Cutting Layers

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:

  • Ability to store metadata for policies

It relies on the Quality of Service Layer for the following capabilities:

  • Ability to authenticate/authorize for service invocation

It relies on the Information Layer for the following capabilities:

  • Ability to store and retrieve metadata and data

It relies on the Integration Layer for the following capabilities:

  • Ability to invoke business processes and/or services
  • Ability to transform data from one format to another

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:

  • It leverages the Access Controller ABB and Policy Enforcer ABBs in the Quality of Service Layer to enforce access control privileges and other policies.
  • It leverages the Data Aggregator ABB, Data Federator ABB, Data Consolidator ABB, Information Metadata Manager ABB, and Data Repository ABB from the Information Layer to store and assess data.
  • It interfaces with the Integration Controller ABB to leverage the capabilities of the Integration Layer such as data transformation, service request, etc. It leverages the Mediator ABB in the Integration Layer to integrate with existing systems and applications. It leverages the Data Transformer ABB in the Integration Layer to transform data from one format to other. It leverages the Event Producer ABB and Event Listener ABB in the Integration Layer to publish events or subscribe to events.

Interaction with Horizontal Layers

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

Usage Implications and Guidance

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.