Here are few examples of some of the implemented rules dealing with space and hours, type of room, and priority of room.
Space and Hours
IF [room(capacity) ;SPMgt; class(space-requested)] and [no time conflict in this room]THEN assign the room to the class.
If more than one room having an identical availability time is present in the database, then choose the one with the minimal magnitude of the difference between room(capacity) and class(space-requested).
Type of Room
IF [room(capacity) ;SPMgt; class(space-requested)] and [no time conflict in assigning this room] and [type(room) matches type(requested)]THEN assign the room to the class.
If identical rooms in type are present in the database, then choose the one with the minimal magnitude of the difference between room(capacity) and class(space-requested).
Room Priority
Rooms are classified as either general purpose, which are used by all, or priority rooms with a usage based on certain priority of the class or the department, or special purpose rooms which are only assigned to specific users. Here is a sample of rules showing how these room categories are used:
IF [room(priority) == general] and [room(capacity) ;SPMgt; class(space-requested)] and [no time conflict in assigning this room] and [type(room) matches type(requested)]THEN assign any user to this room.
IF [room has a priority user] and [the user is already assigned] and [room(capacity) ;SPMgt; class(space-requested)] and [no time conflict in assigning this room] and [type(room) matches type(requested)]
THEN assign other users.
IF [room(priority) == special purpose] and [user belongs to the special users of this room] and [room(capacity) ;SPMgt; class(space-requested)] and [no time conflict in assigning this room] and [type(room) matches type(requested)]
THEN assign the room to the user.
IF [room has a priority user] and [the user is already assigned] and [room(capacity) ;SPMgt; class(space-requested)] and [no time conflict in assigning this room] and [type(room) matches type(requested)]
THEN assign other users.
IF [room(priority) == special purpose] and [user belongs to the special users of this room] and [room(capacity) ;SPMgt; class(space-requested)] and [no time conflict in assigning this room] and [type(room) matches type(requested)]
THEN assign the room to the user.