An Example of Composition in practice
Figure 2. Composition in an order processing system
In building these Web services, the developers use WSDL and related documents to describe their business interface. These WSDL documents describe the set of messages the customer and supplier Web services will process, e.g. the SubmitPurchaseOrder (SubmitPO) message that flows from the customer to the supplier. This is shown in the top of Figure 2. Once the core pieces of the application are in place, the developers can then decide to support an additional capability, for example, here they decide to make the order processing transacted. To do this, they compose the following elements into the existing structure:
- The services associate WS-Policy documents describing their support for transactions to their WSDL description of their services. Note that these policy statements augment but do not fundamentally alter the existing business functionality.
- To support transacted processing, the services add an additional message element describing the transactions that composes with, but does not fundamentally alter, the existing application messages.
- When the supplier service receives messages that contain the transaction element, it uses this information to communicate with a designated Web service called a coordinator that supports the transaction function. Again, this additional Web service merely adds to the solution and does not require modification to the description of the existing business functionality.
- Finally, the services may implement additional operations to support integration with the transaction coordinator service.
- Adding the new functions can be done independently of adding other functions.
- Adding the function does not disrupt the existing messages, message processing logic or WSDL.
In the preceding figure these additional elements are highlighted.
The model is incremental and composable because:
Composability is an increasingly important design principle, yet the approach is not always well understood. While the individual Web service specifications define how individual elements and services interoperate, this white paper is intended to provide an overview of how the collection of specifications can be composed to provide more sophisticated interoperable Web services.