Abstract:
The present invention comprises a method and apparatus for managing an enterprise employee training system. For example, classes can be defined, registered for, delivered, managed, and tracked across a global intra-company network. The system supports management of classes that are given in classrooms, broadcast by satellite, delivered on books or videotapes, given as collaborative web-based classes, or offered as self-paced classes given over a network, by book or by video. The system correctly interfaces with a multi continental workforce that speaks multiple languages, works a varied calendar in multiple time zones, travels between work locations, and has regional training requirements in multiple continents. Tracking of student registration and class participation as well as other processes are used by the system to allow billing and management decisions about employee training to be uniformly propagated throughout the system. The system also provides for system interfaces in multiple continents and in multiple languages. A common user-interface and a single point of maintenance are also features and reduce user training, documentation, and management costs. Thus, the present invention presents a global solution for large companies to manage a global employee-training program by providing a centralized database, automated fault-tolerant notification, and flexible HTML-based user interfaces.

Description:
[0001]    This non-provisional application takes priority from U.S. Provisional Application No. 60/205,764 filed on May 19, 2000. 
     
    
     
       BACKGROUND OF THE INVENTION  
         [0002]    1. Field of the Invention  
           [0003]    This invention relates to the field of computer software and data processing, and more particularly to a method and apparatus for managing enterprise employee training systems.  
           [0004]    2. Background  
           [0005]    Technology continues to evolve and becomes more complex over time. In the course of a single career, technology can antiquate an employee&#39;s skills. As a company grows, the need to train existing employees in new and changing technologies is critical to the success of the company. Modern companies must therefore strive to keep a stable and well-trained workforce. Many companies go about doing this by implementing a company wide employee-training program. However, for large companies, with many thousands of employees, managing employee training can be a daunting task that is fraught with complexity.  
           [0006]    Enterprise Employee Training  
           [0007]    Keeping a workforce up to date requires human resource departments and company management to constantly monitor, evaluate, and modify the constantly change and modify the computer system tasked with management of the training program. For enterprise companies, which are companies with thousands of employees stationed at sites around the world, a system to manage employee training must perform on a global scale.  
           [0008]    One problem faced by large companies is that it is difficult to effectively manage the number of employees that must be trained while still enforcing the constraints placed upon such training by company needs. Moreover, it is difficult to make the system widely accessible to employees that speak different languages and reside in different parts of the world. Thus, there is a need for an enterprise employee training system that enforces the rules established by management but that is still directly accessible by employees. Such a system would benefit the company because it would reduce the overall costs associated with managing and maintaining the system  
           [0009]    The user interface should be flexible enough to work well in multiple languages, and be easily customized to meet the regional requirements of each division within the company. In the past, such interfaces were generally written as graphical user interface computer programs. Such programs required programmers to rewrite the interface programs to reflect changing information and to meet the needs of different regional offices of the corporation. Thus, there is a need for a user interface to the system that easily changes according to the language requirements of the user.  
           [0010]    Systems supporting large companies must handle many thousands of transactions per year, and generate useful reports to aid management decisions about training. In addition, such systems should manage classroom allocation, manage training products, handle in-house and external billing and chargebacks, track employee training history, and be easy to access while ensuring the security required of a global database.  
           [0011]    Available commercial registration systems are not designed to work on a global scale. It would be desirable for such systems to provide support for a global training plan while allowing localized customization of the information in the system.  
           [0012]    An additional limitation of existing commercial training system is that they are not scalable to the needs of very large companies. Small companies may use a single computer to run their database, authentication, and accounting servers. In very large companies, these functions often run on different and often remote computers. Thus large companies often require interfaces between multiple servers to occur on a scheduled, not an on-demand, basis. Existing systems do not offer the flexibility required for enterprise corporations to easily interface to multiple other in-house computer systems.  
           [0013]    Automation is also a critical requirement in an enterprise employee training system. With thousands of employees requiring services from such a system, the overhead required to run a training program may become unmanageable. Functions that can be performed by the system on a scheduled basis can save many employee-hours and therefore reduce the cost of the training system. Available systems do not provide the level of reliable automation required to keep the cost of managing an enterprise employee training system contained.  
           [0014]    To add further complication, the method of delivering education to employees is constantly changing. While tradition dictates gathering students for classroom lectures, many new methods of communication are now available for employee education. Existing educational management systems are not designed to manage a multitude of course delivery methods, or to be extensible to methods not yet devised.  
           [0015]    Thus, there is a need for a system that allows large companies to meet many varied requirements for managing an enterprise employee-training system on a global scale.  
         SUMMARY OF THE INVENTION  
         [0016]    One embodiment of the present invention comprises a method and apparatus for managing an enterprise employee training system where classes are defined, registered for, delivered, managed, and tracked across a global intra-company network. The system provides facilities to allow a company to efficiently manage all aspects of an employee-training program.  
           [0017]    Modern large global companies perform employee training through a multitude of class delivery formats. One embodiment of the present invention supports management of classes that are given in classrooms, broadcast by satellite, delivered on books or videotapes, given as collaborative web-based classes, or offered as self-paced classes given over a network, by book or by video. While one embodiment of the present invention is implemented on a global intranet, a person of ordinary skill in the art will see that this invention could be implemented on any form of interconnection fabric.  
           [0018]    A system designed to manage enterprise employee training should correctly interface with a workforce that speaks multiple languages, works a varied calendar in multiple time zones, travels between work locations, and has regional training requirements in multiple continents. Such enterprise systems must typically be centrally controlled so that management decision about employee training may be uniformly propagated throughout the system. For enterprise systems, a common user-interface and a single point of maintenance are highly desirable features. Such features reduce user training, documentation, and management costs. One embodiment of the present invention provides all these advantages through one method and apparatus. With a centralized database, automated fault-tolerant notification, and flexible HTML-based user interfaces, present invention provides a global solution for large companies to manage a global employee-training program.  
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0019]    [0019]FIG. 1 illustrates the overall system architecture of one embodiment of the invention.  
         [0020]    [0020]FIGS. 2A and 2B illustrate the relationship between the objects used to implement one embodiment of the present invention.  
         [0021]    [0021]FIG. 3 provides an example of a general-purpose computer to be used with one embodiment of the present invention.  
         [0022]    [0022]FIG. 4A illustrates an overview of the process used by one embodiment of the invention of class lifecycle from definition to billing.  
         [0023]    [0023]FIG. 4B illustrates the database record definitions required by one embodiment of the invention to define a class.  
         [0024]    [0024]FIG. 5 illustrates the process of student registration as it occurs in one embodiment of the invention.  
         [0025]    [0025]FIG. 6 illustrates the process used by one embodiment of the invention to manage class cancellation.  
         [0026]    [0026]FIG. 7 illustrates the process used by one embodiment of the invention to manage pre-class and post-class record processing.  
         [0027]    [0027]FIG. 8 illustrates the process used by one embodiment of the invention to process classes accounting records for product-based classes.  
         [0028]    [0028]FIG. 9 illustrates the HTML Builder functionality in one embodiment of the present invention.  
         [0029]    [0029]FIG. 10 illustrates the HTML page generation process in one embodiment of the invention.  
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0030]    A method and apparatus for managing an enterprise employee training system is described. One embodiment of the present invention comprises a method for managing the data required to implement an enterprise employee training system. In the following description, numerous specific details are set forth in order to provide a more through description of one embodiment of the present invention. It will be apparent, however, to one skilled in the art, that the present invention may be practiced without these specific details. In other instances, well-known features have not been described in detail so as not to obscure the invention.  
         [0031]    The term “class” and “course” may be used in this description in the sense that a class comprises an instance of a course. For example, a course catalog may describe courses offered by an educational department or institution, but a class schedule is required to know which courses are being offered in any given session. A course may comprise a title, description, and prerequisites, while a class typically has a course number, time, instructor, and location.  
       System Overview  
       [0032]    The architectural elements that may be used to implement one embodiment of the present invention include a database server, a WWW server, a network, and one or more user workstations. As shown in FIG. 1, database server  100  comprises a computer system running a commercial database engine of sufficient computing power and storage capacity to sustain many thousands of transactions per year. WWW server  102  may be any extensible commercial web server framework. In one embodiment of the invention, the JavaWebServer™ made by Sun Microsystems, Inc. is used. However, the invention contemplates the use of other extensible web server frameworks. Servers  100  and  102  may execute on the same or on different computers in the network. All elements of one embodiment of the present invention may be connected by any interconnection fabric, including the Internet or any other type of network, to form a communications link between users and the enterprise educational training system. Users of the system may include students, instructors, administrators, managers, administrative assistants, vendors, new hires and others.  
         [0033]    Software elements of the system may include web application interface  106 , which may run on any number of client devices  112 . Client devices  112  may be networked in any conventional fashion to WWW server  102 . Client device  112  may be a workstation, personal computer, or any other device capable of accessing one embodiment of the present invention via an interconnection fabric. Additional software elements of the system include extensions to WWW server  102 , extensions to database server  100 , batch processing  108 , and software configured to interface with accounting server  104 . In one embodiment of the invention, administrator tools and system maintenance tools are additional software elements of the invention.  
         [0034]    The hardware architecture of one embodiment of the present invention assumes, in general, that data is stored and managed on database server  100 , and that WWW server  102  is the user&#39;s only interface to database server  100 . Users gain a view into the system using client device  112  and web application interface  106 . In one embodiment of the present invention, web application interface  106  is generally a web browser. The user navigates locally on client device  112  and data is requested by web application interface  106  from database server  100  via WWW server  102  as necessary. This arrangement of client, web server, and database server is a typical three-tier architecture that provides enhanced database security, and is well known to those of ordinary skill in the art.  
         [0035]    Functional Elements  
         [0036]    According to an embodiment of the present invention, the system is composed of the following functional components: the course component, the class component, the registration component, the request component, the class products component, the miscellaneous administrative maintenance component, the database component, the batch processing component, and the notification and email component. Each of these functional components is responsible for different aspects of the overall employee training management system.  
         [0037]    [0037]FIG. 1 illustrates the functional components used by an embodiment of the invention to manage enterprise employee training. Database server  100 , WWW server  102 , and email system  110  are commercially available programs customized by one embodiment of the present invention to meet the needs of an enterprise employee training system. An embodiment of the present invention interfaces with accounting server  104 . In one embodiment of the present invention, web application interface  106  is developed as a set of one or more HTML web pages. However, web application interface  106  may comprise other types of documents that are capable of being disseminated through a computer network in other embodiments of the invention. These web pages are sent to client device  112  by WWW server  102 , and they act as web application interface  106 . One embodiment of the present invention includes a batch processor that is described in more detail below. An embodiment of the invention contemplates building extensions to database server  100  and WWW server  102 . All the elements of one embodiment of the present invention described herein should be built in a scalable manner to meet the needs of an expanding large company or enterprise corporation.  
         [0038]    An embodiment of the invention comprises one or more customized software programs. Such programs include, but are not limited to, the web server extensions, the request handler, the notification handler and the batch processor programs. Administrative tools such as the administrator&#39;s search handler and the HTML interface builder are also software elements of one embodiment of the present invention system that are described herein as part of one embodiment of the invention.  
         [0039]    Overview of Course Definition and Maintenance  
         [0040]    The process of defining and managing a training course utilizing the method of one embodiment of the present invention is illustrated below. In an embodiment of the present invention, training courses are described on two levels. Courses are first defined at the global (international) level. This feature of the method allows the corporation control of its overall education program. In one embodiment of the invention, the corporation may enact an approval cycle for course definitions before allowing a global course to be instantiated in the system. Access to the system to define a global course can be restricted to a certain class of user to provide additional control over what courses are offered to employees.  
         [0041]    [0041]FIG. 4A provides an overview of the lifecycle of a course in one embodiment of the present invention. The process starts at step  400 , where a course manager, an employee with authority to define a course in the system, prepares a course description. At step  402  it is determined whether the course fee is an internal workgroup fee, a student fee, neither, or both. If the answer is neither (e.g. there is not fee for the course) then flow proceeds to step  406 . If the course is an internal workgroup course, or there is a student fee, or both, step  404  ensures that the correct accounting procedures are set up for the course revenue and charge-backs. For internal workgroup courses, charges may be split across departments. For example, if an employee from one department obtains permission to attend an internal workgroup course offered for another department, then two departments may be billed for the course. In addition, the instructor may come from a third department, and the revenue of the course will need to be allocated to a third department. Finally, any course may or may not charge a student fee, and the accounting records should be set up accordingly. Course charges can be adjusted at the local course level as required.  
         [0042]    At step  406 , the course manager schedules the course and sends an information form about the course to the registrar. At step  408  the registrar enters a course description and sets up the class in the system. The registrar is an employee with permission to define and change records in the computer system of the invention. FIG. 4B demonstrates the process of defining a course in one embodiment of the present invention. In first step, the registrar defines global course record  401  in the system, and sets up a class description. A student interest list for the class may already exist, as tested in step  410 . If there is no student list the registrar prepares a course announcement in step  412  and sends it to the course manager, and the method proceeds to step  420 . If a student interest list exists at the time of course definition, then in step  414  the registrar may inform the students on the interest list by sending them email, via the batch processor, to notify them that the class will be held. Course and class records may be entered from multiple continents and in multiple languages.  
         [0043]    After the course and class records have been defined, and the students have received an announcement of the class and they may enroll in step  416 . Students who do enroll receive an enrollment confirmation notice generated by the system at step  418 . At step  420 , all registered students receive automatically generated reminder notices at user-defined intervals before the class.  
         [0044]    While the class is open for enrollment, the size of the enrollment is monitored by the invention at step  422 . In one embodiment of the invention, a waitlist will be generated if a class reaches its maximum enrollment. The registrar receives notice of any class that does not reach its minimum or maximum enrollment. In one embodiment of the invention, before a class is held the system automatically generates an instructor packet in step  424 .  
         [0045]    The class is held at step  426 . Students attend the class and sign in. When the class is complete, students fill out class evaluations and receive their certificates of completion that were generated as part of the instructor packet in step  424 . After the class completes, at step  428 , the instructor sends the sign in sheet to the registrar. The registrar records attendance, records “no-shows” and “incompletes,” and enters information into the system to ensure the correct calculation of charge backs. The registrar also sends the course evaluations to the vendor. In one embodiment of the invention, at step  430 , charge backs are uploaded to the accounting system once a month for billing purposes.  
         [0046]    Course Definition  
         [0047]    [0047]FIG. 4B provides a more detailed view of the course definition process, in accordance with an embodiment of the invention. The course manager first defines a record for global course  401 . Global course record  401  contains information about the course manager, the course code, the course name, and the course family. Examples of course family, or general subject matter of a course in one embodiment of the invention include:  
         [0048]    Advanced Internet Technologies  
         [0049]    Business applications  
         [0050]    Business practices  
         [0051]    Computer Aided Design (CAD)  
         [0052]    Communicating for Results  
         [0053]    Employee Development  
         [0054]    Executive management  
         [0055]    Enterprise servers  
         [0056]    Executive training  
         [0057]    Finance courses  
         [0058]    Function specific  
         [0059]    Field sales  
         [0060]    Computer languages  
         [0061]    Management and leadership  
         [0062]    New hire training  
         [0063]    Networking  
         [0064]    Object technology  
         [0065]    Operating systems  
         [0066]    Project management  
         [0067]    Quality training  
         [0068]    Self study courses  
         [0069]    Software development  
         [0070]    Self-paced products  
         [0071]    Systems applications  
         [0072]    Team effectiveness  
         [0073]    Workstation applications  
         [0074]    Work skills training  
         [0075]    Course family designations are important in providing refined catalog searches for students and others using the system. The invention contemplates the use of other family designations. In one embodiment of the invention a family designation may be defined by the course manager and comprise a set of characteristics defined by the manager.  
         [0076]    After global course record  401  is defined, the course manager may define local course record  403 . Local course record  403  specifies the delivery type of the class, the minimum and maximum class enrollment, course fees and revenue information, pre-work required of the students, the course manager, if testing is required, the status of the class, notification information, and if the class should have an interest list. A description of local course  403  comprises an abstract, general description, audience, objectives, methods, prerequisites, materials, and other notes. Local course record  403  cannot be defined unless global course record  401  exists. Local course records may be used as templates for other local course records and then customized to meet regional training needs. For example, a course manager may copy a local course record and then change the language of the notification information to suit the employees of another country.  
         [0077]    Next, a record for course location  405  is defined, if the location record does not already exist. Course location record  405  contains a location code, a geographic region code, a location name, description, status, address, contact, phone number and special instructions fields. A course location represents a place where classes may be held, for example a training center or an office building. Courses may be entered and/or located in multiple continents and provided in multiple languages. Depending on the embodiment of the invention, course location  405  may or may not represent an individual classroom. Therefore, it may also be possible to define a classroom record. For example, classroom record  407  can contain the following information: classroom name, location code, location name, status, description and capacity. Classes may be entered and/or located in multiple continents and provided in multiple languages.  
         [0078]    Classes may be taught, or training products may be supplied by, suppliers. For example, a supplier can be any company that provides instructors and or educational materials. Suppliers can be internal or external to the corporation. For example, a department of the corporation may be a supplier. A commercial school that provides teachers is also a supplier, as is a company that sells instructional videotapes. Even classes defined for internal workgroups require supplier. Supplier record  409  should be defined before an instructor record can be defined, as it is used to track instructor billing and revenue. Supplier record  409  contains the following information: id, supplier company name, address, country, email, and phone. In addition, internal suppliers may have a URL field in supplier record  409 .  
         [0079]    After supplier record  409  is defined, an instructor can be assigned to the class. Instructor record  411  contains information as follows: instructor name, type, status, supplier record and rate. Instructors should be associated with a supplier for billing and revenue purposes.  
         [0080]    After all the above-described records exist the class manager, registrar or course manager may define class record  413 . To define class record  413  an authorized user enters information into the system as follows: global course number, local course number, and supplier. If the course delivery type is classroom, the course manager will select a location and a classroom. The course manager also specifies if the class is an internal workgroup class, in which enrollment is restricted to certain employees and therefore the invention requires a password to allow student registration. Any class that is not an internal workgroup class may be an open enrollment class.  
         [0081]    Next, the course manager sets the class status, which for a newly created class may be set to “new.” During the life of a class, its status can be one of the following values: new, available, full, post-class, cancelled, or completed. Class status is changed to “available” when the course manager wishes to open enrollment. Class notices and other information can be customized at the time class record  413  is defined.  
         [0082]    Student Registration  
         [0083]    To register for a class using the method of an embodiment of the present invention, a student follows the steps detailed in FIG. 5. The first step, shown as step  501 , requires the student to log into the registration system. In one embodiment of the invention, the log in function is performed by methods well known to those of ordinary skill in the art. For example, the method requires that the system verify the user&#39;s identity and authorization to perform a registration, by whatever method available. Registration may be performed from multiple continents and in multiple languages.  
         [0084]    The method of one embodiment of the present invention does not require the prospective student to log into the system personally. In an enterprise environment, it is common for busy executives and others to have assistants perform functions such as registering the executive for a class. A manager may also direct an employee to register all the members of a group for a class. The ability of a user who is logged into the system to register one or more others for classes is a feature of one embodiment of the present invention that is an example of the flexibility provided by one embodiment of the present invention to support enterprise environment training needs.  
         [0085]    At step  503 , the user searches the database of the invention for available classes that meet the user&#39;s criteria. Criteria may include the class title, number, delivery type, geographic region, and/or period during which the class will be offered. When a class has been identified, the user selects the class at step  505 . At step  506  it is determined whether the user is a registrar or a user with special authority. If the user is a registrar or a user with special authority, then flow goes to step  507 . If the user is not a registrar or a user with special authority, then flow goes to step  508 .  
         [0086]    At step  507 , the user will select one or more employees or non-employees to register. One embodiment of the present invention provides the flexibility of registering non-employees because of the nature of an enterprise business environment. In a company with thousands of employees, the entry of new hires into the employee database is often not immediate. Yet, managers often wish to send their new hires to classes for training as soon as possible. By allowing users to register non-employees for classes, one embodiment of the present invention provides flexibility to let managers register new hires for classes, without requiring the employee database to reflect all new hires on a daily basis. At step  508  the system registers the student. In the final step of the registration process, step  509 , the system confirms the registration to the user.  
         [0087]    Class Cancellation  
         [0088]    The method for canceling a class in one embodiment of the present invention is illustrated in FIG. 6. Step  600  asks what type of class is being cancelled. For internal workgroup classes, step  602 , the course manager and client are notified. The client may wish to reschedule the class, using the class setup process described in FIG. 4B. If the class is a standard class then, at step  604 , the course manager notifies the instructor of the cancellation. In either case at step  606  use of the classroom is cancelled and the educational coordinator, the employee responsible for the maintenance of the classroom, is notified of the cancellation. In one embodiment of the present invention, the course manager is responsible for notifying the registrar of the cancellation, which occurs at step  608 .  
         [0089]    The registrar enters the cancellation into the computer system at step  610 . The system sends batch email notification to the students registered for the class indicating that the class has been cancelled. Students receive this notice at step  612 . The registrar, at step  614 , then emails confirmation of the cancellation back to the course manager. Step  616  shows that student records are retained for reporting purposes.  
         [0090]    Pre and Post Class Tracking and Processing  
         [0091]    One embodiment of the present invention provides support for an enterprise employee-training environment by performing a number of automated tracking processes and other pre-class and post-class processes. These processes are detailed in FIG. 7. Pre-class processing is described at step  700 , where the system automatically generates instructor class packet  701 . Instructor class packet  701  is made by batch process some days before the class. To support a global training environment instructor class packet  701  is posted on a web site, so instructors anywhere in the world can easily download their packets. Instructor class packet  701  may contain, for example: an evaluation sheet, a roster listing all students registered for the class, a sign-in sheet, a door sign, feedback forms, certificates of completion, and student name tents for each student registered in the class.  
         [0092]    The system also tracks student registration and participation in classes. For example, on the final day of a class, at step  702 , the system automatically sets the class status to “post-class”, and notifies the registrar. The instructor sends the completed sign-in sheet to the registrar at step  704 . At step  706 , the registrar is responsible for updating the attendance, revenue, and charge-back information in the class records.  
         [0093]    At step  708  it is determined what the class type is. If the class type is a self-paced, then the system sets the enrollment status to “complete” as soon as the student registers, at step  714 . At step  716  the system automatically updates revenue records for self-paced classes and ensures upload of the records to the corporate accounting system.  
         [0094]    For all other class types (e.g. classroom, collaborative web, broadcast classes), at step  710 , on a designated day of the month all classes with status of “post-class” are accounted for, and the class status is automatically changed to “complete” by the system. At step  712  the charge backs entered by the registrar are uploaded to the corporate accounting system, and the registration records are then locked to prevent further changes. Tracking another pre-class and post-class processing may be performed from multiple continents and in multiple languages.  
         [0095]    Product Accounting System Interface  
         [0096]    [0096]FIG. 8 demonstrates the processes of the invention for managing accounting of employee training products, such as books, videos, and self-paced web classes according to one embodiment of the present invention. For example, the product accounting system can be used to manage other class accounting needs such as providing a student with a class refund, or charging a department of other types of services rendered.  
         [0097]    At step  800 , on the first day of the fiscal month, new revenue records are defined for each available training product. During the month, at step  802 , local revenue centers may adjust the price and revenue figures for any product in the catalog. At step  804 , on a particular day of the fiscal month so designated, the invention automatically uploads all revenue records for the previous fiscal month to the corporate accounting system. At step  806 , the system saves all the monthly revenue records for reporting purposes.  
         [0098]    System Reporting  
         [0099]    Frequent monitoring by management can be used to tailor an employee training system to meet the needs of an enterprise corporation. Monitoring and reporting may be performed from multiple continents and in multiple languages. One embodiment of the invention produces the following reports:  
         [0100]    Daily Class Cancellations  
         [0101]    Daily classes filled  
         [0102]    Daily class confirmation summary  
         [0103]    Daily class reminder summary  
         [0104]    Daily enrollment deadline report  
         [0105]    Daily merged student record report  
         [0106]    Course schedule by course number/class contact  
         [0107]    Room schedule by date  
         [0108]    Monthly revenue detail by revenue account  
         [0109]    Monthly revenue account (summary)  
       Software Programs and Administrator Tools  
       [0110]    One embodiment of the present invention is implemented in Java, and makes use of Sun Microsystems&#39; JavaWebServer™ product. It will be apparent, however, to one skilled in the art, that one embodiment of the present invention may be practiced without this specific detail. In other instances, well-known features have not been described in detail so as not to obscure the invention.  
         [0111]    In the following description, a distinction is made between an HTML page and an HTML form. For the purposes of this specification, an HTML form may be a page that requests the user to input data into fields on the page, or request information from the server. An HTML page may be a display-only page that may contain links to other pages or forms, but may not contain input fields or request elements.  
         [0112]    A. Web Server Framework Extensions  
         [0113]    Managing a Global Training Environment  
         [0114]    In an enterprise environment, user interface web pages may be displayed in the languages spoken at different company sites around the world. Web browser applications, such as Netscape Navigator or Microsoft Internet Explorer, provide users the option to select which language they want a web page displayed in if the web page developer has provided the page in multiple languages. FIGS. 2A and 2B illustrate the relationship between the objects used to implement one embodiment of the present invention. In one embodiment of the present invention, LocalizerManager  200  component allows an interface programmer to easily deal with multilingual labels, components, exceptions and objects by storing those items as strings in property files. The LocalizerManager reads the strings and selects the correct versions to appear on the interface display, based on the user&#39;s language choice as specified by the web browser making the request for the web page.  
         [0115]    A LocalizerManager instance comprises Localizer objects  202  for a specific locale for the application. There is one Localizer object for each page (and/or form) in the local application. Each page is stored in its own property file. If we supported two languages for an application (for example, English and French), and the application contained 10 web pages, then there would be 20 property files: 10 in English and 10 in French. The browser language choice setting is determined by HTMLServlet object  204 , which reads, an HTML header sent by the browser.  
         [0116]    The LocalizerManager class also contains static methods and static private members. It has a static hash table of LocalizerManager instances that contain the LocalizerManager objects for each locale. The static methods are called by the interface application to retrieve the correct LocalizerManager instance for a specific locale. Making the LocalizerManager instances static improves their performance, since property files need only to be read once for all instances of the application.  
         [0117]    The WWW Server  
         [0118]    One embodiment of the invention uses the JavaWebServer™ as WWW Server component (e.g. block  102  of FIG. 1). JavaWebServer™ supports the use of Java “servlets.” A servlets can almost be thought of as and applet that runs on the server side—without a face. JavaWebServer™ provides a Java class called HTTPServlet that can process HTTP Form Post and Get request from a browser. An application sub-classes HTTPServlet to implement the functionality to actually process the request. Then the application defines a servlet to JavaWebServer™ that points to this HTTPServlet sub-class. The user interface application, via the browser, contacts this servlet by specifying a URL that identifies this application servlet. The JavaWebServer™ product has the ability to assign a “session area” to a user (browser) when it contacts the JavaWebServer™ servlet to start a session. It is possible to store application information (including Java objects) in this session storage area.  
         [0119]    User Authentication  
         [0120]    One embodiment of the invention requires users to log into the system before registering for classes or administering the system. The LoginServer component builds on the feature of the web server to provide user session data storage. A user interface application using the LoginServer will sub-class a Java class called AuthHTTPServlet (which is part of the LoginServer package) instead of HTTPServlet. AuthHTTPServlet is a sub-class of HTTPServlet. However, one embodiment of the present invention&#39;s functionality is not dependent on the LoginServer. The invention may be practiced without this feature by implementing the system to use other authentication methods, or the invention could be implemented to use the JavaWebServer™ sessions directly.  
         [0121]    On receipt of a browser HTTP Post or Get request, the application servlet (a subclass of the AuthHTTPServlet) checks to see if this user has an existing JavaWebServer™ session. If not, the AuthHTTPServlet will redirect the user to the login screen. Once the user has logged in successfully, the AuthHTTPServlet will assign this user a session in the JavaWebServer™. If the user later sends HTTP Post or Get requests from the application servlet, the LoginServer can recognize that the request belongs to an existing session, and retrieves stored information from the JavaWebServer™ session for this user. However, the LoginServer itself only stores user information such as the user&#39;s name, not the session data.  
         [0122]    The HTMLFramework  
         [0123]    The HTMLFramework is an extension of the JavaWebServer™. Session data may dictate what type of data to store in SessionModel  208 , how to manage it, how to define navigation from one page to the next, how to go back to a previous page, and to how display an error message with the user&#39;s erroneous input displayed. The HTMLFramework, according to an embodiment, is illustrated in FIG. 2A and 2B, and described below.  
         [0124]    Session data is stored in an instance of a class called SessionModel, which is instantiated when a user session begins. The SessionModel object is used to store all application specific information for this user&#39;s application session.  
         [0125]    The HTMLServlet initializes the user&#39;s SessionModel after the user has been authenticated by the LoginServer component. When the session&#39;s first request is passed to the HTMLServlet it will create a new SessionModel instance and populate it with any required system data, such as the JavaWebServer&#39;s™ host system fully qualified name. The HTMLServlet will also retrieve the appropriate LocalizerManager for this user&#39;s locale, and store this information in the SessionModel.  
         [0126]    In one embodiment of the invention, the HTMLFramework&#39;s HTMLServlet Java class sub-classes HTTPAuthServlet (from the LoginServer component) to take advantage of its support for user authentication.  
         [0127]    The HTMLServlet sub-class for an application is responsible for:  
         [0128]    initializing an user&#39;s application session;  
         [0129]    sending all HTML generated by HTMLPages and HTMLForms to the browser;  
         [0130]    displaying and routing requests to the correct HTMLForm for processing; and  
         [0131]    processing all HTTP Post and/or Get requests from the form elements on the application&#39;s HTML pages;  
         [0132]    HTMLInterface class  206  is a Java interface which represents an object that can send HTML to a browser. It acts as a base class for the HTMLPage and HTMLForm classes.  
         [0133]    The HTMLPage class  214  represents a page containing HTML, but does not contain a form element. HTMLPage class implements HTMLInterface  206 . It uses an HTMLGeneratorInterface object to generate this HTML. There can be many implementations of HTMLGeneratorInterface  210 . The default implementation in one embodiment of the present invention is called the HTMLBuilder. The HTMLPage sub-class can define which HTMLGeneratorInterface implementation can be used to generate the HTML for this page. The HTMLPage can be sub-classed by a user interface application to implement the specifics of what the page should display.  
         [0134]    The HTMLForm class  216  represents a page containing HTML form elements. (An HTML form allows the user to enter data and/or make a request of the server for a particular action). An HTMLForm class knows how to process the data entered on the HTML page by the user and will return it&#39;s response in the form of the next HTMLPage or HTMLForm. An HTMLForm inherits all functionality of it&#39;s parent class HTMLPage (so it knows how to generate HTML to the browser) as well as process data from the form on this page. The HTMLForm can be sub-classed by an application to implement the specifics of what this page should display and where its form data should be sent.  
         [0135]    ErrorPage  212  is simply a special kind of HTMLPage that displays an error message. It is not abstract and can be instantiated.  
         [0136]    In one embodiment of the present invention, the HTMLFramework should have a one-to-one relationship between every HTML application page displayed on the browser and a Java class that supports it on the server (either an HTMLPage sub-class, HTMLForm sub-class, or the ErrorPage).  
         [0137]    Dynamic HTML Generation  
         [0138]    Each HTMLPage and HTMLForm sub-class is able to generate the HTML for its application display. Each HTMLForm sub-class knows how to process the data from its HTML form and perform the requested function (i.e. retrieving data from the database, saving data to the database, performing calculations, etc.) Each HTMLForm also knows the next HTMLForm or HTMLPage sub-class that should be displayed. In this way, the application controls user navigation. The next HTMLPage or HTMLForm to display might display the results of a database query or a calculation or simply collect additional information required. Each HTMLForm sub-class can also store data entered by the user on its form and display the data returned from a database query or calculation.  
         [0139]    If an error occurs during the processing of user input data, an HTMLForm can decide that the next HTMLPage or HTMLForm should not be displayed—instead the HTMLForm will displayed an appropriate error message and display the entry form populated with the data the user entered.  
         [0140]    Likewise, an HTMLPage sub-class can be designed to display data given to it. It can be given data during its construction, or before it is asked to generate its HTML. The HTMLPage can display this data by incorporating the data into the HTML it generates.  
         [0141]    Alternatively, the navigation can be circular with the HTMLForm always redisplaying itself with the data the user entered, the results of the database retrieval or calculation. This gives the user the opportunity to enter another request.  
         [0142]    Since an HTMLForm element can have many different buttons that define many different actions, an HTMLForm may actually navigate to many different HTMLPages or HTMLForms, one for each action defined on the HTMLForm element.  
         [0143]    An HTMLForm sub-class can be implemented to give a newly created instance of itself a unique name that can identify this instance. Each HTMLForm uses the JavaWebServer™ application servlet URL for the application&#39;s HTMLServlet sub-class when specifying an action for its form element. By default, the HTMLForm will add hidden fields to its form element. These hidden fields are used by the HTMLServlet to identify which HTMLForm should process a request from a browser. In particular, it adds two hidden fields that contain the following information:  
         [0144]    the Java class name of the HTMLForm sub-class that generated the HTML for this page; and  
         [0145]    the unique name for this instance of that HTMLForm sub-class.  
         [0146]    When the HTMLForm generates the HTML for its page, it will add these hidden fields to its form element. After the user enters data and presses a button on the form, the HTMLForm sends an HTTP Post or Get request to the application&#39;s HTMLServlet with all the data entered by the user in addition to the data in any hidden fields.  
         [0147]    When an HTMLPage generates HTML, it actually is sent to the HTMLServlet who sends it back to the user&#39;s browser. If the HTML was generated from an HTMLForm, the HTMLServlet will save the instance of the HTMLForm that generated that page in SessionModel. This is so it can be retrieved to process any HTTP Post/Get request generated from the form element in the HTML that was just sent to the user by this HTMLForm.  
         [0148]    When the HTMLServlet gets the HTTP Post and/or Get request, it locates the hidden fields containing the HTMLForm sub-class Java class name and the unique name for this instance of that HTMLForm sub-class. The HTMLServlet then attempts to retrieve the HTMLForm instance from the SessionModel that has the specified unique name. If the HTMLForm cannot find that unique instance it will instantiate a new instance of the proper HTMLForm sub-class, using the sub-class name.  
         [0149]    In some cases, an HTMLForm instance may not be in the SessionModel. The user can navigate to a previous page using the browser&#39;s back/forward buttons, or other navigation elements on the application HTML page. Therefore, even when an HTMLForm is displayed the user may not enter data on that page at that time. One embodiment of the present invention therefore supports a model where the user may change his mind about what he is doing on any page and go to some other functional area in the application. The user could then come back to this HTMLForm page later.  
         [0150]    Managing User State Data  
         [0151]    Providing HTML user interface applications with user state information may tax system resources. HTML is an essentially stateless formatting language. In providing the user interface application with state information as described above, the SessionModel object may become full of HTMLForm instances that have been previously displayed. The HTMLFramework allows the application to be configured to specify the maximum number of HTMLForms that can be stored in the SessionModel. After this maximum is reached, the oldest HTMLForms are discarded.  
         [0152]    Once the HTMLServlet retrieves (or creates) the proper HTMLForm, it passes the HTTP Post and/or Get request data to this HTMLForm sub-class for processing. The HTMLForm sub-class will retrieve the data entered by the user or perform the action specified by the user (as defined by which button was pressed on the HTML page). The HTMLServlet will then perform the specified function.  
         [0153]    According to an embodiment, the HTMLServlet first decides which HTMLForm or HTMLPage sub-class should be displayed next. It then instantiates the appropriate page, populates the page with data retrieved from the database or generated from some calculation, and returns this new HTMLForm or HTMLPage to the HTMLServlet. In the case of an error, the HTMLForm that processed the HTTP Post or Get request might return itself to the HTMLServlet.  
         [0154]    The HTMLServlet then asks the HTMLForm or HTMLPage sub-class it received from the HTMLForm to generate the HTML for its page and sends this page back to the browser. Additionally, the HTMLServlet sub-class for a specific application can get and store application-required system data in the SessionModel. For example, the user&#39;s name, email address, or application authority levels may be stored in the SessionModel.  
         [0155]    When the HTMLServlet asks for an HTMLPage or HTMLForm to generate its HTML, or asks an HTMLForm to process an HTTP Get or Post request, the HTMLServlet will retrieve the SessionModel data for this session and pass that data to the HTMLPage or HTMLForm. This way the HTMLPage or HTMLForm can store or retrieve any data within the SessionModel it may need.  
         [0156]    B. The HTML Builder Object  
         [0157]    One embodiment of the present invention generates HTML pages on demand using an object called the HTMLBuilder. The HTMLBuilder is illustrated in FIG. 9. HTMLBuilder object  900  generates HTML code for the web browser based on information stored in data files called property files for HTML objects. The HTMLBuilder reads the property files, locates the special codes indicating the presence of a variable, and then processes the variables by inserting data values into the placeholders defined by the variables. The resultant HTML code  902  is sent to the browser for display.  
         [0158]    [0158]FIG. 10 details the data flow to and from HTMLBuilder object  1020  in one embodiment of the present invention. When the user interface application is loaded by the browser and the application makes its first request to WWW server  1050 , HTMLBuilder object  1020  is invoked to generate the appropriate HTML code. The HTML code for each page to be delivered by server  1050  to the user&#39;s browser is generated on demand, with data being retrieved from or sent to database server  1000  as needed. A more detailed explanation of the HTMLBuilder functionality is as follows.  
         [0159]    The first step in generating an HTML page for the user interface application is for HTMLBuilder  1020  to retrieve HTML property file  1010  from server  1050 . HTML property file  1010  may contain static HTML, database variables and macros, and HTMLBuilder  1020  variables.  
         [0160]    When a browser sends a request to server  1050  the HTTPServlet receives the request. The HTTPServlet retrieves the appropriate data from the database for HTMLBuilder  1020 . HTMLBuilder  1020  will then use the data to generate “HTML snippets”  1030 . (HTML snippets  906  are HTML format commands elements that contain values that can only be determined at runtime.) HTMLBuilder object  1020  combines HTML property file  1010 , database values specified in HTML property file  1010 , and HTML snippets  1030  to generate completed HTML page  1040 . Completed HTML page  1040  is then returned to the user&#39;s browser for display. Competed HTML page  1040  appears to the browser to be a standard static HTML page.  
         [0161]    Using HTML property file  1010  and database values to generate HTML pages on demand allows one embodiment of the present invention to provide multilingual support for a global employee training system. If a user interface application for a new user language is required, system personnel need only generate a new property file in that language. After a new property file  1010  is placed on server  102 , and the user selects a corresponding language using their web browser, the user interface will be displayed in the user&#39;s selected language. In one embodiment of the present invention, database  1000  is also designed to support multiple language character sets, allowing course descriptions and other information to be entered in any language. Thus, through the combination of the database design and HTMLBuilder object  1020  one embodiment of the present invention provides seamless support for a global enterprise employee training system.  
         [0162]    C. Search Processing  
         [0163]    One function of the present invention requires providing the user the ability to easily search various criteria of the database for registration, accounting, and maintenance purposes. One embodiment of the present invention provides two different user interfaces for searching the database. The first interface is provided to administrative users, and is a generic search capability. This interface is illustrated in FIG. 11. The second interface provided is for student registration, and is HTML-based. Both interfaces use the same underlying search server.  
         [0164]    The approach for searching a large database with flexible criteria is as follows. The client process, either the administrator or student, sends a vector of search criteria objects to the search server. Each search criteria object contains a Business Object class name and method name that defines the field to search, a search qualifier selected by the user for this field, a value to use as a search criteria. The search criteria object also contains information defining which fields to return from the search by specifying the Business Object class name and method name. For example, a search may search for all courses with a course name containing the word “Management”. As a result, for each such course found by the search, the course name, course manager name and course price will be returned to the searcher.  
         [0165]    According to an embodiment, the following is a list of currently defined search qualifiers:  
         [0166]    1=Starts with  
         [0167]    2=Ending with  
         [0168]    3=Contains  
         [0169]    4=Is exactly  
         [0170]    5=Less than  
         [0171]    6=Less than or equal to  
         [0172]    7=Greater than  
         [0173]    8=Greater than or equal to  
         [0174]    9=Equal.  
         [0175]    The search server uses search criteria information to build a valid SQL statement and to execute the statement. Next, the search server looks for duplicate fields. If present duplicate fields can be joined by an “or” connector and surrounded by parentheses. The search server then looks up the appropriate SQL phrase for each search criteria in a table. Next, the search server checks to see if any joins are required. If any of the table names retrieved from the lookup table do not specify the same database table name then a join is required. If joins are required, they are also handled by lookup, in another lookup table. All SQL phrases retrieved from either of the lookup tables are then concatenated with “and” connectors, unless they are for duplicate fields, in which case they are connected with “or” connectors.  
         [0176]    D. Notification System  
         [0177]    A central feature of an embodiment of the invention is a reliable, fault-tolerate automated notification system. A notification is an email sent to someone regarding an event occurring within the system of one embodiment of the present invention. There are several types of notification. For example, when a student registers for a class a confirmation notification is sent to the to the student, as well as to the student&#39;s manager. A reminder is sent 21 days before the class, and this is sent to the person who enrolled the student (if the student was not self-enrolled) and to the student&#39;s manager.  
         [0178]    A notification can be “immediate” or “scheduled”. For immediate notification, the server will send the notice after processing the client request. A scheduled notification is sent by batch processing program on a specified date.  
         [0179]    Default notification information, for both scheduled and immediate notices, may be stored in a table in the database. An example of this table contains:  
         [0180]    Notification type  
         [0181]    The reference data type (e.g. class start date)  
         [0182]    The number of days prior to the reference date when notification can be sent, for immediate notification this field is zero.  
         [0183]    Generation type  
         [0184]    Notification recipients (students, instructors, managers)  
         [0185]    Default email text  
         [0186]    Language of the default email text (e.g. English, French, etc.)  
         [0187]    Notifications are copied from the course default notification to the class schedule notification table. All notifications may be modified by class. The Notification server uses the Email server to send the notifications.  
         [0188]    For scheduled notification, a request can be made for the email server to send an email by writing the required data to the email server&#39;s queue, which is a table in the database. The batch program, which handles Scheduled notification, can also use the email server to send the emails. This ensures that all emails will be sent even if the batch program is interrupted or killed or if the server crashes. For each scheduled notification that the batch program is handling, it will use a single transaction to write the email requests to the email server&#39;s queue and to mark the scheduled notification as processed. By this method if any event in the database queue fails, all scheduled notices related to that event will also fails, ensuring that the notice system will reliably reflect the status of the database. This process is well known to those skilled in the art as double queuing. Using the database to queue email notification also automatically creates a record of the success or failure of the notification, which provides administrators the information they need to properly keep students informed of the status of classes in the system.  
         [0189]    E. Batch Processing The following is a list of batch programs that may be used by one embodiment of the present invention. Batch processing optimizes interfaces to other systems in the corporation. Programs for batch processing can be written as scripts, programs or database stored procedures. The following functions of one embodiment of the present invention lend themselves to batch processing.  
         [0190]    1. Class Waitlist Processing and Auto-Promotion  
         [0191]    When an enrolled student cancels his registration, this process may promote the first student on the waitlist to a “promoted” status, and notify the student that space is available in the class. If the student does not register for the class within a specified time, the next student on the waitlist will be notified. Typical time allowed for a student to respond to a waitlist promotion notice is 24 hours. However, in a corporate environment many students will not work on Saturday and Sunday and therefore will not receive their promotion notice until after the time to reply has expired.  
         [0192]    Lengthening the time to respond, however, may cause eligible students to miss a class that is schedule to begin in the near future. The problem is complicated in an enterprise environment because the corporation operates on a global scale, and students work in many different countries with varied work schedules. The solution in one embodiment of the invention is for the auto-promote batch program to recognize the day of the week. If it is run on Friday or Saturday, the program will only auto-promote the waitlisted students if the class starts within the next 48 hours. Response time is lengthened to 72 hours, solving the problem of requiring a response when students are not available to receive their waitlist promotion notice.  
         [0193]    2. Notification  
         [0194]    Nightly batch programs, which query the class notification table in the database, can send specified emails to enrolled students. If the student did not enroll himself then emails are sent to the person who enrolled the student, to that person&#39;s manager, and to the student. If the is student self-enrolled, only the student receives the email notification.  
         [0195]    3. Post Class Processing  
         [0196]    Updating student status to “completed” and class status to “post class” may be done automatically by the invention via batch processing after the class end date. This batch process calculates the class price for each student based on the class type and charge method. This date is later uploaded into the corporate accounting system.  
         [0197]    4. Accounting System Upload  
         [0198]    This batch process can calculate revenue from class registrations and product sales, and sends this data to the corporate accounting system on a regular basis. The dates this process executes should be determined relative to the fiscal needs of the corporate accounting system.  
         [0199]    5. Company Employee Record Database Download  
         [0200]    Nightly batch processes can download the refreshed employee database to the employee table of one embodiment of the present invention. In an enterprise environment, changes to the employee database on a day-to-day basis can be significant. Since new employee data can be entered into one embodiment of the present invention separately, to allow new hires to register for classes before their company records catch up with them, the changes to the company employee records can be reconciled with the employee records of one embodiment of the present invention on a nightly basis.  
         [0201]    Embodiment of General Purpose Computer Environment  
         [0202]    An embodiment of the invention can be implemented as computer software in the form of computer readable program code executed on one or more general-purpose computers such as computer  300  illustrated in FIG. 3. A keyboard  310  and mouse  311  are coupled to a bidirectional system bus  318  (e.g., PCI, ISA or other similar architecture). The keyboard and mouse are for introducing user input to the computer system and communicating that user input to central processing unit (CPU)  313 . Other suitable input devices may be used in addition to, or in place of, the mouse  311  and keyboard  310 . I/O (input/output) unit  319  coupled to bidirectional system bus  318  represents possible output devices such as a printer or an A/V (audio/video) device.  
         [0203]    Computer  300  includes video memory  314 , main memory  315 , mass storage  312 , and communication interface  320 . All these devices are coupled to a bi-directional system bus  318  along with keyboard  310 , mouse  311  and CPU  313 . Mass storage  312  may include both fixed and removable media, such as magnetic, optical or magnetic optical storage systems or any other available mass storage technology. The system bus  318  provides a means for addressing video memory  314  or main memory  315 . The system bus  318  also provides a mechanism for the CPU to transferring data between and among the components, such as main memory  315 , video memory  314 , and mass storage  312 .  
         [0204]    In one embodiment of the invention, the CPU  313  is a microprocessor manufactured by Motorola, such as the 680X0 processor, an Intel Pentium III processor, or an UltraSparc processor from Sun Microsystems. However, any other suitable processor or computer may be utilized. Video memory  314  is a dual-ported video random access memory. One port of the video memory  314  is coupled to video accelerator  316 . The video accelerator device  316  is used to drive a CRT (cathode ray tube), and LCD (Liquid Crystal Display), or TFT (Thin-Film Transistor) monitor  317 . The video accelerator  316  is well known in the art and may be implemented by any suitable apparatus. This circuitry converts pixel data stored in video memory  314  to a signal suitable for use by monitor  317 . The monitor  317  is a type of monitor suitable for displaying graphic images.  
         [0205]    Computer  300  may also include a communication interface  320  coupled to system bus  318 . Communication interface  320  provides a two-way data communication coupling via a network link  321  to a network  322 . For example, if communication interface  320  is a modem, communication interface  320  provides a data communication connection to a corresponding type of telephone line, which comprises part of a network link  321 . If communication interface  320  is a Network Interface Card (NIC), communication interface  320  provides a data communication connection via network link  321  to a compatible network. Physical network links can include Ethernet, wireless, fiber optic, and cable television type links. In any such implementation, communication interface  320  sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.  
         [0206]    Network link  321  typically provides data communication through one or more networks to other data devices. For example, network link  321  may provide a connection through local network  322  to a host computer  323  or to data equipment operated by an Internet Service Provider (ISP)  324 . ISP  324  in turn provides data communication services through the worldwide packet data communication network now commonly referred to as the “Internet”  325 . Local network  322  and Internet  325  both use electrical, electromagnetic or optical signals that carry digital data streams to files. The signals through the various networks and the signals on network link  321  and through communication interface  320 , which carry the digital data to and from computer  300 , are exemplary forms of carrier waves for transporting the digital information.  
         [0207]    Computer  300  can send messages and receive data, including program code, through the network(s), network link  321 , and communication interface  320 . In the Internet example, server  326  might transmit a requested code for an application program through Internet  325 , ISP  324 , local network  322  and communication interface  320 .  
         [0208]    The computer systems described above are for purposes of example only. An embodiment of the invention may be implemented in any type of computer system or programming or processing environment.  
         [0209]    Thus, a method and apparatus for managing an enterprise employee training system has been described. Particular embodiments described herein are illustrative only and should not limit the present invention thereby. The claims and their full scope of equivalents define the invention.