[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: The Problem of Availbility (Components)
Vavailability solves a lot of problems for WS-Calendar. It creates some of its own. In iCalendar-speak, vavailability is a full-fledged Component. That means it is right up there with Intervals, Gluons, (and vevents, vtodos, valarms,…). The simplest vavailability looks like: BEGIN:VAVAILABILITY ORGANIZER:mailto:bernard@example.com UID:20061005T133225Z-00001@example.com DTSTAMP:20061005T133225Z DTSTART;TZID=America/Montreal:20061002T000000 BEGIN:AVAILABLE UID:20061005T133225Z-00001-A@example.com SUMMARY:Monday to Friday from 9:00 to 17:00 DTSTART;TZID=America/Montreal:20061002T090000 DTEND;TZID=America/Montreal:20061002T170000 RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR END:AVAILABLE END:VAVAILABILITY That is, it’s got a dtStart, and 1 to many AVAILABLE Objects. The example above has one. Each AVAILABLE has a dtStart, possible a dtEnd, and them some sort of repetition. The example above shows the begin and end time on the first day (9:00 to 5:00) and then says that it repeats every day of the week. The available pattern goes on forever. It needs the end date (from the overall vavailability) to say when the repetition ends. BEGIN:VAVAILABILITY ORGANIZER:mailto:bernard@example.com UID:20061005T133225Z-00001@example.com DTSTAMP:20061005T133225Z DTSTART;TZID=America/Montreal:20061002T000000 DTEND;TZID=America/Montreal:20061023T030000 BEGIN:AVAILABLE UID:20061005T133225Z-00001-A@example.com SUMMARY:Monday to Friday from 9:00 to 17:00 DTSTART;TZID=America/Montreal:20061002T090000 DTEND;TZID=America/Montreal:20061002T170000 RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR END:AVAILABLE END:VAVAILABILITY BEGIN:VAVAILABILITY ORGANIZER:mailto:bernard@example.com UID:20061005T133225Z-00001@example.com DTSTAMP:20061005T133225Z DTSTART;TZID=America/Los_Angeles:20061023T000000 DTEND;TZID=America/Los_Angeles:20061030T000000 BEGIN:AVAILABLE UID:20061005T133225Z-00001-A@example.com SUMMARY:Monday to Friday from 9:00 to 17:00 DTSTART;TZID=America/Los_Angeles:20061023T090000 DTEND;TZID=America/Los_Angeles:20061023T170000 RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR END:AVAILABLE END:VAVAILABILITY BEGIN:VAVAILABILITY ORGANIZER:mailto:bernard@example.com UID:20061005T133225Z-00001@example.com DTSTAMP:20061005T133225Z DTSTART;TZID=America/Montreal:20061030T030000 BEGIN:AVAILABLE UID:20061005T133225Z-00001-A@example.com SUMMARY:Monday to Friday from 9:00 to 17:00 DTSTART;TZID=America/Montreal:20061030T090000 DTEND;TZID=America/Montreal:20061030T170000 RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR END:AVAILABLE END:VAVAILABILITY I think this means that we have to allow vavailability objects in the Lineage, that is, in the chain of [Gluons] that point to the Sequence. This means to meet the RFC, VAVAILABILTIY must be additive, i.e., I can do it Monday afternoon for the next three months, or I can do it all day Tuesday for the next 4 months, or after April 1, I can do it Friday mornings. Three vavailabilities. Three relationships. I thing this means three Parents (Great/Grand/Parent) in a chain. This makes our current Availability Inheritance wrong. On the other hand, it establishes the possibility of branching. I can publish an availability lineage for conference calls after 10:00 at night, complete with a gluon indicating a higher cost – pointing to the same underlying sequence. Choice 2: Merge many Availability characteristics into Gluons. Change the rules for stacking Availability. This has potentially many ugly effects and compatibility issues. Choice 3: Add a components section to a Gluon, able to hold one or many VAVAILABILITY objects. This unfortunately makes the components definition recursive, - which would be bad. For now, I am assuming the definition of a sequence is a collection of intervals and a lineage consisting of one-to-many (gluon and vavailbility)s arranged in a lineage. “It is difficult to get a man to understand something, when his salary depends upon his not understanding it” -- Upton Sinclair.
|
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]