如何避免CalDAV的时间冲突或重叠?

时间:2017-11-14 11:37:09

标签: time conflict overlap caldav

我正在研究CalDAV协议。

我对CalDAV的时间冲突或重叠有一些疑问。

让我通过实例解释一些情况。 我在日历中制作了一个PM1~PM6的活动。然后我尝试在同一日历中制作另一个事件PM2~7。这是时间冲突或重叠。

CalDav服务器如何解决此冲突?服务器在第二个事件发生时是否出错?

我确实搜索了RFC 6638.但我找不到解决方案。 请帮我解答。

感谢阅读。

2 个答案:

答案 0 :(得分:0)

由CalDAV客户端决定在涉及重叠时如何表现。 如果客户端决定编写与另一个事件重叠的事件,则服务器将写入重叠事件。

当涉及计划时(用户A希望邀请用户B参加会议但希望避免选择已在用户B的日历中忙碌的时间段),CalDAV客户端可以查询FREEBUSY状态用户(见RFC 4791)。还有可用性,允许CalDAV客户端检索用户的可用性(想想营业时间)。

答案 1 :(得分:0)

Kim要求为商务日历系统提供一个非常常见的功能(不要让同一个人预订两次等)。

我认为在CalDAV世界中有两个部分:

a)首先客户端应该执行freebusy查询来检查   用户是否可用。然后显示冲突警告或   无论什么都合适。

这是多少系统,包括btw Exchange工作。 Siri也进行了这种冲突检测(“嘿,你当时已经有过一个事件,我还能创建冲突的事件,掌握吗?”)

b)但在合理的系统中,你实际上需要保证这一点  在PUT时间信息不会过时。即没有第二个  客户已安排相同的与会者/资源。

我认为在CalDAV中,您可以使用sync-token上的CTag标头测试IfPUT来实现这一目标。即如果整个底层集合没有改变,那么PUT只能成功。如果确实如此(PUT将因冲突而失败),重做freebusy,然后重试。

我认为在CalDAV交叉集合(日历)中有一种可靠的方法可以做到这一点,也就是说,如果资源的可用性因为在不同的日历中预订而发生变化,那么目标同步集合就会赢得'通常会更改其同步标记,PUT将会运行。 关于CalDAV(w /调度)的坏处是PUT不再是幂等的。否则你可以执行PUT,重新检查它是否仍然没有冲突,如果是的话,请将其删除。