IBM Notes/iNotes 9 之 Open Social 新特性

OpenSocial 簡介

近年來,社交網站得到了蓬勃的發展,在 OpenSocial 這個概念提出之前,不同的社交網站向開發人員提供了不同的私有 API 來訪問社交網站數據,這樣一個應用如果需要部署到多個社交網站,需要提供不同的實現,因此很難得到重用。針對這個的問題,OpenSocial 規範應運而生。它是一套統一的接口標準,用來描述社交網絡的數據規範。有了 OpenSocial,基於該通用 API 開發的社交應用程序可以運行在任意支持 OpenSocial 規範的社交網站上。真正實現了"一次開發,到處運行"。

這裏需要注意,OpenSocial 組織提供相應標準和規範,但不提供實現方法。Apache 基金會的 Shindig 項目提供了 OpenSocial 的參考實現。開發者可以使用標準的 HTML,JavaScript 技術來創建基於 OpenSocial 的社交應用,這些應用稱爲 OpenSocial 應用,它們可以運行在任何實現了 OpenSocial APIs 的社交站點上,而這些站點也被稱爲 OpenSocial 容器。

OpenSocial 應用包括兩種模式:gadget 模式和 RESTful 模式。本文中將要介紹的 Notes/iNotes Open Social Widget 就是基於已有的 Open Social gadget 實現的。


IBM Notes/iNotes Social Edition 9 對 Open Social 的支持

Notes/Domino 不僅僅是一個郵件客戶端及服務器,更重要的,它還是一個應用開發的平臺。我們可以基於 Notes/Domino 平臺開發企業的各種應用程序,並且可以將這些應用程序集成到 Notes 以及 iNotes 裏面。對於 Notes/iNotes 的擴展和定製,目前已經有着多種不同的開發技術,如 Notes 數據庫開發,Eclipse 插件開發,XPages 開發等等。對於我們開發人員來說,我們最希望的就是我們開發的同一款應用程序,既可以運行於 Notes 中,也可以運行在 iNotes 裏面,從而可以節約我們的開發成本。之前版本中的各種開發技術,除了 XPages 之外,都很難實現這一目的。IBM Notes/iNotes Social Edition 9 開始提供了對 Open Social 的支持,從而解決了這一難題。基於 Open Social 開發的應用程序,既可以運行在 Notes 客戶端中,同時還可以運行在 iNotes 裏。除了這一點之外,Open Social 還爲 Notes/iNotes 提供了很多很方便的功能,下面我們就爲大家來具體的介紹一下。

Open Social Widgets

在 Notes/iNotes 中,我們使用已有的 Notes Widget 框架來創建和管理 Open Social 應用。通過使用 Notes Widgets 框架,管理員可以將 Notes 中運行的各種應用程序打包成 Widgets,並且可以通過 Domino 策略集中的將應用部署給企業中的用戶。目前 Notes Widgets 支持的 Widget 類型包括有 Eclipse 插件,Notes 數據庫,web 頁面,XPages 應用等等,從 IBM Notes/iNotes Social Edition 9 開始,Notes Widget 框架新增加了一種 Open Social Widgets 的類型。有了它的支持,Open Social 的應用可以打包成 Open Social Widget 的方式在 Notes/iNotes 中運行,它可以運行在 Notes/iNotes 中的多個不同的區域,包括:

  • Notes/iNotes 的側邊欄。我們可以使用 Open Social Widget 擴展 Notes/iNotes 側邊欄的應用,這對 iNotes 來說是個非常有幫助的功能。我們可以不修改 iNotes 的 form 文件,就可以給 iNotes 的側邊欄增加一個新的 Open Social 應用。
  • Notes/iNotes 中一個單獨的標籤頁。
  • Notes/iNotes 中的一個彈出對話框。
  • 在 Notes 客戶端,還支持在一個單獨的窗口中去運行 Open Social 應用

曾經開發過 Notes 中 Eclipse 插件應用的讀者,應該知道通過使用 Eclipse 的插件技術,我們可以給 Notes 客戶端添加菜單項,並且可以監聽 Notes 客戶端中的各種事件。Open Social 也提供了類似的支持,我們稱之爲 Container Services。在 Notes 中,Open Social 應用可以向 Notes 的菜單欄和工具欄添加菜單和按鈕,並且可以向郵件視圖,聯繫人視圖添加右鍵菜單。

