HTML based HelpDesk System using CLIPS


Objective

To develop an intelligent system that provides Help Desk assistance in solving computer related problems using HTML as the user interface and a web browser to process requests. The system will use the rules-based expert system, CLIPS, to define business procedures and provide a consistent and standard process that directs help desk personnel toward specific technical solutions. The product developed will incorporate the specific business rules, systems, and technical environment at NJ TRANSIT, the sponsor of this system.



Background

In the past, most systems were written on a mainframe computer with simple end-user requirements. It was possible to write very detailed and useful documents for non-technical help desk personnel to aid in solving problems. With the computer industry changing every day, the amount of information and technical expertise required to solve computer related problems is growing exponentially. It is unreasonable to expect one person at a help desk to know (and understand) all of this information. Some organizations think that adding more bodies to a help desk solves the problem. The problem is one of quality, not quantity. Adding more people who cannot solve problems, does not help the customer.

NJ TRANSIT faces the problems described above and, therefore, is very interested in a rules-based system to guide Help Desk personnel toward quick and accurate solutions in their computer environment. There is also a need to provide direct access to customers who require information about the systems they use. The extension of Help directly to customers supplements the Help Desk function which is structured around a 9:00 - 5:00 work schedule, Monday- Friday. The transportation industry operates on a 24-hour schedule, 7 days per week. Therefore, it is necessary to automate the Help Desk with a system that can be utilized by customers, non-technical customer service representatives, and technical personnel. The common goal of the system is to provide efficient and accurate information, direction, and resolution to computer problems throughout the Corporation.

There are multiple categories of Help that customers require from a Help Desk. At a general level, inquiries include:


At a more technical level, questions reach different stages of complexity as shown by the examples below:

More general information can be brought to a customer's workstation for independent inquiry. This relieves Help Desk personnel from responding to general calls. The more complex problems, however, need screening and some research and analysis to determine level of complexity and type of expertise required. An intelligent system can work to breakdown a problem and direct an individual to the cause and possible solutions. This provides a more efficient Help Desk, quick response to customers, and overall customer satisfaction.

Goals Achieved

The goals met as part of the implementation of this project are ::

Constraints

Help Desk Assistant is a working prototype for a fully implemented Help Desk system at NJ TRANSIT. The system was developed within the NJ TRANSIT structure to provide a familiar environment and reasonable parameters to help gain acceptance of the system by NJ TRANSIT IS Management.

The following parameters provided a framework for architecture definition, product selection, and overall cost:

Architecture

The architecture selected is client/server, implemented on an Intranet (as opposed to the Internet). There are several reasons why this system should not be implemented on the Internet:

An HTML browser was selected as the user interface tool. The system was successfully tested with the following browsers :

  1. Internet Explorer
  2. Netscape


The browser requests service from a web server by using HTML forms and CGI. The web server is O'Reilly's WebSite version 1.1e.

The web server passes the request to WebCLIPS (via stdin) to process the form. Since the GET method is used to pass data, WebCLIPS handles requests in the following manner:

The platform chosen to implement this project is Windows 95 for several reasons ::



Help Desk Assistant currently runs on a laptop computer. As this is a prototype for a larger system, portability is a great advantage.

State of the Art

A closely related product called WebLS (web logic server) was reviewed in PC AI Magazine, September/October 1996. WebLS is a web-resident system that answers technical support questions. This product uses many of the same components as Help Desk Assistant (HTML, CGI etc.) The major difference from an architectural standpoint is that WebLS utilizes Prolog as an inference engine where we are using CLIPS. Prolog is a backward chaining system where CLIPS is a forward chaining system. The forward chaining approach is more appropriate in a Help Desk system as there are relatively few goals (i.e. answers to a specific problem) and few well-defined facts given a specific technical problem.

One of the main features of the system design is that all of the major components are replaceable and scalable :

Browsers : Any browser that is HTML 3.2 compliant can be used. This leaves NJ TRANSIT in a good position to upgrade or exchange as the business dictates. This project has been tested with Internet Explorer 3.0 and Netscape 3.01.

Web server : The system utilizes O'Reilly's WebSite web server for Windows 95. If the system is successful and NJ TRANSIT decides to move the system to Windows NT for performance reasons, the web server can be ported directly with no code or system modifications and little (if any) configurations changes.

Languages : Perl, C/C++, CLIPS

Inference Engines : Virtually any programming language (Perl, C++, etc.) that can output data to stdout can be a component of the Help Desk system. If a particular problem can be resolved in a more efficient way using C++ with an Oracle database, then NJ TRANSIT has the option of implementing the solution in this environment. If a different expert system (G2 or M.4) better fits NJ TRANSIT's need, then system design will support that decision.



Knowledge Domain

In order to implement this system the author must have knowledge in the following areas :

HTML

Expertise in this area was obtained through reading the following documents :

A Beginner's Guide to HTML [1]
Composing Good HTML [2]

Browsers/Web Servers

Knowledge is required for setup of the browser/server. The biggest obstacle encountered to date is emulating TCP/IP under Windows. This was implemented as an IP stack under Windows 95.

