Return to Home Page

The public review of the manuscript for "SOA Design Patterns" has concluded !
Thank you to all that participated. 234 reviews were received and over 30 new patterns have been contributed,
increasing the size of this book by over 50%. The second draft of the manuscript is currently in development.

About the Public Review
    History
    Podcasts (audio)
    Notification
    Submit Feedback
    Contribute a Proven Pattern
    Contribute a Candidate Pattern
    Acknowledgements
    Press Release

Introduction to SOA Types & Design Patterns
    The Architecture of
Service-Orientation
    Understanding SOA
Design Patterns

SOA Design Patterns
    Basic Service Inventory Design Pattern Language
    Architectural Design Patterns
    Basic Service Design
Pattern Language
    Service Design Patterns
    Common Compound
Design Patterns

Additional Resources
    View Entire TOC
    Symbol Legend
    Master Pattern List
(by category)
    Candidate Design Patterns
    Design Patterns Publications
    Download SOA Principles Poster (PDF)

About the Book



SOA Design Patterns
by Thomas Erl

For more information visit: www.soapatterns.com

Related Publications


Read the article "Introducing SOA Design Patterns" from the
June 2008 SOA World Magazine (High-Res PDF).

PLEASE NOTE

The content on this page is from the first draft of the manuscript for the upcoming book "SOA Design Patterns" by Thomas Erl. This version of the manuscript was authored in September, 2007. Since then, the manuscript has undergone significant content and structural changes as a result of an industry-wide review in which hundreds of SOA practitioners participated in addition to SOA vendors and experts from the design patterns community.

You are welcome to use the information on this page for research purposes, but you should assume that most of it will change in the final release of the "SOA Design Patterns" book.

Note also, that as a result of an industry-wide call for participation from December 2007 to February 2008, over 30 new design patterns have been contributed to this book. As they become finalized and are incorporated by the author, concise descriptions will be published on this site, and full descriptions with examples will be made available in the final, printed book.

Due to the volume of new content and changes, the release of the "SOA Design Patterns" book has been postponed to October, 2008. To learn more about the book, visit www.soapatterns.com. To be notified of updates to this site, use the notification form.

Chapter 7: Basic Service Design Pattern Language

Home > Chapter 7 Overview > 7.3 Service Definition Design Patterns > Capability Composition
Capability Composition

Capability Composition

How can a service capability be used to solve a problem that requires logic outside of the service boundary?

Problem

The service logic encapsulated by a capability may not be able to fulfill all of the capabilityÕs requirements. Adding the outstanding logic to the service will compromise the integrity of its context and risk service denormalization.

Solution

The capability logic composes capabilities from other services.

Application

The functionality encapsulated by a capability includes logic that can invoke other capabilities from other services.

Impacts

Carrying out composition logic requires external invocation, which adds performance overhead and decreases service autonomy.

Principles

All

Architecture

Inventory, Composition, Service

Table 7.7 – Profile summary for the Capability Composition pattern.

Problem

Although the nature of a capability may be in alignment with a serviceÕs overall functional context, the logic required to carry out the capability may need to go beyond the designated service context boundary.

The service boundary could be increased, but this would change its original context and further introduces the danger of functional overlap and service denormalization (because the expanded boundary could infringe on the functional boundaries of other services).

Solution

If, to carry out the logic within a service capability, it is required that the capability execute logic outside of the serviceÕs functional boundary, then that is only carried out through the invocation and composition of a capability within whatever service is responsible for that functional boundary.

Figure 7.25 –The individual capabilities of services can be aggregated to collectively help solve the large problem from which they were originally derived.

Application

This pattern is applied throughout a service delivery lifecycle. For example:

     During the service modeling phase composition candidates are assembled, to define conceptual aggregates comprised of individually composed capability candidates.

     The service design process requires that the functional processing requirements of a service capability be analyzed so as to identify the potential involvement of capabilities.

     When in development, distributed invocation logic may need to be embedded within the capability routines, especially when required to access capabilities residing in other physical services.

Note that if an external body of logic is defined for which no service capability yet exists, then that logic needs to be created as part of the new capability (not as part of the existing capability).

Impacts

When capabilities are distributed across numerous services, some of which may reside in remote locations, cross-service capability invocation can impose measurable runtime performance overhead.

Also, the overall service autonomy is reduced due to the fact that its capability is dependent on another service. Furthermore requiring that a new capability be created when the required external logic does not exist can lead to unexpected scope increases in service delivery projects.

Relationships

Because service-oriented computing is a distributed computing platform, it is fully expected that a solution is comprised of parts that are aggregated together (which is why this pattern has a close relationship with Agnostic Capability).

However, the Capability Composition pattern does more than just enable service aggregation. It ensures that the key Service Normalization and Logic Centralization design patterns are fully supported by requiring external service invocation through service boundary enforcement.

It is also important that this pattern be viewed as a step toward what services and their supporting architectures must ultimately realize: Capability Recomposition.

Figure 7.26 – The Capability Composition pattern represents the ability for services to be composed, but not necessarily repeatedly.

Case study example

Case study content is not available on this Web site.

Prev | Next
The Prentice Hall Service-Oriented Computing Series from Thomas Erl
Home    SOA Books    SOA Magazine    What is SOA?    SOA Principles    SOA Methodology    SOA Glossary Copyright © 2007-2008
SOA Systems Inc.