(****************************************************************************** **** This RSL file is the Calendar database RSL file **** ******************************************************************************) (***** **** OBJECTS *****) object CalendarDB components: Users and CalendarDateRecord; (** operations: MaintainDB; **) description: (* The CalendarDB stores appointments for the campus. *); end CalendarDB; object Users components: SuperUser* | SystemAdmin* | CalendarUser*; description: (* The Users are the various persons that access the system. *); end Users; object SuperUser components: UserId; description: (* Each UserId represents each user in the system. *); end SuperUser; object SystemAdmin components: UserId; description: (* Each UserId represents each user in the system. *); end SystemAdmin; object CalendarUser components: GroupLeader*, Member*, NonGroupUser*; description: (* Each UserId represents each user in the system. *); end CalendarUser; object GroupLeader components: UserId; description: (* UserId represents each user in the system. *); end GroupLeader; object Member components: UserId; description: (* UserId represents each user in the system. *); end Member; object NonGroupUser components: UserId; description: (* UserId represents each user in the system. *); end NonGroupUser; object CalendarDateRecord components: Date*, Time*, Information*, CalendarSystemMaintainedFiles*; description: (* Each UserId represents each user in the system. *); end CalendarDateRecord; object Information components: PublicData* | PrivateData* | ProtectedData*; description: (* UserId represents each user in the system. *); end Information; object PublicData components: Appointment; description: (* UserId represents each user in the system. *); end PublicData; object PrivateData components: ToDo* | Appointment*; description: (* UserId represents each user in the system. *); end PrivateData; object ProtectedData components: Appointment*; description: (* UserId represents each user in the system. *); end ProtectedData; object CalendarSystemMaintainedFiles components: File*; description: (* UserId represents each user in the system. *); end CalendarSystemMaintainedFiles; object UserId = string; object Time = integer; object Date = integer; object Appointment = string; object ToDo = string; object File = string; (** * OPERATIONS **) (* UserSelection comes from EITHER the ThreeMonthCalendar on the left of the screen or a pop up window for user input. *) operation Day components: ; inputs: CalendarDB, UserSelection; outputs: CalendarDB, DayView; description: (* The Day operation changes the view based on the UserSelection of a day from the three month display on the left of the screen. *); end Day; operation ModelWeek components: ; inputs: CalendarDB, UserSelection; outputs: CalendarDB, ModelWeekView; description: (* The ModelWeek operation changes the view based on the UserSelection of a day from the three month display on the left of the screen. *); end ModelWeek; operation Month components: ; inputs: CalendarDB, UserSelection; outputs: CalendarDB, MonthView; description: (* The Month operation changes the view based on the UserSelection of a day from the three month display on the left of the screen. *); end Month; operation Week components: ; inputs:CalendarDB, UserSelection ; outputs: CalendarDB, WeekView; description: (* The Week operation changes the view based on the UserSelection of a day from the three month display on the left of the screen. *); end Week; operation Quarter components: ; inputs:CalendarDB, UserSelection ; outputs: CalendarDB, QuarterView; description: (* The Quarter operation changes the view based on the UserSelection of a day from the three month display on the left of the screen. *); end Quarter; operation Year components: ; inputs:CalendarDB, UserSelection; outputs: CalendarDB, YearView; description: (* The ModelWeek operation changes the view based on the UserSelection of a day from the three month display on the left of the screen. *); end Year; object SchedulingCriteria components: DayCrit, HourCrit, NumAttendees, MeetDuration (*, ... *); operations: ; description: ; end SchedulingCriteria; object DayCrit components: (DayCrit, SchedDelim, DayCrit) or DayName; operations: ; description: ; end DayCrit; object SchedDelim components: ; operations: AndDelim, OrDelim, RangeDelim; description: ; end SchedDelim; operation MultiYear components: ; inputs:CalendarDB, UserSelection; outputs: CalendarDB, MultiYearView; description: (* The MultiYear operation changes the view based on the UserSelection of a day from the three month display on the left of the screen. *); end MultiYear; operation GenerateSchedule (* components:Find, SelectedTimeSlots, FoundTimeSlots, Pencil, Users, Groups;*) inputs: CalendarDB, SchedulingCriteria; outputs: CalendarDB, FoundTimeSlots; description: (* Takes the user to the "Schedule Meeting" window. The "Schedule Meeting" window takes input from the user and finds possible time slots for a a group of individuals. *); end Schedule; operation BrowseUser components: Users, BUOk; inputs:CalendarDB, UserSelection, MySelectedView; outputs: CalendarDB; description: (* The ModelWeek operation changes the view based on the UserSelection of a day from the three month display on the left of the screen. *); end BrowseUser; operation BUOk components: ; inputs:CalendarDB, Users, MySelectedView; outputs: SelectedUserSchedule, CalendarDB; description: (* Browse User OK tells the system to get the selected user's schedule. *); end BUOk; operation SysAdmin components: ; inputs:CalendarDB, UserSelection; outputs: CalendarDB, DayView; description: (* The ModelWeek operation changes the view based on the UserSelection of a day from the three month display on the left of the screen. *); end SysAdmin; operation Preferences components: ; inputs:CalendarDB, UserSelection; outputs:CalendarDB; description: (* *); end Preferences; operation Group components: ; inputs:CalendarDB, UserSelection; outputs:CalendarDB; description: (* *); end Group; operation Print components: ; inputs: CalendarDB, UserSelectedView; outputs: CalendarDB; description: (* *); end Print; operation MainMenuQuit components: ; inputs: ; outputs: ; description: (* *); end MainMenuQuit; operation Public components: ; inputs: ; outputs: ; description: (* *); end Public; operation Protected components: ; inputs: ; outputs: ; description: (* *); end Protected; operation Private components: ; inputs: ; outputs: ; description: (* *); end Private; (* This is a userselection from the 3 month calendar on left of screen. *) operation ThreeMonthCalendarDay components: ; inputs: ; outputs: DayView, WeekView, MonthView, YearView, QuarterView, ModelWeekView, ; description: (* The user has selected a day from one of the three months displayed on the left edge of the calendar main screen. *); end ThreeMonthCalendarDay; (** What about the text boxes edited **) (* System Administrator Window Operations *) operation AddUser components: AddUserOk, AddUserTextBox; inputs: CalendarDB, UserSelection; outputs: CalendarDB ; description: (* The system administrator has requested to add a user to the CalendarDB. *); end AddUser; operation DeleteUser components: ; inputs: CalendarDB, UserSelection; outputs: CalendarDB; description: (* The system administrator has requested the system to delete a user that he selected in the userselection text box. *); end DeleteUser; operation EditDatabase components: EditDatabaseScreen; inputs: CalendarDB ; outputs: CalendarDB; description: (* This operation allows the System Admin. to add informational files to the system. In addition, it allows the Sys. Ad. to change configuration files. *); end EditDatabase; operation BackupSystem components: ; inputs: CalendarDB; outputs: CalendarDB; description: (* This operation allows the Sys. Ad. to backup the system. The backup would go to a dedicated backup unit. *); end BackupSystem; operation Find components: ; inputs: ; (*TimeMask and CalendarDB and ((UserList | GroupList) or (UserList and GroupList));*) outputs: TimeSlotList*; description: (* A list of common time slots for the listed users and groups is the output. *); end Find; operation Pencil components: Itinerary, AttendanceCheckBox, Process; inputs: CalendarDB, SelectedList, RequesterStatus, MeetingInfo; outputs: Notification, CalendarDB; description: (* If the RequesterStatus is GroupLeader, then the Pencil operation will "pencil" in the meeting(s) and notify the attendees. *); end Pencil; operation Confirm components: ; inputs: ; outputs: ; description: (* *); end Confirm; operation Explain components: ; inputs: ; outputs: ; description: (* *); end Explain; operation MeetingItinerary components: ; inputs: ; outputs: ; description: (* *); end MeetingItinerary; operation DropDownBox components: ; inputs: ; outputs: ; description: (* *); end DropDownBox; operation SelectDataItem components: ; inputs: ; outputs: ; description: (* *); end SelectDataItem; operation AccelerateDataItem components: ; inputs: ; outputs: ; description: (* *); end AccelerateDataItem; operation GetMeetingInfo components: ; inputs: UserInput; outputs: MeetingInfo; description: (* The user enters in the text aspect of the meeting info - where, when, how, etc. *); end GetMeetingInfo; (* Haven't fixed this one, yet. *) operation Groups components: ; inputs: UserInput; outputs: MeetingInfo; description: (* The user enters in the text aspect of the meeting info - where, when, how, etc. *); end Groups; operation FoundTimeSlots components: ; inputs: UserInput; outputs: MeetingInfo; description: (* The user enters in the text aspect of the meeting info - where, when, how, etc. *); end FoundTimeSlots; operation SelectedTimeSlots components: ; inputs: TimeSlotList, UserSelection; outputs: SelectedList*, MeetingInfo; description: (* The user selects the desired time slots. *); end SelectedTimeSlots;