On a recent client engagement I was asked on my opinions on using mapping tools for XSLT generation. Personally I tend to handcraft most things, although I have used tools for quick generation for example when working in BizTalk.

The question drove up some interesting responses from our internal practices on experiences with several tools across several client sites.

Altova MapForce ( http://www.altova.com/mapforce.html )

  • good for large graphical mappings
  • pretty flexible about letting you do pretty complex operations on mappings
  • Running a scenarios takes more extra clicks
  • You cannot apply a scenario to several files.
  • XSLT generated is verbose
  • No reverse engineering, so xslt overwritten when regenerating the map
  • There is also no way to correct stuff like.. the namespace has changed (maybe new version).. as far as it is concerned – it’s a completely different file and you have to start from scratch again

StylusXML ( http://www.stylusstudio.com/ )

  • you can run the translation with one of several engines Saxon, Xalan, MSXML, .NET system.xml
  • graphical mapping functionality (experience suggests this becomes limited as complexity increases)
  • a scenario has to be applied to each file being edited

OxygenXML

  • it runs on Windows, OS X, linux etc.
  • the licensing is per individual, not per machine (i.e. you as an individual can store it on several machines)
  • It also can run translation scenarios, where the XSLT engine (saxon, Xalan, but not Microsoft – out of the box) is part of the scenario set-up.
  • It highlights syntax errors in XSLT, just like spell-checkers. e.g. if you try to use a variable which has not been declared, you get the underline. It is the only product I know that does this.
  • scenarios, when set up can be applied to several files. This is handy , because if you are editing a source XML document (test values), and the actual XSLT, you can apply the same scenario (which source, which xsl, which parser, where to output) without having to set it up for each file you are working on.

Others

Other were tools discussed that were not relevant to my situation:

In summary these tools all provide some useful functionality to increase productivity when used in the right scenarios. However this does come with the usual compromise that auto generated code in effect has to be treated as compiled code, or just an initial starting point, unless you have literally 100s of elements to map.

In reality, manual code crafting enables you to make something far more efficient, resusable and extendible than what comes out of a mapper. If you take a bit of time to isolate out things that might change (i.e. parameterize stuff like namespaces that might change in your xpaths). Also mapping tools are should not take away from taking the time to learn the underlying xslt languages.

BizTalk Server 2009 was released end of April 2009. This tends to lead to  a natural  review of our internal handbooks and the utilities that complement our processes.

When approaching all BizTalk engagements we  initially consider the SOA Roadmap and development methodologies and test frameworks that support these approaches. The majority of the utilities/extensions mentioned here are available as open source, or free trial download, but rarely do I see these utilities combined. It is assumed that these are applied to the traditional base build of Windows, SQL Server, optional WSS and BizTalk.

WCF LOB Adapter SDK SP2 (http://www.microsoft.com/downloads/details.aspx?FamilyID=47AB6F21-0D8B-4C90-A8B9-E8647281B164&displaylang=en )

The LOB adapter pack has now been extended to support SQL Server and is worth considering when looking at using WCF bindings.

BizTalk Adapter Pack 2.0 (http://www.microsoft.com/downloads/details.aspx?FamilyID=76736ba7-3c05-4436-9353-1c33f9005194&displaylang=en ).

This is a 120 day evaluation extending the WCF LOB Adapter SDK, to enable the auto generation of schemas and ports for the additional new bindings. There is an additional cost for this pack, depending on the licence model of your client.

Nunit 2.5  (http://www.nunit.org/index.php?p=download ).

Still popular with clients and used  to manage BizUnit test cases. The more traditional option is mstest, but useful to include for completeness.

BizUnit 2.3  (http://bizunit.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=9001#DownloadId=23581 )  or 3.0 (http://bizunit.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=20013)

BizUnit is an excellent declarative test framework for managing test cases and for generation of automated regression test packs. The newer release 3.0.x.x has additional feature support. Some clients like to make use of the excellent BizUnit Designer, which provides a UI for test case generation over editing raw XML. This is useful for early adopters, helping with understanding of what features are initially available in the framework.

Microsoft BizTalk LoadGen 2007 (http://www.microsoft.com/downloads/details.aspx?FamilyID=c8af583f-7044-48db-b7b9-969072df1689&DisplayLang=en)

An additional tool to coordinate the execution of performance and stress tests.

BizUnit Designer 1.4 (http://bud.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=12968#DownloadId=33409) used with BizUnit 2.3

 A useful tool providing a UI to assist with the initial creation of test cases.

BizTalk Deployment Framework  (http://biztalkdeployment.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=17826#DownloadId=54972 )

This is a must for any development team. Having used the older framework extensively, the new features support msbuild projects over nant. This is a real time saver when managing complex build and deploys.

HTMLHelp.exe ( http://www.microsoft.com/downloads/details.aspx?FamilyID=00535334-c8a6-452f-9aa0-d597d16580cc&displaylang=en )

A Pre-requisite for the HTML output of the following orchestration profiler/documentor

BizTalk Orchestration Profiler 1.1.1 ( http://biztalkorcprofiler.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=6375#DownloadId=17235 )

An excellent tool for verification of code coverage of orchestrations in BizTalk. Generation of a help file analysing orchestration performance. Used during test cycles for verification of regression test packs coverage.

BizTalk Documentor v3.2 (http://biztalkdocumenter.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=8689  )

A useful tool for documenting the configuration of a BizTalk implementation. Useful to include in the deployment and release cycles for configuration management issues and to share with support teams, to verify configurations.

BizTalk Server Best Practices Analyzer v1.2 ( http://www.microsoft.com/downloads/details.aspx?FamilyID=93d432fe-1370-4b6d-aaa8-a0c43c30f5ab&displaylang=en)

An essential tool for all client deployments to generate and understand compliance reports. The latest version supports BTS2006, 2006R2 and 2009.

MessageBoxViewer ( http://blogs.technet.com/jpierauc/pages/msgboxviewer.aspx)

An invaluable tool for querying and analysing system configurations, especially for warnings of potential performance issues. This is more of a dynamic analysis than best practices analyser.

 Each of the downloads provides excellent detail on how to use the individual utilities. These are the utilities that we use to support our SOA Development Methodology when implementing and supporting BizTalk Server implementations. They provide the basis for development, test and deployment frameworks.