圖 1 是一個在 Notes 客戶端中打開 Open Social Widget 的截圖。在側邊欄中我們打開了兩個 Open Social Widget,分別是 RTC Defects Report for Widget Team 以及 QuickQuestion。在打開的標籤頁中,顯示了來自 IBM Connections 4 的 Activity Stream Widget。

圖 1. 在 Notes 客戶端中打開 Open Social Widget
圖 1. 在 Notes 客戶端中打開 Open Social Widget

嵌入式體驗

一個 Open Social Widget 還可以被嵌入在 Notes/iNotes 的郵件中,因此我們就可以直接在郵件中和應用進行交互,從而提高我們的工作效率。我們可以舉一個報銷審批的應用程序的例子來說明嵌入式體驗的功效。假設我們已經有了一個網頁版的報銷申請程序,在報銷審批程序中提交我們的申請之後,應用程序就會給我們的經理髮送一封郵件。郵件裏面通常會有一個鏈接地址,經理需要點擊這個鏈接地址在瀏覽器中去打開審批應用,在進行登錄之後,經理纔可以在瀏覽器中查看到申請的具體細節並進行審批。如果在打開郵件的時候,申請的具體內容就可以直接展現,並且審批的流程也可以在郵件中完成,那麼這樣就可以節約時間,提高效率,而這正是嵌入式體驗的效果。

圖 2 顯示的正是一個嵌入式體驗郵件的截圖。這封郵件是來自 IBM Connections 4。當其他用戶給向你分享了一個文件之後,你就會收到這樣一封嵌入式體驗的郵件。在郵件中我們可以直接看到文件的具體信息,包括其他人的評論等等。我們也可以直接在郵件中添加自己的評論,甚至可以直接下載文件。

圖 2.IBM Connections 4 發送的嵌入式體驗郵件
圖 2.IBM Connections 4 發送的嵌入式體驗郵件

Notes 和 iNotes 中支持兩種類型的嵌入式體驗:

一種方式是直接將一個已有的網頁應用直接嵌入在郵件中。這種方式對於迅速集成已有的應用程序很有幫助。在這種情況下,我們需要創建一個 Web Widget,並且啓用嵌入式體驗的支持。如何創建 Web Widget 並啓用嵌入式體驗,將在後面的部分介紹,此處不贅敘。此外,爲了支持在郵件中直接打開網頁應用而不用輸入用戶密碼,我們還可以進行單點登錄的配置。對於 iNotes 用戶來說,iNotes 的郵件服務器和需要進行單點登錄的網頁應用所在的服務器需要在同一個單點登錄的域中。對於 Notes 用戶來說,用戶需要創建一個 Managed Account。

另一種方式是將一個 Open Social Gadget 嵌入到郵件中。我們需要創建一個 Open Social Widget。如何創建 Open Social Widget 仍將在後面的部分介紹。值得注意的一點是,作爲嵌入式體驗用途而創造的 Open Social Gadget 必須要引用 embedded-experiences 和 embedded-experiences-render 這兩個 feature 纔可以在郵件中顯示。

一個嵌入式體驗的郵件其實就是一封 MIME 郵件。

清單 1. 帶有嵌入式體驗的 MIME 郵件
 From: [email protected] 
  To: [email protected] 
  Subject: Social Network: Mary Has Commented On Your Status 
  MIME-Version: 1.0 
  Content-Type: multipart/alternative; boundary="XXXXboundary text"
  Mary has commented on your status. 
  --XXXXboundary text 
  Content-Type: text/plain 
  Mary has commeneted on your status. 
  --XXXXboundary text 
  Content-Type: text/html 
  <html> 
  <!-- HTML representation here --> 
  </html> 
  --XXXXboundary text 
  Content-Type: application/embed+json 
  { 
    "gadget" : http://www.socialnetwork.com/embedded/commentgadget.xml", 
    "context" : 123 
  }

