日历连接器体系结构

 

上一次修改主题: 2006-10-30

日历连接器支持在 Exchange Server 2003 与 Lotus Notes 或 Novell GroupWise 之间同步忙/闲信息,以便这些邮件系统中的用户在创建会议请求时可以查询彼此的忙/闲信息。对日历连接器的要求类似于对 Lotus Notes 连接器和 Novell GroupWise 连接器的要求。这些连接器必须安装在日历连接器所在的相同管理组中,并且应当在日历连接器之前进行配置。有关如何安装和配置日历连接器的信息,请参阅 Exchange Server 2003 Interoperability and Migration Guide(Exchange Server 2003 互操作性和迁移指南)。

note注意:
日历连接器不能位于没有服务器的管理组(即包含用于定义特定管理员的管理组)中,原因是没有服务器用于包含忙/闲信息。日历连接器必须安装在运行 Exchange Server 2003 的服务器上,并且服务器上要有本地管理组的忙/闲公用文件夹实例。

忙/闲信息

忙/闲是指由用户的邮件客户端发布的某种信息。该信息由用户的个人可用性数据组成,而可用性数据则由他们的邮箱中的日历文件夹的内容确定。可以想象,忙/闲数据在安排会议日程时会广泛使用。忙/闲数据作为邮件存储在专用的系统公用文件夹中。Exchange 组织中的每个管理组都包括忙/闲文件夹。

必须将日历连接器安装在运行 Exchange Server 的服务器上,而且该服务器必须包含管理组的忙/闲系统文件夹的副本。可以在 Exchange 组织内将忙/闲数据复制到任何一个公用文件夹服务器,忙/闲数据也可以驻留在运行 Exchange 服务器的单个服务器上。在组织中,使用标准的公用文件夹复制过程来复制忙/闲数据。

可以检查运行 Exchange Server 的服务器是否包含管理组的忙/闲系统文件夹的副本。有关详细说明,请参阅如何检查运行 Exchange Server 的服务器是否包含管理组的忙/闲系统文件夹的副本

note注意:
日历连接器需要相应的权限才能在忙/闲系统文件夹中读取和创建项目。在本地管理组的忙/闲文件夹的属性中,选择“权限”选项卡,然后单击“客户端权限”。在“客户端权限”对话框中,验证向“默认”帐户分配了“编辑者”角色。

发布忙/闲数据

发布忙/闲数据是一项由 Outlook 和 Outlook Web Access 执行的客户端操作。Exchange 存储不参与该过程,但公用文件夹存储中用于存储和发布数据的系统公用文件夹是例外。

note注意:
若要在 Exchange 组织之间复制忙/闲数据,可以使用 Exchsync 工具并配合其他某些设置来完成该操作。

Outlook 首先从关联的忙/闲公用文件夹的邮箱服务器那里获得引用信息。定位服务器之后,将使用 Active Directory 中用户对象的属性在公用文件夹中查找忙/闲邮件。

忙/闲邮件

每个忙/闲邮件都是单个个人或资源在哪些天和哪些时间忙、而在哪些天和哪些时间不忙的表示方法。这是通过忙/闲服务器(包含公用文件夹的公用文件夹服务器,公用文件夹中包含一个或多个忙/闲站点文件夹的副本)上的数字流来表示的。

一种表示方法是 002222000033333333,其中,每个数字代表增加 X 分钟(具体数字在请求中指定,6 分钟是最低粒度)。下表讨论了对这些数字的解释。

忙/闲邮件

数字 含义

0

有空

1

暂定

2

3

外出 (OOF)

在单个时间段中有多个约会时,将选择具有最高状态编号的约会。例如,一个同时包含 OOF (3) 约会和暂定 (1) 约会的时间段将被编码为 OOF(3)。

更具体地说,忙/闲数据存储在多值整数数组的多个组中。每个组代表一个忙分级(忙、暂定或 OOF),并且组中的每一项代表数据的一个月份。数组本身是一个配对的组,其中,每一对都是分钟到月份的数字,表示繁忙时间段的开始和结束,并根据国际日期变更线进行了时区调整。因此,不为空闲时间存储数据,因为空闲时间被隐式地计算为没有标记为忙的所有时间。

约会还存储开始月份和月份数,以便客户端可以正确地进行计算。

忙/闲数据生成

