ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 利用 Lotus Connections API 制作桌面应用

利用 Lotus Connections API 制作桌面应用

原创 Linux操作系统 作者:genusBIT 时间:2009-04-13 15:39:16 0 删除 编辑
作为 IBM Lotus™ Connections 1.0.1 的重大更新之一,开发人员可以利用该产品提供的轻量级 API 与已有的 Web 系统轻松实现数据整合。而本文将介绍如何利用这些 API,并借助 Adobe™AIR® 技术,制作一个可以脱离浏览器,甚至在没有联网的情况下依然可管理 Lotus Connections Dogear 数据的桌面程序。对于已经部署或正准备部署 Lotus Connections 的用户,阅读这篇文章将更快熟悉其 API,并了解如何制作基于 Web 或桌面的应用以提高工作效率。

Lotus Connections 是 IBM 率先推出的面向企业,实现互动协作的通用软件。它包含五个部分:


表 1. Lotus Connections 五大模块
模块名(英文) 模块名(中文) 简介
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 的网页版本,它的主要优点为 :

  • 约 800KB 的安装程序,可以脱离浏览器直接运行。可最小化到系统托盘区并设置为开机启动。
  • 只有在第一次运行该程序时才需要输入服务器地址和用户名密码。之后这些信息会保存到本地数据库。每次打开程序就自动登录到服务器。
  • 在联机情况下,该程序可以从远程 Lotus Connections 服务器上抓取最新 Dogear 书签,或执行各种查询,且速度大幅优于网页版 Dogear。
  • 在不能访问 Connections 服务器的情况下,依然可以查询或浏览曾访问过的书签列表,并支持复杂查询。
  • 支持从浏览器或 Word 等文字处理软件拖拽网址到本程序,以保存到远程 Dogear 服务器。


图 1. 一个相对完整的 Dogear 本地应用程序
 一个相对完整的 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" 视图。然后新建一个项目。


图 2. 在 Flex Builder3 中新建一个 Flex 项目
 在 Flex Builder3 中新建一个 Flex 项目

输入项目名 ( 如 dw.dogear.sample),并修改 Application type( 应用类型 ) 为 Desktop application(桌面应用)。


图 3. 输入项目名并设置为桌面应用类型
 输入项目名并设置为桌面应用类型

点击下一步,输入主程序文件名,如 DogAir.xml。并设置一个应用标识(Application ID)如 com.ibm.dw.sample.dogair。


图 4. 设置应用标识和程序入口
 设置应用标识和程序入口

按默认设置完成该新建项目的向导后 Flex Builder 会自动生成应用程序的代码框架。


清单 1. 由 Flex Builder 自动生成的新 AIR 程序代码

                



让我们稍微做一下改动来体验一下 Flex Builder 强大的可视化编辑功能 (WYSIWYG)。我们可以不敲任何代码就可以设计用户界面。点击 Design 按钮,切换到设计模式。从左下角的组件列表中拖一个 HSlider 组件到中心区域。


图 5. Flex Builder3 可视化编程
Flex Builder3 可视化编程

然后按工具栏上的 Run 按钮测试一下。


图 6. 单击工具栏上的 Run 按钮,选择 Run As > Adobe AIR Application
 单击工具栏上的 Run 按钮,选择 Run As > Adobe AIR Application

我们会看到如下一个新窗口。点击中间的拉杆可以设置 1 到 100 的任意数字。由于 HTML 并不自带这样的控件,用 JavaScript. 实现类似的效果通常要花比较多的时间精力。


图 7. 一个简单的基于 Flex 的 AIR 本地程序
 一个简单的基于 Flex 的 AIR 本地程序

现在我们把这个小程序打包生成可以分发的安装程序。单击任务栏上的 Export AIR 按钮。


图 8. 单击 Flex 视图中的 Export 按钮
 单击 Flex 视图中的 Export 按钮

按默认设置完成该向导。然后双击新生成的 DogAIR.air,会出现如下的安装界面。


图 9. AIR 程序安装界面
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。其大致结构为 :