其中需要注意的幾點包括:

  1. MIME 郵件的 Content-Type 必須是 multipart/alternative
  2. MIME 郵件中需要包括 text/plain 和 text/html 的郵件正文部分。對於那些不支持嵌入式體驗的郵件客戶端,將會把 text/plain 或者 text/html 的內容顯示在郵件中。
  3. MIME 郵件中有一個單獨的 application/embed+json 部分,用於保存嵌入式體驗郵件的數據模型。對應於我們前面說的兩種類型的嵌入式體驗,數據模型的類型也有兩種。一種方式是 Gadget EE,對應於將一個 Open Social Gadget 嵌入到郵件中的情況。在 Gadget EE 的方式下,我們需要指定一個 Open Social Gadget 的 gadget spec 地址。我們還可以通過 context 對象,給 open social gadget 傳遞所需要的參數,具體用法在上面的例子裏已有體現。另一種方式是 WEB EE,對應於將一個已有的網頁嵌入在郵件中的情況。在此方式下,我們只需要指定一個 URL 地址。清單 2 所示的就是如何在 MIME 郵件中嵌入一個 xpages 頁面。  
    清單 2. 嵌入式網頁的 MIME 郵件
      From: [email protected] 
      To: [email protected] 
      Subject: Social Network: Mary Has Commented On Your Status 
      MIME-Version: 1.0 
      Content-Type: multipart/alternative; boundary="XXXXboundary text"
      Mary has commented on your status. 
      --XXXXboundary text 
      Content-Type: text/plain 
      Mary has commeneted on your status. 
      --XXXXboundary text 
      Content-Type: text/html 
      <html> 
      <!-- HTML representation here --> 
      </html> 
      --XXXXboundary text 
      Content-Type: application/embed+json 
      { 
        "url" : "http://domino.com/myxpage.xsp"
      }

Open Search

Notes 客戶端提供了一個搜索功能,可以對郵件以及 Notes 應用等進行搜索,同時和支持通過 Google 和 Yahoo 來搜索相關內容。我們可以通過 Open Search,動態的擴展 Notes 客戶端的搜索功能,例如我們可以很方便的添加一個 CNN 搜索的功能到 Notes 客戶端。

Open Search 實際上就是一段 XML 描述,表示當使用對應的搜索引擎進行搜索的時候,所要使用的 URL 地址格式。例如下面的清單就列出了添加 CNN 搜索的 Open Search 聲明片段。其中最主要的部分是 Url template 屬性。通常情況下,搜索引擎在搜索內容的時候,都有一定的 URL 規範,同時還會提供一個參數用於傳遞具體的搜索文本。例如 CNN 搜索的時候,搜索 URL 的地址是 http://www.cnn.com/search/,我們可以通過 query 參數傳入我們希望搜索的關鍵字。 在 Open Search 聲明中,搜索的關鍵字用 {searchTerms} 代替。用戶在 Notes 中搜索具體內容的時候,Notes 代碼會用用戶輸入的關鍵字去替代 {searchTerms}。例如如果用戶在 Notes 中使用 CNN 搜索 IBM,那麼最終的搜索 URL 就是 http://www.cnn.com/search/?query=IBM。 我們可以通過這種方式,將企業內部應用的搜索功能集成到 Notes 中。

清單 3. 添加 CNN 搜索的 Open Search 聲明片段
 <Optional feature="opensearch"> 
	 <Param name="opensearch-description"> 
	 <![CDATA[ 
	 <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" > 
		 <ShortName>CNN.com</ShortName> 
		 <Description>CNN.com Search</Description> 
		 <InputEncoding>UTF-8</InputEncoding> 
		 <SearchForm>http://search.cnn.com/</SearchForm> 
		 <Url type="text/html" method="get"
                 template="http://www.cnn.com/search/?query={searchTerms}"> 
		 </Url> 
	 </OpenSearchDescription> 
	 ]]> 
	 </Param> 
 </Optional>

圖 3 展示了在安裝帶有 CNN Open Search 聲明的 Widget 之後,Notes 中出現 CNN 搜索的選項的效果。

圖 3. 安裝含有 Open Search 聲明的 Widget
圖 3. 安裝含有 Open Search 聲明的 Widget

LiveText 和 Open Social

LiveText 是 Notes 客戶端中已經支持的一個功能。我們可以給 LiveText 配置一定的匹配規則,例如郵件地址,訂單號等等。LiveText 可以識別出郵件或者 Notes 文檔中符合規則的字符串,並且可以觸發相關的操作。例如我們如果識別出了一個訂單號,就可以觸發一個查詢訂單的操作。這些操作通常是由 Widgets 來定義的,例如我們的訂單查詢程序是一個網頁,我們就可以定義一個 Web Widget。LiveText 會將識別出來的訂單號傳遞給我們的查詢頁面,並且進行提交查詢。LiveText 對觸發 Open Social 的應用也提供了支持。Open Social Gadget 可以定義一系列的 preference,通過 Open Social Widget, LiveText 會將識別出來的內容自動傳遞到指定的 Open Social Gadget 的 preference 中並且執行這個應用。

