[Kolab-devel] KEP 3: Introduction of 'subevent' sub-tag for 'exclusion' from 'recurrence'
Georg C. F. Greve
greve at kolabsys.com
Wed Nov 17 12:50:07 CET 2010
Hi all,
Another decision that has been in the pipeline since 2007 was the question of
handling exceptions from recurrence in ways that do not break the logical link
between recurring events and their exceptions.
The initial proposal for how to resolve this was still made by Martin Konold,
and I think it makes sense, so I wrote it up for a KEP.
Best regards,
Georg
--
Georg C. F. Greve
Chief Executive Officer
Kolab Systems AG
Zürich, Switzerland
e: greve at kolabsys.com
t: +41 78 904 43 33
w: http://kolabsys.com
pgp: 86574ACA Georg C. F. Greve
-------------- next part --------------
KEP: 3
Title: Introduction of 'subevent' sub-tag for 'exclusion' from 'recurrence'
Version: $Revision$
Last-Modified: $Date$
Author: Georg Greve <greve at kolabsys.com>
Status: Draft
Type: Design
Content-Type: text/x-rst
Created: 2010-11-17
Abstract
========
The Kolab storage format models allows recurrence to have 'non-occurence' exceptions already, but it does not allow to have 'modification' exceptions, e.g. change of time or location. The way this has been handled is to create a 'non-occurence' exception, and then create a separate event for that day with the default values of the recurring event.
This has been understood as a suboptimal solution for a long time because the clients cannot easily connect that new event with the recurring event for future modifications, while the user logically sees them as connected.
The solution is to introduce a hierarchically nested 'subevent' sub-tag for an exception, which takes all default values from the recurring event itself, and only contains the differences to these default values. [1]
Update to the XML Format
========================
The type for datetime storage in Kolab XML is modified as follows:
* A 'subevent' XML tag **MAY** be added hierarchically nested within an 'exclusion' to a 'recurrence' of an 'event' object.
* There **MUST** be only one 'subevent' per 'exclusion.
* All event values of the 'subevent' default to the 'event' within which it is nested. Values within 'subevent' change these values for this 'exception' from the 'recurrence' only.
Example
-------
Moving one instance of a recurring event from date1, a normal date in the recurrence cycle, to new-date1 would express itself as follows
<event>
...
<recurrence>
...
<exclusion>date1
<subevent>
<start-date>new-date1</start-date>
</subevent>
</exclusion>
</recurrence>
</event>
Upgrade Path
============
When this KEP becomes active, the version number of the Kolab Storage Format specification will be updated to 2.1.
New clients that correspond to 2.1 will be fully compatible with older data sets.
Older clients can continue to behave as before at their own choice, and will remain consistent with the 2.0 specification and no data will be lost or corrupted. So whilst this is important, it is not urgent. Older clients will however not be able to display recurrence exceptions of newer clients properly, so it is highly recommended to move to the newer 2.1 format when feasible.
References
==========
.. [1] event XML 1.1 (fix recurrances), Konold
(http://kolab.org/pipermail/kolab-format/2008-December/000876.html)
Copyright
=========
This document has been placed in the public domain.
..
Local Variables:
mode: indented-text
indent-tabs-mode: nil
sentence-end-double-space: t
fill-column: 70
coding: utf-8
End:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: KEP-3.pdf
Type: application/pdf
Size: 12039 bytes
Desc: not available
URL: <http://lists.kolab.org/pipermail/devel/attachments/20101117/fd542d3d/attachment.pdf>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 308 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.kolab.org/pipermail/devel/attachments/20101117/fd542d3d/attachment.sig>
More information about the devel
mailing list