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 ::
| WordPerfect | Lotus |
| Visual dBASE | Harvard Graphics |
| Extra! (Mainframe terminal emulation) |
The following is a list of IBM mainframe systems supported in the Help Desk System:
| VMIS | Rail Scheduling | MARS |
| SCAT | DBS Payroll/Personnel | TRS |
| TQS | CRAA |
Acronym definitions and system overviews available on request.
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:
Constraint: Work within current infrastructure of NJ TRANSIT including hardware,
software, and communication environment
The existing architecture at NJ TRANSIT consists of Intel-based Pentium PCs as a
standard. Help Desk Assistant fully utilized this standard configuration avoiding the
introduction of new technology or retraining of staff. The system operates across the
existing Wide Area Network (WAN) that utilizes TCP/IP as a protocol at NJ TRANSIT..
Constraint: Utilize products that operate in a Windows 95 environment
The prototype system operates with Microsoft Internet Explorer, the standard web browser currently in use at NJ TRANSIT. O'Reilly's WebSite functions as the web server and provides the interface between the web browser and the rules-based inference engine (CLIPS). The final component is the C Language Integrated Production System (CLIPS) which supports all decision processing in Help Desk Assistant.
Constraint: Minimize cost for system development and operation
The prototype system has been developed "free of charge" for NJ TRANSIT as a graduate project demonstrating applied research in Artificial Intelligence systems running as an Intranet/Internet application. Product cost is minimal as both WebSite and CLIPS are available for free evaluation via download from the Internet. The choice of web browser was simplified by NJ TRANSIT who utilizes Microsoft Internet Explorer for internet access today.
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 :
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 :
Next a different web server was tried. WebDisk from Ararat (http://www.ararat.com) was downloaded again for free and installed. The product displayed a 'Server Initialization Error' and would not run.
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 :
| WebCLIPS Function | Equivalent UNIX Function | Found in |
| CLIPSInit | InitializeCLIPS | sysdep.c |
| LoadDllReferences | N/A | N/A |
| CLIPSLoad | LoadCommand | filecom.c |
| CLIPSRouteCommand | RouteCommand | commline.c |
| CLIPSReset | ResetCommand | constrct.c |
| LoadFactsCommand | factcom.c | |
| CLIPSExit | ExitCLIPS | router.c |
| CLIPSAssert | AssertCommand | factcom.c |
| CLIPSRun | Run | engine.c |
Certain code refers to substituting '/' for '\', this can be removed as this is only required under Windows 95/NT. An equivalent function for GetPrivateProfileString would need to be written. Please see Appendix B for a first-cut version of a UNIX version of WebCLIPS.
These functions could be developed in a separate module and then exported into any other WebCLIPS script.
Information for generating GIFs on the Fly information can be found at URL :
http://www.greyware.com/greyware/software/
Information for the VMRL 2.0 Standard can be found at URL :
http://orgwis.gmd.de/projects/VR/vrml/dynamicWorlds.html
Information for JavaScript can be found at URL :
http://www.netscapepress.com/support/javascript/chapters.htm
Another possibility would be to utilize JESS as the inference engine. This would permit direct access to the Java classes. However, JESS is only a partial CLIPS implementation, some of the more critical components of CLIPS are missing. For example, the AND, OR and TEST statements are not present in the current version. COOL (CLIPS Object Oriented Language) is also not present in JESS.
There are, of course, security concerns with this modification. Any HTML produced by the CLIPS script or residing in the description would have to be screened for any SSI (Server Side Include) commands or CGI executions (i.e. <!--#exec cgi=.....--> or <!--#exec cmd=....-->). The CLIPS scripts themselves would also have to be examined for any 'system' calls.
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 :
C:\WEBSITE.
C:\WEBSITE\CGI-BIN.
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.
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.
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 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.
Title:.HTML-SSI using an 8 and 3 naming convention
Date: 12/9/96
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!