可以用各种方式来生成忙/闲数据。例如,保存日历项时,Outlook 将修改用户的忙/闲项,并周期性地使用 MAPI 将该邮件发布到其运行 Exchange Server 的服务器上。保存日历项时,Outlook Web Access 和 Outlook Mobile Access 客户端也会生成忙/闲项。从这里,Outlook Web Access 或 Outlook Mobile Access 通过协作数据对象 (CDO) 和 WebDAV 将邮件发送到系统助理,由系统助理负责对邮件进行进一步处理,并将它们发布到运行 Exchange Server 的服务器。

在 Outlook 中发布忙/闲

Outlook 定期地(默认情况下,每隔 15 分钟)和在关闭时发布用户的忙/闲数据。每次忙/闲信息发布时,整个忙/闲项都会被更新(不仅是更改)。用户可能指定未来将忙/闲信息发布到服务器的月份数。两个月是默认设置,36 个月是最大的持续时间。在过去,默认情况下忙/闲数据发布一个月。

当 Outlook 必须发布时,它首先基于用户的 legacyExchangeDN 来确定要向其中发布忙/闲数据的文件夹。legacyExchangeDN 由两部分组成。第一个部分确定忙/闲文件夹(也是在其中创建用户的管理组,因为在管理组之间移动用户邮箱时 legacyExchangeDN 不会更改)的路径,第二个部分是忙/闲邮件的主题。例如,legacyExchangeDN 为 /o=Contoso/ou=CorpUsers/cn=Recipients/cn=UserName 的用户的忙/闲数据位置是文件夹“EX:/o=Constso/ou=CorpUsers”,邮件主题是“User-/cn=Recipients/cn=UserName”。

忙/闲文件夹是 Schedule+ 忙闲文件夹的子目录,位于 NON_IPM_SUBTREE 的下面。邮件主题是 USER-/cn=RECIPIENTS/cn=UserName。如果创建重复的忙/闲邮件,则信息存储向邮件的 URL 自动追加后缀 -2。因此,USER-/cn=RECIPIENTS/cn=UserName 就成为 USER-/cn=RECIPIENTS/cn=UserName-2。这样的邮件重复并不常见,但由于客户端错误、复制失败等就可能发生。如果 Outlook 在发布数据时发现用户的重复条目,它会删除它们。系统助理的忙/闲发布代理也会在代表 Outlook Web Access 或 Outlook Mobile Access 更新忙/闲信息时删除重复的条目。

在 Outlook 确定将邮件发布到公用文件夹存储中的什么位置之后,它将选择忙/闲服务器。步骤如下:

  1. 在第一次登录时,服务器指示客户端:要联系哪个默认的层次结构服务器。该信息存储在用户的配置文件中。如果管理员在 Exchange 系统管理器中更改该设置,则用户必须注销,并重新登录以获得新值。然后,客户端与该服务器建立初始连接,并在用户的登录会话的持续时间内维持连接。
  2. MAPI 客户端请求公用文件夹存储的根的“层次结构”表。该请求被发送给所配置的默认公用文件夹存储,并且将被存储在公用文件夹存储的根级别的文件夹返回给客户端。
  3. 客户端枚举该表中的文件夹条目,查找感兴趣的文件夹。如果需要,随后客户端打开子文件夹,并打开它们的子文件夹表,然后再次枚举子文件夹。
  4. 在 MAPI 客户端识别出感兴趣的文件夹之后,它会请求该文件夹的目录。
  5. 服务提供程序查询服务器,以获得文件夹的内容副本的列表。
  6. 服务器从数据库获得文件夹的副本列表,并基于来自该服务器的路由组连接器成本对此列表进行排序。与被请求的服务器在同一个路由组中的其他内容副本所拥有的连接器成本为零。
  7. 经过排序的列表被返回给客户端,同时还返回成本最低的服务器的组中的项目数。
  8. 如果客户端已经连接的服务器在副本集(其成本也是零)中,则内容副本搜索过程结束。转到步骤 10。
  9. 对用户的 legacyDN 进行哈希处理,然后,将处理结果除以成本最低的服务器的计数。将除法运算的余数用作索引来找到所返回的服务器列表,并选取一个要连接的服务器。
  10. 服务提供程序尝试连接到所选的服务器。如果连接成功,则整个过程全部完成,并且服务器将目录返回到 MAPI 客户端。
  11. 如果连接失败,或服务器报告“我不是副本”(副本集可能已更改,并且更改可能尚未复制到传出副本列表的服务器),则服务提供程序会从列表中删除该服务器,并减少“最低成本”服务器的计数,如果计数不是零,则返回步骤 9。
  12. 如果最低成本服务器的列表已用尽,则计数被重置为列表中剩余服务器的大小,并且过程返回到步骤 9。如果整个列表已用尽,则将错误返回给 MAPI 客户端。
