Releases: UniTime/unitime
Releases · UniTime/unitime
UniTime 4.1 build 94 (Alpha 2)
Changes from UniTime 4.1.92, Alpha 1
Data Exchange: Course Offering Import / Export
- added ability to export and import cancelled classes
- if a class does not have an external id, fall back to the class label (e.g., ALG 101 Lec 1)
- added ability to import examinations together with the courses (including period and room assignments)
Course Timetabling: Student Course Demands
- fixed a bug that is causing all student course demands that are using made up students to squish all the course demands under a single student
- this was caused by the generated student id not being properly set on the WeightedStudentId class
- the bug was introduced recently, by commit bf612af
API: Online Student Scheduling
- added online student scheduling JSON API
- pretty much all the calls in the org.unitime.timetable.gwt.services.SectioningService are covered,
except of those related to HTTP session attributes (e.g., last request / schedule) - the SectioningService is used by the Online Student Scheduling Assistant and the Online Student Scheduling Dashboard pages
- pretty much all the calls in the org.unitime.timetable.gwt.services.SectioningService are covered,
Full Release Notes
Course Timetabling
Class Duration Types
- Added ability to define different ways how class duration is entered and used in the system (to
extend the formal Minutes per Week selection). - There is a new page (Administration > Other > Class Duration Types), where the class duration
types can be managed.- Permission ClassDurationTypes is needed to access the page, ClassDurationTypeEdit is needed to
make changes.
- Permission ClassDurationTypes is needed to access the page, ClassDurationTypeEdit is needed to
- Default duration type can be defined on an academic session, it can be overridden on the
instructional offering configuration level (Instructional Offering Configuration page).- Name of the default duration type is used in the column headers (Classes, Instructional
Offerings), abbreviation is used to suffix durations that are using a non-default duration
type.
- Name of the default duration type is used in the column headers (Classes, Instructional
- Following class duration types have been implemented:
- Minutes per Week (default): this is the existing behaviour (minutes per week == number of
meetings x minutes per meeting) - Average Weekly Mintes: average number of minutes a class takes during a week (weekly minutes =
number of meetings x minutes per meeting x number of weeks of the data pattern / number of
weeks in the term)- Paramter: number of weeks in the term (defaults to the number of weeks of the default date
pattern)
- Paramter: number of weeks in the term (defaults to the number of weeks of the default date
- Semester Minutes: number of minutes in the semester (semester minutes == number of meetings x
minutes per meeting x number of weeks of the data pattern) - Semester Hours: number of hours in the semester (semester hours == number of meetings x
minutes per meeting x number of weeks of the data pattern / minutes in an hour)- Paramter: number of minutes in an hour (defaults to 50)
- Meetings Minutes: number of minutes of all the meetings, excluding vacations (meeting minutes
== number of meetings based on the date pattern x minutes per meeting)- Parameters: allowed variation of the meeting minutes, expressed as lower and upper bound
(defaults to 0.95,1.10 -- meaning a class can have 5% less time, combinations with 10% more
time will be also considered). - If the number of meetings based on the date pattern exceeds the desired number of meeting
minutes, only meetings covering the given number of meeting minutes are created.
- Parameters: allowed variation of the meeting minutes, expressed as lower and upper bound
- Meeting Hours: just like meeting minutes, but with hours (semester hours == number of meetings
based on the date pattern x minutes per meeting / minutes in an hour)- Paramters: number of minutes in an hour and the allowed variation of the meeting minutes
(defaults to 50,0.95,1.10 -- 50 minutes in an hour, 5% less time allowed, combinations with
up to 10% excess time are considered).
- Paramters: number of minutes in an hour and the allowed variation of the meeting minutes
- Minutes per Week (default): this is the existing behaviour (minutes per week == number of
- It is possible to hide class duration types that are not to be used by the users.
- If only one type is visible, there is no selection of the class duration type on the
Instructional Offering Configuration page.
- If only one type is visible, there is no selection of the class duration type on the
Cancelled Classes
- Added ability to cancel a class.
- Multiple Class Setup page: class with enrolments cannot be deleted, but it could be cancelled
instead. - Cancelled classes retain their committed assignment, but the appropriate class event is
cancelled. - Cancelled classes are not loaded into the course timetabling solver.
- Cancelled classes cannot be edited or re-assigned and they do not block the room or instructor.
- When a cancelled classes is reopened, the appropriate event is also re-approved.
- This could cause conflicts, that have to be manually resolved.
- In student scheduling, cancelled classes are avoided (no valid enrollment can contain
a cancelled class). - In online student scheduling, it is possible to keep existing students in cancelled classes when
solver configuration parameter named Enrollment.CanKeepCancelledClass is set to true (defaults
to false). - New permissions:
- Class Delete: ability to delete a class (class cannot be deleted when there is a committed
solution and at least one student enrolled in the class) - Class Delete No Enrollment Check: this permission overrides the enrollment check from the
Class Delete permission (not given to any role by default) - Class Cancel: ability to cancel a class (there must be a committed solution)
- The Class Delete and Class Cancel permissions are by default given to all roles that have
Multiple Class Setup Class and / or Class Edit permissions.
- Class Delete: ability to delete a class (class cannot be deleted when there is a committed
- Added a new permission (named Class Delete No Enrollment Check) that overrides the enrollment
check from the Class Delete permission.- No role is given this permission by default.
- Make Not-Offered: It is allowed to make an offering not-offered only when there are no students
enrolled, there is no committed solution, or the user has the Class Delete No Enrollment Check
permission. - Cross Lists: it is allowed to remove a cross-listed course from an offering only when there are
no students enrolled, there is no committed solution, or the user has the Class Delete No
Enrollment Check permission.
Conficting Classes
- Class Detail: Display conflicting classes.
- There is a new table called Conflicting Classes, just below the Timetable section.
- The table is only visible when the class is conflicting with some other class (or classes).
- The same checking as on the Class Assignment page is used.
- Instructional Offering Detail: Highlight conflicting classes with light red background.
- Conflicting classes are listed in the tooltip (more details are provided on the Class Detail
page, see above).
- Conflicting classes are listed in the tooltip (more details are provided on the Class Detail
- Conflict checking: avoid showing conflicts between classes that can overlap because of the Can
Share Room or the Meet Together distribution.
Instructional Methods
- Added instructional methods lookup table. Each method has a reference and a label.
- Example instructional methods: Online, Hybrid, or Face-to-Face.
- Instructional offering configuration can have an instructional method set.
- If set, instructional method appear on various pages, including the Scheduling Assistant and
Events. - It is usually included in the Type column, next to the instructional type, e.g., Lecture
(Online).
Multiple-Major Curricula
- A curriculum has a new property named multiple majors (boolean, default to false).
- If a curriculum is marked as multiple-major: a student meets the curriculum only when he/she has
all the selected majors (not one of the selected). - A multiple-major curriculum will inherit course projections from curricula that have no or one
of the matching majors. - There can be multiple curricula that get combined together to form a multiple-major curriculum.
- If a course is on several curricula, the highest percent share (of the particular
classification) will be used. - These shares can be overridden on the multiple-major curriculum, but no courses can be deleted
(course projection must be set to zero instead). - The parent (single or no major curricula) can have zero requested students, only acting as
templates for the multiple-major curricula. - If there is no multiple-major curriculum, everything works like before.
Reservations
- Remember last sort in the reservation cookie.
- Added Previous / Next buttons (Edit Reservation).
- Added confirmation message when deleting a reservation (Edit Reservation).
Rooms
Overview
- The room pages have been completely rewritten using the Google Web Toolkit.
- The new pages are localizable, they are using the same Room Filter as is used in the event
management, and they are allowing a change to propagate over to the future academic sessions as
well. - It is also possible for users that are not managers in UniTime (e.g., instructors) and/or that
have no relation to a particular department (e.g., students) to be allowed to use the new rooms
pages. - When accessed from the Events menu, the Rooms, Room Groups and Room Features pages contain the
selection of an academic session, just like the Events page. - It is possible to use the old pages by setting the application property unitime.legacy.rooms to
true (defaults to false).
Rooms
- The Rooms page now contains a Room Filter and a table with many features.
- The table of rooms can be sorted by a given column, can show pretty much any room property, and
it can be exported to PDF or CSV.
Add/Edit Room
- Add Room and Edit Room page now contains all the functionality of the various edit pages that
were accessible from the Room Detail page. - Moreover, it is now possible to make the update the room in the (selected) future academic
sessions as well. - Only selected groups of properties can be updated in a particular future session.
Edit Room Departments
- The page can be used to assign multiple rooms to a particular department or examination
problem). - The page is only accessible when a departm...
UniTime 4.1 build 92 (Alpha 1)
Course Timetabling
Class Duration Types
- Added ability to define different ways how class duration is entered and used in the system (to
extend the formal Minutes per Week selection). - There is a new page (Administration > Other > Class Duration Types), where the class duration
types can be managed.- Permission ClassDurationTypes is needed to access the page, ClassDurationTypeEdit is needed to
make changes.
- Permission ClassDurationTypes is needed to access the page, ClassDurationTypeEdit is needed to
- Default duration type can be defined on an academic session, it can be overridden on the
instructional offering configuration level (Instructional Offering Configuration page).- Name of the default duration type is used in the column headers (Classes, Instructional
Offerings), abbreviation is used to suffix durations that are using a non-default duration
type.
- Name of the default duration type is used in the column headers (Classes, Instructional
- Following class duration types have been implemented:
- Minutes per Week (default): this is the existing behaviour (minutes per week == number of
meetings x minutes per meeting) - Average Weekly Mintes: average number of minutes a class takes during a week (weekly minutes =
number of meetings x minutes per meeting x number of weeks of the data pattern / number of
weeks in the term)- Paramter: number of weeks in the term (defaults to the number of weeks of the default date
pattern)
- Paramter: number of weeks in the term (defaults to the number of weeks of the default date
- Semester Minutes: number of minutes in the semester (semester minutes == number of meetings x
minutes per meeting x number of weeks of the data pattern) - Semester Hours: number of hours in the semester (semester hours == number of meetings x
minutes per meeting x number of weeks of the data pattern / minutes in an hour)- Paramter: number of minutes in an hour (defaults to 50)
- Meetings Minutes: number of minutes of all the meetings, excluding vacations (meeting minutes
== number of meetings based on the date pattern x minutes per meeting)- Parameters: allowed variation of the meeting minutes, expressed as lower and upper bound
(defaults to 0.95,1.10 -- meaning a class can have 5% less time, combinations with 10% more
time will be also considered). - If the number of meetings based on the date pattern exceeds the desired number of meeting
minutes, only meetings covering the given number of meeting minutes are created.
- Parameters: allowed variation of the meeting minutes, expressed as lower and upper bound
- Meeting Hours: just like meeting minutes, but with hours (semester hours == number of meetings
based on the date pattern x minutes per meeting / minutes in an hour)- Paramters: number of minutes in an hour and the allowed variation of the meeting minutes
(defaults to 50,0.95,1.10 -- 50 minutes in an hour, 5% less time allowed, combinations with
up to 10% excess time are considered).
- Paramters: number of minutes in an hour and the allowed variation of the meeting minutes
- Minutes per Week (default): this is the existing behaviour (minutes per week == number of
- It is possible to hide class duration types that are not to be used by the users.
- If only one type is visible, there is no selection of the class duration type on the
Instructional Offering Configuration page.
- If only one type is visible, there is no selection of the class duration type on the
Cancelled Classes
- Added ability to cancel a class.
- Multiple Class Setup page: class with enrolments cannot be deleted, but it could be cancelled
instead. - Cancelled classes retain their committed assignment, but the appropriate class event is
cancelled. - Cancelled classes are not loaded into the course timetabling solver.
- Cancelled classes cannot be edited or re-assigned and they do not block the room or instructor.
- When a cancelled classes is reopened, the appropriate event is also re-approved.
- This could cause conflicts, that have to be manually resolved.
- In student scheduling, cancelled classes are avoided (no valid enrollment can contain
a cancelled class). - In online student scheduling, it is possible to keep existing students in cancelled classes when
solver configuration parameter named Enrollment.CanKeepCancelledClass is set to true (defaults
to false). - New permissions:
- Class Delete: ability to delete a class (class cannot be deleted when there is a committed
solution and at least one student enrolled in the class) - Class Delete No Enrollment Check: this permission overrides the enrollment check from the
Class Delete permission (not given to any role by default) - Class Cancel: ability to cancel a class (there must be a committed solution)
- The Class Delete and Class Cancel permissions are by default given to all roles that have
Multiple Class Setup Class and / or Class Edit permissions.
- Class Delete: ability to delete a class (class cannot be deleted when there is a committed
- Added a new permission (named Class Delete No Enrollment Check) that overrides the enrollment
check from the Class Delete permission.- No role is given this permission by default.
- Make Not-Offered: It is allowed to make an offering not-offered only when there are no students
enrolled, there is no committed solution, or the user has the Class Delete No Enrollment Check
permission. - Cross Lists: it is allowed to remove a cross-listed course from an offering only when there are
no students enrolled, there is no committed solution, or the user has the Class Delete No
Enrollment Check permission.
Conficting Classes
- Class Detail: Display conflicting classes.
- There is a new table called Conflicting Classes, just below the Timetable section.
- The table is only visible when the class is conflicting with some other class (or classes).
- The same checking as on the Class Assignment page is used.
- Instructional Offering Detail: Highlight conflicting classes with light red background.
- Conflicting classes are listed in the tooltip (more details are provided on the Class Detail
page, see above).
- Conflicting classes are listed in the tooltip (more details are provided on the Class Detail
- Conflict checking: avoid showing conflicts between classes that can overlap because of the Can
Share Room or the Meet Together distribution.
Instructional Methods
- Added instructional methods lookup table. Each method has a reference and a label.
- Example instructional methods: Online, Hybrid, or Face-to-Face.
- Instructional offering configuration can have an instructional method set.
- If set, instructional method appear on various pages, including the Scheduling Assistant and
Events. - It is usually included in the Type column, next to the instructional type, e.g., Lecture
(Online).
Multiple-Major Curricula
- A curriculum has a new property named multiple majors (boolean, default to false).
- If a curriculum is marked as multiple-major: a student meets the curriculum only when he/she has
all the selected majors (not one of the selected). - A multiple-major curriculum will inherit course projections from curricula that have no or one
of the matching majors. - There can be multiple curricula that get combined together to form a multiple-major curriculum.
- If a course is on several curricula, the highest percent share (of the particular
classification) will be used. - These shares can be overridden on the multiple-major curriculum, but no courses can be deleted
(course projection must be set to zero instead). - The parent (single or no major curricula) can have zero requested students, only acting as
templates for the multiple-major curricula. - If there is no multiple-major curriculum, everything works like before.
Reservations
- Remember last sort in the reservation cookie.
- Added Previous / Next buttons (Edit Reservation).
- Added confirmation message when deleting a reservation (Edit Reservation).
Rooms
Overview
- The room pages have been completely rewritten using the Google Web Toolkit.
- The new pages are localizable, they are using the same Room Filter as is used in the event
management, and they are allowing a change to propagate over to the future academic sessions as
well. - It is also possible for users that are not managers in UniTime (e.g., instructors) and/or that
have no relation to a particular department (e.g., students) to be allowed to use the new rooms
pages. - When accessed from the Events menu, the Rooms, Room Groups and Room Features pages contain the
selection of an academic session, just like the Events page. - It is possible to use the old pages by setting the application property unitime.legacy.rooms to
true (defaults to false).
Rooms
- The Rooms page now contains a Room Filter and a table with many features.
- The table of rooms can be sorted by a given column, can show pretty much any room property, and
it can be exported to PDF or CSV.
Add/Edit Room
- Add Room and Edit Room page now contains all the functionality of the various edit pages that
were accessible from the Room Detail page. - Moreover, it is now possible to make the update the room in the (selected) future academic
sessions as well. - Only selected groups of properties can be updated in a particular future session.
Edit Room Departments
- The page can be used to assign multiple rooms to a particular department or examination
problem). - The page is only accessible when a department or an examination problem is selected in the Room
Filter. - The page is now using the same table of rooms as the Rooms page and it is populated by all the
rooms matching the Room Filter (except of the selected department / examination problem). - Rooms not matching the Room Filter are left unchanged.
Room Groups / Features
- The Room Groups and Room Features pages also use the Room Filter to list rooms (and matching
room features and groups). - The Add and Edit pages are also using the same table as on the Rooms page with the list of rooms
populated by all the rooms matching the Room Filter. - Rooms not matching the Room Filter are left unchanged.
- When creating / updated a room group or feature, it is possible to select one or more future
academic sessions that would be updated as well.- Besides of the properties of the group (or feature) like name, abbreviation department, etc.,
only rooms with a change are updated. - This means that the future group (or feature) is NOT reset to the rooms that are currently
selected on the group (or feature).
- Besides of the properties of the group (or feature) like name, abbreviation department, etc.,
Examination Timetab...
UniTime 4.0 build 37
Bug Fixes
Course Timetabling: Student Sectioning
- Include committed student conflicts in the check whether a student swap was improving.
- Undo the swap if it was not improving (this fixes the problem that could cause student
sectioning to hang).
Online Student Scheduling: Custom Student Enrollment Interface
- Fixed an issue with the disabled for student scheduling check (do not drop a student if he/she
is already in the section). - Keep sections that cannot be dropped in the add (courseReferenceNumbers) list.
- When a course is locked and there is a change, also mark dropped sections as failed.
- When UniTime does not know about the student, but there is an enrollment provider capable of
requesting updates, then use the custom eligibility check to request an update. - During enrollment, ensure that there is a request for any course that the student failed to drop
because of the custom student enrollment interface rejected the drop. - Avoid inclusing classes that were rejected to be added by the custom student enrollment
interface in the consecutive enrollment request.
Instructional Offering Configuration
- Fixed an issue preventing a configuration with two or more levels of parent-child relations from
being deleted (ObjectDeletedException).
Permissions
- Remember the roles and their order when the page is loaded, use this list for the updates.
- This fixes the issue with the permissions getting shifted between roles as the order of the
roles is changed between updates (number of permissions of a role is used in the ordering).
Course Timetabling: Missing Solver Group
- Fixed a NullPointerException thrown when the solver tries to load a class that is managed by
a department which does not have a solver group. - Warning "Manager of class X has no solver group." is logged instead.
Other Improvements
Course Timetabling: N Hour Work Day
- Added constraint N Hour Work Day (where N can be 6, 7, 8, ..., 12)
- The constraint limits the time between the start of the first class and the end of the last
class on any day. - Distribution type reference is WORKDAY(N), where N is between 6 and 12.
- The constraint needs to be registered. This can be done by a script:
- Download the script from http://goo.gl/9nyu0U and import it on the Administration > Academic
Sessions > Data Exchange page. - Run the script Distribution Types: Create Work Day Constraints on the Administration >
Utilities > Scripts page.
- Download the script from http://goo.gl/9nyu0U and import it on the Administration > Academic
Events Lookup Backend: Personal Schedule
- Added ability to filter events by role (student, instructor, coordinator, contact):
- contact: only list events that has the user as main or additional contact,
- student: only list class, course related and examination events attended by the person (as
a student), - instructor: only list classes, course related and examination events with the person assigned
as instructor, - coordinator: only list classes, course related and examination events with the person assigned
as course coordinator.
- Multiple roles can be provided (default is student, instructor, and contact).
- Added ability to type in role (or roles) on the Personal Timetable page (but the roles do not
show up in the Event Filter).
Event Filter: Do not count conflicting events
- Added ability to avoid counting conflicting events in the Event Filter.
- To be enabled by setting the application property
unitime.events.eventFilter.skipConflictCounts to true (defaults is false). - This makes the component load faster, especially on MySQL.
- To be enabled by setting the application property
UniTime RESTful API
- First take on creating a RESTful API in UniTime.
- Following conntectors have been created so far:
- /api/events: ability to retrieve events (using the EventInterface class converted to JSON,
example: GET UniTime/api/events?type=PERSON&ext=1001&term=Fal2010) - /api/json: JSON interface for GWT calls (that implement the GwtRpcRequest interface)
- /api/exchange: to export/import UniTime's data exchange XML files
- export example: GET UniTime/api/exchange?term=Fal2010&type=students
- import example: POST UniTime/api/exchange (with the XML as payload)
- /api/roles?id= returns a list of academic sessions (and roles) for a person
(returns a list of academic sessions when there is no id parameter) - /api/enrollments?eventId= returns student enrollments for an event, a class (when classId
parameter is used instead), an exam (examId), a course offering (courseId), an instructional
offering (offeringId), or instructional offering configuration (configId) - /api/instructor-schedule?id=&term= returns classes, courses, and
examinations assigned to an instructor. - /api/class-info?classId= returns information about a class (including assinged instructors
and coordinators)
- /api/events: ability to retrieve events (using the EventInterface class converted to JSON,
- Each connector has the appropriate permission (see Api... permissions), with the ability to
either use HTTP-simple authentication or an API token. - It is possible to change the hibernate cache mode for a particular API connector by setting the
unitime.api.X.cacheMode application property (where X is the connector name).- For example, setting unitime.api.enrollments.cacheMode=REFRESH will make the /api/enrollments
connector to never read the hibernate cache, but it will keep it updated.
- For example, setting unitime.api.enrollments.cacheMode=REFRESH will make the /api/enrollments
Online Student Scheduling: Scheduling Assistant
- If eligibility check fails, keep on displaying the eligibility check message. This makes it
easier to see why the Submit Schedule button is not visible. - Added ability to execute the custom eligibility check when the Submit Schedule is pressed:
- when the custom eligibility chek returns RECHECK_BEFORE_ENROLLMENT flag, or
- when unitime.enrollment.recheckCustomEligibility is set tu true (defaults to false).
- Course Requests: Added a missing notification when a course is selected using the Course Finder
dialog.- This fixes the issue of the course alternative not being enabled when the course is entered
using the Course Finder dialog.
- This fixes the issue of the course alternative not being enabled when the course is entered
Online Student Scheduling: Locking
- Added ability to tune the locking using application properties.
- For each action, it is possible to specify if the student as well as the related offerings
should be locked. - By default, the following operations no longer lock offerings (they only lock the student):
eligibility, status-change, student-email. - The locking can be changed by the following properties:
- unitime.sectioning.config.X.LockOfferings (include offerings in the lock for the action named
X) - unitime.sectioning.config.X.LockStudents (include student in the lock for the action named X)
- unitime.sectioning.config.X.LockOfferings (include offerings in the lock for the action named
Online Student Scheduling Reports
- CSV Export: Added ability to provide the academic session as parameter. This allows for the
exporter to be called from outside of UniTime. - Individual Time Overlaps: Added a new report computing individual student time conflicts. There
are four variants:- Individual Student Time Overlaps lists all time conflicts, showing why a conflict is allowed,
- Not Allowed Time Overlaps only lists time conflicts that are not allowed (and should not be
present in the data), - Individual Student Time Overlaps (Exclude Break Times) lists all time conflicts, but break
times are excluded from conflict checking, - Not Allowed Time Overlaps (Exclude Break Times) lists all time conflicts that are not allowed
even when break times are excluded from conflict checking
Online Student Scheduling: Enrollments table
- Do not list enrollment message for requests that are enrolled (enrollment message contains
a reason why a request is not enrolled).
Data Exchange: Student Enrollments and Student Sectioning XML imports
- The import can now work with a case where class external ids are NOT unique (e.g., when Lec 1
and Lec 1a share the same external id). - Fixed an issue with dropping alternative course request (deleted object would be re-saved by
cascade). - Fixed an issue with parsing free-time request days of week (Thursday, Sunday were incorrectly
parsed). - Added ability to have element of an element (which is the way how
2nd alternative is exported). - When a student is enrolled into an existing course request, drop the enrollment message if there
is one (enrollment message contains a reason why a request is not enrolled).
Data Exchange: Course Offering XML export and import
- Added course offering reserved space (reserved attribute of the course element).
Technology Update: GWT 2.7.0
- GWT updated to version 2.7.0 (was 2.6.1).
- Also updated CGLIB to version 3.1 (was 2.2.2), to use the same version of ASM as GWT (5.0.3, was
3.3.1).
Timetable Managers: Show all managers
- Added ability to hide managers that have no session independent role and no relation to the
current academic session.- By default only managers that have a session independent role or at least one department of
the current academic session are shown. - This can be changed by checking the "Show all managers" at the bottom of the list.
- By default only managers that have a session independent role or at least one department of
UniTime 3.5 build 244
Bug Fixes
Online Student Scheduling: Custom Student Enrollment Interface
- Fixed an issue with the disabled for student scheduling check (do not drop a student if he/she
is already in the section). - Keep sections that cannot be dropped in the add (courseReferenceNumbers) list.
- When a course is locked and there is a change, also mark dropped sections as failed.
- When UniTime does not know about the student, but there is an enrollment provider capable of
requesting updates, then use the custom eligibility check to request an update. - During enrollment, ensure that there is a request for any course that the student failed to drop
because of the custom student enrollment interface rejected the drop. - Avoid inclusing classes that were rejected to be added by the custom student enrollment
interface in the consecutive enrollment request.
Course Timetabling: Student Sectioning
- Include committed student conflicts in the check whether a student swap was improving.
- Undo the swap if it was not improving (this fixes the problem that could cause student
sectioning to hang).
Instructional Offering Configuration
- Fixed an issue preventing a configuration with two or more levels of parent-child relations from
being deleted (ObjectDeletedException).
Permissions
- Remember the roles and their order when the page is loaded, use this list for the updates.
- This fixes the issue with the permissions getting shifted between roles as the order of the
roles is changed between updates (number of permissions of a role is used in the ordering).
Course Timetabling: Missing Solver Group
- Fixed a NullPointerException thrown when the solver tries to load a class that is managed by
a department which does not have a solver group. - Warning "Manager of class X has no solver group." is logged instead.
Other Improvements
Course Timetabling: N Hour Work Day
- Added constraint N Hour Work Day (where N can be 6, 7, 8, ..., 12)
- The constraint limits the time between the start of the first class and the end of the last
class on any day. - Distribution type reference is WORKDAY(N), where N is between 6 and 12.
- The constraint needs to be registered. This can be done by a script:
- Download the script from http://goo.gl/dCgiV6 and import it on the Administration > Academic
Sessions > Data Exchange page. - Run the script Distribution Types: Create Work Day Constraints on the Administration >
Utilities > Scripts page.
- Download the script from http://goo.gl/dCgiV6 and import it on the Administration > Academic
Events Lookup Backend: Personal Schedule
- Added ability to filter events by role (student, instructor, coordinator, contact):
- contact: only list events that has the user as main or additional contact,
- student: only list class, course related and examination events attended by the person (as
a student), - instructor: only list classes, course related and examination events with the person assigned
as instructor, - coordinator: only list classes, course related and examination events with the person assigned
as course coordinator.
- Multiple roles can be provided (default is student, instructor, and contact).
- Added ability to type in role (or roles) on the Personal Timetable page (but the roles do not
show up in the Event Filter).
Event Filter: Do not count conflicting events
- Added ability to avoid counting conflicting events in the Event Filter.
- To be enabled by setting the application property
unitime.events.eventFilter.skipConflictCounts to true (defaults is false). - This makes the component load faster, especially on MySQL.
- To be enabled by setting the application property
UniTime RESTful API
- First take on creating a RESTful API in UniTime.
- Following conntectors have been created so far:
- /api/events: ability to retrieve events (using the EventInterface class converted to JSON,
example: GET UniTime/api/events?type=PERSON&ext=1001&term=Fal2010) - /api/json: JSON interface for GWT calls (that implement the GwtRpcRequest interface)
- /api/exchange: to export/import UniTime's data exchange XML files
- export example: GET UniTime/api/exchange?term=Fal2010&type=students
- import example: POST UniTime/api/exchange (with the XML as payload)
- /api/roles?id= returns a list of academic sessions (and roles) for a person
(returns a list of academic sessions when there is no id parameter) - /api/enrollments?eventId= returns student enrollments for an event, a class (when classId
parameter is used instead), an exam (examId), a course offering (courseId), an instructional
offering (offeringId), or instructional offering configuration (configId) - /api/instructor-schedule?id=&term= returns classes, courses, and
examinations assigned to an instructor. - /api/class-info?classId= returns information about a class (including assinged instructors
and coordinators)
- /api/events: ability to retrieve events (using the EventInterface class converted to JSON,
- Each connector has the appropriate permission (see Api... permissions), with the ability to
either use HTTP-simple authentication or an API token. - It is possible to change the hibernate cache mode for a particular API connector by setting the
unitime.api.X.cacheMode application property (where X is the connector name).- For example, setting unitime.api.enrollments.cacheMode=REFRESH will make the /api/enrollments
connector to never read the hibernate cache, but it will keep it updated.
- For example, setting unitime.api.enrollments.cacheMode=REFRESH will make the /api/enrollments
Online Student Scheduling: Scheduling Assistant
- If eligibility check fails, keep on displaying the eligibility check message. This makes it
easier to see why the Submit Schedule button is not visible. - Added ability to execute the custom eligibility check when the Submit Schedule is pressed:
- when the custom eligibility chek returns RECHECK_BEFORE_ENROLLMENT flag, or
- when unitime.enrollment.recheckCustomEligibility is set tu true (defaults to false).
- Course Requests: Added a missing notification when a course is selected using the Course Finder
dialog.- This fixes the issue of the course alternative not being enabled when the course is entered
using the Course Finder dialog.
- This fixes the issue of the course alternative not being enabled when the course is entered
Online Student Scheduling: Locking
- Added ability to tune the locking using application properties.
- For each action, it is possible to specify if the student as well as the related offerings
should be locked. - By default, the following operations no longer lock offerings (they only lock the student):
eligibility, status-change, student-email. - The locking can be changed by the following properties:
- unitime.sectioning.config.X.LockOfferings (include offerings in the lock for the action named
X) - unitime.sectioning.config.X.LockStudents (include student in the lock for the action named X)
- unitime.sectioning.config.X.LockOfferings (include offerings in the lock for the action named
Online Student Scheduling Reports
- CSV Export: Added ability to provide the academic session as parameter. This allows for the
exporter to be called from outside of UniTime. - Individual Time Overlaps: Added a new report computing individual student time conflicts. There
are four variants:- Individual Student Time Overlaps lists all time conflicts, showing why a conflict is allowed,
- Not Allowed Time Overlaps only lists time conflicts that are not allowed (and should not be
present in the data), - Individual Student Time Overlaps (Exclude Break Times) lists all time conflicts, but break
times are excluded from conflict checking, - Not Allowed Time Overlaps (Exclude Break Times) lists all time conflicts that are not allowed
even when break times are excluded from conflict checking
Online Student Scheduling: Enrollments table
- Do not list enrollment message for requests that are enrolled (enrollment message contains
a reason why a request is not enrolled).
Data Exchange: Student Enrollments and Student Sectioning XML imports
- The import can now work with a case where class external ids are NOT unique (e.g., when Lec 1
and Lec 1a share the same external id). - Fixed an issue with dropping alternative course request (deleted object would be re-saved by
cascade). - Fixed an issue with parsing free-time request days of week (Thursday, Sunday were incorrectly
parsed). - Added ability to have element of an element (which is the way how
2nd alternative is exported). - When a student is enrolled into an existing course request, drop the enrollment message if there
is one (enrollment message contains a reason why a request is not enrolled).
Data Exchange: Course Offering XML export and import
- Added course offering reserved space (reserved attribute of the course element).
Technology Update: GWT 2.7.0
- GWT updated to version 2.7.0 (was 2.6.1).
- Also updated CGLIB to version 3.1 (was 2.2.2), to use the same version of ASM as GWT (5.0.3, was
3.3.1).
Timetable Managers: Show all managers
- Added ability to hide managers that have no session independent role and no relation to the
current academic session.- By default only managers that have a session independent role or at least one department of
the current academic session are shown. - This can be changed by checking the "Show all managers" at the bottom of the list.
- By default only managers that have a session independent role or at least one department of
UniTime 4.0 build 17
Bug Fixes
Data Exchange: Session Restore
- Avoid conversion of a binary object to utf-8 and back.
Student Scheduling Assistant: Authentication
- When authentication is required but the user login dialog is not allowed: fixed the case when
the Login page was not loaded at times.
Course Timetabling: Ignore Room Check
- Improved handing of locations that have the ignore room check toggle set:
- No overlaps are checked in such locations during commit.
- No committed placements (of other problems) nor other approved events are loaded as
unavailabilities for such locations (ignore room check location is always available).
UniTime Registration
- Main page: fixed the ability to register the UniTime instance.
UniTime 3.5 build 223
Bug Fixes
Data Exchange: Session Restore
- Avoid conversion of a binary object to utf-8 and back.
Student Scheduling Assistant: Authentication
- When authentication is required but the user login dialog is not allowed: fixed the case when
the Login page was not loaded at times.
Course Timetabling: Ignore Room Check
- Improved handing of locations that have the ignore room check toggle set:
- No overlaps are checked in such locations during commit.
- No committed placements (of other problems) nor other approved events are loaded as
unavailabilities for such locations (ignore room check location is always available).
UniTime Registration
- Main page: fixed the ability to register the UniTime instance.
UniTime 4.0 build 12
Bug Fixes
Online Student Scheduling Server
- Get course by name or by name and title: fix the case when there is a dash in the subject area
abbreviation or a course number. - Improved handling of the case when a student is enrolled into the same offering multiple times,
under different course names.
Course Timetabling: Database Load
- Ensure that an instructor distribution preference is loaded in only once when the following two
conditions are met:- a) inherited instructor preferences is enabled on an external department,
- b) both the external department and the instructor's department are being loaded in.
Data Exchange: Session Restore
- Fixed ability to import a new instructional type (id was not set).
Other Improvements
Online Student Scheduling: Eligibility Check
- When there is no student record matching with the external id of the authenticated user:
- "You are not registered as a student in {0}." message changed to "You are not eligible to
register in {0}.". - Do not display the message when in the assistant mode (enrollment is not enabled).
- "You are not registered as a student in {0}." message changed to "You are not eligible to
Solution Reports: Violated Distribution Preferences
- Added a column counting the number of violations (violated pairs).
- Include flexible group constraints in the list.
Suggestions: Flexible Constraints
- Include flexible group constraints in the Distribution Preferences counters.
- Include flexible group constraints on the Violated Constraints list.
Batch Student Sectioning: Database Loader
- Minimal Perturbation Problem: Add current class assignments as selected choices.
- This helps keeping students close to their original enrolment when the original enrolment is
not in the domain.
- This helps keeping students close to their original enrolment when the original enrolment is
- Added ability to load student groups as request groups.
- Request groups are loaded in only when the solver paramter Load.RequestGroups is set to true,
default is false. - Solver parameter StudentWeights.SameGroup (defaults to 0.1) can be used to change the impact
of the same group criterion. - Request Groups solver report has been also added.
- Request groups are loaded in only when the solver paramter Load.RequestGroups is set to true,
Localization
- Added ability to let users to choose the locale by defining the unitime.locale manager settings.
HQL Reports: Reference Tables
- Added ability to include any reference table (room type, distribution type, etc.) as query
parameter.
Scripts: Import / Export XML
- Added ability to export a script in XML format.
- Added ability to import XML with one ore more scripts.
Events: Standard Notes
- Added Select button when selecting a standard note (both Standard Notes dialog and Approval
dialog). - This fixes the issue of not being able to select a standard note on a mobile device (due to the
inability to double click).
CAS Authentication
- Added ability to always translate the returned external user id by setting
unitime.authentication.cas.id-translate to true (defaults to false). - Added ability to lookup multiple attributes in the CAS ticket (the
unitime.authentication.cas.id-translate can contain a comma separated list of attributes).- Each attribute may or may not be translated (the unitime.authentication.cas.id-translate can
contain a comma separated list of true and false values, one for each attribute).
- Each attribute may or may not be translated (the unitime.authentication.cas.id-translate can
External User Id Translation
- Added ability to translate user names (as returned by the authentication) to the external user
ids that are used by UniTime. - Configuration (default SQLs are using the users table):
-
Enable custom SQL user id translation
- tmtbl.externalUid.translation=org.unitime.timetable.spring.security.CustomSQLExternalUidTransl
ation -
SQL query converting user name to external user id
- unitime.custom.sql.uid2ext=select external_uid from %SCHEMA%.users where username = ?
-
SQL query converting external user id to user name
- unitime.custom.sql.ext2uid=select username from %SCHEMA%.users where external_uid = ?
-
Events: Course Title
- Time Grid: Added ability to display course title in the header of an event in the time grid.
- This only happens when the application property unitime.events.grid_display_title is set to true
(defaults to false, current behaviour). - Only applies to class events (course related events and examination events can relate to
multiple courses and can have multiple titles with ambiguous choice which one to display). - When multiple course title exists, only the first one is displayed (e.g., in the case of
a cross-list, it should be the title of the controlling course). - Format: course title (instruction section)
- Example: Fundamentals of Biology II (Laboratory 12038-042)
Events: ICS Export
- When the grid display title is enabled (see above), course title is used as event name (summary
field). - Added ability to include instructor names in the description of an event.
- Tis only happens when the application property unitime.events.ics_instructors_in_description
is set to true (defaults to false, current behaviour).
- Tis only happens when the application property unitime.events.ics_instructors_in_description
CPSolver updated to version 1.3.52 (was 1.3.47)
Student Sectioning: Minimal Perturbation Problem
- Priority and equal weighting: added ability to minimise perturbations.
- Difference of an enrollment (from the initial one) is computed as a number between 0 (completely
different) and 1 (the initial enrollment). - It is computed as average using the following schema (over all sections of the enrollment):
- An initial section counts as 1,
- same choice section counts as 0.9 (parameter StudentWeights.SameChoice),
- same time section counts as 0.7 (parameter StudentWeights.SameTime),
- and different time section counts as 0.
- Non-initial enrollment weight is penalized with weight StudentWeights.Perturbation (defaults to
0.100) using the following formula- weights *= (1 - difference * StudentWeights.Perturbation)
- When MPP is enabled, solution info contains the following three new properties:
- Perturbations: same section assigned (% of initial section assigned over all course requests
with initial enrollment) - Perturbations: same choice assigned (% of same choice section assigned over all course
requests with initial enrollment) - Perturbations: same time assigned (% of same time section assigned over all course requests
with initial enrollment)
- Perturbations: same section assigned (% of initial section assigned over all course requests
- Note: same choice means same time and instructor.
Student Sectioning: Reservations
- If reservations are allowed to assign students over the limit during the batch student
sectioning, do not count the enrollments with such reservations towards course, configuration,
and section limits. - This is to avoid issues with the order in which enrollemnts were made.
Student Sectioning: Parallel Solver
- Course, Config, Section, and Reservation contexts now implement the CanInheritContext interface.
- This speeds up the creation of an inherited context.
Batch Student Sectioning: Request Groups
- Added ability to keep students of the same group together.
- Measured as an average probability of two students (of a group) that are requesting the same
course being given the same section (of the same subpart). - There is a new weight (named StudentWeights.SameGroup, defaults to 0.1) expressing how much this
criterion affects the student weight (in both priority and equal weighting). - This means that if a student is being enrolled into a completely different section, weight of
such an enrollment is decreased by 10%.- (the metric reflects how much are the students spread between the sections of the course)
Course Timetabling: Added MaxDays Flexible Constraint
- The MaxDays constraint limits the number of days of week during which the given set of classes
are taught. - It has one parameters: a maximal number of week days during which the given set of classes can
be placed. - For instance, reference MaxDays:2 translates to a maximum number of 2 days a week.
UniTime 3.5 build 218
Bug Fixes
Online Student Scheduling Server
- Get course by name or by name and title: fix the case when there is a dash in the subject area
abbreviation or a course number. - Improved handling of the case when a student is enrolled into the same offering multiple times,
under different course names.
Course Timetabling: Database Load
- Ensure that an instructor distribution preference is loaded in only once when the following two
conditions are met:- a) inherited instructor preferences is enabled on an external department,
- b) both the external department and the instructor's department are being loaded in.
Data Exchange: Session Restore
- Fixed ability to import a new instructional type (id was not set).
Other Improvements
Online Student Scheduling: Eligibility Check
- When there is no student record matching with the external id of the authenticated user:
- "You are not registered as a student in {0}." message changed to "You are not eligible to
register in {0}.". - Do not display the message when in the assistant mode (enrollment is not enabled).
- "You are not registered as a student in {0}." message changed to "You are not eligible to
Solution Reports: Violated Distribution Preferences
- Added a column counting the number of violations (violated pairs).
- Include flexible group constraints in the list.
Suggestions: Flexible Constraints
- Include flexible group constraints in the Distribution Preferences counters.
- Include flexible group constraints on the Violated Constraints list.
Batch Student Sectioning: Database Loader
- Minimal Perturbation Problem: Add current class assignments as selected choices.
- This helps keeping students close to their original enrolment when the original enrolment is
not in the domain.
- This helps keeping students close to their original enrolment when the original enrolment is
- Added ability to load student groups as request groups.
- Request groups are loaded in only when the solver paramter Load.RequestGroups is set to true,
default is false. - Solver parameter StudentWeights.SameGroup (defaults to 0.1) can be used to change the impact
of the same group criterion. - Request Groups solver report has been also added.
- Request groups are loaded in only when the solver paramter Load.RequestGroups is set to true,
Localization
- Added ability to let users to choose the locale by defining the unitime.locale manager settings.
HQL Reports: Reference Tables
- Added ability to include any reference table (room type, distribution type, etc.) as query
parameter.
Scripts: Import / Export XML
- Added ability to export a script in XML format.
- Added ability to import XML with one ore more scripts.
Events: Standard Notes
- Added Select button when selecting a standard note (both Standard Notes dialog and Approval
dialog). - This fixes the issue of not being able to select a standard note on a mobile device (due to the
inability to double click).
CAS Authentication
- Added ability to always translate the returned external user id by setting
unitime.authentication.cas.id-translate to true (defaults to false). - Added ability to lookup multiple attributes in the CAS ticket (the
unitime.authentication.cas.id-translate can contain a comma separated list of attributes).- Each attribute may or may not be translated (the unitime.authentication.cas.id-translate can
contain a comma separated list of true and false values, one for each attribute).
- Each attribute may or may not be translated (the unitime.authentication.cas.id-translate can
External User Id Translation
- Added ability to translate user names (as returned by the authentication) to the external user
ids that are used by UniTime. - Configuration (default SQLs are using the users table):
-
Enable custom SQL user id translation
- tmtbl.externalUid.translation=org.unitime.timetable.spring.security.CustomSQLExternalUidTransl
ation -
SQL query converting user name to external user id
- unitime.custom.sql.uid2ext=select external_uid from %SCHEMA%.users where username = ?
-
SQL query converting external user id to user name
- unitime.custom.sql.ext2uid=select username from %SCHEMA%.users where external_uid = ?
-
Events: Course Title
- Time Grid: Added ability to display course title in the header of an event in the time grid.
- This only happens when the application property unitime.events.grid_display_title is set to true
(defaults to false, current behaviour). - Only applies to class events (course related events and examination events can relate to
multiple courses and can have multiple titles with ambiguous choice which one to display). - When multiple course title exists, only the first one is displayed (e.g., in the case of
a cross-list, it should be the title of the controlling course). - Format: course title (instruction section)
- Example: Fundamentals of Biology II (Laboratory 12038-042)
Events: ICS Export
- When the grid display title is enabled (see above), course title is used as event name (summary
field). - Added ability to include instructor names in the description of an event.
- Tis only happens when the application property unitime.events.ics_instructors_in_description
is set to true (defaults to false, current behaviour).
- Tis only happens when the application property unitime.events.ics_instructors_in_description
CPSolver updated to version 1.3.52 (was 1.3.47)
Student Sectioning: Minimal Perturbation Problem
- Priority and equal weighting: added ability to minimise perturbations.
- Difference of an enrollment (from the initial one) is computed as a number between 0 (completely
different) and 1 (the initial enrollment). - It is computed as average using the following schema (over all sections of the enrollment):
- An initial section counts as 1,
- same choice section counts as 0.9 (parameter StudentWeights.SameChoice),
- same time section counts as 0.7 (parameter StudentWeights.SameTime),
- and different time section counts as 0.
- Non-initial enrollment weight is penalized with weight StudentWeights.Perturbation (defaults to
0.100) using the following formula- weights *= (1 - difference * StudentWeights.Perturbation)
- When MPP is enabled, solution info contains the following three new properties:
- Perturbations: same section assigned (% of initial section assigned over all course requests
with initial enrollment) - Perturbations: same choice assigned (% of same choice section assigned over all course
requests with initial enrollment) - Perturbations: same time assigned (% of same time section assigned over all course requests
with initial enrollment)
- Perturbations: same section assigned (% of initial section assigned over all course requests
- Note: same choice means same time and instructor.
Student Sectioning: Reservations
- If reservations are allowed to assign students over the limit during the batch student
sectioning, do not count the enrollments with such reservations towards course, configuration,
and section limits. - This is to avoid issues with the order in which enrollemnts were made.
Student Sectioning: Parallel Solver
- Course, Config, Section, and Reservation contexts now implement the CanInheritContext interface.
- This speeds up the creation of an inherited context.
Batch Student Sectioning: Request Groups
- Added ability to keep students of the same group together.
- Measured as an average probability of two students (of a group) that are requesting the same
course being given the same section (of the same subpart). - There is a new weight (named StudentWeights.SameGroup, defaults to 0.1) expressing how much this
criterion affects the student weight (in both priority and equal weighting). - This means that if a student is being enrolled into a completely different section, weight of
such an enrollment is decreased by 10%.- (the metric reflects how much are the students spread between the sections of the course)
Course Timetabling: Added MaxDays Flexible Constraint
- The MaxDays constraint limits the number of days of week during which the given set of classes
are taught. - It has one parameters: a maximal number of week days during which the given set of classes can
be placed. - For instance, reference MaxDays:2 translates to a maximum number of 2 days a week.
UniTime 4.0 build 2
Organizational Changes
The Apereo Foundation
- This is the first release under the Apereo Foundation.
- License was changed to the Apache Software License (ASL), Version 2.0.
- This release has the same features as UniTime 3.5 build 209
UniTime 3.5 build 210
Bug Fixes
Session Roll Forward
- Distribution Preferences: fixed rolling forward of distribution preferences when an academic
session is rolled forward multiple times.- There can be multiple distribution preferences with the same value of the
uniqueIdRolledForwardFrom attribute, one for each target academic session.
- There can be multiple distribution preferences with the same value of the
Examination Timetabling
- Load Availabilities: ignore class event meetings that are cancelled.
Event Management
- Course Related Events: class selection corrected when trying to select a class that has a parent
class.- Only top level classes showed up in the Class Number drop down.
- iCalendar Export: fixed SEQUENCE and DTSTAMP attributes in the iCalendar feed.
- This change fixes the issue of DTSTAMP being blank in certain cases (and violating the RFC
5545).
- This change fixes the issue of DTSTAMP being blank in certain cases (and violating the RFC
Online Student Scheduling
- Online Scheduling Reports: fixed null exception thrown when there is a student with free time
request.
Course Timetabling
- Database Save: Fixed SuspectedException thrown during save of the conflict statistics under
certain condition.- If run in a cluster, the remembered address of the web-server gets invalid when the web-server
is restarted.
- If run in a cluster, the remembered address of the web-server gets invalid when the web-server
- Group Constraint: Fixed an exception that can be thrown during the purge invalid placement phase
because of a hard back-to-back constraint.
Rooms
- Edit Room Groups / Features (accessible from the Room Detail page): fixed the problem of
removing the last departmental room feature or group.- It was not possible to remove the last departmental room feature or room group using this page
because the relation between the feature / group and the location was not updated on both
sides in this particular case. - The other page (Edit Room Feature / Group) did not have the problem.
- It was not possible to remove the last departmental room feature or room group using this page
Other Improvements
Suggestions
- When a placement that conflicts with itself is selected, display the selected assignments and
the conflict table, but no Assign button.- This is to give the user more information on why the selected assignment cannot be used.
CAS Authentication
- Added ability to provide user external id and full name from the CAS response attributes.
Event Management
- Email Confirmation: Added ability to CC event managers in the confirmation email.
- This is only enabled when the unitime.email.event.managers application property is set to true
(default is false). - If set to true, all timetable managers that are associated with the event department of a room
in the event and which have an event management role (that is a role with Event Lookup Contact
permission) with the receive emails toggle checked are carbon copied on the event confirmation
email.
- This is only enabled when the unitime.email.event.managers application property is set to true
Data Entry
- Classes, Instructional Offerings: Added ability to highlight preferences that are set directly
on classes.- Preferences that are set directly on classes have light yellow background.
- This is only enabled when the unitime.preferences.highlightClassPrefs property is set to
true (default is false).
- This is only enabled when the unitime.preferences.highlightClassPrefs property is set to
- Preference owner (class, scheduling subpart, instructor, etc.) is also mentioned in the
preference tooltip (this feature is always on). - Multiple Class Setup: Added ability to edit class sufixes (labeled as External Ids in the user
interface).- This is only enabled when the tmtbl.class_setup.edit_external_ids property is set to true
(default is false).
- This is only enabled when the tmtbl.class_setup.edit_external_ids property is set to true
- Preferences that are set directly on classes have light yellow background.
Examination Timetabling
- PDF Reports: Added compact mode for the period chart.
- No section information is printed, but the page fits up to 6 columns instead of just 4.