![]() |
Outline of DMC Domains |
I've lost count of how many outliners I've developed. My first outliner - Think Tank - was primarily a writing tool. MORE used outlining for making presentations and some of it's most important features live on in PowerPoint today. More recently, I developed Stat Ref and used outlining to organize libraries of textbooks, first on CD-ROM then on the Internet.
So it seemed natural to put outlining into the Determina Management Console (DMC) for managing Domains. DMC Domains are a lot like Windows Domains. Any Domain can have users, servers, desktops, permissions and configuration parameters. In DMC the configuration parameters, known as Configuration Sets determine how the servers and desktops are protected against a comprehensive set of vulnerabilities.
DMC is web-based. The server-based application is written in Java plus Struts plus MySQL running on Tomcat. The client-side code is written in JavaScript, using XML-HTTP, CSS and the browser DOM. It's been tested on IE 7, Firefox and IE 6 but not Safari. Now that Safari runs on Windows, we'll probably see more of it in the enterprise world.
![]() |
Outline with a bar chart in the headlines |
Early on, I used an architecture in which the HTTP requests returned XML and XSL-T in the browser to transform the XML into HTML. After struggling mightily with that, my friend Chris Meisl suggested that I just make the server return HTML. Not as elegant, but easier. The biggest challenges involved cross-linking from DMC reports back to the outliner. Reports often have lists of servers and desktops that are hyperlinks. When a user clicks one of these links the outline must be expanded an arbitrary depth showing the server or desktop in the hierarchy.
To implement this, I had to create a queue of HTTP requests and dish them off to the server synchronously, expanding another level as each one returned. If I could redo this code, I would just pass the queue to the server in a single request get back the HTML for all outline levels at once. Then I could ditch all the synchronizing code which was really difficult to debug. I developed a novel tool for debugging HTTP requests in AJAX, but I'll describe that some other time.
Other challenges came from working in JavaScript. As many developers will attest, it's just not a robust or object-oriented.. Without a doubt, AJAX in JavaScript has powered the Web 2.0 revolution. Web-based user interfaces have advanced in a remarkable way. I wonder if we'll start running up against the limits of JavaScript and if the browser vendors will eventually offer something better for implementing client-side richness.








Comments