Releases: UniTime/unitime
Releases · UniTime/unitime
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.
UniTime 3.5 build 187
Technology Update
Clustering
- Improved ability for UniTime to run in a cluster.
- Remote solver servers connect to each other and the web server(s) using JGroups.
- Hibernate L2 cache is now replicated across the cluster.
- However, L2 cache is disabled when Hibernate is used outside of Tomcat (e.g., on a remote
solver server).
- However, L2 cache is disabled when Hibernate is used outside of Tomcat (e.g., on a remote
- Clustering can be disabled by setting application properties unitime.hibernate.cluster
(Hibernate L2 cache) and unitime.solver.cluster (remove solver servers) to false. - Online student scheduling server can now run on multiple machines at once, with the data
asynchronously replicated (using infinispan) and one machine being the master (responsible for
all the updates).- To enable replication, set unitime.enrollment.server.replicated to true.
Constraint Solver
- Using the latest version of CPSolver 1.3
- This update contains a new assignment model and multi-core capabilities.
Mobile
- A few initial steps have been made towards a frendlier version of UniTime pages on mobile
(tables or phone) devices. - Mobile page layout is using less tables, and there is a new menu.
Student Scheduling
Over-Expected Criterion
- Added ability to provide a custom criterion that decides whether a class is over-expected or
not. - Default implementation now falls back to section balancing when there are no expectations.
- I.e., students can be only allowed into sections that are (or will become) dis-balanced by
more than 10% if there are no other sections meeting their schedule.
- I.e., students can be only allowed into sections that are (or will become) dis-balanced by
Student Scheduling Reports
- Added an interface that is implemented by all the reports.
- Added time / availability conflicts report: unlike the existing course conflict report,
conflicts are counted between individual classes. - Distance conflict report: changed to compute conflicts between individual classes.
- Unbalanced sections report: list sections that are dis-balanced by more than 10%.
- Time-overlaps report: list time conflicts between classes (that do allow for time overlaps).
- Added a page through which various student sectioning solver reports can be displayed:
- Works for both batch (page Student Sectioning Solver Reports, menu Students > Solver Reports)
and online (page Online Student Scheduling Reports, menu Students > Online Scheduling
Reports). - All the existing current reports are available (time conflicts, availability conflicts,
unbalanced classes, distance conflicts, time overlaps).
- Works for both batch (page Student Sectioning Solver Reports, menu Students > Solver Reports)
Student Scheduling Dashboard
- Display Not-Enrolled student requests instead of just the wait-listed ones.
- Distinguish wait-listed unassigned request with the w) hint.
- This is done in the same way as there is the r) hint for enrollments using reservations or for
reserved space.
- This is done in the same way as there is the r) hint for enrollments using reservations or for
- Filter text field was replaced by the new filter box component (which is used on the events
page, e.g., as Event Filter or Room Filter).
Student Scheduling Assistant
- Added ability to wait-list an unassigned course request in the List of Classes table.
- Added ability to automatically add course request and alternate course request lines as they are
needed. - Time Conflicts: display the allowed time conflicts note (Overlaps with x) in red color.
- There is also a warning icon next to each class that has a time conflict.
Custom Student Enrollment Interface
- Added an ability to provide a custom class that synchronizes the enrollments with an external
system. - The interface can be used to check student's eligibility (an additional step in the
CheckEligibility action).- The external system can request students to enter a PIN number.
- Discrepancies between the two systems can be detected (e.g., a student may be denied the
ability to enroll through UniTime if the two systems are not in sync).
- The interface can be used to enroll students into classes (an additional step in the
EnrollStudent action).- The external system may reject enrollment of some classes.
- If this happens, student is not enrolled into the rejected classes in UniTime as well
(appropriate error messages are displayed instead).
- Automated qait-listing is disabled when such a custom interface is used.
- This change also includes an example implementation using the new Banner XE (RESTful) interface.
Course Timetabling
Instructor Preferences
- Added ability to automatically inherit instructor preferences to externally managed classes.
- There is a new toggle (inherit instructor preferences) on a department which controls whether
instructor preferences are to be inherited or not. - Applicable room and building preferences, global room features and groups can now be inherited
onto an externally managed class as well. - If the externally managed department does not allow required time and/or room preferences, the
instructor preferences are weakened accordingly.
Hierarchical Preference Inheritance
- If there are two or more scheduling subparts in a parent-child relation with the same
instructional type (e.g., Lec - Lec a - Lec b stacked underneath), inherit preferences and the
date pattern from the parent subpart whenever possible. - This behavior can be enabled by setting application property
unitime.preferences.hierarchicalInheritance to true.
Instructor Unavailability
- Instructor unavailabilty can include special and course-related events that are approved.
- These are events for which the instructor is the main contact or he/she is present in the
additional contacts of the event. - This feature can be enabled by setting the application property
unitime.events.instructorUnavailability to true (default is false).
- These are events for which the instructor is the main contact or he/she is present in the
- If enabled, the unavailabilities will also show:
- in the Timetable Grid (in the same way as blocking events are displayed for rooms now)
- on the Instructor Detail page (there is a new section called Instructor Unavailability, only
visible when there is at least one such blocking event for the instructor).
- The RoomAvailabilityInterface has been extended to provide instructor availability, the default
room availability service has been extended to provide instructor availability from the events
as described above.
Course Credit
- Course credit moved from instructional offering to course offering.
- That is, each course of a cross-list can have a different credit information.
- This allows for variable credit courses where a student can pick the proper number of credits
by selecting the appropriate course offering in the cross-list.
- Course credit information is now also visible in the Course Finder dialog of the Student
Scheduling Assistant page.
Other Changes
Event Management: No Room Check
- Rooms that have the Ignore Room Check toggle enabled can be overbooked.
- To easily identify such a room, there is a No Room Check note in the room's tooltip and the
room name is in italic in the Meetings table on the Add / Edit Event pages.
- To easily identify such a room, there is a No Room Check note in the room's tooltip and the
- Meetings that are in a room with no room check never show any conflicts and such meetings also
never show among conflicting events.
Rooms
- Added ability to provide room pictures.
- Pictures (of a room) can be updated for
- the current academic session only,
- the current academic session and all future academic sessions, or
- all academic sessions.
Application Properties
- All (or most of) application properties are now registered and used through the
ApplicationProperty enum.- This allows for an easy place to see all configuration properties, define their default values
and short descriptions.
- This allows for an easy place to see all configuration properties, define their default values
- Application Configuration page was modified to include all registered properties, including
their defaults and descriptions.
Data Exchange
- Added export of student course requests.
- Student Class Enrollment Import: update student course requests to match student class
enrollments. - Room Sharing: added ability to export and import room sharing.
- Student Import, Student Class Enrollments Import: added incremental mode
- When not in incremental mode, students (student class enrollments) that are not included in
the XML are deleted (this is the default). - When in incremental mode, students that are not included in the file are completely ignored.
- When not in incremental mode, students (student class enrollments) that are not included in
- Student Course Requests Import
- Added ability to cancel a student through the import (cancelStudent element).
- Added ability to include class enrollments with the course requests.
- Added enrollment mode (attribute enrollment on the root element) with the following values:
- update: enrollments are updated to point to new course requests, orphaned enrollments
(enrollments without course requests) are deleted (this is the default) - nochange: all enrollments are kept (previously, this was achieved by keepEnrollments='true')
- import: import enrollments from the file (default when there are class elements in the file)
- delete: all class enrollments (of the related students) are deleted
- update: enrollments are updated to point to new course requests, orphaned enrollments
CAS Authentication
- Added provisions for CAS-based authentication.
- To enable CAS, uncomment the CAS Authentication sections in securityContext.xml and web.xml (see
the comments there).
Localization
- Added en_UK locale: it is much like the default, except of time (24-hour format) and date (day
before moth) formatting. - Course Timetabling: Added ability to display assigned times in either 12-hour or 24-hour time
format (based on the locale).
Constraint Solver
Course Timetabling: Deterministic Student Sectioning Customization
- This custom sectioning assign students to groups in a deterministic way.
- Students are ordered by their academic information (curriculum) and unique ids and assigned in
this order to the first available group (configuration or lecture).
- Students are ordered by their academic information (curriculum) and unique ids and assigned in
- To enable this customization set the following parameter:
- StudentSectioning.Class=org.cpsolver.coursett.custom.Determin...