note注意:
不管客户端想要哪个文件夹(“脱机通讯簿”、“忙/闲”或另一个文件夹),或者由于什么原因它想要该文件夹中的内容,这些步骤都是相同的。

在 Outlook Web Access 和 Outlook Mobile Access 中的忙/闲发布

因为它们不使用 MAPI,因此 Outlook Web Access 和 Outlook Mobile Access 无法将忙/闲数据直接发布到公用文件夹存储。它们转而依赖运行在系统助理进程 (Mad.exe) 中的忙/闲发布代理 (MadFB)。

MadFB 有两项功能:

  • 发布 Outlook Web Access 和 Outlook Mobile Access 的忙/闲邮件
  • 删除重复的忙/闲邮件

创建、删除或更新约会可能影响开始或结束时间,作为因此所涉及事务的一部分,服务器端的调用将把忙/闲更新邮件发送到系统助理的邮箱。MadFB(驻留在系统助理内部)处理这些邮件,并更新 MAPI 公用文件夹中的忙/闲数据。取决于系统助理的邮件轮询间隔,在发布经过更新的忙/闲数据之前,可以有最多 15 分钟的延迟。

MadFB 的发布过程与前面描述的 Outlook 发布过程是相同的。因此,如果存在重复邮件,它们会被追加一个数字。尽管 Outlook Web Access 和 Outlook Mobile Access 遵守的过程类似于 Outlook 所遵守的过程,但 Outlook Web Access 和 Outlook Mobile Access 过程通常更为可靠,这是因为所有处理都在运行 Exchange Server 的服务器之间发生。

忙/闲数据查找

定位忙/闲数据时,Outlook 的操作方式不同于 Outlook Web Access 和 Outlook Mobile Access,下面将按项目符号对此进行说明。不过,对于所有客户端来说,该过程首先包含找到忙/闲公用文件夹,然后访问该文件夹中特定用户的忙/闲数据。

  • Outlook   Outlook 定位忙/闲公用文件夹之前,它首先从邮箱服务器接收关联的公用文件夹存储的引用,随后忙/闲服务器在执行查询时将参照该引用(引用和查询过程与发布过程相似)。忙/闲数据作为邮件存储在位于主要忙/闲文件夹内的站点文件夹中。Outlook(使用 Active Directory 和 Exchange Server)确定用户的 legacyExchangeDN,并将它分析成两个部分。第一部分是站点文件夹名称。第二部分是邮件主题。
  • Outlook Web Access 和 Outlook Mobile Access   这两个客户端对其他用户执行 DAV 查询,并获得忙/闲信息,然后将它显示给用户。DAV 查询从主控 Outlook Web Access 或 Outlook Mobile Access 服务的服务器(大多数情况下是前端服务器)开始,面向用户的邮箱服务器(后端服务器),实际的忙/闲查找发生在后者上。
    note注意:
    要使忙/闲查找有效进行,Active Directory 中必须有可用的收件人信息,这样才能确定目标忙/闲系统文件夹。因此,如果想使用日历连接器来同步忙/闲信息,则必须启用与 Lotus Notes 或 Novell GroupWise 的目录同步。本节前面提到过,Lotus Notes 连接器和 Novell GroupWise 连接器使用与连接器的本地管理组对应的 legacyExchangeDN 地址来创建已启用邮件的联系人。因为有该依存关系,因此日历连接器必须安装在包含 Lotus Notes 连接器或 Novell GroupWise 连接器的同一个管理组中。应当将日历连接器安装在包含 Lotus Notes 连接器或 Novell GroupWise 连接器的同一台服务器上。

忙/闲发布代理 (MadFB)

MadFB 使 Outlook Web Access 和 Outlook Mobile Access 能够发布忙/闲数据。作为辅助功能,MadFB 还能清除过时的忙/闲数据。默认情况下,MadFB 尝试在每天早上 2:00 点维护所有运行 Exchange Server 的非前端服务器上的忙/闲数据。每个服务器上的 MadFB 维护与每个服务器的本地邮箱存储相关联的默认公用文件夹存储(即使这些公用文件夹存储位于另一个服务器上,也不例外)。MadFB 在系统助理进程内运行。

