Exchange 会议同步入门指南

一、Exchange的基本结构

Exchange 会议同步入门指南_第1张图片

一个邮箱账号(Mailbox)下有很多个文件夹(Folder),而每个文件夹下又存放着多个项目(Item)。

 

Exchange 会议同步入门指南_第2张图片

Folder的类层次结构,我们主要关注CalendarFolder,所有预定的会议(Appoinement)都会存放在该文件夹下。

 

Exchange 会议同步入门指南_第3张图片

Item的类层次结构,我们主要关注Appointment,它就对应着Exchange中的每一个会议。

 

二、 Exchange会议相关说明

1. 基本工作流程

       预定一个会议:

  • a. 会议室收到预定请求,检测已有会议判断是否会存在时间冲突,如没有则接受请求并进行下一步,否则拒绝请求。
  • b. 在当前会议室账号下的CalendarFolder中新增一个Item,存放新建的会议信息(预订人、会议时间、参会人员等),并分配唯一标识符(itemId)。
  • c. 会议发起人收到会议室反馈,预定成功则在其账号下的CalendarFolder中新建一个Item用于记录会议信息。


       修改一个会议:

  • a.会议室收到修改请求,检测是否会和已有会议产生冲突,如没有则接受请求并进行下一步,否则将拒绝并销毁原会议!
  • b.删除原有的item,新建一个item来存放新的会议信息,因此itemId会改变。
  • c.会议发起人账号下的itemId是否改变有待测试(同理推测会变)。


       取消一个会议:

  • a.会议室收到取消请求,找到相应的item,并删除。
  • b.会议发起人接受到会议室反馈,在自己的账号下同样删除该会议。


       会议室拒绝一个会议

  • a.会议室主动取消(拒绝)一个会议,并将取消信息反馈给会议发起人。
  • b.会议发起人接受到消息,在本地标记会议被取消(是否删除有待测试)。

 

2. 注意事项

  • a.同一个会议,对应在发起人账号和会议室账号的Item并不相同,它们有自己独立且唯一的itemId,通过itemId查询会议时要格外注意。
  • b.会议发起人在修改会议时间时,如果会议室发现和其他会议产生冲突,则会直接销毁该会议,因此建议修改前先检查是否存在时间冲突。
  • c.由于 Exchange 的安全策略规定,会议主题属于敏感信息,会议室账号中可能出现会议主题被会议发起人的名称代替的现象。解决方法只有一个,在 Exchange 服务器中开放相应的权限。
  • d.一个成员账号下可以有多个会议室日历,因此在查询时需要指定查询哪个会议室下的会议。

 

 

三、Exchange 会议同步的基本原理

1. 从 exchange 同步数据到本地

  • 建立定时任务,每次查询某个会议室账号下一段时间范围内开始的会议,并将会议数据同步到本地,本地根据itemId来判断会议的变更情况。

 

2. 从本地同步数据到 Exchange

  • a. 预定、修改、取消会议都需要拿到会议发起人的账号凭证(取消会议也可以通过会议室主动拒绝来实现)。
  • b. 修改和取消会议,由于 Exchange 的冲突检测机制,不存在一个会议室在相同时间段出现多个会议的情况,因此可以根据会议的开始结束时间来定位到具体的会议,然后执行修改或取消操作。

 


 

PS:本文侧重说明 Exchange 的目录结构和工作原理,有时间我可能会把相关代码也整理一下贴出来(要是不偷懒的话……)。如有任何疑问欢迎讨论~

你可能感兴趣的:(Office,相关)