Developing ColdFusion Charts

My significant technological experience took place at my Graduate Research Assistantship working for the Director of Web Services for the Dean's Office in the College of Arts & Sciences (CAS). One of the responsibilities of the Dean's Office is to produce charts from the budget numbers for each department and division, as well as for the CAS itself. These static charts were previously manually produced each August, after the close of the fiscal year and placed on the web server. Because the process of producing these static charts was so laborious, it was only done once each year. There was no way for the heads of the units to see data as it changed throughout the year.

The task I was charged with was devising a way to generate these charts dynamically in such a way that the database could be updated with new data that was instantly reflected in the charts. This way the data is always up-to-date.

The first part of this task was to select an application development environment that had dynamic chart generation capability. Macromedia ColdFusion was selected both because it has great charting functionality and because the office already had a copy. While working at Macromedia several years earlier, I had done some basic testing of the interaction between the application I was working on (Flash components) and ColdFusion, but that was using code I was given by the ColdFusion team. Basically, I was learning ColdFusion from scratch.

All major CAS pages are based on the same template, but within that template, I needed to design a User Interface, something with which I had very little experience. My supervisor and I went through several iterations before settling on the current interface. Our user group is mainly administrators who are not necessarily very web-savvy. I tried to keep the interface clean, simple and very self-explanatory, with little extraneous information.

Once a basic interface had been developed, I began studying the data. It was important that I had a deep understanding of the data before I began coding to make sure that the charts that were generated were correct. I studied all of the pre-existing queries and wrote new ones to generate the specific data we needed in the format that would work for the chart generation.

Finally, I wrote the ColdFusion code to generate the charts. Here we ran into several problems. First, the database connection would frequently time-out. After several days of research, the problem turned out to be that Access databases don't handle the multiple connections of ColdFusion very well. The only option I was presented with by the tech support people was to switch from an Access database to SQL Server or Oracle. This was definitely not an option. I was able to reduce the number of queries, thus reducing the number of connections, by rewriting all of the queries to return the data slightly differently. Rather than being returned in a table format, it was returned as a simple list. This had serious repercussions for the design of the pages.

Because the data was now in one long list, the code to generate the charts was significantly more complicated. Not every chart for every unit (department, division or college) had complete data; there were years that were missing data. Each of the 13 different types of charts had data of different types. Eventually, after much experimentation and trial and error, correct queries were developed and the displays were all working.

This experience presented me with many new challenges. First, I was learning an entirely new technology, ColdFusion. Second, designing a User Interface, especially for novice computer users, was something I had never done before and something about which I knew very little. Finally, the compatibility issues between Access and ColdFusion presented technical challenges that required a creative solution.

The CAS time series charts can be viewed by selecting a unit from the list at:
http://www.artsci.washington.edu/services/data/

   
    brolland *at* u.washington.edu