Our Canada-based customer wanted to support, through their product, online scheduling of both classroom training and e-learning.
The customer wanted to provide a very intuitive user interface for scheduling. The customer also wanted the system to notify the user of scheduling conflicts and help resolve them.
Harbinger developed an administrative web-based resource management and scheduling system. The system allowed administrators to add / update / delete resources such as Instructors, Students, Equipment, Classrooms, Content Objects and Modules.
Courses comprised of content objects and modules. Classes were designed as instances of courses. Sessions could be scheduled within classes and resources could be assigned at a class / session level.
The system contained an intuitive Planning Board. An administrator could schedule classes / sessions and assign resources to those on the planning board. The planning board consisted of visual indicators to display conflicts and suggested techniques to resolve these conflicts.
This Planning Board also displayed individual calendars for each resource such as an Instructor's calendar, student's calendar, global course calendar etc.
The system was developed using the MVC (Model View Controller) architecture. Various design patterns such as mediator, facade, singleton etc. were used. For example, the event notification thread is implemented as a singleton class, which periodically sniffs the notification database.
The Planning Board was the core functionality of this system that presented a calendar view (a Gantt chart).
The MVC architecture helped to build flexibility and extensibility into the system. By dividing the system into various sub-systems, loose coupling between the various sub-systems was achieved. By separating the presentation from the model along with controllers as the mediators, the planning board could display different views of the model data objects. Views, Model and Controllers could be added or modified independently.