[4/16/2006: Attachment is fixed. Turns out that the download gets confused if the first file in the zip is an XML file.]
I decided to write a set of XmlTransform extensions that retrieves configuration information from BizTalk Server 2006 using the ExplorerOM API and WMI. The code is attached and consists of the following:
- Foo.xml. This is a primer file for the main transformation. The transform pulls the actual source XML directly from BizTalk Server 2006 and likely violates a least one rule of XML Transforms (immutability).
- GroupReport.xslt. This transform generates the HTML report by connecting to and querying a BizTalk Server 2006 instance. Note that the bulk of the file HTML markup for the report, not fancy XSLT.
- NXSLT2.exe. An enhanced command-line transformation engine. This is an open source project that implements many advanced XSLT functionality. The original source can be found here; I modified the program to accomodate variables in the exsl:document tag.
- Quick.bat. A quickie batch file that runs XmlOps against the localhost server using the default management database. Output will be dumped to the directory "Quick" and IE will be automatically launched to view the results. Go ahead and double-click it.
- Readme.txt. Contains a few comments.
- XmlOps.bat. Batch file that wraps NXSLT2.exe and the transform. It is in charge of injecting the extension objects, handling transform parameters if supplied, and launching IE on the finished docs.
- XmlOps.dll. Contains extension objects and support code.
- Inc. This subdirectory contains all of the fancy pics used by the HTML docs. I am not an artist but I can copy icons from the Visual Studio 2005 icon collection. The stoat pic is from the wild (and no stoats were harmed in the writing of this code).
The functionality provided by this drop includes:
- Support of general WMI queries and method invocation for any WMI objects. I have not included any example XSLT for this functionality in this drop (one of the samples saves a suspended message to disk and then terminates it -- a little too dangerous for now).
- XML equivalent information for most of the BizTalk Server objects found on the BizTalk Server Management Console. Notable exceptions are rules, BAS/BAM artifacts, and funky binary resources (that are not maps/orchestrations/schemas/etc).
- Detailed information about the servers hosting BizTalk instances. This is done using WMI because it contains more detailed information than the ExplorerOM API. WMI is also used for host info and potentially a few other object types.
- Some information is yanked out of project assemblies. This can be controlled via a method call and may be enhanced in the future.
Some of the enhancements in the hopper include:
- Support for creating, updating and deleting BizTalk Server 2006 objects including hosts, ports, receive locations and other objects through XSLT. The idea here is that you could write a transform that created 200 very similar file receive locations by writing only a few lines of XSL.
- Example transforms that do different Useful Things. One example is verifying that all file receive location directories actually exist; those that are missing will be created. Another example is a "configuration checker" that validates a BizTalk Server installation (I am really interested in this one).
- Ability to pull Rule (higher priority) and BAM/BAS information (lower priority). BAM/BAS will take a some ramp-up time.
I hope to post more details on the highlights of this project including a few observations on where the ExplorerOM API is lacking, but I wanted to throw what I have out there for comment.