MadFB 维护过程包括:

  • 修正忙/闲项的 URL   忙/闲项必须采用“规范”的形式,这意味着该项的 URL 结尾必须有规范化的主题(例如,USER-/CN=RECIPIENTS/CN=TED)。由于是副本,这些项可能采用非规范的形式。例如,一个 URL 可能添加了追加的“-x”,或者一个 URL 可能指向已被升级或从 Exchange Server 5.5 复制过来的项目(这种情况下,URL 包括 GUID)。规范化的主题由 legacyDN 的最后部分(例如,CN=RECIPIENT,CN=TED)确定。
  • 删除重复的忙/闲邮件   Outlook 有可能创建重复的忙/闲邮件。为了防止覆盖现有邮件,Exchange 存储将向规范化主题追加“–X”(不包括引号,这里的 x 是重复邮件的增量计数器)。MadFB 将删除其主题行采用非规范形式的邮件。

MadFB 将保留日期最早的邮件并删除其余邮件,这可以保证执行明确的复制,在复制过程中重复的条目总是会被删除。例如,如果 MadFB 保留最新邮件并删除其余邮件,则发生冲突的邮件 [X-2] 会通过复制持久保留下来。发生这种情况是因为 PF1 上的 X 和 PF2 上的 X-2 被首先删除,并且较新版本的 PF1 上的 X-2 和 PF2 上的 X 被复制。因此,它们成为最新的条目,然后重复该循环。

note注意:
MadFB 与 MSExchangeFBPublish 是相同的,后者是用来在事件日志中记录事件的事件日志记录源名称。

清理忙/闲数据

有三种方式可以删除不必要的忙/闲数据。可以使用 Outlook 命令行启动开关,也可以在运行 Exchange Server 的服务器上执行服务器端进程,还可以使用 Outlook Web Access 手动删除项目。

Outlook 启动开关

Outlook 的 /cleanfreebusy 命令行启动开关用来解决会议日程安排问题。该开关无法帮助解决常规约会问题,因为它不会删除公用文件夹存储上的忙/闲项,而会删除由 Outlook 客户端生成的本地忙/闲邮件 (LocalFreeBusy)。LocalFreeBusy 邮件作为服务器邮箱的用户日历文件夹中的隐藏项存在。该项包含二进制的大型对象,该对象包含用户的忙/闲信息、被允许为用户安排约会日程的代理用户的相关信息,以及自动接收的设置。如果不存在与现有约会的冲突,则资源邮箱通常被配置为自动接受会议请求。LocalFreeBusy 项会被复制到公用文件夹存储,以便 Exchange 组织中的所有用户都可以看见您的忙/闲信息,并使用它来安排会议日程。

如果代理用户在试图修改经理的日历时收到错误邮件,那么,只要该代理用户在关闭 Outlook 时对经理的日历运行 /cleanfreebusy,就可以重置经理的公用文件夹存储上的特定属性。代理用户下一次启动 Outlook 时,他们将从经理的 LocalFreeBusy 项检索到新的忙/闲数据,从而解决了大多数因委派而引发的错误。

最初发生这个委派会议日程安排问题的原因是:代理用户的客户端(由于各种原因)重新创建了忙/闲邮件,这导致指针指向被删除的邮件。当经理在该状态中运行 Outlook /cleanfreebusy 时,经理的客户端将重新创建本地忙/闲邮件,并使用新的条目 ID 来标记根文件夹,这将允许每个人都能再次访问本地忙/闲邮件。

使用 Outlook Web Access 执行清理

忙/闲邮件驻留在一个公用文件夹中,其位置在公用文件夹层次结构的 non-ipm 子目录树内 SCHEDULE+ FREE BUSY 容器的下面。non-ipm 子目录树是隐藏目录树,但是可以使用 Outlook Web Access 访问该目录树,并打开管理组的忙/闲文件夹。然后您可以手动删除忙/闲项。例如,若要访问命名为 Server01 的服务器上的 non-ipm 子目录树,请使用以下 URL:http://server01/public/non_ipm_subtree/。SCHEDULE+ FREE BUSY 容器显示为常规公用文件夹。在该容器下面,可以找到忙/闲文件夹。

日历连接器组件

因为日历连接器不在 Exchange 和 Lotus Notes 或 Novell GroupWise 之间传输电子邮件,因此该连接器在 Exchange 存储中没有连接器邮箱,也没有代理地址生成 DLL 或 Active Directory 中的 adrType 对象。不过,日历连接器是基于 MAPI 的连接器,因为它依赖于 MAPI 进行 Exchange 存储通信,并依赖于 Active Directory 服务接口 (ADSI) 来与 Active Directory 通信。

下表列出了日历连接器的重要组件。

日历连接器组件

组件 描述

连接器服务

