利用 Lotus Connections API 製作桌面應用

genusBIT發表於2009-04-13
作為 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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章