设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

通过 Web 服务和 Groove 2007 协助团队共同工作。

2007-12-1 11:28| 发布者: admin| 查看: 3866| 评论: 0

    在实际生活中,用户常常需要在外出和无法访问企业网络的同时仍然可以收集信息。例如,消费者研究组织可能会派遣工作人员到现场邀请人们填写问卷调查,然后再将这些数据手动输入数据库。如果要编写能够在现场使用的自定义应用程序来实现这一过程的自动化,往往需要解决诸如管理本地数据存储并保持其与服务器数据库同步等问题。

   在本文中,我将 microsoft® office Groove™ 2007 中特有的协作功能集成到我自定义的 microsoft .NET Framework 应用程序中,并为您介绍如何使用这些协作功能来解决上述问题。Groove 为团队成员之间进行协作性数据收集和安全数据同步提供了功能丰富的客户端,而我将使用自定义的 .NET Framework 应用程序将数据连接到企业数据库。

   Groove 提供了一个供团队协作的环境,成员们不受他们所连接的网络的影响,可以实现跨组织共享数据。也就是说,参与者不必位于同一网络。正是由于这一点,当您在不请求 IT 部门协助的情况下与雇员、伙伴和客户展开协作时,Groove 就成为您的绝佳工具。对于某些移动方案,如果用户需要在脱机时仍能访问和更新共享数据,并且在返回连接模式时可以自动同步数据,那么 Groove 也是理想的选择。

  Groove 2007 是 2007 microsoft office System Ultimate 版本和 Enterprise 版本的组成部分,但也可以作为单独产品来购买。您还可以从 microsoft.com/downloads 下载安装免费的 Groove 试用版,还可以获得 Groove SDK。


使用 Groove 构建解决方案

您可以使用 Groove 预设的文件共享和讨论等功能构建属于自己的协作解决方案,操作非常简单,只需使用相应工具创建工作区,再将工作区另存为可重用模板即可。如果您需要更大的灵活性,还可以构建自定义应用程序,通过基于 Web 服务的 API 充分利用 Groove 中的各项安全协作功能。

就本文所提到的消费者调查应用程序解决方案而言,使用应用程序的调查人员会使用 Tablet PC 在商场填写问卷。理想的解决方案应保证用户在脱机的同时能够正常工作,并可以稍后对不同调查人员收集的信息进行合并。在实践中,调查人员最好能够找到提供公共 Internet 连接的咖啡馆,利用解决方案自动并且安全地与所有参与者同步信息。

设计解决方案的第一步需要调查协调员在 Groove 中新建一个工作区。每个工作区可以容纳多种工具以满足特定的要求,例如都可以包括用于满足特定要求的多个工具,例如,允许参与者共享文档的文件工具和让人们以问答形式讨论问题的讨论工具。

创建工作区后,调查协调员要邀请所有调查人员加入工作区。邀请以通知的形式显示给每位参与者,接到邀请后他们可以将工作区下载到其本地计算机上。现在,每个人都做好了协作的准备,参与者对其本地工作区副本所做的任何更改(例如,添加文件或讨论主题)都将在其他参与者连接到网络时自动安全地传送给他们。

Groove 2007 体系结构
Groove 独特的功能得益于它极具创新性的体系结构。第一,Groove 将所有数据存储在参与者的 PC 上,而并非中心服务器上。这意味着,无需设计安全的途径来让所有参与者访问共享资源;无论是企业内部的调查人员,还是独立的用户,调查协调员都可以方便地创建共享工作区来邀请他们参与。

第二,所有数据,无论是磁盘上的本地工作区,还是所有网络通信,始终是经过加密的。这样做的好处之一是调查人员只需通过公共 Internet 连接建立连接即可同步其更改。不需要让所有参与者都通过虚拟专用网络 (VPN) 访问企业资源,因为自动同步已被加密。

尽管 Groove 的大部分组件是基于客户端的,但它仍然提供了几个服务器组件。Groove 使用中继服务器充当存储和转发服务,以便客户端可以使用标准协议跨越防火墙进行通信;中继服务器还可以为脱机用户存储工作区更新内容的临时加密副本。此外还设有一个管理服务器,以便管理员可以管理所有用户的许可证和策略设置。

单个 Groove 用户可以在安装客户端时创建自己的帐户,客户端将自动使用由 microsoft 托管的中继服务器。Groove 用户数量很多的大型企业可以选择将 office Groove Server 2007 部署为其体系架构的一部分,以便更好地控制许可证管理,并可以完成诸如与 Active Directory® 集成等工作。中小型企业可以购买 office Groove Enterprise 服务的订阅,这样他们就可以访问管理工具的托管版本,无需部署自己的体系架构即可实现集中的控制。

Back to top


使用 Groove 表单工具收集数据

在我的解决方案中,工作区必须包括调查人员需要每位接受调查的消费者填写的问卷表单。Groove 中有一个用于设计自定义表单的表单工具,我可以使用该工具指定表单的字段,包括数据类型、标题和其他属性等。然后,参与者可以将数据添加到工作区中,如图 1 所示。