Networks

In order to implement this system only a very general understanding of networks is needed. The concept of an 'address' on the network is required as well as being able to connect to network drives on the Intranet.

CGI

Expertise in this area was obtained by reading the following documents :

CLIPS

The author needs to be fluent with CLIPS in order to properly implement this system. Information on how to program in CLIPS can be found in several sources :

Expert Systems, Principles and Programming, Second Edition by Giarratano and Riley, PWS Publishing Company, ISBN number 0-534-93744-6

CLIPS home page [5]

NJIT University, class : CIS672



Technical Specifications

This section details software products and their respective version numbers that were used in development of the system. If the product was obtained by downloading from the Internet, the address will be listed.

CLIPS 6.0
ftp://cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/areas/expert/systems/clips

WebSite
http://website.ora.com

CLIPS DLL and C++ wrapper classes
http://ourworld.compuserve.com/homepages/marktoml/clipsstuf.html

HTML 3.2
http://www.w3.org/pub/WWW/MarkUp/Wilbur/

CGI Specification
http://hoohoo.ncsa.uiuc.edu/cgi/

References

Giarratano, J, & Riley, G. (1994). Expert Systems, Principles and Programming. Boston : PWS Publishing Company

Gonzalez, A, & Dankel, D. (1993). The Engineering of Knowledge-Based System, Theory and Practice. Englewood Cliffs : Prentice-Hall Inc.

Petzold, C. (1992). Programming Windows : the Microsoft guide to writing applications for Windows 3.1. Redmond : Microsoft Press

Niles, R, & Dwight, J. (1996). CGI by Example. Indianapolis : Que Corporation

Perry, G. (1992). Moving from C to C++. Indiana : Sams Publishing

Kroening, M. (1996, September/October). Web-Based Intelligent Tech Support. PC AI, pp. 38 - 44

Lipschutz, R. (1996, September 10). Web Servers : Microsoft® Internet Information Server, pp. 181 - 186

Hughes, K. SWISH (Simple Web Indexing System for Humans). http://www.eit.com/goodies/software/swish/swish.html

[1] Andreessen, M. (1996, December 19). A Beginner's Guide to HTML URL : http://www.ncsa.uiuc.edu/General/Internet/www/HTMLPrimer.html

[2] Tilton, J E. (1995, December 8). Composing Good HTML URL : http://www.cs.cmu.edu/~tilt/cgh/

[3] Swoboda, N. (1997, February 2). HTML-based Interfaces URL : http://blackcat.brynmawr.edu/~nswoboda/prog-html.html

[4] Grobe, M. (1996 July). An Instantaneous Introduction to CGI Scripts and HTML forms URL: http://kuhttp.cc.ukans.edu/info/forms/forms-intro.html

[5] CLIPS Home Page URL : http://hubble.jsc.nasa.gov/~CLIPS/index.html


Experimentation and Implementation Highlights

Given below are the milestones and attempted implementations of WebCLIPS. The list is sorted (roughly) in chronological order :

Conclusion

This project demonstrates that CLIPS can be run as a CGI application under Windows 95/NT. By utilizing the 32 bit Windows 95/NT DLL, standard CLIPS functions were made available via MFC C++ wrapper classes. This opens the door for web-based application developers to utilize an Artificial Intelligence Inference engine in their systems.

Help Desk Assistant meets all of the goals set out in the proposal to help solve NJ TRANSIT's problem of correctly diagnosing printer problems. It runs in under Windows 95, an environment familiar to NJ TRANSIT, utilizes the browser that they have adopted and utilizes a GUI language that is easy for current IS staff to learn. The only real support issue is CLIPS is not known by very many programmers. This leaves NJ TRANSIT IS in an awkward position if no programmer know the language and bugs need to be fixed or enhancements made.

WebCLIPS lays a foundation for future projects in the academic world. With WebCLIPS running under a web application NJIT can easily add complex decision-making to any project, including Digital-Library-in-a-Box, Software Re-engineering or Operating Systems Simulation.

Future Work

This project has established the groundwork for other academic pursuits. By implementing an inference engine in the client/server paradigm, more robust applications may be developed on the Internet or an intranet. Listed below are future possibilities based on Help Desk Assistant :

Technical Details

Contained in this section is the equivalent of a Programmers Guide to WebCLIPS. There will be two major topics discussed :

Program Flow

To facilitate the technical explanation of the WebCLIPS engine, it will be useful to have a version of the program at hand. The program can be found in file webclips.cpp or under Appendix B.

Before any processing takes place the MIME and HTML headers are output to stdout. This sets up the document to display any error messages in the browser. The contents of QUERY_STRING are first URL decoded and the name of the script to be executed is obtained. CLIPS is then initialized via the CLIPSInit call. If CLIPS does not initialize an error is passed to the browser and the program terminates.

Next, the program locates the configuration file webclips.ini. It does this via the getcwd function call. One observation made while implementing this program, this function call has some unexpected behavior while running under a web browser. The manifestation of this problem is as follows :

The overall effect is to place webclips.ini wherever the web server wants it to be. This will be covered in Installation Notes.