Lotus Notes 连接器服务的主要可执行文件称为 CalCon.exe。CalCon.exe 则加载几个组件(命名的提供程序),由它们执行实际的忙/闲信息同步任务。所有文件都驻留在 \Program Files\Exchsrvr\Bin 目录中。

  • Adminsvc.dll:日历连接器加载 Adminsvc.dll 以执行管理任务,例如,定期地轮询提供程序,以报告连接器运行状况,并收集可以使用“性能”工具查看的统计信息和性能数据。
  • Calsync.dll   日历连接器在启动时加载 Calsync.dll 以搜索 Active Directory 中是否有在目录同步期间由 Lotus Notes 连接器或 Novell GroupWise 连接器所创建的非 Exchange 收件人。日历连接器用作该搜索的基础的、基于 MAPI 的连接器是在 Exchange 系统管理器中指定的,其位置在“常规”选项卡上的日历连接器配置中。Calsync.dll 确保在 Active Directory 中所发现的每个非 Exchange 收件人的忙/闲系统文件夹中均有忙/闲记录。忙/闲记录在第一次初始化时为空。
    note注意:
    最好安排在每个目录同步周期之后运行日历连接器,以便 Calsync.dll 可以立即为新的收件人对象创建忙/闲项。使用日历连接器中的“日程安排”选项卡可以配置该日程。
  • Mapical.dll   日历连接器加载 Mapical.dll 来与 Exchange 存储通信。当 Exchange 用户请求忙/闲信息时,Mapical.dll 将填充非 Exchange 收件人的忙/闲记录。
    note注意:
    如果忙/闲系统文件夹中的当前信息不可用或超过为刷新间隔所指定的时间,则日历连接器只为非 Exchange 邮件系统生成请求。被请求的天数、刷新频率和响应时间是在日历连接器的“常规”选项卡上选择的。如果将刷新频率设置为 0,则每次客户端通过日历连接器请求忙/闲信息时,将把对更新信息的请求发送到非 Exchange 邮件系统。
  • Notescal.dll   日历连接器生成和处理忙/闲请求的方式取决于向其发送请求的系统。如果日历连接器必须与 Lotus Notes 同步忙/闲信息,那么日历连接器将使用 Notescal.dll 来生成请求并将请求传输给 Lotus Notes,并且响应从 Lotus Notes 用户发来的忙/闲查询。
    note注意:
    Exchange 用户可以向 Lotus Notes 请求忙/闲信息的最长时间段是 208 天。
  • Gwisecal.dll   如果日历连接器必须与 Novell GroupWise 同步忙/闲信息,则日历连接器将使用 Gwisecal.dll 来生成请求并将请求传输给 Novell GroupWise,并且响应从 Novell GroupWise 用户发来的忙/闲查询。
    note注意:
    Exchange 用户可以向 Novell GroupWise 请求忙/闲信息的最长时间段是 389 天。

Exchange日历连接器加载项

Exchange 日历连接器加载项 (ExCalCon.exe) 是必须安装在被 Lotus Notes 连接器和日历连接器当作非 Exchange 桥头服务器的 Lotus Notes 和 Domino 服务器上的组件。ExCalCon.exe 通过 Lotus Notes Schedule Manager 从 Lotus Notes 接收忙/闲请求,并将它们转发给运行在运行 Exchange Server 的服务器上的日历连接器实例。

注册表设置

在注册表中,Lotus Notes 连接器的设置存储在以下位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeCalCon

msExchConnector 对象

日历连接器的 msExchConnector 对象(在 Active Directory 的配置目录分区中)存储了大多数连接器配置设置。以下属性是从 msExchConnector 和 mailGateway 对象类派生的 msExchCalendarConnector 对象类所特有的。

msExchCalendarConnector 对象有以下日历连接器特有的属性:

  • msExchCalConQueryWindow   指定日历连接器在等待非 Exchange 邮件系统返回忙/闲请求的响应时要等待多少时间。如果超过该时间,日历连接器将把忙/闲记录中当前可用的信息返回给 Exchange 用户。
    如果响应很晚,Exchange Server 2003 将把现有数据返回给 Outlook 客户端。新数据最终被收到时,日历连接器将更新非 Exchange 用户的忙/闲记录。经过更新的信息不会返回给 Outlook 客户端,并且用户不会收到说明:忙/闲信息可能不包括最新的更新或可以使用随后的查询获得更及时的信息。
  • msExchCalConRefreshInterval   指定时间范围,在该范围内日历连接器认为非 Exchange 用户的忙/闲记录是最新的。在 msExchCalConRefreshInterval 范围内,日历连接器将把现有数据返回 Outlook 客户端,而不会向非 Exchange 邮件系统发送忙/闲请求。
  • msExchCalConProviders   指定日历连接器为了执行它的处理操作而加载的提供程序,例如,NOTECAL、GWISECAL、MAPICAL、ADMINSVC 和 CALSYNC。
  • msExchCalConClientWait   指定日历连接器在删除忙/闲请求之前等待该请求的响应的时间。
  • msExchConnectorType   指定连接器类型为日历 (Calendar)。
  • msExchCalConTargetSiteDN   以 Exchange 5.5 目录格式指定日历连接器用来与非 Exchange 邮件系统通信的连接器对象的可分辨名称。