图 1 带有表单工具的 Groove 工作区
图 1 带有表单工具的 Groove 工作区 (单击该图像获得较大视图)

为构建自定义的解决方案,表单中还可以包含 javascript 或 VBScript,以增强其功能。而且,由于表单使用 DHTML 和 CSS,因此在 UI 样式和格式方面具有一定的灵活性。如果您的组织正在使用 InfoPath® 表单,则可以不必使用 Groove 的内置表单,利用 Groove InfoPath Forms 工具即可导入基于 xml 的 InfoPath 表单定义。

调查人员在将包含自定义表单的工作区下载到自己的 Tablet PC 后即可断开连接,并可以使用表单在调查现场添加记录。当他们重新连接到网络时,添加的所有记录都将安全地与其他参与者同步。调查协调员将收到 Groove 的弹出通知,得知工作区有新的未读数据。

当然,从调查人员手中收集数据只是 Groove 强大功能的一部分。来自各个问卷的所有数据完成同步后,调查协调员需要将这些数据加载到企业的数据库中,以进行进一步的分析。企业的分析人员将使用 sql Server™ 数据库、Analysis Services 多维数据集和 excel® 商务智能功能来了解调查结果并提出一些建议。

Back to top


从应用程序访问 Groove 数据

为了从 Groove 工作区获取数据并将其输入公司数据库,调查协调员可以从 Groove 表单工具以 CSV(逗号分隔值)格式手动导出数据,再将数据导入数据库中。但如果需要在有数据可用时才将调查数据加载到数据库,而不是一次全部加载完毕,则采取手动过程很快会变得难以管理。

更好的解决方案是构建自定义的 .NET Framework 应用程序,使用 Groove 基于 Web 服务的 API 来读取现场调查人员输入的数据。调查协调员只需将该应用程序安装在自己的 PC 上,即可同时访问 Groove 工作区和 sql Server 数据库,因为与现场的调查人员相比,她不仅可以连接到公共 Internet,而且还可以连接到公司网络(如图 2 所示)。

图 2 Groove 工作区用户和 SQL Server 数据库
图 2 Groove 工作区用户和 sql Server 数据库 (单击该图像获得较大视图)

这种方法与将 Groove 和 Windows® SharePoint® 服务 (WSS) 3.0 进行集成的方式是相似的。团队可以使用 Groove 工作区进行文档协作,然后将完成的文档发布到 SharePoint 文档库,这样企业内部的每个人都可以利用 SharePoint 的搜索和工作流等功能。此方法的原理是由有权同时访问 Groove 和 SharePoint 站点的人将 SharePoint Files 工具添加到工作区,并将其连接到 SharePoint 文档库。现在,工作区所有参与者都获得了所有文档的副本,并且可以提交更改,这样一来,已连接的用户就可以在需要时将更改同步到 SharePoint 文档库。

Back to top


使用 Groove Web 服务 API

虽然我正在开发客户端应用程序,但 Groove 的编程模型仍然使用 Web 服务,而不是托管 API。这种编程方式让人有些费解,因为客户端应用程序正在调用实际上运行于同一计算机上的 Web 服务。即使计算机与网络断开连接,这些服务仍然是可用的 — Groove 客户端本身会应答这些请求。对于更大型的企业解决方案,可以采用 Groove Server Data Bridge,这是一款基于服务器的产品,其编程模型是类似的,但我决定在解决方案中采用客户端。

为了创建如图 3 所示的客户端应用程序,我首先要在项目中为需要访问的每个 Groove 服务添加 Web 引用。由于 Groove SDK 提供了每个服务的 WSDL 文件,因此我先指定了到相关 .wsdl 文件的路径,然后将 Web 引用的名称从默认的“Web 引用”更改为意义更为明确的名称,再单击“添加引用”按钮。在此应用程序中,我打算使用 GrooveAccounts、GrooveForms2、GrooveSpaces 和 GrooveTools 这几个服务。

图 3 加载 Groove 数据到 SQL Server 数据库
图 3 加载 Groove 数据到 sql Server 数据库 (单击该图像获得较大视图)
Back to top


Groove Web 服务的注册表设置

在可以调用 Web 服务之前,我需要知道 Groove 使用哪些端口,默认端口为 9080,但我应当从当前用户的 GrooveLocalHTTPPort 注册表设置中对其进行检索。另外我还需要为每个调用提供一个称为请求键的值,Web 服务将通过它对调用方进行验证。我可以从 LocalRequestKey 注册表设置中检索此键值,如图 4 所示。请求键会在每次 Groove 重新启动时随机重新生成,因此在每次调用前,应在注册表对其进行检索,以防在上一次检索后该键又重新生成新的值。

另一个可用于 Web 服务身份验证的注册表设置是响应键。每次调用 Groove Web 服务时,收到的响应中都会包含一个键,我可以对照 LocalResponseKey 注册表设置来检查其是否匹配。

Back to top


帐户和标识

