[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Fwd: Re: Synchronization [Was: Re: CAP: Last Call By MarchIETF: Need Volunteers!]
At 10:33 AM 1/18/2002 -0700, you wrote:
Mark Paterson wrote:
>
> >>
> >> However, if there is something that we can
easily add to
> >> CAP that can help synchronization, we may want to add it.
On the
> >> other hand, what I described earlier, on how a CUA can
have
> >> basic synchronization, by using query on last modified
time
> >> and METHOD:DELETE, should be enough.
> >>
> >> Thus, if there are no objections, I will close
the issue.
> >
> >
> > I think there are a few issues to consider before closing
this.
> >
> > The key paragraph from the CAP Requirements document is as
follows:
> >
> > "CAP MUST allow synchronization, meaning at a minimum that
the CUA
> > is able to find and retrieve new, modified or deleted entries
for a
> > given time period. The CUA MUST be able to find out which
entries
> > have been added, modified or deleted since it last
synchronized, in
> > order to operate in disconnected mode. This requirement may
be
> > satisfied using the query requirements already
defined."
> >
> > In other words it must be possible for a sync engine
(client,
> > server, whatever) to be able to get the answers to the
following
> > three questions.
> >
> > 1) Within the given date range what entries are new?
> > 2) Within the given date range what entries have changed?
> > 3) Within the given date range what entries have been
deleted?
> >
> > Using a query on last modified time with a date range should
allow
> > you to gain answers to 1) and 2). The sync engine just needs to
keep
> > track of the time stamp from the last time they asked. Most
sync
> > solutions today have a sync context or anchor (or some other
fancy
> > name) but when dive in you'll find they all pretty much are
just
> > exactly that, the time stamp from the last successful sync. The
sync
> > engine need merely enumerate through the results and all the
IDs it
> > recognizes are changes and all the ones it doesn't are
new.
> > The only problem I can foresee has to do with instances of
recurring
> > entries. If I change the time of an instance of a meeting or
delete
> > an instance this will change the recurrence rule for this entry
and
> > consequently the last modified time but if I am doing a query
over a
> > specific time period the first instance of the repeating
may not be
> > in this time period so will I get it?
Change the RRULE? If you add an EXDATE or EXRULE, it will change
the VEVENT, but not the RRULE. Or if an instance at the beginning
or end is deleted - then, yes - you could change the RRULE.
Both will change the DTSTAMP.
I think you are reading more into what I wrote then I meant. When I
stated that the recurrence rule (not the RRULE) would change I simply
meant something within everything that went into deciding where instances
would end up would change and thus the entry. I should have said
recurrence set as is used in the iCalendar RFC. Sorry for the confusion.
I'm pretty sure I mean the same thing as you.
This is also why the EXPAND
property exists.
EXPAND:FALSE - yes, because it is part of the VEVENT and part of
the VEVENT falls within that range.
EXPAND:TRUE - no, you will only get the instances of that
VEVENT
that fall in that range.
Either way it sounds like a properly tailored CAP-QL query will take care
of what I was worried about. Good.
> > What does DTSTART and
DTEND
> > mean in this case? I think this is a basic problem that the
people
> > discussing the CAP-QL need to address. If I am trying to get
all the
> > entries in a week to populate a week view for example, I need
some
> > guarantee that I will get the entries with recurrence rules
that
> > cause instances to fall within my range. If the CAP-QL
addresses
> > this then I guess the issue for sync will be taken care of as
well.
I think it does with RRULE.
> > ...What does DTSTART and DTEND
> > mean in this case?...
I do think that we need to add another note to VQUERY,
this point was brought up before, I don't recall if it was
ever in any version of a draft.
When performing VQUERYs that use DTEND, the CS MUST
calculate:
The
effective DTEND for all components that have a DURATION
property
and match on those if they fall into the range
supplied
by DTEND.
When performing VQUERYs that use DURATION, the CS MUST
calculate:
The
effective DURATION for all components that have a DTEND
property and match on those if
they fall into the range
supplied by
DURATION.
Above when you sent:
> > In other words it must be possible for a sync engine
(client,
> > server, whatever) to be able to get the answers to the
following
> > three questions.
> >
> > ...
> >
> > 3) Within the given date range what entries have been
deleted?
It is possible for the CUA to calculate the differences given
the current state of any component in the CUA and the result
of a VQUERY to the CS. So I think the requirement is
met.
You don't want the Sync CUA asking the CS about each component it knows
about to see if it has been deleted. This would be a very heavy
operation. You want one call to tell you what's been deleted and I think
it can be done if Calendar CUAs all properly use the METHOD DELETE to
delete things.
And we need to add text about
METHOD:DELETE and how that is
the way to mark somehting as deleted.
It really needs to be a MUST for CUAs.
OK. I think my 1st and 2nd issues have been dealt with here. The only one
remaining is the last one about deleting an instance of a recurring
entry.If the Sync CUA is making a query over a date range how can it be
sure to catch this? It should be able to do something combining the
DTSTAMP and EXDATE I think?
--
Mark Paterson
Director, Client R&D
Steltor
mailto:markp@xxxxxxxxxxx
http://www.steltor.com