[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Correct handling of Recurrence-id




Doug wrote on 05/22/2003 01:13:33 PM:
> If SEQUENCE:1 has an instance of MONDAY      <- ORIGINAL
> And you say yes (book it).
>
> If SEQUENCE:2 changes the MONDAY instance to TUESDAY <- UPDATE '1'
> And you say yes (book it)
>
> If SEQUENCE:3 uses the RECURRANCE-ID of MONDAY  <- UPDATE '2'
>   Nothing matches - the sending CUA is busted.
>
> UPDATE '2' MUST use the RECURRANCE-ID of the UPDATE '1'
> instance (currently booked entry), not the original.

In spending some time fuming in traffic last night I realized that Doug / George have reinvented the abominable "Delta" model of workflow for repeating meetings!  That is, in order for ANY new iTIP message to be properly interpreted the recipient MUST have ALL of the previous messages and treat each one as a delta change to be applied to the previous one(s) in order to arrive at the right value(s).  

This "delta" model was quashed and banished when we first encountered the myriad problems that this introduces into workflow, etc.  Thats why we declared that all iCalendar objects be full and complete snapshots of the entrys they represent so that they can be processed w/o requiring all kinds of extra gyrations or jumping thru flaming hoops or disembowling of feathered animals on keyboards.

So lets take an couple minutes to analyze why the "delta" model is the wrong approach to take:

1: We cannot guarantee that every previous message has arrived at the recipients address.  As such, if any message _ever_ is lost then the entire workflow breaks down.  Also, data can arrive delayed and out of order making it impossible for workflow to be performed accurately (I often get Dougs replys to my notes waayy before I get my own postings via the IMC list server which gives my threading agents fits!)

2: We cannot prevent users from deleting 'old' messages nor should we require that _all_ previous messages be preserved in case we need to perform some new scheduling action.

3: There is no reliable way for a CUA to tell when the 'last' message in the delta chain has arrived and that workflow can safely be performed.  There is no magic indicator property nor can one be safely added.  Otherwise an UPDATE 3 (for above) would also have it and thus any CUA would mistake UPDATE 2 as the last one rather than UPDATE 3.  Its a chicken and egg type of problem recognizing "the last" or actual message to take workflow actions on.

4: The WG burned lots of gray cells recognizing the fact that the only way to keep workflow functioning was to make each message a full and complete snapshot for that entry/instance.  

I strongly believe that after we made the design choice to make messages full and complete by themselves that we left in some artifacts of the delta model and that the text that George cited is one such artifact.  If anyone can show how using a "delta" model actually will work w/o making workflow seem like alchemy I would love to read it.  In the mean time I will stand quite firm in my claim that "Delta is bad!".

As I said before (but it may not have sunk in so Ill say it again): The RECURRENCE-ID is akin to the UID in its function.  The UID is fixed and unchanging from the initial assignment of it and is used to uniquely identify the non-repeating entry or a repeating instance set.  The RECURRENCE-ID performs the same function but within the repeat set.  The RECURRENCE-ID is fixed and unchanging from the initial assigment of it and is used to uniquely identify the repeating entry no matter where it has been rescheduled to.

Bruce
===========================================================================
Bruce Kahn                                INet: Bruce_Kahn@xxxxxxxxxxxxxxxx
Messaging & Collaboration                 Phone: 978.399.6496
IBM Software Group                         FAX: and nothing but the FAX...
Standard disclaimers apply, even where prohibited by law...