After saving a mapping, for every future similar CSV subscriber file you need only open the existing project, select the Configuration tab in the source pane and change the source to the new CSV file. GoXML will apply the mappings to the new source data and you can save the results as another version of mailingListFinal.xml
suitable for import. In other words, after creating the transformation project, you no longer need developer time to handle the task. For simple tasks, GoXML even makes it possible to let non-developer staff create transformations.
In real-world scenarios, you're likely to have many of these transformations that have to run on a weekly, daily, or hourly basis. It's obviously unrealistic to expect your staff to keep up with these transactions manually; instead, you'd want to automate the transformations. For that, Xenos, GoXML's parent company, offers an enterprise product, called terminalONE Transform Server, which has an API and a runtime engine for automating all transformations. This enterprise version consists of three components: terminalONE transform, terminalONE transport and terminalONE traffic. By creating a few business rules for particular source data formats, terminalONE transform can perform real-time transforms of almost any data format into any other data format you need.
Then, terminalONE transport acts as a gateway enabling secure point-to-point data exchange between disparate systems, whether in your network or across networks in a B2B environment making terminalONE a true enterprise solution.
With the final addition of terminalONE traffic, this enterprise application routes your data transformations to the appropriate backoffice system based on the data type. If the received data is not in format defined in your business rules, terminalONE traffic requests a transformation from terminalONE transform, making it an intelligent application. Although a full examination of GoXML's enterprise-level product is beyond the scope of this review, if you need this level of automation, see the terminalONE components Web site.
Despite the simplicity of the mapping process that GoXML provides, you can't eradicate errors, especially in obsolete or non-standard data structures. To test GoXML's error-handling features, I ran the sample transform with a CSV file that was missing the first column header. When the missing header missing was not part of the transform, the Mapping tab display simply didn't display that name in the designer. But if the missing column header existed in the target as a node defined in a mapping, GoXML returns a Designer Error, notifying you that there was an error while mapping the source to the target, and to see the log (see Figure 7).
|Figure 7. Sample Error Message: The figure shows a sample GoXML error message generated from a mismatch between fields in the source data and the defined target mapping.|
Although the error message is sparse, the log entries tell you what mappings GoXML could not resolve. Each log entry includes the XPath-style route to the node that caused the problem, making it easy to hone in on the specific node. You can view the log at any time at the bottom of GoXML along with the Project and Help tabs, which you can see at the bottom of Figure 3
. In contrast to missing mapping columns, GoXML handles missing values in the source data by simply continuing the transform, leaving those node values blank in the target file.
When you know that empty values may occur, you can use the Trim option to tell GoXML to handle them using one of three options, called None, Child and All Nodes. With the None option the transform retains all empty tags. The Child option removes tags from the output if the node's children also have empty values, and the All Nodes option removes all nodes with empty output.
To further stress the sample transform, I removed the last name of one of the records in my source data, which you may remember was mapped to a function to define the target data. To my gratification, GoXML didn't throw an error, and the transform ended successfully. But when validating the source structure to the target results, instead of the last name element being empty, both the firstName and LastName elements contained the first name.
Though this didn't give me the opportunity to look into the missing data, GoXML handled the missing data cleanly and prevented any roadblocks in my transactions.
GoXML can be a very powerful tool in your IT shed when needed. With ambiguous or undefined flat text files, you have the ability to create a flat text schema document that defines your source data. With the Importer Wizard, you can define the actual fields in your document, split the records if they contain unrelated data combined in a single record, similar to normalizing a database, and even define new records. The quick guide included with your install walks you through such transformations step-by-step. Just as in this example, after defining a transform, running it only requires loading the project and specifying the source and output documents.
Not Just for Flat Files and XML
GoXML handles far more formats than CSV and XML, and transformations can work in either direction. Supported data types include flat text, CSV, XML and EDI which GoXML can transform to the likes of PDF, HL7, SQL and COBOL. And that's only half the data types available. It even handles the complexities of having multiple source files that you need to transform and merge into a single target document.
To transform to PDF, you will need Adobe Acrobat so you can create a target PDF, or a PDF template containing defined fields similar to the XML target that I used in the example. After defining the target PDF fields, GoXML compiles a new PDF file based on the name you supply using the mappings you created.
GoXML definitely fits into the family of what are called "visual" tools, changing data transformation from a code-centric programming task to a much simpler and less error-prone drag-and-drop process.
Still Room for Improvement
A quick final note: the help documentation, though relatively thorough, is a little cumbersome. When using search, clicking on a link in your results displays the requested page then seems to "step back" to your previous page. To work around the problem, clicking on the result link once more finally delivers the page requested.
The GUI can be a little slow if you aren't used to using Java UI's in a Windows environment. Where Windows usually provides an immediate response to mouse events, with GoXML you may find a slight delay, more so when accessing the local file system. But overall, the product is worth its weight in gold, especially when you include their online help and product training services. Granted, you lose the fun of coding, but that's more than offset by the significant reduction in your workload and production times. What's more, many transformations are easy enough that with a little training, the IT team can pass such tasks to other groups, spreading the work back across your enterprise.