Smooks (for Mule)30.09.2008 by ior
Smooks is an open-source structured data transformation tool written in Java. The product is quite refresh (1.0 just released) and the only reference so far is the Swedish Railway (SJ). They have been using JBoss ESB as integration service (dev since 2006, anything operational yet?) and are doing all transformations using Smooks.
Smooks can be used to:
- Perform a wide range of Data Transforms – XML to XML, CSV to XML, EDI to XML, XML to EDI, XML to CSV, Java to XML, Java to EDI, Java to CSV, Java to Java, XML to Java, EDI to Java etc.
- Populate a Java Object Model from a data source (CSV, EDI, XML, Java etc). Populated object models can be used as a transformation result itself, or can be used by (e.g.) Templating resources for generating XML or other character based results. Also supports Virtual Object Models (Maps and Lists of typed data), which can be used by EL and Templating functionality.
- Process huge messages (GBs) – Split, Transform and Route message fragments to JMS, File, Database etc destinations.
- Enrich a message with data from a Database, or other Datasources.
- Perform Extract Transform Load (ETL) operations by leveraging Smooks’ Transformation, Routing and Persistence functionality
Smooks supports both DOM and SAX processing models, but adds a more “code friendly” layer on top of them. It allows you to plug in your own “ContentHandler” implementations (written in Java or Groovy), or reuse the many existing handlers.
The beef of Smooks is Fragment based Data Processing: selectors are used to define the interesting parts of the source (XML or non-XML) messages which are then processed using existing scripting and processing techniques like XSLT, Java code or Groovy.