我正在研究CalDAV协议。
我对CalDAV的时间冲突或重叠有一些疑问。
让我通过实例解释一些情况。 我在日历中制作了一个PM1~PM6的活动。然后我尝试在同一日历中制作另一个事件PM2~7。这是时间冲突或重叠。
CalDav服务器如何解决此冲突?服务器在第二个事件发生时是否出错?
我确实搜索了RFC 6638.但我找不到解决方案。 请帮我解答。
感谢阅读。
答案 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
标头测试If
或PUT
来实现这一目标。即如果整个底层集合没有改变,那么PUT
只能成功。如果确实如此(PUT
将因冲突而失败),重做freebusy,然后重试。
我认为在CalDAV交叉集合(日历)中有一种可靠的方法可以做到这一点,也就是说,如果资源的可用性因为在不同的日历中预订而发生变化,那么目标同步集合就会赢得'通常会更改其同步标记,PUT
将会运行。
关于CalDAV(w /调度)的坏处是PUT不再是幂等的。否则你可以执行PUT
,重新检查它是否仍然没有冲突,如果是的话,请将其删除。