每个 Groove 用户都拥有一个帐户,用户要在首次启动 Groove 时配置该帐户。帐户作为文件存储在用户计算机(或多台计算机)上,其中包含诸如加密密钥和联系人列表的信息。每个帐户还具有至少一个标识,其中包含与其他 Groove 用户共享的联系人信息,例如电子邮件地址和电话号码。帐户还可以根据需要包含多个标识,(例如)用户可以将一个标识用于业务,而将另一个标识用于个人用途(例如,与朋友共享文件)。

我可以使用 GrooveAccounts 服务来获得计算机上的帐户和标识的列表。如图 5 所示,使用请求键和端口设置好 Web 服务调用后,我就可以使用 GrooveAccounts 服务的 Read2 方法返回一个 Account2 对象的数组。每个帐户都具有一组集合,因此我可以加载标识列表,以便用户可以选择哪个标识具有消费者调查工作区,如图 3 所示。(大多数用户只有一个帐户,并且其中只有一个标识。)

Back to top


获取工作区和工具的列表

确定了正在使用的标识后,我可以获得足够的信息来使用 GrooveSpaces 服务的 Read 方法获得用户的工作区列表。标识对象具有 URI 属性,该属性对于此标识是唯一的,并且可以用于其他大多数 Groove Web 服务调用,如图 6 所示;另外标识对象还有 Spaces 属性,其中包含用户工作区的 URL。

正如前面创建 Groove 工作区时看到的那样,每个工作区都可以包含多个工具,例如,文件工具、讨论工具和表单工具等。当用户在客户端应用程序中选择了某个工作区后,我可以使用 GrooveTools 服务的 Read 方法找到包含市场调查数据的表单工具。工作区只有一个表单工具,因此我只需查找名为“表单”的工具即可,但如果我想提供更加详细的内容,也可以列出所有类型合适的工具,让用户根据具体情况自己选择。

Back to top


从 Groove 表单提取数据

现在我的方案已经万事俱备,我编写的代码可以从注册表检索 Groove 设置,并且可以获得帐户、标识、工作区和工具的列表,紧接着我要实现最初设定的要求:从 Groove 工具中提取数据,并输入 sql Server 数据库以进行分析。获取数据其实非常容易,只需使用 RecordQuery 对象设置一个查询,对我想获取的记录加以描述,然后将其传递给 GrooveForms2 服务的 QueryRecords 方法,如下所示:

// Query ALL records in the ALL view:GrooveForms2.RecordQuery query = new GrooveForms2.RecordQuery();query.ViewURI = “”;query.UnreadRecordsOnly = false;query.QueryMetadataOnly = false;query.IncludeFileAttachmentContent = false;// Issue the queryGrooveForms2.Forms2RecordDataSet recordDataSet =     svc.QueryRecords(query);

如果您查看 QueryRecords 返回的 Forms2RecordDataSet 对象,就会发现有趣的事情。Forms2RecordDataSet 包含的表单架构和数据均为 xml 格式,因此我必须另外执行几步操作才能有效使用它。处理表单数据的最简便的方法是将 Forms2RecordDataSet 对象转换成更为熟悉的 .NET DataSet 对象。

Groove SDK 文档中有一节内容是专门介绍这一主题的,您也可以从本文的示例下载中找到其代码。因此在这里我仅简单介绍一些比较高深的问题(尤其是这些代码只需编写一次即可重新用于其他地方)。原则上讲,您需要新建一个数据集,并使用 ReadXmlSchema 方法设置表和列定义,方法是为架构创建一个字符串读取器,并为字符串预设合适的 xml 版本声明。架构创建完毕后,即可使用 ReadXml 方法加载实际数据。

这里您需要考虑到一个与日期-时间列有关的小问题。Groove 所返回的 Forms2RecordDataSet 中的所有日期 — 时间字段均为格林威治标准时间,而在 .NET DataSet 中这些字段默认为本地时间。我可以循环遍历 DataSet 中使用 ReadXmlSchema 方法创建的所有列,并在加载数据前将其 DateTimeMode 设置为 Utc,这样即可避免此类问题。

Back to top


加载表单数据到数据库

现在,我可以循环遍历 DataSet 并在 sql Server 数据库中为从 Groove 表单获得的每项新记录添加新的行。由于用户可以无限次地执行该过程,因此我需要使用某种机制来避免将重复的记录加载到数据库。

Groove 表单中的每项记录都有一个由系统生成的字段,称为 _RecordID,这是该记录的唯一标识。如果加载记录到数据库时包含此字段,则可以利用它来检查记录是否已添加到数据库,如果已经添加,则更新现有的数据库行,而不插入重复行。这样可以确保从上次执行该过程起至今所有已修改的问卷记录都能在 sql Server 数据库中得到正确的反映。

总结
如果您需要为分散的团队构建协作解决方案,但从头开发不仅造价高昂,而且难度很大,那么 Groove 将为您提供一个非常理想的环境。不管您是喜欢使用诸如文件共享和表单的预设工具,还是要建立全新的基于 API 的应用程序,Groove 都是一个功能强大的工具。

 

最新评论

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-25 23:43 , Processed in 0.060335 second(s), 16 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部