VoiceObjects Implementation Analysis
Friday, July 29th, 2011So, your VoiceObjects project has grown considerable from a humble start, new Modules are added on a daily basis, and you’re getting close to the user acceptance testing or going live date? At this point, you might want to do a few sanity checks on your VoiceObjects implementation, for example to verify consistency and completeness in event handling, tuning, and several settings that have an impact on reporting.
Now, going through your project object, opening and clicking your way through each object is of course a little cumbersome, to say the least. What if you could create simple, nifty call flow implementation reports with concise, easy-to-check lists, by just clicking a button?
“Wait!”, I hear you say, “VoiceObjects generates highly configurable, comprehensive, fully hyperlinked PDF documentation based on your applications. Why not use that?” And the answer is: Yes, please do! That documentation can indeed be customized to a high degree and is a great tool for checking the implementation. However, what I’m after here is much more focused, and will provide documents that provide one simple checklist or table at a time.
The solution that I am presenting here is based on the fact that VoiceObjects projects can be exported to VoiceObjectsXML (which is an XML format), and on XSL transformations (XSLT). All you need is a text editor (to edit XML documents) and a web browser. You’ll find sample code for download down below.
To get started, let’s focus on a simple task:
- We want to get a sorted list of all Modules in your VoiceObjects application indicating whether the Enable History Tracking option is enabled or disabled (this option defines whether a Module will be part of the Module Sequence and Dominant Path Analysis reports in VoiceObjects Analyzer).
- The list should have two parts; first a sorted list of names of all Module with History Tracking enabled, then all Modules with that option disabled.
- The list should come as a simple HTML document that can be printed for documentation purposes, or copied and pasted into the full project documentation that our client is so eagerly waiting for.
The idea is to create an XSL transformation that takes the VoiceObjectsXML export file, parses it, filters out the data we’re interested in, and displays it in HTML. This is the XSL document that will do the trick:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:template match="/VoiceObjectsXML">
<html>
<head>
<title>VoiceObjects Implementation Report</title>
</head>
<body>
<h2>History Tracking <em>Enabled</em></h2>
<ul>
<xsl:for-each select="module[@historyTracking='true']">
<xsl:sort select="@name"/>
<li><xsl:value-of select="@name"/></li>
</xsl:for-each>
</ul>
<h2>History Tracking <em>Disabled</em></h2>
<ul>
<xsl:for-each select="module[@historyTracking='false']">
<xsl:sort select="@name" />
<li><xsl:value-of select="@name"/></li>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
If you have used the XPath query language before, this document will be an open book for you. XSL uses XPath expressions to browse through documents, filter for nodes with certain attributes, do sorting, and much more. What our sample XSL does is
- locate the root <VoiceObjectsXML> node that every VoiceObjects project export file starts with;
- generate a HTML header and some headlines;
- iterate over all Modules in the VoiceObjectsXML document (node name: <module>), first selecting only those with the attribute historyTracking=’true’;
- within each list, sort by and display the Module name (which is an attribute of the <module> element).
Now, we still need to know how to apply this XSL transformation to an existing project export file. Easy:
- Save your XSL transformation file in the same folder as your project export file. Let’s say you stored it under the name myTransformation.xsl.
- Now, open your VoiceObjects export file in a text editor, and insert a new line (referencing your xsl stylesheet) right after the first line:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="myTransformation.xsl" type="text/xsl" ?> <VoiceObjectsXML version="10.0"> ... </VoiceObjectsXML>
- Save and close.
- Now, open that export file in your favorite web browser.
This is the result, when applied to the Prime Telecom sample application:
History Tracking Enabled
History Tracking Disabled
|
Obviously, this concept can be applied to a wide variety of checklist requirements. In the sample XSLT document that we provide in the link below, you will see how to generate comprehensive, ultra-focused overviews of …
- … Layer objects that have “Layer State Logging” enabled / disabled, making sure that Business Analysts looking at the Personalization (or “Layer Usage Overview“) reports in VoiceObjects Analyzer will only be presented with Layer State reports that make actual business sense;
- … all Tuning Parameters set on all dialog component objects;
- … all Event Handlers, so as to verify consistency of all Event Handling implemented in your project and to check whether the Finish Task option was properly set on each Event Handler (which in turn is required for consistent reporting on Business Tasks);
- … Input States with “Mask Caller Input” enabled / disabled (this is a feature that allows to mark Input objects as dealing with sensitive input such as credit card numbers or PINs)
- … Menu objects and their menu items, to verify whether Menu options such as the Auto-Numbering, Return to the menu after subdialog processing, and others are properly set.
There’s of course many, many more report and checklists that you can generate this way. It’s a great technique to quickly check any aspect of your VoiceObjects implementation for accuracy, completeness and consistency.
And finally, here’s the download link promised earlier: VO_XSLT_Checklists.zip Extract this archive to some folder, then open PrimeTelecom.xml in a web browser (I’m using Firefox). It will display a series of sample checklists and tables. The XSLT document, VOanalysis.xsl, that is used here should be a good starting point for your own endeavors.




