整合 SharePoint 和 Exchange 以实现会议室预订解决方案






4.44/5 (6投票s)
EastBanc Technologies 成功构建了一个可扩展且灵活的架构,该架构建立在 Microsoft 技术栈之上,并充分利用了集成解决方案的所有优势。
引言
最近,一位企业客户要求我们为其创建一项预订公司会议室的解决方案。该客户是一家技术娴熟的公司,在全国拥有众多办事处,每个地点都有 5-6 间会议室。挑战在于,经常出差的员工能够“随时随地”找到一间免费的会议室,并且会议室配备了他们所需的设备和空间。本文将向您展示 EastBanc Technologies 如何成功集成现有的 Microsoft 解决方案,从而创建一个能够节省时间、轻松自信地从任何设备或计算机预订会议室的解决方案。
背景
客户拥有一个基于 Microsoft SharePoint 2010 的内部门户,拥有 1500 名日活跃用户。该公司还使用 Microsoft Exchange。Microsoft Exchange 已具备功能,可以通过其房间邮箱预订公司内的各种资源。每间会议室都有自己的电子邮件地址,员工可以使用该地址进行预订,其他人可以在日历上看到会议室已预订的日期和时间。Outlook 2010 还具有一个名为“房间查找器”的功能。您可以在此处详细阅读有关 Exchange 邮箱功能的介绍
http://technet.microsoft.com/en-us/library/bb124952(v=exchg.141).aspx
点击此处了解更多关于房间查找器的信息
http://support.microsoft.com/kb/2673231
乍一看,一切似乎都很容易设置。但是,存在一些限制。首先,所有用户都必须拥有 Outlook。此外,房间的描述非常简单,不允许您指定房间配备了什么(投影仪、白板、电话会议设备等)。
由于这些限制,客户正在寻找一种方法来创建一个系统,让每位员工都能一目了然地看到哪些房间可用以及包含哪些设备,而无需额外的步骤。
SharePoint
创建此解决方案的第一步是创建 3 个列表
部门、会议室和会议室预订。
部门列表包含不同城市的不同分支机构。
会议室列表包含房间及其特征,例如
- 名称
- Branch
- 容量
- 房间设备:投影仪、白板等。
- 用于 MS Exchange 集成的电子邮件地址。
最后是会议室预订列表
- 房间编号
- 会议日期
- 会议开始时间
- 会议结束时间
- 预订房间的人员姓名。
现在我们有了这些列表。但是,必须有人来填写它们,因此我们按角色对用户进行了分组
- 员工可以搜索房间(使用不同的参数),规划和预订他们的会议室。
- 预订经理可以重新安排或取消其所在分支机构的现有会议。
- 管理员创建和编辑会议室以及房间目录,其中包含座位数、投影仪、白板等功能。此外,管理员还可以切换分支机构并充当预订经理。
UI
我们的客户已经在门户网站上应用了用户界面设计,因此我们的设计师几乎没什么工作要做
1. 用户主页
截图 1:用户界面。
2. 一个单独的链接将您带到房间列表,其中包含基本信息。点击房间名称即可显示房间的详细信息。
截图 2:会议室设备一览。
3. 两周的日历可在“搜索会议室”链接下找到。每个单元格显示日期、谁预订了房间以及预订时间。
截图 3:日历
4. 您可以单击“加号”来预订会议室
截图 4:会议室预订
实现
为了实现这一点,我们不得不编写一个 WCF 服务,该服务返回 json 并与 SharePoint 配合使用。此问题可以通过适当的 web.config 配置和 ISAPI 文件夹中存在 SVC 文件来解决。有很多关于如何正确配置 web.config 以发送 json 的文章,例如这篇:https://codeproject.org.cn/Articles/105273/Create-RESTful-WCF-Service-API-Step-By-Step-Guide
然后我们开发了一些 ASPX 页面,将它们添加到模块中,并使用 Knockout 框架通过 JavaScript 实现 WCF 服务的所有逻辑。
主要的挑战发生在 Exchange。事实上,所有必需的功能都是通过 EWS Managed API 实现的(链接至 http://msdn.microsoft.com/en-us/library/dd633709(v=exchg.80).aspx)
然而,当在会议室列表中创建新房间时,我们需要自动创建邮箱。
我们发现邮箱只能通过 powershell 创建,从 C# 代码调用该命令不成问题。
可以向会议室列表添加事件接收器,并使用 Runspace 和 WSManConnectionInfo 调用远程服务器上的 powershell 命令。但是,这种方法不安全,因此我们决定再编写一个 WCF 服务并将其部署到 Exchange 服务器。此服务只有一个方法
如上所述,所有工作逻辑都通过 WCF 服务实现,因此有必要通过为 Exchange 中的房间预订添加方法来补充我们的服务。我们调用了服务方法在 Exchange 中创建我们的房间预订。所有必要的信息都放入了 Microsoft.Exchange.Data.Appointment 中,然后通过 API 在 Exchange 日历中创建了会议。
我们决定通过计时器作业来解决反向同步问题(当员工通过 Outlook 在其日历中预订房间时)。此作业收集 Exchange 中的所有信息,创建缺失的预订并删除已取消的会议。
结果
EastBanc Technologies 成功构建了一个可扩展且灵活的架构,该架构建立在 Microsoft 技术栈之上,并充分利用了集成解决方案的所有优势。该系统是可自定义的,并配有标准的平台工具。
结果是,今天
- 公司管理层拥有一个统一的协作工具,它扩展了 Intranet 门户的功能,简化和优化了客户的管理和组织流程,从而提高了员工的效率。
- 公司的员工可以比以往任何时候都更快、更轻松、更有效地规划他们的工作和重要会议。
- IT 人员拥有一个灵活且可扩展的解决方案,该解决方案配有统一的标准,并充分利用了“开箱即用”的功能。因此,迁移到新版本的 SharePoint 和 Exchange 将顺利无误。