| By Michael Markowski | Article Rating: |
|
| June 9, 2006 04:00 PM EDT | Reads: |
14,571 |
Let me begin by saying that I don't consider myself a ColdFusion expert. In fact, I didn't even write my first ColdFusion application until 2004. Nevertheless, ColdFusion MX 7 still has made me a "hero" (as Simon would put it) at the office, and this is how it happened.
I am a Webmaster for the Air Protection Division, Environmental Protection Agency (EPA), Region 3, in Philadelphia. In June 2004 I wrote my first ColdFusion application in ColdFusion 5, which was the only version of the ColdFusion server available to me then. A Microsoft Access database served as the back end for this application. The application, which was deployed on my organization's intranet, was named the "Air Salient Issues ColdFusion Application (ASICA)." I know, I know, that's a very long, complicated name for a ColdFusion application, but this application's purpose was simple: store and facilitate access to my division's "salient issues." Salient issues are brief (one page) text descriptions of our most significant program activities, issues, events, and accomplishments. They are written by Region 3 employees on a weekly basis and are distributed, via e-mail, throughout the office to keep everyone (especially management) informed about the status of the work that's being done by every division, including the Air Protection Division (where I work).
The process of disseminating the salient issues to employees via e-mail was a very inefficient and cumbersome one. Worse, there was no way to search the salient issues to find a specific one when the need arose, and the need to search the salient issues arose quite often. The salient issues were written in Microsoft Word (or WordPerfect) and the documents were then placed into folders on a shared network drive. Therefore, if someone wanted to find a salient issue, they would have to manually search through the documents stored on the network. This was pretty much a hit or miss affair and, needless to say, very frustrating for employees. Consequently, most employees quickly forgot about their salient issues once they had been written and "published" via e-mail. My supervisor (David Arnold) and I decided that there had to be a better way of storing, organizing, and disseminating this information, so I began working on a ColdFusion application to do just that.
I built the ASICA as a standard "drill-down" search application in which users could search for salient issues by author, publication date, and/or keyword(s). To view or print the details of a salient issue, a user simply clicked on a link to load a "details" template that retrieved and displayed all of the pertinent information for that salient issue: Title, Publication Date, Summary, Author, Confidential Status, and Comments. A "Recent Salient Issues" page was deployed that listed the most recent salient issues published during the previous two weeks. This option was provided for managers who just wanted to get a quick listing of the most recent salient issues without having to perform a search.
I had no way of knowing this at the time, but the ASICA was destined to be the first in a succession of highly successful and well-regarded ColdFusion intranet applications that would place our most valuable and useful business information right at the fingertips of the people who needed it the most: our employees (all 1,000 of us).
As my programming skills and confidence grew, I became bolder with my code and began experimenting with new ColdFusion features and tags. Well, at least they were "new" to me since I was a beginning developer at the time. I implemented a "Next N Records" interface and query results caching to limit the amount of information displayed on each page and to increase performance. Due to budget constraints, I was stuck with Microsoft Access as the data source and therefore needed to minimize database interaction, otherwise, frequent database calls would affect the performance of the entire application. In the "Keyword Search" portion of the application, I employed <CFLOOP> and list variables to break apart multiple keywords entered by users performing searches; this code then scanned the Title and Summary fields of the database for a match on one or more of the keywords. This produced a surprisingly powerful and flexible search engine for my application that could easily handle multiple keywords and phrases. I also utilized the <CFCONTENT> tag to add a "print version" template to the application so that users could generate a Microsoft Word version of any salient issue. It strikes me as somewhat ironic that the "print version" feature produces a Word document since the proliferation of Word documents on our network drive and our inability to organize and manage them was the reason for developing this application in the first place.
The ASICA rapidly evolved into an indispensable information storage, search, and retrieval tool that could be used by anyone who knew their way around a Web browser. Of course, that included pretty much everyone in our office. New features and search capabilities were added and, eventually, word of the application's usefulness spread throughout the office. Today, the ASICA is used extensively for everything from determining the status of an enforcement case to highlighting an upcoming public outreach program. Another indication of the application's extraordinary success was upper management's regular use of the application and their willingness to provide me with the time and resources that I needed to build it and keep it running smoothly.
Soon after the success of the ASICA, I began receiving requests from other division managers to build similar applications for them so that they too could place their salient issues on the intranet and make them instantly accessible to everyone in the office. In response to these requests and to preserve my own sanity, I created a "generic" salient issues application with the help of some custom tags and user-defined functions (UDFs). This "generic" application could be customized for use by any division or program office, and could be deployed in a matter of minutes simply by resetting a few variables in the Application.cfm template, e.g., <CFSET divname = "Hazardous Site Cleanup Division"> and <CFSET datasource = "hscdsalients">. In other words, the only things different in these new "clone" applications were the division name, logo images, data source, and other information specific to the division for which the application was being created; all other code remained exactly the same as it had been for the ASICA. This strategy really paid off because it enabled me to create and deploy salient issues applications for other divisions in a matter of days instead of months. So, I learned from firsthand experience that they don't call ColdFusion a "Rapid Web Application Development" technology for nothing.
Three more salient issues applications followed the ASICA onto our agency intranet. I created, customized, and deployed each of these applications that would subsequently be used by other divisions. When these new applications were deployed on our intranet, the number of salient issues that we had made available online (via ColdFusion) doubled. Today, there are over 4,500 salient issues from four separate divisions available on our intranet, courtesy of ColdFusion MX 7.
With respect to data entry and application security, I used session variables and provided user names/passwords to authorized staff persons in each division to limit access to the administrative templates in each application. Every week, one or two authorized employees from each division enter their salient issues for that week into their respective database using the administrative templates. Since the text of the salient issues can be copied and pasted directly from the Microsoft Word (or WordPerfect) documents into the online ColdFusion forms, entering the weekly salient issues typically takes less than 20 minutes per application. Today, over 2,000 salient issues (dating back eight years) have been entered into the ASICA alone. As we have discovered for ourselves, 20 minutes of data entry time per week is a small price to pay for having mission-critical information online and organized so that it can be accessed by anyone in a matter of seconds. Indeed, I lost count of all the "thank you" e-mails that I had received from appreciative managers and staff who were finally able to find the exact information they were looking for simply by using one of my salient issues applications.
Published June 9, 2006 Reads 14,571
Copyright © 2006 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Michael Markowski
Michael Markowski works for the Air Protection Division at the Environmental Protection Agency and is a Macromedia/Adobe Certified Professional.



















