IBM Lotus Quickr は、チームとのコンテンツの共有、コラボレーション、より迅速なオンライン作業を支援する Web 2.0 ベースのチーム・コラボレーション・ソフトウェアです。コンテンツ・リポジトリー、コンテンツ管理、およびチーム・コラボレーションなどの機能を持っています。
ユーザーは Lotus Quickr チーム・プレースで共同作業を行います。Lotus Quickr は、標準コンポーネント (ライブラリー、チーム・カレンダー、ディスカッション・フォーラム、ブログ、Wiki、およびプロジェクトを管理する他のコラボレーション・ツールなど) を使用して容易にカスタマイズできます。また、Lotus Quickr 用にまったく新しいコンポーネントを作成することもできます。
Lotus Quickr コンテンツ・ライブラリーは Lotus Quickr の 1 機能で、プロジェクトやチームのために、文書を容易に構成および共有できるようにします。ユーザーは Lotus Quickr ライブラリーの機能 (バージョン管理、ワークフロー、カスタマイズされた文書タイプなど) を使用して、あらゆる種類の文書を簡単に管理できます。Lotus Quickr コンテンツ・サービスは、Lotus Quickr コンテンツの作成、管理、更新、検索、照会、および削除を可能にします。これらのサービスにより、開発者は REST ベースおよび SOAP ベースのプロトコルを使用し、Lotus Quickr 内のコンテンツにアクセスして操作することができます。
Lotus Quickr は Lotus Web Content Management を使用して、オンライン・コンテンツの保管と表示を行います。Wiki ページ、ブログ投稿、アナウンス、プロジェクト・タスク、連絡先は、それぞれ Web コンテンツとして保管されます。各コンテンツは、Lotus Web Content Management オーサリング・テンプレートを使用してオーサリングされ、Web コンテンツ管理プレゼンテーション・テンプレートを使用して表示されます。また、各コンテンツは Web コンテンツ管理サイト・エリアに保管されます。Web コンテンツ管理 API を使用すると、Web コンテンツ管理の機能を拡張できます。この API により、Web コンテンツをプログラマチックに管理する機能が得られます。
サンプルの Photo Book は、文書ライブラリーを使用して写真を保管し、チーム・ベースの写真編集を可能にするポートレットです。Web コンテンツ管理のオーサリング・テンプレートとプレゼンテーション・テンプレートにより、文書ライブラリーのコンテンツの表示をカスタマイズできます。Lotus Quickr コンテンツ・サービスおよび Web コンテンツ管理 Java API は、文書と Web コンテンツ・コンポーネント間の通信に使用され、Lotus Quickr コネクターなどの任意のチャネルを通じて新規コンポーネントが文書ライブラリーに追加されたときに、Photo Book Web コンテンツ・ライブラリー内でリンクが作成されます。
次の知識が必要です。
- Lotus Quickr の概念 (プレース、文書ライブラリー、コンポーネントなど)
- Lotus Web Content Management の概念
この記事の一部のセクションでは、次の知識も必要です。
- Lotus Quickr コンテンツ REST サービス API
- Lotus Web コンテンツ管理 Java API
- HTML、JavaScript、または他のスクリプト言語
Lotus Quickr 文書サービスは、プロジェクト、チーム、またはユーザーによる文書の容易な編成と共有に役立ちます。すべての文書およびリッチ・メディア・ファイル用のライブラリーを迅速にセットアップできるため、チェックインとチェックアウト、バージョン管理、コンテンツ管理用の他のツールを使用した、チームでの共有とコラボレーションも容易です。
開発者は Lotus Quickr REST サービスを使用し、Lotus Quickr 文書ライブラリー内のコンテンツにアクセスして操作できます。Lotus Quickr REST サービスは、RFC 4287 に記述されている Atom Syndication Format に基づいてコンテンツにアクセスし、最新の Atom Publishing Protocol (APP) に基づいてコンテンツを Lotus Quickr にパブリッシュします。
APP の観点では、文書ライブラリーは APP コレクションとして扱われ、文書は APP リソースとして扱われます。各コレクションおよびリソースには URL が定義されます。APP で定義されているように、クライアントはこれらの URL に適切な HTTP メソッド (GET、POST、PUT、および DELETE など) を呼び出すことができます。また、URL は予測可能なパターンに従うため、クライアントはサーバーへの要求なしに URL を作成できます。
図 1. Lotus Quickr 文書ライブラリー
Lotus Quickr における Lotus Web Content Management ベースのカスタム・コンポーネント
Photo Book コンポーネントは、Lotus Web Content Management をプレゼンテーション層として使用します。Lotus Web Content Management ベースの既存コンポーネントのカスタマイズに関する基本原理については、最近公開された developerWorks の記事「Customizing components in IBM Lotus Quickr services for IBM WebSphere Portal 8.0」で解説されています。この記事では、Lotus Quickr の新規コンポーネントを追加し、Lotus Quickr のカスタム・コンポーネントの作成方法についても説明します。
Lotus Quickr services for WebSphere Portal 内のコンポーネント
ユーザーがポートレット内でアクションを実行する場合、またはポートレット間通信を介してアクションがポートレットに送信される場合は、ポートレットがレンダリングされた後にのみ、標準ポートレットを通じて対象ポートレットに通知されます。コンポーネントは、ライフサイクル・メソッド (createInstance、removeInstance)、メンバーシップ・メソッド (memberAdded、memberRemoved)、およびポートレットに追加された他のメソッドのセットです。コンポーネント・インターフェースにより、Lotus Quickr プレース内でのアクション (作成、メンバーの変更、エクスポート、インポートなど) の実行が、ポートレットに通知されます。Lotus Quickr プレースは、これらのコンポーネントのアセンブリーです。WebSphere Portal に詳しい方は、Lotus Quickr プレースが WebSphere Portal 複合アプリケーションの実装である点にご留意ください。
コンポーネント・インターフェースは、ポートレットがコンテンツをポートレット内で所有している場合に最も大きな意味を持ちます。つまり、ポートレットはコンテンツを編集するための主要なメカニズムであり、ポートレットの各インスタンスでは、コンテンツの異なるセットが編集されます。コンポーネント・インターフェースにより、Lotus Quickr はプレースで実行されたアクション (コンポーネントの作成またはプレースへのメンバーの追加) を、そのプレース内の個々のアクションに通知し、さらにポートレットによって所有されるコンテンツへと通知します。
理論的には、コンポーネント・インターフェースの実装によって任意のポートレットをコンポーネントに変換できますが、コンポーネントとして意味があるのは一部のポートレットだけです。天気情報を表示するポートレットはメンバーについて何も知る必要がないかもしれないので、コンテンツを所有していません。たとえば、天気ポートレットは興味深いコンポーネントにはならないでしょう。プレースに新規メンバーが追加されたことやポートレットが作成中であることが通知されたとして、天気ポートレットに何ができるのかは不明です。
Lotus Quickr services for WebSphere Portal 内の Lotus Web Content Management コンポーネント
Lotus Quickr には、Lotus Web Content Management を活用し、そのままの状態ですぐに使えるコンポーネントのセットが含まれています。アナウンス、連絡先、ブログ、ディスカッション・フォーラム、プロジェクト・タスク、Wiki、チーム・カレンダーといったコンポーネントです。アナウンス、連絡先、プロジェクト・タスクの各コンポーネントはまとめてリストと呼ばれ、いずれも同じコンポーネント実装クラスを使用します。IBM では、この共有されたコンポーネント実装を Lotus Web Content Management チーム・スペース・コンポーネントと呼んでいます。これらのコンポーネント間の最も大きな違いは、コンポーネントに関連付けられたポートレットでの設定やプレゼンテーション・マークアップへの変更を通じて生じています。連絡先リストとプロジェクト・タスク・リストとの間には、最小限のコードの違いがあります。図 2 を参照してください。
図 2. Lotus Quickr services for WebSphere Portal 内の Lotus Web Content Management コンポーネント
Lotus Web Content Management プレース・ポートレットは、Lotus Web Content Management プレース・コンポーネントと連携して機能します。ポートレットは、ポートレット自身が所有しているコンテンツ(コンポーネントによって用意されるもの)に合わせて自動的にスコープを設定します。Lotus Web Content Management コンポーネントは、コンポーネントに渡されたアクションを、ポートレットによってレンダリングされた Lotus Web Content Management サイト・エリアで実行されるアクションに変換する方法を理解しています。図 3 を参照してください。
図 3. Lotus Quickr プレースのメンバーシップの管理
メンバーをプレースに追加すると、memberAdded 呼び出しが Lotus Web Content Management コンポーネントに通知されます。次に、Lotus Web Content Management コンポーネントの実装によって、メンバーが適切なサイト・エリアに追加されます。コンポーネント上の作成アクションは、コンポーネント自身によって Web コンテンツ・ライブラリーの作成に変換され、それを受けて任意のテンプレート・サイト・エリアがそのライブラリーにコピーされます。ポインターをテンプレート・サイト・エリアへと変更することにより、コンポーネントのデフォルト・コンテンツ、その表示、オーサリング・ツール、およびコンポーネントに関するほとんどすべてのことを変更できます。
リストの型に適合する Lotus Web Content Management 標準コンポーネントについては、Java コードをほとんど書く必要はありません。Lotus Web Content Management の組み込みコンポーネントの実装は、テンプレートとしてユーザー自身のサイト・エリアを指し示すように構成できます。次に、このサイト・エリアはコンテンツのデフォルト部分を指し示します。また、サイト・エリアにはプレゼンテーション・テンプレートからオーサリング・テンプレートへのマッピングが含まれていて、Lotus Web Content Management で作成された Web サイトと同様に、オーサリング・ツール・コンポーネントを通じて「新規」、「編集」、「削除」の各ボタンをプレゼンテーションに含めることができます。
ポートレット自体についても、興味深い点があります。コンポーネントではないポートレットは、この記事で説明する手法を使用して、Lotus Quickr カスタマイズ・シェルフに追加できます。コンポーネントではなく、かつシェルフに追加されたポートレットの例としてフィード・リーダーがあります。Lotus Quickr では、通常のポートレットを使用して多くのカスタマイズが可能です。このセクションでは、さまざまなフォーマットで情報を表示する方法を説明します。表示する情報のタイプに適したフォーマットを選択してください。
電子アルバム (e-Album) は、Lotus Quickr services for WebSphere Portal で写真を管理および表示するサンプル・アプリケーションです。電子アルバムは、すでに説明した Lotus Web Content Management コンポーネント・アーキテクチャーおよび新規 Photo Book コンポーネント上に構築されています。
電子アルバムには、次の機能があります。
- Lotus Quickr コネクターとの統合により、Microsoft Windows Explorer、Microsoft Office、IBM Lotus Notes、IBM Lotus Symphony、および他のデスクトップ・アプリケーションとのLotus Quickr 統合から、写真を個別に、またはバッチでアップロードします。
- フォルダーを作成し、フラット・リストまたはツリー形式でシンプルに管理します。
- バージョン管理、ドラフト、およびカスタム・メタデータを使用して、プロパティー・シート経由でチーム編集が可能です。
- 写真を Web ベースのギャラリーおよびスライド・ショーで Photo Book コンポーネントに表示します。
図 4. 電子アルバムのアーキテクチャー
図 4 は、電子アルバムのハイレベルのアーキテクチャーを示しています。電子ブックは、次のパーツで構成されます。
- 文書ライブラリー。フォト・ストレージおよびチーム・ベースの編集用のプレースとして使用されます。
- カスタマイズされた Lotus Web Content Management コンテンツ。ユーザーが Web から写真を見られるようにします。次の 2 つのパートが含まれています。
- Lotus Web Content Management プレゼンテーション・テンプレートに基づく写真表示フレーム。
- Lotus Web Content Management オーサリング・テンプレートに基づく写真表示コンテンツ。写真表示コンテンツには、メディアへのリンクとライブラリーに保管されている写真のスナップショットがあります。
- シンジケーション・プログラム。文書ライブラリーを Web コンテンツ・ライブラリーにリンクします。シンジケーション・プログラムは、Lotus Web Content Management Java API および Lotus Quickr サービス API などの公開 API 上に構築されています。シンジケーション・プログラムはオンデマンドで機能し、Photo Book コンポーネントのコンテンツを表示しているユーザーによってトリガーされます。
Lotus Web Content Management の Photo Book コンポーネントの内部
Photo Book コンポーネントでは、写真へのリンクが Web コンテンツ・ライブラリーに保管され、フォト・ライブラリーのツリー構造 (フォルダーと各フォルダー内の写真を含む) が Lotus Web Content Management サイト内のサイト・エリアに保持されています。文書ライブラリーの各フォルダーは Lotus Web Content Management 内の 1 つのサイト・エリアに対応し、文書ライブラリー内の各写真は Lotus Web Content Management 内の 1 つのコンテンツに対応します。コンテンツ群の構造は、カスタマイズされたオーサリング・テンプレートに基づきます。フォト・ブックで使用されているオーサリング・テンプレートは次のとおりです。
- album_folder_at
このオーサリング・テンプレートは、サイト・エリアを表すコンテンツを作成するために使用されます。図 5 に示すように、このテンプレートには、サイト・エリアのデフォルト・コンテンツへのリンクを格納するリンク要素があります。
図 5. リンク要素
- folder_navigator_at
このオーサリング・テンプレートは、各フォルダーのサイト・エリアのデフォルト・コンテンツを作成するために使用されます。このテンプレートには要素がありません。 - list_album_item_at
このオーサリング・テンプレートは、各写真の情報を格納するコンテンツを作成するために使用されます。このテンプレートには、写真とサムネールへの URL を格納する 2 つのテキスト要素があります。また、写真の説明用のリッチ・テキスト要素もあります。このオーサリング・テンプレートの要素を図 6 に示します。
図 6. list_album_item_at の要素
- Photo Book スライド・ショー
このオーサリング・テンプレートは、スライド・ショーのレンダリング用コンテンツを作成するために使用されます。このテンプレートには、「ようこそ」テキスト用のリッチ・テキスト要素があります。
Lotus Web Content Management は、各コンテンツをレンダリングするためにプレゼンテーション・テンプレートを使用します。Photo Book は、いくつかのプレゼンテーション・テンプレートを使用してコンテンツをレンダリングします。フォルダー表示用が 1 つ、写真表示用が 1 つ、そしてスライド・ショー表示用が 1 つです。各オーサリング・テンプレートは、サイト・エリア上のプレゼンテーション・テンプレートに関連付けられて (マッピングされて) います。1 つのコンテンツをレンダリングするとき、Lotus Web Content Management はそのコンテンツ用のオーサリング・テンプレートを調べ、オーサリング・テンプレートと、コンテンツを含むサイト・エリア上のプレゼンテーション・テンプレートとのマッピングに基づいて、どのプレゼンテーション・テンプレートを使用するのかを決定します。このため、スライド・ショー、ようこそページ、または写真リスト・ページがユーザーへのコンテンツの集約にすぎない場合でも、サイト内で異なる表示を使うようにするために、それぞれ固有のオーサリング・テンプレートが必要となります。フォト・ブックで使用されているプレゼンテーション・テンプレートは次のとおりです。
- Photo Book エントリー
このプレゼンテーション・テンプレートは、各写真アイテムの詳細ページをレンダリングします。このテンプレートを図 7 に示します。
図 7. 写真アイテム・エントリーのサンプル表示
- Photo Book メイン
このプレゼンテーション・テンプレートは、サイト・エリアのデフォルト・コンテンツをレンダリングするために使用され、次の 2 つのメニューを参照します。
- サブフォルダーをリストするフォルダー・メニュー
- フォルダー内の写真をリストする Photo_entry_view メニュー
サンプルの写真を使用してレンダリングされたメインのプレゼンテーション・テンプレートを図 8 に示します。
図 8. メイン・ページのサンプル表示
- Photo Book - スライド・ショー
このプレゼンテーション・テンプレートは、スライド・ショー表示をレンダリングします。プレゼンテーションでは、Dojo を活用してスライド・ショー効果を実装します。このテンプレートは、写真の URL をリストするためにメニュー photo_slideshow_view を参照します。
サイトとサイト・エリアは、写真ファイルを格納する文書ライブラリーと構造が同じです。たとえば、ライブラリーが図 9 のような構造であった場合、Lotus Web Content Management コンテンツのサイトは図 10 のような構造になります。
図 9. ライブラリーの構造
図 10. サイトの構造
このサンプルでは、「Photo Book」という名前のコンテンツ (図 10 に示すツリー構造の一番下のレイヤーを参照) が、ライブラリーのルート・フォルダーのデフォルト・コンテンツです。このコンテンツはようこそページを表し、図 8 に示したギャラリー内のサイト・エリアのすべての写真を表示するプレゼンテーション・テンプレートをトリガーするために存在します。「Content Fold4」はサイト・エリア Fold4 を表すコンテンツです。このコンテンツは同じプレゼンテーション・テンプレートを駆動して、すべての写真のギャラリー・ビューを表示しますが、今回は、Fold4 サイト・エリア内の写真だけを表示します。
電子アルバムでは、写真の保管に Lotus Quickr 文書ライブラリーを使用します。チームによるギャラリー表示またはスライド・ショー表示のために、Lotus Web Content Management を使用して写真を提供します。シンジケーション・プログラムは、Lotus Quickr REST サービスおよび Lotus Web Content Management Java API を使用して Lotus Quickr 文書ライブラリーと Web コンテンツ・ライブラリー間の通信を行うバックグラウンド・プログラムです。
Lotus Quickr REST サービスは、Lotus Quickr 文書ライブラリー内のフォルダーおよび写真文書を入手し、Lotus Web Content Management Java API を使用して、新たに追加されたフォルダーまたは写真文書に対応する新規 Web コンテンツを作成し、文書ライブラリーから削除されたフォルダーまたは写真文書に対応する既存の Web コンテンツを削除します。
シンジケーション・プログラムは次のタスクを実行します。
- 子フォルダーとイメージ・タイプの文書のリストを Lotus Quickr 文書ライブラリーから取得します。
- フォルダーと文書の Atom エントリーから、対応する値を取り出して構成し、リストに格納します。
- フォルダー・リストとイメージ・タイプの文書リストを Lotus Web Content Management の Web コンテンツと同期します。
- Lotus Quickr 文書ライブラリーに新規追加されたフォルダーと文書へのリンクとして、新しい Web コンテンツを作成します。
- フォルダーまたは文書が Lotus Quickr コンテンツ・ライブラリーにすでに存在しない場合は、対応する Web コンテンツを削除します。
このソリューションは、文書ライブラリーと Web コンテンツ・ライブラリー間でコンテンツをコピーしないという点で斬新です。作成が比較的速く、最小限のストレージ容量しか消費しないリンクが Web コンテンツ・ライブラリーで作成され、コンテンツは文書ライブラリーで維持されます。
シンジケーション・プログラムのワークフローを図 11 に示します。
図11. シンジケーション・プログラムのワークフロー
次のセクションでは、ListRetriever と ContentUpdater がどのように機能するのかをサンプル・コードで示します。
Lotus Quickr REST サービスを用いて Lotus Quickr Content Library からフォルダーおよび写真文書のリストを取得するには、ListRetriever を使用します。このタスクを実行するために、次の URL で HTTP GET オペレーションを実行し、Lotus Quickr コンテンツ・ライブラリー内の特定のフォルダーにある、すべてのサブフォルダーと写真文書のリストを取得します。
http://<quickr_server_url>/dm/atom/library/<library_uuid>/folder/<folder_uuid>feed
このフィードには、特定のフォルダーにある各フォルダーと文書の Atom エントリーが含まれています。<category> 要素により、エントリーがフォルダーまたは文書のどちらに対応しているのかがわかります。フォルダーは子フォルダーと文書を保持できるため、展開可能なノードとして Lotus Web Content Management に表示されます。文書は、ユーザーへの表示のために、バイナリー・コンテンツとして Lotus Web Content Management に表示されます。
フォルダー・エントリーについては、そのフォルダーの uuid が保管されます。後でこの uuid を使用してフォルダーのフィード URL を構成し、そのコンテンツを取得します。
文書エントリーについては、イメージ・タイプの文書が対象となります。<content> 要素のタイプ属性によって、文書エントリーがイメージ・タイプに対応するかどうかがわかります。イメージ・タイプの文書の edit-media リンクを取得し、文書のコンテンツを得るための完全なダウンロード URL を構成します。リンクの意味の説明については、「Atom Publishing Protocol specifications」を参照してください。
Atom エントリーを処理してリストにするコード・スニペットをリスト 1 に示します。フォルダーの Web コンテンツをさらに作成するために、FolderContent を使用してフォルダーの uuid とタイトルを格納します。また、文書の Web コンテンツをさらに作成するために、ImageContent を使用して、写真文書の uuid、タイトル、ダウンロード URL、およびサムネール URL を格納します。
リスト 1. Atom エントリーを処理してリストにするコード・スニペット
ClientResponse response = httpClient.get(url);
if (response.getStatus() == 200) {
Feed feed = (Feed) response.getDocument().getRoot();
Iterator entries = feed.getEntries().iterator();
while (entries.hasNext()) {
boolean isFolder = false;
Entry entry = (Entry) entries.next();
try {
Iterator categories = entry.getCategories(
"tag:ibm.com,2006:td/type").iterator();
while (categories.hasNext()) {
Category cat = (Category) categories.next();
if (cat.getTerm().equals("folder")) {
sFolder = true;
break;
}
}
} catch (IRISyntaxException e) {
e.printStackTrace();
}
if (isFolder) {
int index = entry.getId().toString(),lastIndexOf(â:â);
uuid = entry.getId().toString().substring(index+1);
title = entry.getTitle();
FolderContent folderContent = new FolderContent();
folderContent.setTitle(title);
folderContent.setUUID(uuid);
folderList.add(folderContent);
} else {
if(entry.getContentMimeType().toString().startsWith("image")||
entry.getContentMimeType().toString().indexOf("bmp")!=-1)
{
StringBuffer sb = new StringBuffer();
imageUrl = sb.append(serverUrl).append(entry.getBaseUri().getPath()).
append(entry.getEditMediaLink().getAttributeValue("href")).toString();
thumbUrl = imageUrl.replaceFirst("document", "thumbnail");
title = entry.getTitle();
int index = entry.getId().toString().lastIndexOf(":");
uuid = entry.getId().toString().substring(index+1);
ImageContent imageContent = new ImageContent();
imageContent.setImageUrl(imageUrl);
imageContent.setThumbUrl(thumbUrl);
imageContent.setTitle(title);
imageContent.setUUID(uuid);
imageList.add(imageContent);
}
}
}
|
Lotus Web Content Management でのコンテンツの作成
Lotus Web Content Management で写真を表示するには、まず、「Photo Book - エントリー」オーサリング・テンプレートを使用して、Lotus Quickr コンテンツ・ライブラリーに新たに追加された写真文書に対応する Web コンテンツを作成する必要があります。次に、「Photo Book - メイン」プレゼンテーション・テンプレートを使用して、Web コンテンツをレンダリングします。ContentUpdater は、ListRetriever から取得したフォルダーおよび写真文書のリストに応じて Lotus Web Content Management で Web コンテンツを更新するために使用されます。Web コンテンツの作成、検索、または削除には、Lotus Web Content Management Java API を使用します。
Lotus Web Content Management の Web コンテンツでは、写真文書のダウンロード URL とサムネール URL が保管されていますが、写真文書自体は保管されていません。「Photo Book エントリー」プレゼンテーション・テンプレートを使用して、ダウンロード URL からレンダリングした写真のオリジナル・イメージを表示し、「Photo Book メイン」プレゼンテーション・テンプレートを使用して、サムネール URL からレンダリングした写真のサムネールを表示します。
Lotus Quickr コンテンツ・ライブラリーに新たに追加された写真文書に対応する新規 Web コンテンツを作成するコード・スニペットをリスト 2 に示します。このコードは、次の 4 つのステップにわけられます。
- list_album_item_at オーサリング・テンプレートを使用して新規コンテンツを作成し、新規作成したコンテンツをサイト・エリアの最後に追加します。
- テキスト・コンポーネント image_url (写真文書のダウンロード URL) をこのコンテンツに追加します。
- テキスト・コンポーネント thumbnail_url (写真文書のサムネール URL) をこのコンテンツに追加します。
- 新規コンテンツを保存します。
リスト 2. 新しい Web コンテンツを作成するコード・スニペット
try {
// create new content with specified authoring template ID,
add the newly created content at the end of the site area
content = workspace.createContent(workspace.createDocumentId
(authoringTemplate),siteArea.getId(),null,ChildPosition.END));
content.setName(docUUID);
content.setTitle(docTitle);
// add an Text component âimage_urlâto this content
if (content.hasComponent("image_url")){
imageComponent = (TextComponent) content.getComponent("image_url");
imageComponent.setText(imageUrl);
} else{
output.append("TextComponent image_url not found");
}
// add an Text component âthumbnail_urlâto this content
if (content.hasComponent("thumbnail_url")){
thumbComponent = (TextComponent) content.getComponent("thumbnail_url");
thumbComponent.setText(thumbnailUrl);
} else{
output.append("TextComponent thumbnail_url not found");
}
// save the content
String[] saveErrors = workspace.save(content);
output.append("<br><br>Content save attempted<br>");
if (saveErrors.length > 0) {
output.append("The following errors occurred on content save<br>");
for (int i=0; i < saveErrors.length; i++) {
output.append(saveErrors[i]+"<br>");
}
} else {
output.append("No errors reported on content save<br>");
}
output.append("Test complete in runPost");
} catch (Exception e) {
output.append(HTML.getStackTrace(e) + " in runPost");
}
|
図 12 に示すように、複数の写真を一括で Lotus Quickr 文書ライブラリーにアップロードできます。
図12. 文書ライブラリーへの写真のアップロード
アップロードすると、これらの写真がフォト・ブックで使用できるようになります (図 13 参照)。
図 13. フォト・ブックでの写真の表示
Photo Book コンポーネントをインストールするには、次の手順を実行します。
Lotus Web Content Management テンプレートのインポート
Lotus Web Content Management のプレゼンテーション・テンプレート、オーサリング・テンプレート、メニュー、サイト・エリア、およびデフォルトのコンテンツを一緒に使用して、Lotus Web Content Management に基づくカスタム・コンポーネントを表します。フォト・ブックのこれらの成果物は、Lotus Quickr サーバーにインポートする必要があります。Lotus Web Content Management のフォト・ブック成果物は、「Photo Book Resources」と呼ばれるライブラリーに保管されています。次の手順で、このライブラリーをインポートします。
ご使用の環境に合わせて <Portal Server>/jcr/migration/conf/wcm60_conf.xml ファイルを更新します。次のプロパティーを設定してください。
- ImportDir - Import Nodes ディレクトリーは photoLibraryResources.zip ファイルから抽出されます。
- ImportUserId - このプロパティーは、Lotus Quickr システムの有効なシステム管理者ユーザー ID にする必要があります。このユーザーは、Lotus Quickr でコンテンツ・テンプレートおよびテンプレート・サイト・エリアを作成するために使用されます。
- ImportUserPassword - このプロパティーには、上記で指定したユーザーのパスワードを設定します。
<Portal Server>/config ディレクトリーから、次のコマンドを実行します。
WPSconfig.bat import-wcm-data
他のカスタム・コンポーネントを作成する場合は、wcm60_conf.xml ファイルでエクスポート・パラメーターを指定したあと、export-wcm-data コマンドを使用してカスタム・コンポーネントをエクスポートできます。次に、カスタム・コンポーネントを配布するか、カスタム・コンポーネントをテストから本番に移行します。各コンポーネントで使われる基本的な成果物に個別のライブラリーを使用すると、それぞれを個別にエクスポートおよびインポートできます。
Photo Book Resources ライブラリーには Photo Book コンポーネント用のすべての Lotus Web Content Management 成果物が含まれているため、このライブラリーはお客様が作成するカスタム・コンポーネントにふさわしいスタート地点となります。
photobook/lib in <WPS_HOME> フォルダーを作成し、このフォルダーにすべての JAR ファイルをコピーします。
WebSphere Application Server 管理コンソールにアクセスし、「PhotoBook」という名前の新規共有ライブラリーを作成し、リスト 3 に示すようにクラスパスを設定します。
リスト 3. クラスパス
${WPS_HOME}/photobook/lib/ealbum.jar
${WPS_HOME}/photobook/lib/abdera.client.0.2.2-incubating.retro.jar
${WPS_HOME}/photobook/lib/abdera.core.0.2.2-incubating.retro.jar
${WPS_HOME}/photobook/lib/abdera.extensions.0.2.2-incubating.retro.jar
${WPS_HOME}/photobook/lib/abdera.parser.0.2.2-incubating.retro.jar
${WPS_HOME}/photobook/lib/abdera.protocol.0.2.2-incubating.retro.jar
${WPS_HOME}/photobook/lib/axiom-api-1.2.1.jar
${WPS_HOME}/photobook/lib/axiom-impl-1.2.1.jar
${WPS_HOME}/photobook/lib/commons-codec-1.3.jar
${WPS_HOME}/photobook/lib/commons-httpclient-3.1-rc1.jar
${WPS_HOME}/photobook/lib/commons-logging-1.0.4.jar
${WPS_HOME}/photobook/lib/geronimo-activation_1.0.2_spec-1.1.jar
${WPS_HOME}/photobook/lib/ilwwcm-api.jar
${WPS_HOME}/photobook/lib/ilwwcm-authoringportlet.jar
${WPS_HOME}/photobook/lib/ilwwcm-teamspace-portlet.jar
${WPS_HOME}/photobook/lib/retroweaver-rt-1.2.3.jar
${WPS_HOME}/photobook/lib/stax-api-1.0.jar
${WPS_HOME}/photobook/lib/wp.wcl.common.jar
${WPS_HOME}/photobook/lib/xlxpScanner.jar
${WPS_HOME}/photobook/lib/xlxpScannerUtils.jar
${WPS_HOME}/photobook/lib/xlxpWASParsers.jar
|
「PhotoBook」を iwwcm-teamspace-portlet.war ファイルのライブラリーに追加します。
ファイル・システムへのオーサリング・テンプレート・イメージの追加
現在、Lotus Quickr システムは、各コンポーネントのアイコンをファイル・システムの特定の場所で検索しています。photo_book_list.gif イメージを PhotoBook.zip の Files ディレクトリーから、<Portal Server>/installedApps/WCM_Teamspace_Portlet_*.ear/*.war/images/teamspace に追加します。<WPS_HOME>/installedApps\WCM_Teamspace_Portlet_*.ear\*.war\teamspace\jspext\html を作成し、refresh.jsp をこのフォルダーにコピーします。
WCM_Teamspace_Portlet.Ear ファイルを更新する Fix Pack インストールを適用した場合は、この手順を繰り返す必要があります。
一部のページでは、Dojo ウィジェットを使用してグラフィカルな効果 (マウス・オーバーやスライド・ショーなど) を追加しています。一般に、Lotus Quickr コンポーネントには Dojo ツールキットは必要ありませんが、この特定のコンポーネントでは Dojo をプレゼンテーションに使用しています。プレゼンテーション・テンプレートは、次の場所で dojo.js ファイルを検索します。
<wp_profile>/installedApps/<nodename>/wps.ear/wps.war/dojo-0.4.3-ajax/dojo.js
Dojo サイトから Dojo 0.4.3 をダウンロードして dojo.js ファイルを抽出し、このファイルが <wps.war>/dojo-0.4.3-ajax/dojo.js に存在するようにしてください。
Dojo が別の場所にインストールされている場合は、Lotus Quickr で「コンテンツの管理」ページを使用して photo_book_dojo_include コンポーネントを変更し、dojo.js ファイルのロードに使用するパスを変更できます。
wps.war ファイルを更新する Fix Pack インストールを適用した場合は、この手順を繰り返す必要があります。
Photo Book ポートレット・インスタンスの追加またはインストール
各コンポーネントは、コンポーネント自身のコンテンツをレンダリングするポートレットに依存しています。Lotus Quickr では、各コンポーネント・タイプのポートレットが用意されています。新規の Photo Book コンポーネントを表す新しいポートレットを作成する必要があります。このポートレットを作成する最も簡単な方法は、既存のポートレットをコピーすることです。お客様はLotus Web Content Management を使用しているため、ポートレット内でレンダリングすべき Web コンテンツがどれなのかを Lotus Quickr に指示するという設定だけが異なります。ポートレットと同じ Java 実装をカスタム・コンポーネントに再使用することで、Java コードを書かずに新規コンポーネントを容易に定義できます。
また、Lotus Web Content Management を使用せずに、完全にカスタマイズされたコンポーネントを最初から Java で作成することもできます。Lotus Web Content Management を使用していないコンポーネントの例として、Lotus Quickr に含まれる文書ポートレットが挙げられます。
Photo Book ポートレットを作成するには、「サイトの管理」->「拡張管理」->「ポートレット管理」->「ポートレット」に移動します。
「contacts」を検索します。Contacts ポートレットの横にある「ポートレットのコピー」ボタンをクリックします。アプリケーション名に「Photo Book Application」と入力し、ポートレット名に「Photo Book」と入力します。「OK」をクリックしてポートレットをコピーします。
「photo」を検索し、作成したばかりのポートレットを見つけます。Photo Book ポートレットの横にある「ポートレットの構成」ボタンをクリックします。
表 1 に示すパラメーターを設定します。
表 1. ポートレット構成用のパラメーター
| Name of field | Parameter |
|---|---|
| titleKey | Photo Book |
| commentsShow | enabled |
| templateSite | photo library resources/PhotoBook |
| descriptionKey | Share photos with your friends and colleagues |
| componentType | photo_book_list |
| newButtonTextKey | New Photo |
| WCM_CONTENT_CONTEXT | /PhotoBook/PhotoBook/items/main |
templateSite パラメーターは Photo LibraryResources ライブラリーを指し示します。このライブラリーは、先ほど wcm-import-data コマンドを使用してインポートしたライブラリーです。Photo Book コンポーネントの新規インスタンスを作成するたびに、Lotus Quickr サーバーはこのサイト・エリアを、コンポーネント・インスタンスを表すライブラリーに自動的にコピーします。インポートしたライブラリーを使用している場合、ここでライブラリー名を小文字にする必要があります。
このコンポーネントをカスタマイズする場合、または他のカスタム・コンポーネントを作成する場合、コンポーネントの実際のコンテンツを含むサイト・エリアは「items」という名前でなければなりません。Wiki およびブログのリンク・ウィンドウは、このサイト・エリア名を検索します。items サイト・エリアがない場合は、Wiki、ブログ、および他の場所にあるリンク・ウィンドウが正しく機能しない可能性があります。また、コンポーネント内では、items と呼ばれるシングル・サイト・エリアが 1 つだけ存在する必要があります。Lotus Web Content Management システムでは、サイト・エリアの名前を items にしなければなりませんが、そのサイト・エリアの表示名は自由に決められます。
メモ: componentType は、「list」で終わるようにしてください。
AUTHORINGTEMPLATE_OVERRIDE パラメーターは、Lotus Web Content Management プレゼンテーションが参照するオーサリング・ツール・コンポーネントによって使用され、コンテンツの追加に用いるオーサリング・テンプレートが決まります。コンポーネントのポートレットが最初に表示されるとき、Lotus Quickr は WCM_CONTENT_CONTEXT によって参照されるコンテンツを表示します。このコンテンツはコンポーネントのホーム・ページです。ユーザーはコンポーネント内で他のコンテンツにナビゲートできます。フォト・ブックでは、/PhotoBook/PhotoBook/items コンテキストによってフォト・ブックのコンテンツ・メニュー・ページが表示されます。このサンプルでは、オーサリング・テンプレートがオーサリング・ツールでハードコーディングされているため、そのテンプレートは必要ありません。
「ポートレットの設定」->「カスタム固有名」->「ポートレット」に移動します。「photo」を検索します。
Photo Book ポートレットの固有名を「wps.p.web.photobook」に変更します。ポートレットの固有名は、後でポートレットを参照するときに使用できるハンドルです。
「サイトの管理」->「拡張管理」->「ポータル・コンテンツ」->「Web コンテンツ・ライブラリー」に移動します。Photo Library Resources の「アクセス権の設定」アイコンをクリックし、「ユーザーのロールを編集」をクリックして「追加」をクリックします。「すべての認証ポータル・ユーザー」にチェック・マークを付け、「OK」をクリックします。そして、「リソース」をクリックし、「完了」をクリックします。
「サイトの管理」->「拡張管理」->「ポートレットの管理」->「ポートレット」に移動し、「Photo Book」を検索します。Photo Book の「ポートレットへのアクセス権の割り当て」アイコンをクリックし、「ユーザーのロールを編集」をクリックして「追加」をクリックします。「すべての認証ポータル・ユーザー」にチェック・マークを付け、「OK」をクリックします。そして、「Photo Book」をクリックし、「完了」をクリックします。この手順によって、管理者でないユーザーがポートレットを使えるようになります。
これで、Photo Book コンポーネントを定義できました。次に、ユーザーがコンポーネントをプレースに追加できるように、リンクをユーザー・インターフェース (UI) に追加する必要があります。次の方法で、テーマ・ファイル <wp_profile>/installedApps/<nodename>/wps.ear/wps.war/themes/html/QPG/pageHeaderContent.jsp を変更します。
<div id="customizePage2" style="display: none;"> の下で、リスト 4 に示すコードを順序なしリストに追加します。
リスト 4. テーマのカスタマイズ・シェルフにフォト・ブックを追加するためのコード
<li><a href="#" onClick="javascript:showTeamSpaceAddComponentForm
("<%=MarkupUtil.htmlAttributeEscape(MarkupUtil.jsEscape
("Photo Book"))%>", "<%=MarkupUtil.htmlAttributeEscape
(MarkupUtil.jsEscape("New Photo Book"))%>", "<%= applicationID %>
", "wps.p.web.photobook", true, nodesOnLevel, true, 'photobook')"
class="picture">Photo Book</a></li>
|
wps.war ファイルを変更する Fix Pack インストールを適用した場合は、この手順を繰り返す必要があります。
フォト・ブックのタイトルと説明は翻訳できます。Lotus Web Content Management プレース・ポートレットは、componentType のポートレット構成を調べます。ポートレットは、そのコンポーネントで作成されたテンプレートに使用するタイトルと説明を見つけるために、キーを自動的にプロパティー・ファイルに生成します。photo_book_list.properties というプロパティー・ファイルを作成し、それをサーバーのクラスパスのいずれかの場所に配置します。たとえば、このプロパティー・ファイルを次の場所に置くことができます。
<Portal Server>/shared/app/contentLib
プロパティー・ファイルには、次のプロパティーを含めることができます。
- photo_book_list_TITLE=Photo Book.
- photo_book_list_DESCRIPTION=A Photo Book can be used to share photos or images with your team.
- photo_book_list_NEW_BUTTON_TEXT=New Photo.
ポートレット構成で異なる componentType を使用して別のカスタム・ポートレットを作成する場合は、キーとプロパティー・ファイル名を変更します。
これで、Photo Book コンポーネントから新規テンプレートを作成するときに、新規コンポーネントのデフォルト名が翻訳されます。
Photo Book コンポーネントを空の Lotus Quickr プレースに追加し、そのプレースからテンプレートを作成でき、Photo Book プレースの作成が容易になりました。
さらなる演習として、フォト・ブックのオーサリング・テンプレートの編集、リンク・コンポーネントからイメージ・コンポーネントへの変更、別の場所からリンクされたイメージだけでなく、フォト・ブックへのイメージの直接アップロードといったことが可能です。
さらなる演習として、フォト・ブックのオーサリング・テンプレートの編集、リンク・コンポーネントからイメージ・コンポーネントへの変更、別の場所からリンクされたイメージだけでなく、フォト・ブックへのイメージの直接アップロードといったことが可能です。
「ライブラリーの設定」ボタンをクリックし、サーバー URL、libraryID、ユーザー名、およびパスワードを入力します。「OK」をクリックすると、Lotus Quickr 文書ライブラリーに保管されている写真に移動できます。
この記事では、Lotus Quickr for WebSphere Portal で写真を管理するサンプル・アプリケーションを紹介しました。このアプリケーションは文書ライブラリーと Lotus Web Content Management コンポーネントの両方の上に構築され、公開 API に基づいて構築されたシンジケーション・プログラムを 2 つのコンポーネント間の通信チャネルとして使用します。このサンプルを利用すれば、文書ライブラリーのコンテンツ用にカスタマイズされた表示機能を持つ Lotus Quickr 向けのアプリケーションを構築できます。
| ファイル名 | サイズ | ダウンロード形式 |
|---|---|---|
| PhotoBook.zip | 2.3MB | HTTP |
- ディスカッション・フォーラムに参加してください。
- Read the developerWorks article, "Introducing IBM Lotus Quickr REST services."
- Read the developerWorks article, "Customizing components in IBM Lotus Quickr services for IBM WebSphere Portal 8.0."
- Read the developerWorks article, "Getting to know the Atom Publishing Protocol, Part 3: Introducing the Apache Abdera project."
- Read the developerWorks article, "Introducing the IBM Lotus Web Content Management API."
- Read the Lotus Quickr Content Services wiki.
- Refer to the Lotus Quickr product documentation.
- Learn more about Apache Abdera.
Jon Brunn is a Senior Software Engineer working on social and team collaboration software. Jon has more than 10 years of experience with content management systems including IBM Content Manager and FileNet P8. Jon has contributed to Lotus Quickr, Lotus Connections, WebSphere Portal, Web Content Management, FileNet, and IBM Content Manager. You can reach him at jbrunn@us.ibm.com.
Pan Zhi Hua is a staff Software Engineer at IBM working with the IBM Lotus Quickr API team in Beijing, China. You can reach Zhi Hua at panzh@cn.ibm.com.
Da Teng (Longda) is a staff Software Engineer from the IBM China Software Development Lab in Beijing, China. Longda currently works on Lotus Quickr fservices or WebSphere Portal FVT. You can reach Longda at tengda@cn.ibm.com.
Xiao Pei Lui is a Software Engineer from the IBM China Software Development Lab in Beijing, China. Xiao Pei currently works on IBM Lotus Quickr services testing. You can reach Xiao Pei at liuxpei@cn.ibm.com.