此外,msExchCalendarConnector 对象包含以下属性,具体包含哪些属性取决于日历连接器与之通信的非 Exchange 邮件系统:

  • msExchNotesNotesServer   指定连接器当作非 Exchange 桥头服务器使用的 Lotus Notes 和 Domino 服务器的名称(使用 Notes 格式)。
  • msExchNotesNotesINI   指定连接器用来登录到 Lotus Notes 和 Domino 服务器的 Lotus Notes 客户端 .ini 文件的完整路径和文件名。
  • msExchEncryptedPassword   以加密形式指定日历连接器用来与非 Exchange 邮件系统通信的帐户的密码。
  • msExchGWiseAPIGateway   指定日历连接器用来与 Novell GroupWise 通信的 Novell GroupWise API 网关目录的名称。

管理单元

日历连接器的扩展管理单元被命名为 Exchange 日历连接器。该管理单元在 Exadmin.dll 中实现,用于扩展连接器的节点,可以在 Exchange 系统管理器中的该位置下面找到它:<组织名>/管理组/<管理组名>/路由组/<路由组名>/连接器。

与 Lotus Notes 进行双向忙/闲查找

下图说明日历连接器如何与 Lotus Notes 邮件环境集成。

3dbfe960-02da-4e06-827f-0f000f296cca

在日历连接器中,Notescal.dll 通过 Lotus Notes Client API 与 Lotus Notes 和 Domino 通信,以便将对 Lotus Notes忙/闲信息的请求传输给 Lotus Notes Schedule Manager 任务。Schedule Manager 是运行在 Lotus Domino 服务器上的任务,它负责管理一个名为 Busytime.nsf 的 Lotus Notes 数据库。Busytime.nsf 数据库存放服务器的公用通讯簿中所标识的服务器上的资源(例如,会议室)以及所有用户的忙/闲信息。

note注意:
日历连接器只能连接到一个 Lotus Notes 环境。不支持使用日历连接器将多个完全不同的 Lotus Notes 邮件系统与 Exchange Server 2003 集成。

从 Exchange 2003 进行忙/闲查找

在从 Exchange Server 2003 查找 Lotus Notes 用户的忙/闲信息时,日历连接器将执行以下步骤:

  1. Mapical.dll 截获忙/闲请求,并检查忙/闲系统文件夹中是否有现成的忙/闲记录。如果记录已在日历连接器配置中的“可以使用 Exchange 中的外部忙/闲数据而无需查询外部日历的最长期限(分钟)”下面所指定的时间范围内更新,则 Mapical.dll 将立即返回该数据。

    note注意:
    只有当日历连接器正运行在驻留忙/闲文件夹的服务器上时,该机制才有效。例如,有可能将忙/闲文件夹复制到远程管理组中的其他服务器,在这种情况下,查询这些公用文件夹实例的用户可能收到过时的信息。Exchange Server 2003 只返回在被请求的忙/闲邮件中当前可用的信息。若要避免该问题,必须为每个忙/闲文件夹的副本安装单独的日历连接器实例。
  2. 如果忙/闲记录不存在,或者超过最长时间限制,则 Mapical.dll 将把忙/闲查询传递给 Notescal.dll,以更新在 Exchange 忙/闲文件夹中的目标用户的忙/闲记录。

  3. Notescal.dll 从 Mapical.dll 接收忙/闲查询,并将它传递给 Lotus Notes Schedule Manager 任务。

  4. Schedule Manager 任务从 Busytime.nsf 数据库中检索本地用户的信息。对于在下游 Lotus Domino 服务器上的用户,Schedule Manager 将与同样运行在 Lotus Domino 服务器上的 Lotus Notes 日历连接器任务通信,以便找到忙/闲信息。

  5. Lotus Notes 日历连接器任务确定目标用户的域,并从域文档中读取 Calendar Server Name 字段。然后,日历连接器与远程日历服务器通信,以执行忙/闲查询。

  6. Lotus Notes 日历连接器任务将信息返回 Schedule Manager 任务。

  7. Schedule Manager 任务将信息返回 Notescal.dll。

  8. Notescal.dll 将信息传递给 Mapical.dll,后者更新系统文件夹中 Lotus Notes 用户的忙/闲记录。

  9. Mapical.dll 将信息返回 Outlook 用户。

    note注意:
    如果非 Exchange 系统在日历连接器配置中的“等待外部日历响应的最长时间(秒)”下面所指定的时间段内作出响应,则数据被写入 Exchange 忙/闲文件夹中的目标用户忙/闲记录,并返回给客户端。如果非 Exchange 系统没有在允许的时间范围内作出响应(或者日历连接器没有运行),则 Exchange Server 2003 将忙/闲记录中的现有数据返回给客户端,而不会首先更新目标用户的忙/闲记录。