图 10. Lotus Connections Dogear 模块 ATOM 格式的书签列表
Lotus Connections Dogear 模块 ATOM 格式的书签列表

是根元素,每个 对应一个 Dogear 服务器上的书签。 是具体的网址而 是书签名。 为对该书签的备注,可以是文字也可以包括图片表格等。 Web 2.0 应用中常见的标签(tag) 可以由一个或多个 元素来表示。其他元素的意义也比较显而易见。值得一提的是,由于 XML 有良好的可扩展性,所以一些不在 ATOM 规范中的信息依然可以比较容易地添加进来。如 Dogear 使用 来记录某书签的点击量。

制作 Dogear 客户端

下面让我们用 Flex 代码来访问该 API 并把内容展现出来。大致做法为拖拽一个按钮控件,再加入一个 VBox 容器来显示书签列表。最后添加一些脚本(ActionScript3)来处理逻辑。


清单 2. 一个简单的读取 Dogear 数据的 AIR 程序

                


	
	
	
	
		|-------10--------20--------30--------40--------50--------60--------70--------80--------9|
|-------- XML error:  The previous line is longer than the max of 90 characters ---------|
				var item:Label
				for(var i:String in data){
					item=new Label()
					item.text=data[i].title
					list.addChild(item)
				}
			}
		]]>
	

上面的代码中,我们使用 组件来访问网络并注册一个回调方法来处理 ATOM 数据。只需要把 Lotus Connections 对应的 ATOM URL 赋值给 httpService 对象的 url 属性,并调用它的 send() 方法。与大部分 Ajax 程序一样,这一网络请求是异步处理的。当服务器返回数据后,onFeedReturn 方法将被调用。 Flex 提供非常方便的读取 XML 内容的方法。 feed.entry 语句便可列出所有 下的 子元素。对于每个书签,我们创建一个 Label 控件并加到 VBox 容器中。

图 6所示,测试一下这个程序。


图 11. 实例程序的初始界面
 实例程序的初始界面表

点击 Test 按钮,可发起 HTTP 请求到 Lotus Connections Dogear 服务器。如果连接顺利,稍等片刻便可以看到最新的 Dogear 书签。


图 12. 实例程序显示远程服务器上最新的书签列表
 实例程序显示远程服务器上最新的书签列表

至此,我们这个简单的实例程序就完成了,代码不超过 30 行。您可以在本文 附件区 下载到该完整代码,并导入 Eclipse 进一步修改。

其他功能的实现

限于篇幅,本文无法对其他功能的实现做详细介绍。下面仅列出主要的实现方式 :

本地数据缓存

既然 AIR 的主旨是让 Web 开发者轻松地把应用移植到桌面操作系统,本地文件的访问自然是必备的功能。事实上 AIR 不但提供了完整的 API 来读写本地文件,另外还自带了一个 SQLite 小型关系数据库,以方便开发人员保存和查询结构化数据。以下的 ER 图显示了一个 Dogear 本地程序可能需要的 2 张数据库表。


图 13. 本地 Dogear 程序的数据库设计 ER 图
 本地 Dogear 程序的数据库设计 ER 图

用户可以选择一次性地从服务器抓取所有自己保存的书签,或在每次从服务器请求数据时,把书签也保存在本地数据库中。具体实现来说,在程序刚启动的时候,可以使用 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 对象来提交请求


清单 3. 使用 POST 方式添加新书签

                
https=new HTTPService()
https.method="POST"
https.contentType="application/atom+xml"
https.url="http://dogear.tap.ibm.com/api/app?email=zhongqj@cn.ibm.com"
var bookmark:XML=...
https.send(bookmark)

利用操作系统的其他特性

为了进一步提升用户体验,我们还可以利用 AIR 的 API 来实现界面半透明,最小到系统托盘区,始终显示置前,或捕获网络连接变化来动态切换程序状态等。详情请参考 AIR 的 API 文档和相关教程。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14751907/viewspace-588829/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-07-04

  • 博文量
    233
  • 访问量
    437243