Calendar Generation
Calendar Generation is the process of generating all necessary Sessions that will be associated with each of the Cohorts for which we are generating the calendar. This means we are creating the individual classes for each of the class periods for each of the class groups, according to the timetable and calendar schedule that has been defined.
There are different structures that are used depending on whether a Cohort has its timetable managed externally or not.
Timetable Managed Externally equals True
In the case where timetable is managed externally for a cohort, then a process such as the LISS Publish Daily Data and Publish Daily Deltas will generally be executed from a platform such as EdVal Daily. This exchange of data instructs PosiEd to create individual session records for each class period.
The data relationship looks like this:
For each Cohort we create a Session and Cohort Session record for each class period that is being created. Note that the relationship between Cohort and Session is a many-to-many relationship through the Cohort Session object. This is because each Cohort will likely have multiple Sessions and each Session might (if it is a Joint session) also have an association with multiple Cohorts.
Timetable Managed Externally equals False
In the case where the timetable is managed by PosiEd; either because the school is using a timetable product such as Edval and its Publish Timetable feature via LISS; or because the Cohort Schedules have been set up manually, the following architecture is applied instead.
In this case, the relationship between Cohort and Cohort Session can be ignored because it is not used. Instead Cohort has one or more Cohort Schedule records and it is these Cohort Schedule records that have the relationship to the Cohort Session and Session objects. The various generate calendar processes will generate these Cohort Session and Session records as per the process we'll get into in a minute.
Note that once again Cohort Session is the centerpiece of a many-to-many relationship in order to accommodate joint classes. The calendar generation process as it pertains to PosiEd generating the calendar only works when Timetable Managed Externally is False.
This process can be either a process run for a single cohort by pressing the Generate Calendar button on the Cohort window.
It can be executed for a group of cohorts in a process called Bulk Generate Calendar execution. This is done through the Cohort tab of the Timetable Structure page. By opening this page you can select one or more or all cohorts before clicking on the Generate Calendar button.
This performs the same process, but it executes it across all selected cohorts.
How sessions are generated
Regardless of the method of calendar generations you use the process of generating the calendar for a particular cohort is the same.
Step one
From the cohort record get the educational institution timetable structure, timetable term and a list of cohort schedule records to generate. The timetable term will be used to define such characteristics as whether the timetable structure is active, the weeks in the cycle, days per week, etc. The term is used to define the start and end date of the cohort although this should be updated on the cohort itself. After this point, it is the cohort records that are most important.
The primary grade level value is also important because this will provide a reference into the date map. If a cohort is combining multiple grade levels, then it is vital that all classes defined for that cohort have exactly the same date map and period details for all year levels included in that cohort.
The system now cycles through each of the cohort schedule records. In each case it identifies the start and end date of the cohort schedule which may in rare situations differ from the term start and end dates of the cohort.
From the Bell time value on the cohort schedule we can identify the day, number, start time, end time period and other details of the cohort schedule.
Using the start and end date, the primary grade level, the day and week numbers we then query the date map to find all date map entries with values of this combination. For example we will find all date map entries for grade level 7 with a day type of 1 and a week of A and a period of 2 combination that it has identified and linked them to the cohort schedule record.
It will then duplicate any cohort schedule connection records for each session through session connection records. It will also create various event record entries for each cohort schedule connection record for each session. For example if there are two teachers, two classrooms and a resource booking listed in the cohort schedule connections, then it will create two session staff, two session location and a session resource event record for each session record that it creates.
Joint sessions
Joint sessions, whether they are created via Posi Ed or through external timetable management utilise the same object relationships as described previously but with a degree of extra complexity.
Both joint and vertical class architectures require each session to be associated with two or more cohorts or cohort schedule records. Examples of the record creation are described below:
- Insert screenshots from my ERD's from vertical and composite classes from the PosiEd 1 programme (Mike to review which diagrams are best: refer Lucidchart)
Base Calendar
The Base Calendar object requires an entry for each day of the year for each grade level.
Where all Grade Levels have the same rules i.e. a normal school day or a holiday, etc., then a single Base Calendar record can satisfy the requirements of all grade levels.
If, for example, Year 7-10 have one type of activity on the day e.g. a normal school day; and say Year 11-12 have an exam day, then 2 separate records will be created. The first pertaining to Year 7-10 and the 2nd pertaining to Year 11-12 each with the respective Day Type coding.
To create a calendar for a single Course Offering, we need the following:
The Course Offering must be allocated against a Term. This term will specify the Start Date and End Date range
The Course Offering must include one or more Course Offering Schedule records. This may have been populated from EDVAL, each will designate a specific Day Number e.g. 1 for the 1st day and Period which will be linked to the Time Block i.e. Start and End Time
A fully populated Base Calendar, this defines the grade level assigned to the particular Course Offering which days have each respective timetable
Once all of these have been defined, we can generate calendar events for the course offering through the following process:
Retrieve the Start and End Date through the Term associated with the Course Offering
Retrieve the Year Level from the Course Offering
For each Course Offering Schedule record, retrieve the Day Number and Time Block i.e. Start and End Time
Retrieve from the Base Calendar object all records that are between the Start Date and End Date and of the same Grade Level and with the same Day Number
Create Session and Cohort Session entries for each Day and Time Block range linking it to the Course Offering
Repeat for the next Course Offering schedule