SOA Tips-Evolving Global Collaborations – Version Number Message Wrappers
08 May 2007SOA-Tips
In wire-centric integration for global collaborations, your Information model evolves over time. XML Schema and WSDL help you document those changes over time, and at any point in time, they help you validate your information model at that period in time.
Explicitly add a version number attribute to the first element of both the request and the response message wrapper.
This will ensure the Message Exchange Pattern (MEP) and the schema of the exchanged messages evolve in tandem.
Over the years so much has been said about evolution and there are tomes of literature on the subject if you look around. Every organization has come up with their own solution to evolve their schemas and WSDLs based on a combination of facilities for evolution provided in the XML Schema specification, and their internal policies. Without over-simplifying the complexities involved in providing for versioning your information model, it is safe to say that adding a version number attribute to the first element of both the request and response message wrappers will allow you to have complete control over how to evolve your Message Exchange Patterns over time.
Assuming you have this simple mechanism in place, you have multiple approaches over how to evolve your collaborations over time. For one, as soon as the service receives the message, the whole message is not parsed, but an XPath query is executed on the message that looks for the value of the version number attribute of the first element of the message. Based on the version number, the message can now be routed to the appropriate version of the collaboration that can handle the message. I will, however, leave this topic for a more in-depth article on Evolving Service Collaborations for Wire-Centric Integration in the near future.