6.1 System Architecture
The server side of this system is implemented as a standalone Java application with database access capability. It supports multiple clients getting access to the system at the same time. Serverís default service port is 5500 and it uses a socket connection to communicate with its client. The following graph describes the architecture of the server application.
From the above figure you can see that the server can be divided into three major modules: Communication Module, Protocol Decoding Module and Meeting Scheduling Module.
This module is in charge of the socket communication with client side applet. At the initialization, it sets up a listening port and listens for connections from the client. Once it establishes a connection with the client, it reads the RequestObj object from the client, send this object to the decoding module to process. After the task is finished, it receives the ResponseObj object from the scheduling module and sends it back to the client.
This module is in charge of protocol decoding. It receives the ResponseObj object from the communication module, decode the information contained in that object and calls the specific method within the scheduling module to deal with the request.
This is the most important module for the server application. It contains several major methods handling different kinds of request from the client. These requests include: Get user information, add a personal event, delete a personal event and propose a meeting. To perform a task, the module use the information passed by the decoding module, composes proper SQL statements and contact database for necessary operation. Among these tasks, the meeting scheduling is the most complicated task. So in the following paragraphs, we will focus on the design of the meeting scheduling algorithm used in the server.
6.2 Scheduling Algorithm Design
In this application, we try to enhance the intelligence involved in the scheduling process.
So we support flexible requirement for time, room and equipment needed for a meeting, and the system will automatically choose a proper time that satisfy all the requirement for this meeting.
The following figure describes the algorithm used in the system for this scheduling.
Else, use the time range and value of the duration for the meeting to search for all possible time slots with the given time range, and put them into vector TimeSlots
Else, use the given size requirement to search in the database for all possible room names and put then into vector Rooms.
Else, indicate conflict in the return code and send back response.
6.3 Database Manipulation
The database system used on the server side is the Microsoft Access. The server application uses JDBC interface to get access to the database.
In order to maintain the consistency between different tables in the database, we use explicit transaction management. Whenever a new event is inserted into the database or an event is deleted from the database, all the related update statements are grouped into one transaction and committed together. By doing so, we avoid the inconsistency may be caused by partial success of the updating series.
The Meeting Anywhere server provides the automatic email notification feature. For each successfully scheduled meeting, an email message will be automatically sent to each required participant. The content of the email will include time, location and description about this meeting and will be customized for each receiver.
This email notification function is implemented by using the SMTP bean provided by IBM.