圖 4. LiveText 識別人名進行人員搜索的效果
圖 4. LiveText 識別人名進行人員搜索的效果

在 Notes 中創建和使用 Open Social Widgets

在上文中我們已經對 IBM Notes/iNotes Social Edition 9 中 Open Social 相關的內容作了詳細的介紹,下文將重點對如何在 Notes 中創建並使用這部分功能進行介紹。

安裝適宜的版本和組件

首先您需要安裝 IBM Notes Social Edition9.0 版本的 Notes 客戶端。安裝過程中,在自定義啓動項頁面選擇 Open Social 組件。如圖 5 所示。IBM Notes Social Edition9.0 版本客戶端提供了創建 Open Social Widgets 和可用於嵌入式體驗的 Web Widgets 的嚮導界面,這些創建出來的 Widget 可以同時在 Notes 9.0 和 iNotes 9.0 中安裝使用。

圖 5. 安裝 IBM Notes Social Edition9.0
圖 5. 安裝 IBM Notes Social Edition9.0

創建 Open Social Widget

通過 Notes 自帶的創建嚮導,我們可以快速的創建 Open Social Widget:

  1. 單擊 Notes Widgets 工具欄按鈕啓動 Widget 創建嚮導,如圖 6 所示。

    圖 6. 啓動 widget 創建嚮導
    圖 6. 啓動 widget 創建嚮導
  2. 在彈出的配置嚮導窗口中,選擇 Open Social Gadget 選項以便基於已有的 Open Social Gadget 創建 Widget。

    圖 7. widget 創建嚮導的起始頁
    圖 7. widget 創建嚮導的起始頁
  3. "由 OpenSocial Gadget 創建 Widget"頁面爲創建 Open Social Widget 提供了兩個入口:

    • 通過瀏覽 Open Social Gadget 目錄創建。
    • 通過輸入已知 Open Social Gadget 的 URL 創建。
    圖 8."由 OpenSocial Gadget 創建 Widget"頁面
    圖 8.

    若選擇"瀏覽 Open Social 目錄"選項,點擊"完成"按鈕後,Notes 內置的 Web 瀏覽器將爲您打開由 Google 提供的 Open Social Gadget 目錄頁面。這裏爲您提供了豐富多彩的 gadget 應用資源,您可以挑選一款感興趣的 gadget。

    若選擇"通過 URL 創建 Open Social Gadget"選項,輸入指定的 gadget URL, 然後點擊"下一步",創建嚮導會自動爲您下載該 gadget, 之後將跳轉到 Open Social Widget Feature Capabilities 頁面。如圖 9 所示。

  4. 在 Open Social Widget Feature Capabilities 頁面中,所有 gadget 必需的 feature 默認狀態都是"生效",並且不允許用戶自行更改;對於那些可選的 feature, 您可以自定義是否"屏蔽"它們。

    圖 9.Widget Feature Capabilities 頁面
    圖 9.Widget Feature Capabilities 頁面
  5. 繼續點擊下一步,將進入"配置 Open Social Gadget 視圖"頁面。在這裏您可以設定 Widget 在不同的位置打開時顯示不同的 Gadget 視圖。

    圖 10. 配置 Open Social Gadget 視圖
    圖 10. 配置 Open Social Gadget 視圖
  6. 繼續點擊"下一步"。進入"配置 Widget"頁面  
    圖 11."配置 Widget"頁面
    圖 11.

    這裏您可以爲這個即將創建的 Widget 設置名稱,同時可以:

    • 直接點擊"完成",創建 Widget。
    • 爲這個 widget 配置一個 action。
    • 設置當 widget 創建完成後直接在側邊欄中顯示。
  7. 點擊"完成"按鈕,至此,新的 Widget 創建成功。你可以看到它已經被添加到"My Widgets"側邊欄中。

創建用於嵌入式體驗(Embedded-Experiences)的 Web Widget