The name of the files that contain the desired CLIPS script and problem description are obtained, the description file open, read and displayed in the browser. Please note that the problem description can contain HTML to make the problem description more pleasing to the eye. The CLIPS script is read into the program via the CLIPSLoad function. An error message is displayed in the browser in the case where the file cannot be found, cannot be parsed or if the CLIPS engine has not been initialized.

CLIPS will need to re-route its output to an intermediate file. In the [System] section under the CLIPSOutput entry in Webclips.ini the name of the re-routed file is given. Since CLIPS was originally developed under UNIX, the RouteCommand expects filenames to follow the UNIX standard. This means that all backslashes ('\') need to be translated to forward slashes ('/'). After this has been completed, the rest of the RouteCommand is formatted and submitted to the CLIPS engine.

The Agenda is cleared via the CLIPSReset command. The program then checks to see if a separate fact-base has been defined. If one exists, it is loaded via the CLIPSLoadFacts command. If an error exists, it is displayed in the browser in the same fashion as the CLIPSLoad command. The CLIPSRun command is issued and the CLIPS program runs.

The re-routed CLIPS output file is then closed (freeing any buffered output) and the CLIPS engine is shut down via the CLIPSExit command.

The re-routed file is now opened, read and displayed in the browser. HTML trailer tags are then sent to the browser and the program terminates.

Please note that all scripts adhere to the CLIPS standard. The only unusual facets are that the printout statements must be pointed to 'clpout' and the printout statements contain HTML for formatting the results in a readable fashion.

Installation Notes

The information given below assumes that the target platform for implementation is a Windows NT/95 platform.

  1. Put the executables (webdemo.exe, webclips.exe), CLIPS.DLL and webclips.ini in the web server's 'CGI-BIN' directory. If the directory name is different, then put the executables, the INI file and DLL there (obviously) and change the file webclips.html-ssi.

    The SSI tag should look like <!--#exec cgi="/DIRECTORY/webdemo.exe"-->

    Once the SSI is working, if it can't find webclips.ini, it will tell you where it thinks it should be. Please put the file there. I have run into some quirky behavior with web servers in conjunction with the 'getcwd' function.

  2. Put the CLIPS scripts and problem descriptions scripts any where on the host machine.

  3. Update webclips.ini to reflect the location of the scripts and problem descriptions. As a note WebCLIPS uses the [System] CLIPSOutput entry to route intermediate output, so it must be a valid file name.

The only thing that is web server specific is the SSI in the HTML page Web CLIPS Demo Page. The extension on the document is 'html-ssi'. This tells the web server to look for and process Server-Side-Includes in the document.The web server utilized was WebSite by O'Reilly (URL : http://software.ora.com/download/).

You do have to configure the web server a little differently for SSIs. The following information was taken from KB article found at O'Reilly's site :

Article ID: 09Dec110506.html
Title:.HTML-SSI using an 8 and 3 naming convention
Date: 12/9/96

SSI operates on any file that has a MIME content type of "wwwserver/html-ssi". By default, the extension .html-ssi is configured this way. You can add Content-Type mappings so that additional file extensions will be treated as SSI enabled documents.

As an example, in Server Admin, Mapping tab, Content Type mapping, add a new extension, .ssi with a content-type wwwserver/html-ssi. This change will allow a document named "test.ssi" to be treated as an SSI enabled document. Change the content type of ".html" from "text/html" to "wwwserver/html-ssi" and SSI will operate on all "regular html" files ending in ".html". There will be extra overhead, but it may not be noticeable to you unless you are serving a really heavy load.

Appendix A - User Manual

Overview

Help Desk Assistant is a system designed to aid help desk personnel in the process of troubleshooting problems called in by clients. Ease of use is a top priority in the design due to the nature of the business. Help desk calls are frequent, with typically angry customers demanding answers to their questions.

With these points in mind, the following decisions were made about the user interface for Help Desk Assistant :

To satisfy these requirements a web-based interface was decided upon. The interface may already be familiar to existing help desk personnel and will reduce training time for new users. It's ease of use is already proven as it is utilized by millions of people (technical and non-technical) every day. New and easier to use products are introduced daily.

User Interface

The web-based design of Help Desk Assistant should make operation of the system obvious. The cursor will change from an arrow to a hand when passed over 'clickable' items. This will lead a help desk person to information required to resolve the problem.

In figure 1 through figure 9, a sample troubleshooting sequence is illustrated. A report from Lotus 1-2-3 was requested to printer ISS_CIO2. This is an example of sending a PC report to a network printer.

* Review figures 1 - 9 to familiarize yourself with this sequence *

An example of requesting a report from an IBM mainframe system is shown is figure 10 through figure 14. Please note that after figure 14 the system directs the user back to figure 4.

* Review figures 10 - 14 and note differences in the questions presented *

The user interface is self-documenting. As questions are presented and subsequently answered on-line, each screen is displayed in series to guide you step-by-step to the resolution of a problem.

Invoke Help Desk Assistant for yourself and see how easy troubleshooting can be!