The idea of a Model Driven Transfromation is very simple. Instead of trying to transform directly from the source message to the target output message, you use the source message to populate a Java Object Model that represents the data in your message (your data model) and from that Object Model you use a templating engine (FreeMarker is really nice for this) to generate the required output.
So basically, instead of transforming as follows:
You instead transform in 3 steps:
The advantages of this are numerous:
- Simplified transformations.
- More loosely coupled transformations (source and target can vary independently).
- Much easier to support multiple source formats for the same data (or multiple target formats - or both!!).
See the model-driven-basic tutorial.