Rule-based message transformation for Development for National Grid Plc.
The Challenge
Replace a large number of complex, hand-coded transformations between two core message models with a single generic rule-based solution.
Description
The architecture I created for National Grid’s Enterprise Application Integration scheme was based on a Common Message Model (CMM), with “adapters” transforming this where required to and from any proprietary integration format supported by individual systems.
The system at the centre of the scheme, the MIMS/Ellipse asset and work management system, offered a well-defined message-based integration point, but used a highly proprietary format etXML. As this was not suitable for use directly as a CMM, there was a need to transform between etXML and the chosen CMM. To further complicate matters the transformation would be different depending on the content of the message (e.g. asset change vs work order).
Initially these transformations were hand-coded. This was a fiddly, lengthy and error-prone process. I suggested that it might be worth investing in a more generic and data-driven solution, but the vendors of Ellipse were initially unwilling to believe that this would be practically possible.
I was convinced it should be straightforward, and quickly developed a working prototype for such a rule-based “transformation engine”. The initial prototype used .NET for speed, and I then re-wrote it in Java. At that point the solution was adopted by the vendor, doing away with a very large number of complex hand-coded transformations.
Outcomes
Working solution adopted into the production system
Timescale
Approx 2005
Current Status
Maintained as a key component of the NG integration architecture for many years
Tools and Technologies
Technologies: VB.Net, Java (JAXB and JAXC), SeeBeyond, Ellipse
Tools: Visual Studio, Eclipse
Abstract
I developed a rule-based “transformation engine” which transforms between the two models, doing away with a very large number of complex hand-coded transformations.