从 Lotus Notes 进行忙/闲查找

在从 Lotus Notes 查找 Exchange Server 2003 用户的忙/闲信息时,日历连接器将执行以下步骤:

  1. Lotus Notes 客户端将忙/闲查询传递给 Schedule Manager 任务。
  2. Schedule Manager 任务确定请求是针对非本地用户的,并将它传递给日历连接器任务。
  3. 日历连接器任务读取 Exchange 用户的个人文档,并确定用户在外部域中。日历连接器任务在 Exchange Server 2003 组织的外部域文档中检查“Calendar System”字段。“Calendar System”字段标识了用于在 Lotus Domino 服务器上处理忙/闲查找的加载项程序的名称,这是 Exchange 日历连接器加载项 (ExCalCon.exe)。
  4. 日历连接器任务将忙/闲请求传递给 ExCalCon.exe。
  5. ExCalCon.exe 将请求传递给 Notescal.dll 组件,该组件处理请求,并与 Mapical.dll 通信,从忙/闲系统文件夹中获得 Exchange 用户的忙/闲信息。
  6. Notescal.dll 将响应返回 ExCalCon.exe,由后者将信息传递给日历连接器任务。
  7. 日历连接器任务将数据传递给 Schedule Manager。
  8. Schedule Manager 将忙/闲信息传递给 Lotus Notes 用户。
note注意:
由于 Lotus Notes 将所有 Exchange 用户标识为属于非 Lotus Notes 域,因此所有 Exchange 忙/闲信息请求都是从 Lotus Notes 日历连接器任务接收的。

与 Novell GroupWise 进行双向忙/闲查找

如下图所示,Gwisecal.dll 通过 Novell GroupWise 连接器和 Novell GroupWise API 网关与 Novell GroupWise 通信。在 Novell GroupWise 中传输的忙/闲请求采用系统邮件的形式。本节前面已经讨论了 Novell GroupWise 连接器的体系结构。

4dcca798-d6da-4228-a85f-00668605a16f

