Data Services in SOA: Issues and Possible Solutions
WSO2 released last summer a Data Services Framework as part of their Web Services Application Server (WSAS) to make it easier to create data services from SQL databases.
Last week, David Webber wrote an article about the OASIS Content Assembly Mechanism (CAM) specification and its relation to data services. While most people give up on defining an XML Schema definition to validate the result of queries, CAM provides template that allow for the definition of validation data services for XML-based transactions. Dave adds:
While existing techniques using W3C XSD schema, namespaces, XSLT and other tools (such as Schematron and XMLBeans) have been in existence for some time, they provide more developer-centric and potentially brittle design options. [Traditional Schema mechanisms are] not necessarily helpful for agile information interfaces that need to respond to business context criteria.
CAM is able to define a message structure without using XML Schema. An additional feature of CAM platform is that it supplies mechanisms that facilitate service versioning and reuse. Dave explains:
Many insights can be gained by studying the well-established AWS platform that has been available now for over three years...Amazon is continually making changes to the content model, and as a result they support version requests going back several years...Amazon uses a self-service versioning approach where the version ID of the request is included in the syntax of the request itself.
The problem is compounded by the wide range of products that Amazon sells:
Each product type has different information models (broadly shown in the diagram). A query for a range of product codes will return a block of XML with varying parts. Some of these structure nuances are substantial with XML element tags appearing in different blocks of the structure and with different associated elements. Not only that, but each item has information about prices, stock levels and downstream suppliers of new and used items in addition to Amazon.com itself and the ranking of those suppliers.
Dave's article features an analysis of the context drivers for Amazon services and concludes:
Clearly when you look at W3C schema and namespace mechanisms, none of these contextual behaviors are supported. All you see is the total layout of the overall structure that could occur.
Dave then describes CAM which is using a collection of XPath statements to describe flexible and context dependent document structures. CAM shares roots with UN/CEFACT Core Component Technical Specification, but unlike CCTS, CAM is operational today. The jCAM Java open source implementation of CAM provides three distinct deployment modes for typical interactions associated with an SOA, including Web services, B2B and standalone local modes. The Eclipse editor enables local standalone use of CAM templates in support of a SOA implementation.