Notes on how it works
We have traces of old style CalDAV scheduling, iSchedule flow and new style CalDAV implicit scheduling. The following attempt to document the flow of actiosn as events are processed and sent.
Implicit scheduling flow in bedework
Changes to implement the latest CalDAV scheduling
Bedework 3.4.1.1 implemented draft 4. 3.5 will implement draft 6. It may be necessary to backport the changes to 3.4.1.1 as the clients are moving to draft 6 and this will render 3.4.1.1 unusable for CalDAAV scheduling.
On this page we will attempt to list all the changes made as a reminder.
BwEvent
...
private boolean organizerSchedulingObject;
private boolean attendeeSchedulingObject;
...
/** True if this is a valid organizer scheduling object. (See CalDAV
* scheduling specification). This can be set false (and will be on copy) to
* supress sending of invitations, e.g. for a draft.
*
* <p>When the event is added this flag will be set true if the appropriate
* conditions are satisfied.
*
* @param val
*/
@Immutable
public void setOrganizerSchedulingObject(boolean val) {
organizerSchedulingObject = val;
}
/**
* @return boolean
*/
public boolean getOrganizerSchedulingObject() {
return organizerSchedulingObject;
}
/** True if this is a valid attendee scheduling object.
* (See CalDAV scheduling specification)
*
* @param val
*/
@Immutable
public void setAttendeeSchedulingObject(boolean val) {
attendeeSchedulingObject = val;
}
/**
* @return boolean
*/
public boolean getAttendeeSchedulingObject() {
return attendeeSchedulingObject;
}
Associated changes to org.bedework.calsvc.Events#validate, restore.
ScheduleAgent and ScheduleStatus
Implement SCHEDULE-AGENT and SCHEDULE-STATUS parameters in ical4j.
Add to attendee - schema change required. Also restore code.
Add scheduleStatus to organizer - schema change for event and annotation, also change restore code.
In calsvc.Scheduling skip attendees with scheduleStatus != server.
Probably no change needed for web client.
Also if we backport this to 3.4.1.1 we can possibly skip all the scheduleAgent stuff to avoid a schema change
Schedule-Reply header
Create new class CalDavHeaders to check for Schedule-Reply.
Added sendReply method to Scheduling. We weren't sedning a decline anyway on deletion. Added code to Events to send a declined.
schedule-calendar-transp property
Added - bedework already has two flags for a BwCalendar object
private boolean affectsFreeBusy; private boolean ignoreTransparency;
so that affectsFreeBusy == true is the same as schedule-calendar-transp=opaque
Changes restricted to CaldavCalNode.
schedule-default-calendar-URL
We have a default calendar preference. Again changes restricted to CaldavCalNode.