在从 Exchange Server 2003 查找 Novell GroupWise 用户的忙/闲信息时,日历连接器将执行以下步骤:

  1. Mapical.dll 截获忙/闲请求,并检查忙/闲系统文件夹中是否有现成的忙/闲记录。如果记录已在日历连接器配置中的“可以使用 Exchange 中的外部忙/闲数据而无需查询外部日历的最长期限(分钟)”下面所指定的时间框架内更新,则 Mapical.dll 将立即返回该数据。
  2. 如果不存在 Novell GroupWise 用户的忙/闲记录,或者该记录超过了最长时间限制,则 Mapical.dll 将忙/闲查询传递给 Gwisecal.dll,以便更新 Exchange 忙/闲文件夹中的目标用户忙/闲记录。
  3. Gwisecal.dll 将请求转换为 SEARCH 类型的、基于关键字的文本文件,并将它放在 \Program Files\Exchsrvr\Conndata\GWRouter\Togwise 目录中。该 SEARCH 类型邮件的邮件原始发件人是系统助理。邮件发往日历连接器请求其忙/闲信息的 Novell GroupWise 用户。下面是 SEARCH 类型的请求示例:
    WPC-API= 1.2;
    MSG-TYPE= Search;
    Msg-ID= AAIMIDMI:2003.12.2.21.28:2004.1.31.21.28:2003.12.3.5.28.51;
    From=
    WPD= CONTOSO_DOM;
    WPPO= Exchange Gateway;
    WPU= Microsoft System Attendant;
    CDBA= CONTOSO_DOM.Exchange Gateway.Microsoft System Attendant; ;
    To=
    WPD= CONTOSO_DOM;
    WPPO= CONTOSO_PO;
    WPU= FrankM;
    CDBA= CONTOSO_DOM.CONTOSO_PO.FrankM; ;
    Begin-Time= 2/12/2003 21:28;
    End-Time= 31/1/2004 21:28;
    -END-
  4. Router for Novell GroupWise 从 \Togwise 目录获得邮件,并将它放在 Novell GroupWise API 网关的 API_IN 目录中。
  5. API 网关根据 MSG-TYPE 关键字处理邮件,并将它放在 Novell GroupWise MTA 的 WPCSIN 目录中。
  6. Novell GroupWise MTA 将邮件路由到 GroupWise 用户的主邮局,并将它传递到合适的 Novell GroupWise 邮局代理 (POA)。
  7. Novell GroupWise POA 处理请求,并将所产生的忙/闲信息以 SEARCH 邮件的形式返回给 GroupWise MTA。
  8. GroupWiseMTA 将邮件传输到 API 网关目录中的 WPCSOUT 目录,由 API 网关将邮件传输到 API_OUT 目录。
  9. Router for Novell GroupWise 从 API_OUT 目录获得 SEARCH 邮件,并根据 MSG-TYPE 关键字将它放在 \Program Files\Exchsrvr\Conndata\GWRouter\freebusy 目录中。下面是对忙/闲查询的响应示例:
    WPC-API= 1.2;
    Header-Char= T50;
    Msg-Type= SEARCH;
    Orig-Msg-ID= AAIMIDMI:2003.12.2.21.28:2004.1.31.21.28:2003.12.3.5.28.51;
    To=
    CDBA= CONTOSO_DOM.Exchange Gateway.Microsoft System Attendant;
    ;
    Busy-For=
    CDBA= CONTOSO_DOM.CONTOSO_PO.FrankM;
    Busy-Report=
    Start-Time= 11/12/03 17:00;
    End-Time= 12/12/03 8:00; ,
    Start-Time= 12/12/03 17:00;
    End-Time= 15/12/03 8:00; ,
    Start-Time= 15/12/03 17:00;
    End-Time= 16/12/03 8:00; ,
    Start-Time= 16/12/03 17:00;
    End-Time= 17/12/03 8:00; ,
    Start-Time= 17/12/03 17:00;
    End-Time= 18/12/03 8:00; ,
    Start-Time= 18/12/03 17:00;
    End-Time= 19/12/03 8:00; ,
    ;
    Send-Options= None;
    -END-
  10. Gwisecal.dll 检索邮件,并将它转换为 Exchange 格式。然后,Gwisecal.dll 将数据传递给 Mapical.dll。
  11. Mapical.dll 更新在忙/闲系统文件夹中的 Novell GroupWise 用户忙/闲记录。
  12. Exchange Server 2003 将忙/闲信息返回给发出请求的 Outlook 用户。

从 Novell GroupWise 进行忙/闲查找

在从 Novell GroupWise 查找 Exchange Server 2003 用户的忙/闲信息时,日历连接器将执行以下步骤:

  1. Novell GroupWise 用户搜索 Exchange 用户的忙/闲信息。Novell GroupWise 客户端生成 SEARCH 邮件,Novell GroupWise 系统将该邮件传输到 API 网关。
  2. API 网关将 SEARCH 邮件从 WPCSOUT 目录传输到 API_OUT 目录,在这里,Router for Novell GroupWise 拾取它,并根据 MSG-TYPE 关键字将它放在 \Program Files\Exchsrvr\Conndata\GWRouter\FreeBusy 目录中。邮件发往 Novell GroupWise 用户请求其忙/闲信息的 Exchange 用户。邮件在结构上类似于 Gwisecal.dll 为来自 Exchange Server 用户的查询而生成的邮件。
  3. Gwisecal.dll 从 \FreeBusy 目录中获得 SEARCH 邮件,将它转换成 Exchange Server 格式,然后将请求传递给 Mapical.dll。
  4. Mapical.dll 处理忙/闲查询,并将被请求的信息返回 Gwisecal.dll。
  5. Gwisecal.dll 将请求转换为 SEARCH 类型的响应,并将它放在 \Program Files\Exchsrvr\Conndata\GWRouter\Togwise 目录中。邮件在结构上类似于 Novell GroupWise 系统为响应来自 Exchange 用户的查询而生成的邮件。
  6. Router for Novell GroupWise 从 \Togwise 目录获得邮件,并将它放在 API 网关的 API_IN 目录中。
  7. Novell GroupWise 系统将响应路由到发出忙/闲查询的用户。
note注意:
GroupWise 用户必须有 System 或更高的可见性设置,才能从 Exchange 接收日历信息。