作为 IBM Lotus™ Connections 1.0.1 的重大更新之一,开发人员可以利用该产品提供的轻量级 API 与已有的 Web 系统轻松实现数据整合。而本文将介绍如何利用这些 API,并借助 Adobe™AIR® 技术,制作一个可以脱离浏览器,甚至在没有联网的情况下依然可管理 Lotus Connections Dogear 数据的桌面程序。对于已经部署或正准备部署 Lotus Connections 的用户,阅读这篇文章将更快熟悉其 API,并了解如何制作基于 Web 或桌面的应用以提高工作效率。
Lotus Connections 是 IBM 率先推出的面向企业,实现互动协作的通用软件。它包含五个部分:
模块名(英文) | 模块名(中文) | 简介 |
---|---|---|
Profiles | 个人档案 | 通过这个模块可以快速检索企业内个人信息,比如查找具有某种技能的员工,或者了解某人所在的部门组成。 |
Activities | 活动 | 个人或者团体可以通过该工具对项目和日常工作进行更好的计划,信息收集,组织和跟踪。 |
Blogs | 博客 | 个人或者团体的在线日志,提供一个平台来发布和共享观点,促进交流。 |
Communities | 社区 | 具有共同兴趣的一群人,或某个项目的相关人员。可以通过它来共享信息,实现互动。 |
Dogear | 网上书签 | 企业中每个员工可以通过它与他人共享有用的网址和备注说明。 |
通过这五个互相关联的模块,员工可以更有效地进行互动。更重要的是,员工通过这样一个平台,可以实现信息的交流,共享和积累,逐渐形成企业内部的知识库平台。这五个模块都向外提供了 API,用户可以直接使用这些接口或者通过一定的再开发将 Lotus Connections 数据整合到其他信息系统,如企业门户 (Portal) 和客户关系管理系统 (CRM) 等。关于 Lotus Connections 产品更详细的介绍,请参见本文最后的 参考资源。
虽然 Lotus Connections 提供的编程接口以 ATOM、JavaScript. 等 Web 技术为主,但随着技术的进步,Web 应用和桌面应用的界限已经逐渐模糊。通过借助一些第三方的开放包(如 AIR),或浏览器插件(如 Google Gears),我们完全可以把 Lotus Connections 的功能移植到桌面操作系统。用户不再需要浏览器,甚至可以在没有联网的情况下依然可以使用部分功能。本文即将介绍的就是利用 Adobe Integrated Runtime(简称 AIR)技术,用 Flash 脚本语言 重写部分 Lotus Connections Dogear 的用户界面,使之同时支持在线和离线,并能充分利用操作系统功能来提升用户体验。
实例程序
下图是本人制作的一个功能相对完整的 Dogear 本地应用程序。相比 Lotus Connections Dogear 的网页版本,它的主要优点为 :
但限于篇幅,本文主要介绍如何使用 AIR 来抓取 Lotus Connections 上的数据并加以呈现。其他功能模块,诸如如何实现本地数据管理,只会做简单的 API 介绍。如果有机会以后会在单独教程中详细介绍。在本文最后的 下载区 提供了这个简化版 Dogear 本地程序的示例代码。读者可以把这个包导入 Flex Builder IDE。
Adobe AIR 快速入门
关于 AIR 的介绍和基于 AJAX 的开发方式,大家请参见“使用 Adobe AIR 和 Dojo 开发基于 Ajax 的 Mashup 应用”。与那篇文章不同的是,本文使用的编程语言是 Flex 和 Flash ActionScript。它们的优点是更容易地绘制用户界面和进行面向对象脚本编程。下面就让我们很快地制作第一个基于 Flex 的 AIR 程序。
Flex3 SDK 是开放源代码软件,可以在 这里 免费下载。而 Flex Builder 3 是 Adobe 推出的基于 Eclipse 的商业快速开发工具。目前它的 Beta 2 版本可以免费使用。
成功安装完 Flex Builder 3 后,重启 Eclipse 并切换到 "Flex Development" 视图。然后新建一个项目。
输入项目名 ( 如 dw.dogear.sample),并修改 Application type( 应用类型 ) 为 Desktop application(桌面应用)。
点击下一步,输入主程序文件名,如 DogAir.xml。并设置一个应用标识(Application ID)如 com.ibm.dw.sample.dogair。
按默认设置完成该新建项目的向导后 Flex Builder 会自动生成应用程序的代码框架。
让我们稍微做一下改动来体验一下 Flex Builder 强大的可视化编辑功能 (WYSIWYG)。我们可以不敲任何代码就可以设计用户界面。点击 Design 按钮,切换到设计模式。从左下角的组件列表中拖一个 HSlider 组件到中心区域。
然后按工具栏上的 Run 按钮测试一下。
我们会看到如下一个新窗口。点击中间的拉杆可以设置 1 到 100 的任意数字。由于 HTML 并不自带这样的控件,用 JavaScript. 实现类似的效果通常要花比较多的时间精力。
现在我们把这个小程序打包生成可以分发的安装程序。单击任务栏上的 Export AIR 按钮。
按默认设置完成该向导。然后双击新生成的 DogAIR.air,会出现如下的安装界面。
运行的结果和前面的图 7一样。
调用 Lotus Connections API
在创建完第一个基于 Flex 的 AIR 程序后,下面让我们开始来调用 Lotus Connections API 完善功能。
Lotus Connections API 简介
与传统的面向特定编程语言 ( 如 Java 或 C++) 的 API 不同, Lotus Connections 提供了开放的,基于 Web 标准的轻量级编程接口。使用 HTTP GET 方法访问特定网址,便可获取对应模块的数据。返回结果的格式可以是主流浏览器都支持的 JSON(JavaScript. Object Notation),或是更通用的 ATOM XML 格式。以 Dogear 模块为例,假设服务器地址为 http://dogear.tap.ibm.com,访问 http://dogear.tap.ibm.com/atom?lang=en 会得到一个 ATOM Feed。其大致结构为 :
是根元素,每个 对应一个 Dogear 服务器上的书签。 是具体的网址而 是书签名。 为对该书签的备注,可以是文字也可以包括图片表格等。 Web 2.0 应用中常见的标签(tag) 可以由一个或多个 元素来表示。其他元素的意义也比较显而易见。值得一提的是,由于 XML 有良好的可扩展性,所以一些不在 ATOM 规范中的信息依然可以比较容易地添加进来。如 Dogear 使用 来记录某书签的点击量。
制作 Dogear 客户端
下面让我们用 Flex 代码来访问该 API 并把内容展现出来。大致做法为拖拽一个按钮控件,再加入一个 VBox 容器来显示书签列表。最后添加一些脚本(ActionScript3)来处理逻辑。
上面的代码中,我们使用 组件来访问网络并注册一个回调方法来处理 ATOM 数据。只需要把 Lotus Connections 对应的 ATOM URL 赋值给 httpService 对象的 url 属性,并调用它的 send() 方法。与大部分 Ajax 程序一样,这一网络请求是异步处理的。当服务器返回数据后,onFeedReturn 方法将被调用。 Flex 提供非常方便的读取 XML 内容的方法。 feed.entry 语句便可列出所有 下的 子元素。对于每个书签,我们创建一个 Label 控件并加到 VBox 容器中。
如图 6所示,测试一下这个程序。
点击 Test 按钮,可发起 HTTP 请求到 Lotus Connections Dogear 服务器。如果连接顺利,稍等片刻便可以看到最新的 Dogear 书签。
至此,我们这个简单的实例程序就完成了,代码不超过 30 行。您可以在本文 附件区 下载到该完整代码,并导入 Eclipse 进一步修改。
其他功能的实现
限于篇幅,本文无法对其他功能的实现做详细介绍。下面仅列出主要的实现方式 :
本地数据缓存
既然 AIR 的主旨是让 Web 开发者轻松地把应用移植到桌面操作系统,本地文件的访问自然是必备的功能。事实上 AIR 不但提供了完整的 API 来读写本地文件,另外还自带了一个 SQLite 小型关系数据库,以方便开发人员保存和查询结构化数据。以下的 ER 图显示了一个 Dogear 本地程序可能需要的 2 张数据库表。
用户可以选择一次性地从服务器抓取所有自己保存的书签,或在每次从服务器请求数据时,把书签也保存在本地数据库中。具体实现来说,在程序刚启动的时候,可以使用 AIR 的 API 来创建一个本地数据库文件或获取已存在的文件地址,然后新建一个 flash.data.SQLConnection 对象。与 JDBC API 类似,执行 SQL 查询和修改可以通过 flash.data.SQLStatement 对象来进行。不过值得注意的是,在 AIR 中所有 SQL 操作都是异步执行的。这意味着您需要大量使用事件回调方法来处理界面更新或嵌套查询。
添加新的书签
Lotus Connections 不但提供了数据的读取方法,还提供了对应的更删改查 API。使用 HTTP POST 方式给特定 URL 提交一个 ATOM XML 可以进行数据的添加。类似的,使用 HTTP PUT 方法来对书签进行更新,而用 HTTP DELETE 方法来删除特定书签。我们可以设计一个数据输入对话框,让用户输入网址,书签名和备注。然后使用 HTTPService 对象来提交请求
https=new HTTPService() https.method="POST" https.contentType="application/atom+xml" https.url="http://dogear.tap.ibm.com/api/[email protected]" var bookmark:XML=... https.send(bookmark) |
利用操作系统的其他特性
为了进一步提升用户体验,我们还可以利用 AIR 的 API 来实现界面半透明,最小到系统托盘区,始终显示置前,或捕获网络连接变化来动态切换程序状态等。详情请参考 AIR 的 API 文档和相关教程。
结束语
本文演示了如何使用 Adobe AIR 相关工具和 API 获取 Lotus Connections 数据,并绘制界面。企业用户可以根据各自的需求,制作类似的扩展应用,如基于 JSR168 的 Portlet,或应用于 Mac 操作系统的 Dashboard Widget。总之,IBM Lotus Connections 提供了简单而足够丰富的应用程序编程接口,为整合客户 IT 系统创造了巨大便利。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14751907/viewspace-404371/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14751907/viewspace-404371/