創建 Web Widget 的功能在 Notes 9.0 版本之前就已經存在,在 Notes 9.0 Social Edition 中,Web Widget 得到了進一步的增強了,可以支持嵌入式體驗。創建用於嵌入式體驗的 Web Widgets 步驟如下:

  1. 與創建 Open Social Widgets 相同,首先單擊 Notes Widgets 工具欄按鈕啓動 Widget 配置嚮導,如圖 6 所示。
  2. 在彈出的配置嚮導窗口中,選擇 Web Page 選項。如圖 7 所示。點擊"下一步"按鈕。
  3. "由網頁創建 Widget"頁面也爲 Widget 創建提供了兩個入口:
  • 通過瀏覽網頁創建。
  • 通過輸入網頁的 URL 創建。

這裏我們選擇輸入 URL,並點擊"下一步"按鈕。

  1. 在新的頁面中,選擇使用 HTTP GET 方式構建 Web Widget。點擊"下一步"。
  2. Notes 自動下載該 Web 頁面,下載完成後,點擊"下一步"。
  3. 在配置 widget 頁面,用戶可以自定義該 widget 的名稱和其它屬性,與 Open Social Widget 類似。配置完成後,點擊"下一步"。
  4. 此時我們進入"配置 widget 的嵌入式體驗"頁面,如圖 12 所示。此頁面是 Notes 9.0 Social Edition 中新增的功能。如果你想要讓這個 web widget 能夠在嵌入式體驗中使用,首先需要勾選"Enable this widget for Embedded Experiences", 並且在下面的 URL 文本框中填寫可被信任 URL。這裏默認生成的是您在步驟 3 中輸入的 URL,您也可以通過使用通配符使該 URL 更加靈活。  
    圖 12."配置 widget 的嵌入式體驗"頁面
    圖 12.
  5. 點擊"完成"退出配置嚮導,至此,新的 Widget 創建成功。你可以看到它已經被添加到"My Widgets"側邊欄中。

與普通 Web Widget 相比,具有 Embedded Experiences 特性的 Web Widgets 在 widget xml 文件中添加了如下所示代碼以支持嵌入式體驗。

清單 4.Embedded Experiences 特性的 Web Widgets
 <data> 
 <object-capabilities url= 
               "http://9.123.103.32:8080/Toolbox/WebPage/OpenSocial.htm"> 
	 <grant-feature id="embedded-experiences-render"/> 
 </object-capabilities> 
 </data>

部署和配置 Open Social Widget

由於 Open Social Widget 中可能含有可執行的程序段,爲了保證使用的安全性,Notes Social Edition 引入了更多的安全機制。只有通過管理員審查並批准的 Open Social Widget 纔可以在 Notes/iNotes 中使用。實現這一安全機制的組件正是 Widget Catalog。

Widget Catalog 在 Notes 9.0 版本之前也已經存在了,他可以理解爲一個應用商店,保存並管理着各種 Notes Widget 應用程序。用戶通過連接 Widget Catalog 就可以選擇安裝需要的應用,自動接收應用更新,還能發佈自己的 widget 應用爲更多用戶使用。在已有功能的基礎上,Notes 9.0 對 Widget Catalog 功能也進行了增強,對於 Widget Catalog 中保管的 Open Social Widget,加入了審查和批准的概念。Widget Catalog 管理員可以通過 Review Button 瞭解該 Open Social Widget 的內容

圖 13. 審查 Open Social Widget 的內容(之前 / 之後)
圖 13. 審查 Open Social Widget 的內容(之前 / 之後)

在確認 Open Social Widget 安全後,Widget Catalog 管理員可以通過點擊"Approve"按鈕批准 widget 的使用。這一步驟主要是對 widget 使用的規則進行配置,典型的配置有 Proxy 配置,還有 oAuth Widget 專有的 oAuth 配置。最後,widget 文檔將會被添加一個受信任的簽名。Open Social Widget 執行時會檢查簽名,只有具有受信任簽名的 widget 纔可以在 Notes/iNotes 段運行。

圖 14. 爲 Open Social Widget 配置 Proxy
圖 14. 爲 Open Social Widget 配置 Proxy
圖 15. 被批准的 widget
圖 15. 被批准的 widget

結束語

在本文中,我們首先對 IBM Notes/iNotes Social Edition 9 中 Open Social 相關的新功能進行了介紹,然後對如何創建並使用這些新功能提供了 Step By Step 的說明,希望這些內容可以幫你更好的瞭解我們的產品。如果您想更加深入的瞭解 Open Social, 瞭解 Notes/iNotes, 建議您去閱讀我們在參考資源列出的文章。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章