...

Redbooks:IBM Connections 3.0.1 の カスタマイズ Allen Dean

by user

on
Category: Documents
90

views

Report

Comments

Transcript

Redbooks:IBM Connections 3.0.1 の カスタマイズ Allen Dean
Redbooks:IBM Connections 3.0.1 の
カスタマイズ
Allen Dean
Ike
Eke Amit
Kumar Brian
Ochs Robert
Thatcher
Nikolay Vlasov
Whei-Jen
Chen
1 of 247
序文
最新情報の参照に関する重要なメモ
この PDF 文書は、IBM Connections 3.0.1 のカスタマイズの Redbooks Wiki 全体を
記述したものです。
本書の情報のほかに、次の URL にある Lotus Redbooks Wiki 全体も
参照してください。
http://www10.lotus.com/ldd/lcwiki.nsf/xpViewCategories.xsp?lookupName=Redbooks:%20Customizing%20
IBM%20Connections%203.0.1
筆者の紹介
Allen Dean は、IBM に 6 年間勤務している情報設計者です。15 年を超え
るインターネット・ソフトウェアの開発および運用の経験を持ちます。こ
れにはアプリケーション設計、テクニカル・ライティング、クラウド・
ベースのアプリケーション配布、システム工学、グローバル・プロジェク
ト管理が含まれます。Allen は IBM Connections で運営されている
developerWorks (http://ibm.co/oIvD0M) の資産管理コミュニティーのまと
め役をしています。Allen は http://ibm.co/p8bxIG で紹介されています。
Ike Eke は、New York の Lotus Technical Sales における Web エクスペリ
エンスおよびソーシャル・ソフトウェアのクライアント技術専門家です。
当初は IBM のソフトウェア開発者であり、2006 年に NY チームに参加しま
した。2007 年以降、IBM Connections に関与しており、プラットフォーム
の異なる複数の顧客のために Lotus Connections を実装し、サポートしてき
ました。Ike は現在、WebSphere Portal、IBM Connections、および IBM
Forms に重点的に取り組んでいます。
Amit Kumar は India Software Labs IBM の技術コンサルタントで、専門は
IBM Collaboration ソリューションです。世界中の IBM Connections、IBM
Quickr、IBM Mashup Center、IBM Sametime、および Tivoli Directory
Integrator の複数の顧客をサポートしてきました。National Institute of
Technology Warangal でコンピューター科学の技術学士課程を修了してい
ます。
Brian Ochs は、IBM Premier Business Partner である Software Information
Systems のソリューション設計者です。IBM Connections と IBM
WebSphere Portal の実装およびカスタマイズのプロジェクトに従事してい
ます。Brian は Eastern Kentucky University のコンピューター科学の学位を
保持しています。LinkedIn プロファイルが
http://www.linkedin.com/in/brianochs にあります。
2 of 247
Robert Thatcher は初期プログラム・マネージャーです。初期設計および
ベータ・プログラムの段階で IBM Development チームを顧客に近づける役
割をしています。Rob は 1997 年に Lotus (IBM) に入社し、現在の職務に就
くまで、Lotus カスタマー向けのシステムを設計および実装する IBM
Software Services for Lotus (ISSL) で幸福な 10 年間を過ごしました。Rob
は University of Wales で数学の理学士号を取得しています。
Nikolay Vlasov は、Portals and Collaboration Software のレベル 2 の資格
を持つ IT 専門家です。IBM の WebSphere Portal、IBM Connections、およ
び J2EE テクノロジーを基礎とするその他の製品に関与し、ビジネス・イ
ニシアチブを持つロシアおよび CIS 各国の顧客をサポートしています。
Nikolay はロシアの Moscow State University のコンピューター科学の修士
号を保持しています。LinkedIn プロファイルが
http://ru.linkedin.com/in/nikolayvlasov にあります。
Whei-Jen Chen は International Technical Support Organization、San Jose
Center のプロジェクト・リーダーです。アプリケーション開発、データ
ベースの設計とモデリング、および DB2® システム管理での豊富な経験を
持っています。Whei-Jen は IBM 認定のデータ管理のソリューション・エキ
スパートであり、また IBM 認定の IT 専門家でもあります。
本記事にご協力いただいた方々に対する謝辞
以下のスポンサーおよび主要な出資者の方々に、Lotus Forms Development、Product Management、
および Lotus IDC チームより深く御礼申し上げます。
1.
2.
3.
4.
5.
6.
7
8.
9.
Amanda Bauman - Everyone Writes および IDC Wikis プログラム・マネージャー
Dana Liburdi - Lotus Connections、Quickr、および Symphony 情報設計者
Edward M. (Mac) Guidera - Lotus Connections プロダクト・マネージャー
Chris Paul - User Experience および Information Development ディレクター
Baan Slavens - Social Software プロダクト・マネージャー
Luis Benitez - Social Software プロダクト・マネージャー
Michelle Miller – ソフトウェア・エンジニア
Heidi Ambler - Social Computing Software プログラム・ディレクター
Suzanne Livingston - Lotus Connections シニア・プロダクト・マネージャー
さらに、本 Wiki を技術的に支援してくれた以下のメンバーに感謝します。
1.
2.
3.
4.
5.
Clayton Coleman - Lotus Connections ユーザー・インターフェース・リーダー/ファイル・
チーム・リーダー
Vincent Burckhardt - Lotus Connections ソフトウェア・エンジニア
Michael Wiles - WPLC.J2EE/Portal/WebSphere ベース・テクノロジー・ソフトウェア開発者
George Brichacek - Worldwide Collaboration Tiger Team - Lotus Software シニア・システム・
エンジニア
Andrei Malacinski - Lotus Connections Plugins & Lotus Quickr Connectors マネージャー
(IBM Collaboration Solutions 部門)
3 of 247
第1章
IBM Connections のカスタマイズ入門
IBM Connections 3.0.1 は、複数のアプリケーションから構成されるソーシャル・ネットワーキン
グ・ソフトウェアです。IBM Connections には、ユーザー・インターフェースを変更し、ホーム・
ページやプロフィールのような機能をアプリケーションに追加し、プロフィールを外部データと統
合し、IBM Connections API を活用するなど、さまざまな状況に応じたカスタマイズを行うことが
できます。この IBM Redbook Wiki では、IBM Connections を拡張および変更する上記その他の方
法についての詳細が説明されています。
注意: 本書は、IBM Connections のデプロイメントのカスタマイズを支援することを目的としてい
ます。IBM サポートでは、カスタマイズ手順についてのご質問をお受けしていますが、お客様のカ
スタマイズに固有な事項に関してのご質問はお受けしていません。
1.1. カスタマイズの概要
IBM Connections 3.0.1 では、インストールされた Web アプリケーションのコンテンツを変更する
ことなく、さまざまな側面において変更することが可能です。ユーザー・インターフェースのカス
タマイズは、インストール済みファイルをオーバーライドし、アプリケーション・ソース・ディレ
クトリーとは別に用意してある「customization」というディレクトリーにファイルを保存すること
によって行います。カスタマイズ・ディレクトリーにあるファイルにより、アプリケーション・
ソース・ディレクトリー内の対応するインストール済みファイルがオーバーライドされます。この
カスタマイズ・プロセスでは、IBM Connections アプリケーションがアプリケーション Web アー
カイブ (WAR) ディレクトリーの外部にあるファイルにアクセスできるようにするために、
WebSphere 拡張文書ルート機能を使用します。カスタマイズ済みファイルをインストール済み
ファイルと分けておけば、何をカスタマイズしたかを把握するのに役立ち、デフォルト・データに
戻すことが可能になります。また、デフォルト・ファイルに対する更新によってカスタマイズが上
書きされることがなくなります。
1.1.1 カスタマイズの仕組み
カスタマイズでは多くの場合、デフォルト情報が入ったファイルを WAR 内のソース・ディレクト
リーからカスタマイズ・ディレクトリー内の特定のサブディレクトリーにコピーします。コピーし
た フ ァ イ ル の 内 容 を 変 更 し て 、 フ ァ イ ル を 保 存 し ま す 。 ペ ー ジ の レ ン ダ リ ン グ 時 、 IBM
Connections ではカスタマイズ・ディレクトリー内のファイルからの情報を使用します。IBM
Connections で 使 用 さ れ る カ ス タ マ イ ズ ・ デ ィ レ ク ト リ ー の 場 所 は 、 WebSphere 環 境 変 数
CONNECTIONS_CUSTOMIZATION_PATH の値によって定義されます。ファイル・キャッシング
のため、変更を確認するには、アプリケーション・サーバー内の IBM Connections アプリケーショ
ンを再始動し、構成ファイル内のバージョン・スタンプを更新することによって、キャッシュをク
リアする必要があります。ただし、カスタマイズ・デバッグ機能を有効にしてブラウザー・キャッ
シュをクリアすれば、変更のテスト時にこのプロセスを迂回することができます。カスタマイズ・
ディレクトリーの識別およびカスタマイズ・デバッグについて詳しくは、『1.2 IBM Connections
カスタマイズ変数』を参照してください。
カスタマイズを元に戻すには、この手順の逆を行うだけです。カスタマイズを除去したい場合は、
カスタマイズされたファイルを削除し、影響を受けるアプリケーションを再始動します。
common という名前のサブディレクトリーにあるファイルは、すべての IBM Connections アプリ
ケーションに影響を与えます。アプリケーションに固有のカスタマイズ・ディレクトリーにある
ファイルは、それらのアプリケーションにのみ影響し、共通カスタマイズ・ディレクトリーをオー
バーライドします。つまり、IBM Connections は以下の順序でファイルを処理します。



アプリケーション固有のカスタマイズ・ディレクトリー
共通カスタマイズ・ディレクトリー
WAR ファイル内部のオリジナル・ソース・ファイル
4 of 247
例えば、「Activities」アプリケーションを除くすべてのアプリケーションでフッターを変更するに
は、共通カスタマイズ・ディレクトリーにあるフッターを変更し、「Activities」カスタマイズ・
ディレクトリーでさらに変更を行います。「Activities」アプリケーション内のフッターのみを変更
するには、「Activities」カスタマイズ・ディレクトリーでのみ変更を行います。
次のグラフィックは、すべてのアプリケーションにある、または「Profile」アプリケーションのみ
にあるヘッダーおよびフッターの処理順序を示しています。「Profile」カスタマイズ・ディレクト
リー内のファイルが、共通カスタマイズ・ディレクトリー内の変更をオーバーライドすることが分
かります。どちらのカスタマイズ・ディレクトリーにあるファイルも、インストール済みファイル
をオーバーライドします。
1.1.2 カスタマイズ時の一般的な処理
変 更 の テ ス トを 簡 素 化 し 、終 了 後 に そ れら を ユ ー ザ ーが 使 用 で き るよ う に す る ため に IBM
Connections をカスタマイズする場合は、以下の手順に従ってください。
1.
2.
3.
4.
5.
IBM Connections サーバーを再始動することなく変更を表示できるように、カスタマイズ・デ
バッグ機能を有効にします。この環境変数を有効にすると、要求を行うたびにアプリケーショ
ンがファイルを再ロードするように強制するため、変更を即座に確認することができます。こ
の処理は多くのリソースを使用するため、実稼働環境でデバッグを有効にした場合にユーザー
に与える影響を考慮してください。カスタマイズ・デバッグについて詳しくは、『1.2 IBM
Connections カスタマイズ変数』を参照してください。
ソース・アプリケーション・ファイルの中で、変更したいファイルを見つけます。詳しくは、
『1.3 ソース・アプリケーション・ファイル』を参照してください。
ファイルを関連するカスタマイズ・ディレクトリーにコピーし、変更を行います。
ブラウザー・キャッシュを消去し、ブラウザーを最新表示して、変更をテストします。
他の人々に対して変更を有効にする準備ができたら、変更を公開します。
 環境変数 CONNECTIONS_CUSTOMIZATION_DEBUG を false に設定することで、カ
スタマイズ・デバッグ機能を無効にします。
 ファイルをチェックアウトし、バージョン・スタンプを更新し、ファイルをチェック
インすることで、該当する構成プロパティーを更新します。
詳しくは、『1.4 wsadmin ツールを使用したカスタマイズの公開』を参照してください。
1.1.3 役割およびスキル
IBM Connections のカスタマイズは一般に、ファイルをカスタマイズ・ディレクトリーに保存し、
それらを変更するという単純なプロセスです。ただし、ある程度のスキルがあれば、変更対象ファ
イルを知ること、および変更内容を理解することが簡単になります。このスキルは、以下の 3 つの
5 of 247
役割に分類できます。



管理者
o 組織の目標に合わせて IBM Connections を構成します。
o インストール済み環境を保守し、カスタマイズを公開します。
o フィックスパックのデプロイ時に、開発者と協力してカスタマイズを更新します。
設計者
o 組織内でどのように IBM Connections をブランディングするかを決定します。
o イメージおよびブランディング・ガイダンスを作成します。
Web 開発者
o JavaServer Pages、カスケーディング・スタイル・シート (CSS)、および JavaScript を
使用して、HTML によるブランディングおよびカスタマイズを実装します。Web 開発者
は、JSP ファイルの基本的変更に精通している必要があります。
o フィックスパックまたは iFixes の適用時にカスタマイズ済みファイルを更新します。
o プロフィール、コミュニティー、またはその他のアプリケーションのさらなるカスタマ
イズまたは統合を実装します。
その他のツール
どのファイルがどの要素を制御するかが分かりにくい場合があります。例えば、ユーザー・イン
ターフェースの要素を制御する CSS ルールを判別するのが難しいことがあります。さらに、XML
構成ファイルに行う変更はスキーマに準拠していることが必要であり、また JSP および HTML
ファイルは正しく構造化されていることが必要です。ユーザー・インターフェース (UI) ストリング
をカスタマイズする際には、ユーザー・インターフェース・ストリングが格納されている JAR
ファイルを探す必要があります。また、翻訳されたユーザー・インターフェース・ストリングに対
する変更をテストする際には、Web ブラウザーのロケールを変更することが必要です。以下のよう
な作業を行うには、以下のユーティリティーが便利であることがお分かりでしょう。

ブラウザー・キャッシュを無効にする
IBM Connections に行った変更をテストするために、しばしばブラウザー・キャッシュをクリ
アすることが必要になります。そのためには、ブラウザー・キャッシュを一時的に無効にする
ツールを使用します。ブラウザー・キャッシュを無効にするためのツールの例としては、
Firefox および Chrome ブラウザーの Web Developer アドオンがあります。

CSS ルールおよび UI 要素を変更する
変更したい CSS ルールを見つけるには、Web インスペクター・ツールを使用します。Web イ
ンスペクター・ツールの例としては、Firefox および Chrome の Firebug や、Chrome または
Safari の Webkit Inspector があります。

XML、JSP、および HTML ファイルを変更する
正しいタギングの識別に役立つテキスト・エディターを使用します。テキスト・エディターの
例としては、Linux の gedit、Microsoft Windows の Notepad++、複数のオペレーティング・シ
ステムで実行可能な KompoZer などがあります。

ストリングのプロパティーを見つける
o Microsoft Windows の場合: .jar ファイルの検索をサポートする PersistentHandler レジス
トリー・キーを追加します。あるいは、Cygwin または Eclipse を使用します。
o AIX または Linux の場合: 標準装備の grep コマンドを使用します。

翻訳されたストリングをテストする
特定のロケールのオペレーティング・システムをインストールすることなく、またはオペレー
ティング・システムの設定を変更することなく、ブラウザーのロケールを変更するロケール・
スイッチャー・ツールを使用します。ロケール・スイッチャー・ツールの例としては、Firefox
6 of 247
および Chrome ブラウザーの Quick Locale Switcher アドオンがあります。
1.1.4. カスタマイズ時のベスト・プラクティス



バックアップを頻繁に取る。例えば、変更を行う前に、開発環境内のカスタマイズ・ディレク
トリーをバックアップします。ソース制御を使用している場合は、カスタマイズ・ディレクト
リーをそれに追加します。ソース制御を使用していない場合は、ソース制御の導入を検討する
か、独自のバージョン管理プロセスを立案します。
変更する必要のあるファイルのみをカスタマイズ・ディレクトリーにコピーする。
カスタマイズ・ディレクトリー内のファイル数が少ないほど、管理する必要のあるファイルが
少なくなり、変更内容の追跡が簡単になります。
変更を文書化し、コメントをファイルに付記することで、行った変更の経過を追う。コメント
は、変更を行った場所と理由を覚えておくために役立ちます。複数の変更をマージする場合は、
プロセスを簡略化するために、コメントを直接 JSP および CSS に付記してください。
1.2. IBM Connections カスタマイズ変数
2 つの WebSphere 変数が IBM Connections のカスタマイズに使用できます。これらの変数は、
WebSphere Application Server Integrated Solutions Console で見ることができます。
1.2.1 カスタマイズ・デバッグの有効化
カスタマイズ・デバッグ機能を有効にしないと、新バージョンのカスタマイズ済みファイルは、
IBM Connections アプリケーションの再始動時にのみロードされます。デバッグ機能を有効にする
と、通常、ブラウザー・キャッシュをクリアすることで変更をテストすることができます。デバッ
グ機能はリソース使用量が多いため、IBM Connections のカスタマイズ時にのみ有効にしてくださ
い。また、実稼働サーバーではデバッグ機能を有効にしないでください。デバッグ変数は
CONNECTIONS_CUSTOMIZATION_DEBUG です。
手順
IBM Connections サーバーを再始動することなく変更を表示できるように、カスタマイズ・デバッ
グ機能をオンにします。
1.
2.
3.
WebSphere Application Server Integrated Solutions Console を開きます。
「環境」>「WebSphere」変数をクリックし、IBM Connections がインストールされている
ノードにスコープを設定します。
変数 CONNECTIONS_CUSTOMIZATION_DEBUG を true に設定します。変数が存在しない
場合は、ノード・レベルで作成します。
1.2.2 カスタマイズ・ディレクトリー・パス
WebSphere 環境変数 CONNECTIONS_CUSTOMIZATION_PATH で宣言されるディレクトリー・
パスは、IBM Connections で使用されるカスタマイズ・ディレクトリーのベース・ロケーションを
指定します。この変数は IBM Connections のインストール中に設定されます。このパスにあるファ
イルは、インストール済みファイルをオーバーライドするために IBM Connections によって処理さ
れます。Microsoft Windows の場合、インストール中にデフォルト設定を受け入れると、カスタマ
イズ・パスは C:¥Program Files¥IBM¥LotusConnections¥data¥shared¥customization になります。
7 of 247
1.3. ソース・アプリケーション・ファイル
変更するコードを見つけるには、通常は Web アーカイブ (WAR) ファイル内部のインストール済み
ソース・アプリケーション・ファイルを探すことから始めます。アプリケーション WAR ファイ
ル・サブディレクトリーにはカスタマイズ・ファイルが含まれています。
各アプリケーションのソース・アプリケーション・ファイル・ディレクトリーのデフォルトの場所
は以下のとおりです。
<WAS_home>¥profiles¥<profile_name>¥installedApps¥<cell_name>¥<application_name.ear>¥
<application_name.war>
各部の説明:





<WAS_home> は IBM WebSphere Application Server をインストールしたディレクトリーです。
<profile_name> は IBM Connections アプリケーションの 1 つをインストールしたプロファイル
です。
<cell_name> はアプリケーションをインストールしたセルです。
<application_name.ear> はアプリケーションの EAR ファイルです。
<application_name.war> は以下のアプリケーション WAR ファイル名の 1 つです。
アプリケーション WAR ファイル名
次のサンプル・ディレクトリー・パスには Activities アプリケーション WAR ファイルが含まれて
います。
C:¥Program Files¥IBM¥WebSphere¥AppServer¥profiles¥AppSrv01¥installedApps¥lc30Cell01¥
activities.ear¥oawebui.war
8 of 247
1.4. wsadmin ツールを使用したカスタマイズの公開
IBM Connections 内の Web ページは通常、ユーザーのパフォーマンスを向上させるためにブラウ
ザーによってキャッシュされます。カスタマイズ後、キャッシュをオーバーライドし、Web ブラウ
ザーに強制的に変更済みファイルの新規コピーをダウンロードさせます。キャッシュをオーバーラ
イドすることで、行ったカスタマイズ変更が他の人々に表示されます。WebSphere Application
Server の wsadmin ツールを使用して、該当する構成ファイルのバージョン・スタンプを更新しま
す。wsadmin ツールおよび必要なスクリプトは、IBM Connections に組み込まれています。
始める前に
カスタマイズ・デバッグ機能を無効にします。
1.
2.
3.
4.
WebSphere Application Server Integrated Solutions Console を開きます。
「環境」>「WebSphere」変数をクリックし、IBM Connections がインストールされている
ノードにスコープを設定します。
変数 CONNECTIONS_CUSTOMIZATION_DEBUG を false に設定します。
すべての IBM Connections アプリケーション・サーバーを停止して再始動します。
手順
1.
コマンド・プロンプトを開き、デプロイメント・マネージャーをインストールしたシステム上
で次のディレクトリーに変更します。<WAS_home>¥profiles¥<profile_name>¥bin
説明:
 <WAS_home> は WebSphere Application Server のインストール・ディレクトリーです。
 <profile_name> はデプロイメント・マネージャーのプロファイル・ディレクトリーです。
Microsoft Windows の 場 合 、 完 全 な デ ィ レ ク ト リ ー ・ パ ス は 次 の よ う に な り ま す 。
C:¥Program Files¥IBM¥WebSphere¥AppServer¥profiles¥Dmgr01¥bin
2.
適切なコマンドを使用して wsadmin ツールを開始します。
 Microsoft Windows の 場 合 : wsadmin -lang jython -user <admin_user_id> - password
<admin_password> -port <SOAP_CONNECTOR_ADDRESS Port>
 AIX または Linux の場合: ./wsadmin.sh -lang jython -user <admin_user_id> -password
 <admin_password> -port <SOAP_CONNECTOR_ADDRESS Port>
各部の説明:



<admin_user_id> は IBM WebSphere Application Server での管理者のユーザー名です。
<admin_password> はそのユーザー名のパスワードです。
<SOAP_CONNECTOR_ADDRESS Port> は WebSphere Application Server の SOAP
ポートです。デフォルト・ポート 8879 を使用していた場合は、このパラメーターを指
定する必要はありません。例:
wsadmin -lang jython -user wsadmin -password wsadmin
3.
フィーチャー・コマンドを wsadmin ツールで使用可能にするために、作業しているアプリ
ケーションに適切なコマンドを入力します。例えば、一般的な IBM Connections プロパ
ティーの場合は、次のコマンドを使用します。
execfile("connectionsConfig.py")
ヒント: 接続するサービスを指定するようにプロンプトが出された場合は、1 を入力してリス
トの最初のノードを選択します。大半のコマンドはどのノードでも実行可能です。コマンドが
ローカル・ファイル・パスを使用してファイルの情報を読み書きする場合は、ファイルが格納
されているノードを選択する必要があります。
他のアプリケーションでの構成ファイルの編集について詳しくは、IBM Connections の資料で
構成ファイルの編集について検索してください。
9 of 247
4.
checkOutConfig コマンドを使用して IBM Connections 構成ファイルをチェックアウトします。
例 え ば 、 一 般 的 な IBM Connections プ ロ パ テ ィ ー の 場 合 は 次 の よ う に 入 力 し ま す 。
LCConfigService.checkOutConfig("<working_directory>","<cell_name>")


<working_directory> は、チェックアウト時に構成ファイルの一時コピーを格納するために
IBM Connections が 使 用 す る デ ィ レ ク ト リ ー で す 。 Microsoft Windows の 場 合 、
<working_directory> 内のディレクトリーはスラッシュで区切ってください。
<cell_name> は 、 IBM Connections ア プ リ ケ ー シ ョ ン を ホ ス ト す る WebSphere
Application Server セルの名前です (大文字と小文字の区別があります)。
例えば、Microsoft Windows では次のようになります。
LCConfigService.checkOutConfig("c:/temp","foo01Cell01")
セル名を入れる場合は、AdminControl.getCell() を使用します。
LCConfigService.checkOutConfig("c:/temp",AdminControl.getCell())
AIX または Linux の場合: ディレクトリーの書き込み権限が必要です。ない場合、コマン
ドは正常に実行されません。
LCConfigService.checkOutConfig("/opt/temp","foo01Cell01")
注意: 変更をチェックインする前に wsadmin ツールを終了してはなりません。変更を有効
にするには、ファイルをチェックアウトしたときと同じ wsadmin セッション中にファイル
をチェックインする必要があります。
5.
次 の コ マ ン ド を 使 用 し て 、 versionStamp 構 成 プ ロ パ テ ィ ー の 値 を 更 新 し ま す 。
LCConfigService.checkOutConfig("<working_directory>","<cell_name>")
<gmt_timestamp> は GMT 時刻です。GMT 時刻の値を指定するか、空白のままにしておくこ
とができます。空のストリングを指定し、クライアントにタイム・スタンプをフォーマット設
定させるのが望ましい方法です。例:
LCConfigService.updateConfig("versionStamp","")
6.
(オプション) 構成ファイルをチェックインする前に構成設定および値をリストするには、
showConfig コマンドを使用します。例:
LCConfigService.showConfig()
7.
checkinConfig コマンドを使用して構成ファイルをチェックインします。例えば、一般的な
IBM Connections プロパティーの場合は、次のコマンドを使用します。
LCConfigService.checkInConfig()
8.
次のコマンドで変更をデプロイします。
synchAllNodes()
9.
wsadmin クライアントを終了するには、exit と入力します。
10. すべての IBM Connections アプリケーション・サーバーを停止して再始動します。
10 of 247
1.5. 一般的なトラブルシューティング
このソリューション情報は、IBM Connections 3.0.1 のカスタマイズに関する問題を診断または解
決するために何を行うかを学習するために役立ちます。
問題: wsadmin ツールでスクリプトが正しく実行されない。
解決策: 以下に示す、デプロイメント・マネージャーをインストールしたシステム上の特定ディ
レクトリーから wsadmin ツールを開始したかを確認します。
<WAS_home>¥profiles¥<profile_name>¥bin
<WAS_home> は WebSphere Application Server のインストール・ディレクトリーです。
<profile_name> はデプロイメント・マネージャーのプロファイル・ディレクトリーです。
解決策: Microsoft Windows Server 2008 のようなユーザー・アカウント制御のあるオペレー
ティング・システムを稼働している場合は、コマンド・プロンプトを右クリックして、「管理
者として実行」を選択します。管理者アカウントではないが管理者グループのメンバーである
ユーザー・アカウントでコマンド・プロンプトを開始すると、ユーザーは標準アクセス権に設
定されます。
問題: カスタマイズ・ディレクトリーでの変更のテスト時に、変更がブラウザーに表示されない。
解決策:
 正しいカスタマイズ・ディレクトリーにファイルを保存したかを確認します。
 Web ブラウザーのキャッシュをクリアしたかを確認します。
 IBM Connections サーバーを再始動することなく変更を表示できるように、カスタマイ
ズ・デバッグ機能を有効にします。詳しくは、『1.2 IBM Connections カスタマイズ変数』
を参照してください。
 変更したファイルに構文エラーがないかを確認します。ページまたはログ・ファイルに出
力されたエラーがないかを確認します。
問題: 行った変更を他のクライアントに表示できない。
解決策: wsadmin ツールを使用してカスタマイズを公開したかを確認します。詳しくは、『1.4
wsadmin ツールを使用したカスタマイズの公開』を参照してください。
問題: IBM Connections でどのカスタマイズを使用しているかが分からない。
解決策: カスタマイズ済みファイルのリストを印刷します。
 “com.ibm.lconn.core.web.customization.*=all” に対して WebSphere トレースを有効にしま
す。
 IBM Connections サーバーを再始動します。
 trace.log を表示します。このファイルには始動時からのカスタマイズ・デバッグ情報が入
れられます。
11 of 247
第2章
ユーザー・インターフェースのカスタマイズ
IBM Connections 3.0.1 では、前バージョンよりも多くのユーザー・インターフェース領域を変更
することができます。例えば、ログイン・ページを変更でき、ナビゲーション・バーにメニューを
追加できます。また、前バージョンの製品よりも、お客様のブランドに合わせて IBM Connections
をカスタマイズするプロセスが簡単になっています。
2.1. ユーザー・インターフェースを企業ブランドおよびポ
リシーに適合させる
お客様のブランドに関連付けられた画像やユーザー・インターフェース (UI) ガイドラインに合わせ
て、IBM Connections を変更することができます。例えば、ナビゲーション・バーのロゴ・イメー
ジを変更できます。また、ナビゲーション・バーやフッターの独自のリソースに、リンクやメ
ニュー項目を追加できます。多くのユーザー・インターフェース要素で、デフォルト・カラーを変
更することもできます。さらに、企業のポリシーに対応するようにアプリケーションやページを変
更できます。この種の変更の例としては、IBM Connections にアクセスする前に企業ポリシーに同
意する手順の追加があります。このような変更は、IBM Connections でインストールしたファイル
をオーバーライドし、変更したファイルをカスタマイズ・ディレクトリーに保存することで行いま
す。変更したファイルをカスタマイズ・ディレクトリーから削除すると、IBM Connections はデ
フォルトに戻ります。
ヒント: ユーザー・インターフェースのカスタマイズは JavaServer Pages およびカスケーディン
グ・スタイル・シート (CSS) を使用して HTML を介して実装されるため、このようなテクノロ
ジーに習熟し、CSS および JSP ファイルに対して基本的な変更を行う方法について知ることには
意義があります。
次のセクションの手順では、下図のようにユーザー・インターフェースを変更します。
2.1.1 ナビゲーション・バーのカスタマイズ
ナビゲーション・バーをお客様のブランドに合わせる作業には、ロゴ・イメージの変更、リンクの
追加または変更、およびカラーの変更などがあります。このような変更は、ファイルをカスタマイ
ズ・ディレクトリーにコピーし、お客様のブランドに合わせてファイルを変更することによって行
12 of 247
います。カスタマイズ・ディレクトリーにあるファイルにより、IBM Connections で使用されるデ
フォルト・ファイルがオーバーライドされます。
ロゴのカスタマイズ
ロゴ・イメージは背景イメージを使用して表示されます。この技法により、製品全体の HTML マー
クアップを変更するのではなく、CSS ファイル内で、ナビゲーション・バーのロゴ・イメージをカ
スタマイズすることができます。ロゴをカスタマイズするには、お客様のロゴ・イメージを該当す
るカスタマイズ・ディレクトリーにコピーします。次に、新しいロゴ・イメージを使用するように
ナビゲーション・バーをポイントし、新しいイメージの寸法に合わせて高さと幅を設定します。例
ではまた、アプリケーション・リンクが新しいロゴに合うように、いくらか余白を入れ、スタイル
を調整しています。他のユーザー・インターフェースのカスタマイズと同様に、すべてのアプリ
ケーション、またはアプリケーションのサブセットについてロゴを変更できます。
始める前に



IBM Connections サーバーを再始動することなく変更を表示できるように、カスタマイズ・デ
バ ッ グ 機 能 を オ ン に し ま す 。 カ ス タ マ イ ズ ・ デ バ ッ グ に つ い て 詳 し く は 、 『 1.2 IBM
Connections カスタマイズ変数』を参照してください。
すべてのアプリケーション、またはアプリケーションのサブセットのどちらでロゴを置き換え
るかを決定します。この手順では、すべてのアプリケーションのロゴを変更することを想定し
ています。特定のアプリケーションのカスタマイズについて詳しくは、『1.1.1 カスタマイズの
仕組み』を参照してください。
使用したいロゴ・イメージを作成するか、または使用したいロゴ・イメージに対するアクセス
権を取得します。
手順
1. 「images」ディレクトリーをカスタマイズ・ディレクトリーに作成します。
<customizationDir>¥common¥nav¥common¥styles¥ に作成します。
2. イメージ・ファイルを新規イメージ・ディレクトリーにコピーします。
3. (オプション) ご使用のブラウザーにイメージが表示されるかを確認します。イメージは http://
<server>:<port> /files/nav/common/styles/images/<imageFileName> で表示します。
4. 新しいロゴに合わせて、デフォルト・テーマのスタイル・シートをオーバーライドします。
a) 「defaultTheme」ディレクトリーを
<customizationDir>¥common¥nav¥common¥styles¥ に作成します。
b) custom.css スタイル・シートを共通カスタマイズ・ディレクトリー
<customizationDir>¥common¥nav¥common¥styles¥defaultTheme¥ で開きます (またはブ
ランクのスタイル・シートを作成します)。
13 of 247
c)
次 の スタイルを custom.css スタイル・シートに追加し、デフォルト・テーマのスタイ
ル・シートにある lotusLogo および lotusLoginLogo クラスをオーバーライドします。お
客様のイメージに合わせて高さと幅の値を変更してください。
/* Replace the standard logo with the new logo */
.lotusui .lotusLogo, .lotusLoginLogo {background-image:
url("../images/toolbar_logo.gif"); height: 66px; width: 306px;}
/* We want the logo to be above the navigation links, and for the logo to
be centered in the top section */
.lotusui .lotusLogo, .lotusLoginLogo { float: none; margin-bottom: 4px;}
/* Align the navigation links with the new logo */
.lotusui .lotusLinks {margin-left: 70px; margin-top: -5px;}
5.
header.jsp にあるロゴの代替テキストを変更します。
a. <customizationDir>¥common¥nav¥ に「templates」というディレクトリーを作成します。
b. header.jsp ファイルをアプリケーション・ソース・ディレクトリーから新規の
テンプレート・ディレクトリーにコピーします。すべてのソース・ディレクトリー内の
header.jsp ファイルは同一です。例えば、ヘッダー・ファイルを
<WAS_home>¥Activities.ear¥oawebui.war.¥nav¥templates からコピーします。
c. カスタマイズ・ディレクトリーの header.jsp ファイルのコピーで、span タグ内のクラス属性
「lotusAltText」を探します。
d. 値を「IBM Connections」からお客様のブランドを認識できる値に変更します。
e. header.jsp ファイルを保存します。
6.
他の人々に対して変更を有効にする準備ができたら、変更を公開します。
この例では、変更はすべてのアプリケーションに適用されるため、IBM Connections 構成ファ
イルを更新します。変更の効果について詳しくは、『1.4 wsadmin ツールを使用したカスタマ
イズの公開』を参照してください。
リンクまたはメニューをナビゲーション・バーに追加する
IBM Connections 3.0.1 でリンクをナビゲーション・バーに追加するには、カスタマイズ・ディレ
クトリーの header.jsp ファイルに HTML アンカー・タグを追加します。静的リンクに加えて、IBM
Connections 3.0.1 では、ナビゲーション・バーは JavaServer Pages をサポートしています。JSP
ページのサポートは、JSP ファイルを呼び出すことによってメニューをナビゲーション・バーに追
加できることを意味します。
IBM Connections 3.0.1 でのアプリケーション・リンクのナビゲーション・バーへの追加は、旧
バージョンの場合と異なります。header.jsp は、現在ではマクロ "{{application links: li }}" を使用し
ません。HTML アンカー・タグを追加することで、単純な HTML リンクをコードとともに追加でき
ます。例:
--%><li><a href="http://www.example.com/link">My company intranet</a></li><%--
始める前に


IBM Connections サーバーを再始動することなく変更を表示できるように、カスタマイズ・デ
バ ッ グ 機 能 を オ ン に し ま す 。 カ ス タ マ イ ズ ・ デ バ ッ グ に つ い て 詳 し く は 、 『 1.2 IBM
Connections カスタマイズ変数』を参照してください。
カ ス タ ム header.jsp フ ァ イ ル が カ ス タ マ イ ズ ・ デ ィ レ ク ト リ ー 、 例 え ば
<customizationDir>¥common¥nav¥templates にあることを確認します。カスタム・ヘッダー・
ファイルの作成について詳しくは、『ロゴのカスタマイズ』手順を参照してください。
14 of 247

すべてのアプリケーション、またはアプリケーションのサブセットのどちらでナビゲーショ
ン・バーを変更するかを決定します。この手順では、すべてのアプリケーションのナビゲー
ション・バーを変更することを想定しています。特定のアプリケーションのカスタマイズにつ
いて詳しくは、『1.1.1 カスタマイズの仕組み』を参照してください。
手順
この手順では、ロゴとリンクの下のメニューを「ヘルプ」メニューの横の右上にあるサポート・
フォーラムに追加するというナビゲーション・バーに対する変更を、すべてのアプリケーションに
ついて行います。ログインおよびログアウトのリンクが左に表示されるように、ナビゲーション・
バー内でロゴ・イメージを下に移動します。
他のユーザー・インターフェースのカスタマイズと同様に、すべてのアプリケーション、またはア
プリケーションのサブセットについてナビゲーション・バーを変更できます。
1.
2.
<customizationDir>¥common¥nav¥templates にナビゲートし、header.jsp ファイルのコピー
をテキスト・エディターで開きます。
HTML アンカー・タグを追加することにより、自社のサポート・フォーラムへのリンクを右側
のナビゲーション・バーに追加します。テキストの色を赤に設定します。
a. header.jsp ファイルのコピーで次のセクションを見つけます。
--%><div class="lotusRightCorner">
b.
HTML アンカー・タグを追加します。
--%><li><a style="color: #FF5656;" href="http://www.example.com/supportforums">Support
Forum</a></li><%--
15 of 247
3.
<ul> リンク・セクション内でメニューを追加します。次の例では、イントラネットに対する
メニューを作成します。メニューを追加するには、デフォルトの header.jsp ファイルから既
存の定義 (「プロフィール」メニューなど) をコピーし、ラベルと ID を変更するのが良い方法
で す 。 変 更 の た め に 最 も 重 要な属 性は リ ンクの 「src 」属性 です 。 メニュ ーを 実 装す る
JavaScript では、メニューの内容を取得するためにこの属性を使用します。
************************************************************************
Example: Show an Intranet menu
The JavaScript that implements the menu uses this attribute to get the content
for the menu. In this example the "src" attribute uses a help JSP tag provided
by the IBM Connections team to build the correct URL. If the content of your
menu is always static (it does not change based on user or other dynamic logic)
you can build the URL with this code, which ensures that the menu content is
cached in the user's browser and so loads faster.
<lc-cache:uri template="{staticLanguageRoot}/nav/templates/menu/intranet.jsp"
/>
The "role", "aria-owns", and "aria-label" attributes are used by accessibility
programs to display information in alternative means. They are provided here as
an example that is compliant with other accessible guidelines.
************************************************************************
--%><li id="lotusBannerRenovations" class="lotusFirst"><%---%><a onmouseover="dojo.require('lconn.core.header');lconn.core.header.
menuMouseover (this);"
onclick="dojo.require('lconn.core.header');lconn.core.header.menuClick(this);"
onfocus="dojo.require('lconn.core.header');lconn.core.header.menuFocus(this);"
role="button" aria-owns="lconnheadermenu-renovations" aria-label="Renovations Intranet"
src="<lc-cache:uri template="{contextRoot}/nav/templates/menu/intranet.jsp" />"
href="http://ibm.com"><%---%>Intranet<%---%> <img role="presentation" alt="" src="<lc-cache:uri
template="{staticRoot}/nav/common/styles/images/blank.gif" />"
class="lotusArrow lotusDropDownSprite"><span
class="lotusAltText">&#9660;</span><%---%></a><%---%></li><%---%><c:set var="first" value="false" scope="page" /><%-*** End Example
************************************************************************
4.
5.
header.jsp ファイルのコピーを保存します。
他の人々に対して変更を有効にする準備ができたら、変更を公開します。変更の公開について
詳しくは、『1.4 wsadmin ツールを使用したカスタマイズの公開』を参照してください。
2.1.2 テーマの色を変更する
お客様の企業ブランドに合わせる際に、色やフォント・スタイルの変更など、IBM Connections の
ユーザー・インターフェース全体の外観を変更したい場合があります。他のユーザー・インター
フェースのカスタマイズと同様に、カスタマイズ・ディレクトリーにあるスタイル・シートを変更
します。カスタマイズ・ディレクトリー内のスタイルを変更すると、メインのデフォルト・テー
マ・スタイル・ルールがオーバーライドされます。例では、defaultTheme.css からスタイル・ルー
ルをコピーし、それらを custom.css に追加し、背景色、グラデーション、境界線を変更していま
す。IBM Connections で使用する色のフルセットが defaultTheme.css ファイルにあります。
16 of 247
例では、すべてのアプリケーションで色をライトブルーから赤に変更するように、デフォルト・ス
タイル・シートからのスタイル・ルールを変更しています。一部のアプリケーションでは、デフォ
ルト・スタイル・シートで指定されたものとは異なるスタイルおよび色が定義されています。これ
らの追加の、アプリケーション固有のスタイルは、アプリケーションの後に指定されたファイル、
例えば activities.css で定義されています。Activities でのみ使用されているユーザー・インター
フ ェ ー ス を カ ス タ マ イ ズ す る に は 、 activities.css フ ァ イ ル の 編 集 が 必 要 に な り ま す 。 IBM
Connections に activities.css フ ァ イ ル の コ ピ ー を 使 用 す る よ う 強 制 す る に は 、 Activities の
defaultTheme カスタマイズ・ディレクトリーにファイルを保存します。特定のアプリケーション
のカスタマイズについて詳しくは、『1.1.1 カスタマイズの仕組み』を参照してください。
手順
1.
2.
3.
4.
IBM Connections サーバーを再始動することなく変更を表示できるように、カスタマイズ・デ
バ ッ グ 機 能 を オ ン に し ま す 。 カ ス タ マ イ ズ ・ デ バ ッ グ に つ い て 詳 し く は 、 『 1.2 IBM
Connections カスタマイズ変数』を参照してください。
デフォルト・テーマのスタイル・シートをテキスト・エディターで開きます。デフォルト・
テーマのスタイル・シートは defaultTheme.css という名前で、同一であり、アプリケーショ
ン・ソース・ディレクトリーに格納されています。例:
<WAS_home>¥Activities.ear¥oawebui.war.¥nav¥common¥styles¥defaultTheme
¥defaultTheme.css
共通カスタマイズ・ディレクトリーでスタイル・シートを作成するか、開きます。
a. 「defaultTheme」ディレクトリーを
<customizationDir>¥common¥nav¥common¥styles¥ に作成します。
b. customizationDir>¥common¥nav¥common¥styles¥defaultTheme¥ にある共通カスタマイ
ズ・ディレクトリーで custom.css スタイル・シートを開きます (またはブランクのスタ
イル・シートを作成します)。
ヒント: より大幅なスタイルの更新を行う場合は、変更の保守を簡略化するために、カスタマ
イズ・ディレクトリーにある defaultTheme.css ファイルのコピーを変更することを検討して
ください。
デフォルト・スタイルをカスタム・スタイル・シートにコピーし、色をオーバーライドします。
a. defaultTheme.css ファイルで、変更したいアクセント・カラーのあるページのセクショ
ンのスタイル・ルールを見つけます。例えば、タイトル・バーや左側のナビゲーション
です。
ヒント: どの要素をどのスタイル・シート属性が制御しているかを識別しづらい場合があ
ります。変更対象を見つけるには、Firebug などのツールを使用してください。
b. これらのルールを custom.css ファイルにコピーします。
17 of 247
c.
custom.css ファイルで色を変更します。例えば、色をライトブルーから赤に変更します。
/* Make the title bar red */
.lotusTitleBar {margin:0;border-bottom:8px solid #fff;backgroundcolor:#db1e24;background-image:-moz-linear-gradient(#e9787c 0, #e9787c 1px, #e66166
1px, #dd292f 50%, #d01d22 50%, #af181d 100%);background-image:-webkitgradient(linear, left top, left bottom, from(#e9787c), to(#af181d), color-stop(.03,
#e9787c), color-stop(.03, #e66166), color-stop(50%, #dd292f), color-stop(50%,
#d01d22), color-stop(100%, #af181d));-moz-border-radius:0;-webkit-borderradius:0;border-radius:0;}
/* Make the tab bar red */
.lotusTitleBar .lotusTabs li{border-bottom-color:#831216;background-color:#af181d;}
.lotusTitleBar .lotusSearch .lotusScope, .lotusTitleBar .lotusSearch
.lotusBtnImg{background-color:#af181d;color:#fff;}
/* Make the selected left navigation red */
.lotusMenu li.lotusSelected a, .portlet-menu li.lotusSelected a, .lotusMenu
h3.lotusSelected, .portlet-menu h3.lotusSelected{color:#fff
!important;margin:0;padding-left:20px;background-color:#db1e24;background-image:moz-linear-gradient(#e66166 0%, #af181d 100%);
background-image:-webkit-gradient(linear, left top, left bottom, from(#e66166),
to(#af181d));border-width:1px 0;border-color:#831216;}
/* Make the welcome text more red */
.lotusWelcomeBox{background-color:#FCEAEA;border-color:#C6BABA;}
5.
6.
custom.css ファイルを保存します。
他の人々に対して変更を有効にする準備ができたら、変更を公開します。
変更の公開について詳しくは、『1.4 wsadmin tool を使用したカスタマイズの公開』を参照し
てください。
2.1.3 フッターのカスタマイズ
企業ブランドへの適合作業を行う際に、IBM Connections のフッターにリンクやイメージを追加し
たい場合があります。例えば、自社 Web サイトにリンクを追加するなどです。ナビゲーション・
バーと同様に、IBM Connections 3 のフッターでは JavaServer Pagesがサポートされているため、
メニューをフッターに追加できます。例では、IBM Connections ホーム・ページへのリンクの右側
にリンクを追加するという変更を、すべてのアプリケーションのフッターに対して行います。他の
ユーザー・インターフェースのカスタマイズと同様に、すべてのアプリケーションの、またはアプ
リケーションのサブセットのフッターを変更できます。
始める前に


IBM Connections サーバーを再始動することなく変更を表示できるように、カスタマイズ・デ
バ ッ グ 機 能 を オ ン に し ま す 。 カ ス タ マ イ ズ ・ デ バ ッ グ に つ い て 詳 し く は 、 『 1.2 IBM
Connections カスタマイズ変数』を参照してください。
<customizationDir>¥common¥nav¥ に「templates」というディレクトリーを作成します。
18 of 247
手順
1.
2.
3.
footer.jsp ファイルをアプリケーション・ソース・ディレクトリーから新しいテンプレート・
ディレクトリーにコピーします。すべてのソース・ディレクトリー内の footer.jsp ファイルは
同一です。例えば、フッター・ファイルを
<WAS_home>¥Activities.ear¥oawebui.war.¥nav¥templates からコピーします。
カ ス タ マ イ ズ ・ デ ィ レ ク ト リ ー の footer.jsp の コ ピ ー で 、 <lc-ui:templateLink
key="connections.demo" で始まるタグを見つけます。
リンク、メニュー項目、またはイメージをフッターに追加します。次の例では、2 つのリンク
をフッターに追加しています。
--%><lc-ui:templateLink key="connections.demo" appname="${appName}"><fmt:message
key="label.footer.connections.demo" /></lc-ui:templateLink><%-************************************************************************ Example: Add
corporate links to the footer
--%><li><%---%><a href="http://www.example.com" /><%---%>Renovations home<%---%></a><%---%></li><%---%><li><%---%><a href="http://www.example.com/contact" /><%---%>Contact Renovations<%---%></a><%---%></li><%-*** End Example
************************************************************************
4.
5.
footer.jsp ファイルを保存します。
他の人々に対して変更を有効にする準備ができたら、変更を公開します。変更の公開について
詳しくは、『1.4 wsadmin tool を使用したカスタマイズの公開』を参照してください。
2.1.4 ログイン・ページのカスタマイズ
IBM Connections にログインする各人がサイトにアクセスする前に企業ポリシーに同意するという、
社内の要件に対応するために、ログイン・ページをカスタマイズすることができます。同意へのリ
ンクをログイン・ページに表示し、ポリシーへの同意を示すチェック・ボックスをページに組み込
み、ユーザーがチェック・ボックスを選択するまでログイン・ボタンを無効にするように構成でき
ます。また、ログイン・ページの左側に、保守スケジュールなどの通知メッセージを追加したい場
合があります。
この手順では、次の画面キャプチャーに示すように、これらの変更を行います。
19 of 247
始める前に


IBM Connections サーバーを再始動することなく変更を表示できるように、カスタマイズ・デ
バ ッ グ 機 能 を オ ン に し ま す 。 カ ス タ マ イ ズ ・ デ バ ッ グ に つ い て 詳 し く は 、 『 1.2 IBM
Connections カスタマイズ変数』を参照してください。
<customizationDir>¥common¥nav¥ に「templates」というディレクトリーを作成します。
手順
この例では、クリックスルー同意をログイン・ページに追加するために、ユーザーがチェック・
ボックスを選択するまでログイン・ボタンを無効にする JavaScript を login.jsp ファイルに追加し
ます。この例ではクライアント・サイド妥当性検査を使用します。この機能をより安全なものにす
るには、サーバー・サイド妥当性検査を使用して、ユーザーがチェック・ボックスを迂回するのを
防ぐことができます。ログイン・ページの左側にあるテキストを変更するには、login.jsp ファイル
の当該セクションを変更します。
1.
2.
3.
4.
login.jsp ファイルをアプリケーション・ソース・ディレクトリーから新しいテンプレート・
ディレクトリーにコピーします。すべてのソース・ディレクトリー内の login.jsp ファイルは同
一です。例えば、ファイルを <WAS_home>¥Activities.ear¥oawebui.war.¥nav¥templates から
コピーします。
カ ス タ マ イ ズ ・ デ ィ レ ク ト リ ー に あ る login.jsp の コ ピ ー で 、 タ グ <div
class="lotusLoginContent"> で始まるセクションを見つけます。このセクションはログイン・
ページの左側の欄を定義します。
login.description を参照するセクションを削除します。
表示したいテキストを追加します。この例では、次回に予定されている保守についての告知を
追加しています。
20 of 247
5.
ユーザー名とパスワードを表示するセクションの終わりを見つけます。
21 of 247
6.
クリックスルー・チェック・ボックスを表示する HTML を追加します。また、「login」ボタ
ンの近くに表示される IBM ロゴを非表示にします。
<%-************************************************************************
Example: Add a click-through agreement to the login page
This section adds a simple example of a click through agreement that uses
JavaScript to enable or disable the login button depending on the state of a
check box.
*****************************************************************
--%>
<p style="color: #af181d;">
IMPORTANT: Renovations confidential information may be shared
in this Community. You must certify that you agree to the terms of
use before logging in..
</p>
<p class="lotusFormField">
<input id="confirm" class="lotusCheckbox"
onclick="acceptedAgreement(this);" type="checkbox">
<label for="confirm" class="lotusCheckbox">I agree with the renovations
terms of use posted at <a
href="http://www.example.com/terms/renovationsconfidentiality/">http://www.example.com
/terms/renovationsconfidentiality/</a>.</label>
</p>
<%-*** End Example
***********************************************************
************************************************************************
Example: Hide the IBM logo
When rebranding for the Renovations site the IBM logo is removed by commenting out the
HTML markup.
************************************************************************
<span class="lotusRight" aria-hidden="true"><img role="presentation"
src="<lc-cache:uri template="{staticRoot}/nav/common/styles/images/blank.gif" />"
alt="IBM" class="lotusIBMLogo"><span class="lotusAltText">IBM</span></span>
*** End Example
***********************************************************
--%><
7.
次 の よ う な テ ー ブ ル ・ タ グ の 終 わ り を 見 つ け ま す 。 <fmt:message key="login.legal"
/></td></tr></table>
22 of 247
8.
テーブル・タグの後に、ユーザーがチェック・ボックスを選択するまでログイン・ボタンを無
効にする JavaScript コードを追加します。
9. login.jsp ファイルを保存します。
10. ブラウザー・キャッシュをクリアします。
11. ログイン・ページ (http://<server>:<port>/homepage/login/) をロードして、変更をテストしま
す。
12. 他の人々に対して変更を有効にする準備ができたら、変更を公開します。
変更の公開について詳しくは、『1.4 wsadmin tool を使用したカスタマイズの公開』を参照し
てください。
2.1.5 エラー・ページのカスタマイズ
エラーの検出時に IBM Connections ユーザーに表示されるページは、error.jsp ファイルで定義され
ています。メッセージ・ストリングをカスタマイズし、特定エラー状態の処理方法をオーバーライ
ドし、エラー・ページ自体の外観を変更できます。Error.jsp ファイルは、ソース・アプリケーショ
ン WAR ファイル内のテンプレート・ディレクトリーに格納されています。インストールされた
error.jsp ファイルはすべてのソース・ディレクトリーで同一です。このファイルは、例えば
<WAS_home>¥Activities.ear¥oawebui.war¥nav¥templates¥ にある Activities アプリケーションにあ
ります。
error.jsp ファイルには、カスタマイズ方法の識別に役立つ多くのコメントがあります。このファイ
ルは、渡すことができる属性のリストで始まっています。例えば errorActions 属性は、ユーザーが
実行可能な 1 つ以上のアクションとともに、ユーザーがクリックできるリンクを指定します。ユー
ザーがエラーを検出したときに何を行うかを理解しやすいように、これらのアクションをカスタマ
イズできます。JSP ページに渡すことができる属性について詳しくは、error.jsp ファイル自体を参
照してください。
error.jsp ファイルの次のセクションは、<c:choose> タグで始まり、エラー・メッセージを起動す
る<c:when> 条件を含んでいます。これらのセクションの条件は、エラー・メッセージをカスタマ
イズするために変更することができます。エラー・メッセージ内のストリングの大半は、
com.ibm.lconn.core.strings.templates プロパティー・ファイルに格納されています。これらのエ
ラー・メッセージは、製品ストリングを変更する手順でオーバーライドできます。詳しくは、
『2.2 製品ストリング(文字列)のカスタマイズ』を参照してください。行った変更をグローバル
23 of 247
化するつもりがない場合は、error.jsp ファイルを直接変更することでストリングをオーバーライド
してかまいません。
「lotusErrorForm」クラスで始まる error.jsp ファイルの最後のセクションでは、エラー・ページの
HTML を定義します。自社のブランディングまたはポリシーに固有のエラー・メッセージを作成す
るために、どの HTML も変更が可能です。例えば次の行は、ユーザーが情報を社内の管理者に送信
できるように、エラーの詳細の表示方法を指定しています。
IBM Connections での他のカスタマイズ変更と同様に、変更した error.jsp ファイルをカスタマイ
ズ・ディレクトリーに保存します。多くの場合、変更はすべての IBM Connections アプリケーショ
ンに適用するため、ファイルは共通カスタマイズ・ディレクトリー
<customizationDir>¥common¥nav¥templates に保存してください。特定のアプリケーションのカス
タマイズについて詳しくは、『1.1.1 カスタマイズの仕組み』を参照してください。変更を他のユー
ザーに対して有効にする準備ができたら、IBM Connections 構成プロパティーのバージョン・スタ
ンプを更新します。詳しくは、『1.4 wsadmin ツールを使用したカスタマイズの公開』を参照して
ください。
エラー・ページについて詳しくは、「IBM Connections 資料」で『エラーのカスタマイズ』ページ
を探してください。
2.2. 製品ストリング(文字列)のカスタマイズ
IBM Connections では、ユーザー・インターフェースのストリングの多くはテキスト・ファイルに
個別のリソースとして格納されています。IBM Connections 内のストリング・ファイルには 2 つの
カテゴリーがあります。1 つは、アプリケーション JAR ファイルに格納されているプロパティー・
ファイル (リソース・バンドルとして知られています) で定義されているキーと値のペアで、もう 1
つは JavaScript ファイルに格納されているストリングです。IBM Connections のこれらのユー
ザー・インターフェース・ストリングを変更するには、ストリングが格納されている場所を見つけ
て、デフォルト・ストリングをオーバーライドします。
製品ストリングのカスタマイズのある部分は他のユーザー・インターフェースのカスタマイズに似
ていますが、他の部分は異なります。例えば、特定のファイルを変更し、それらをカスタマイズ・
ディレクトリーに保存するのは、他のユーザー・インターフェースのカスタマイズと同様です。カ
スタマイズ・ディレクトリーに格納されたストリングを変更すると、デフォルト・ストリングは
オーバーライドされます。ただし、他のユーザー・インターフェースのカスタマイズとは異なり、
プロパティー・ファイルに格納されたストリングの場合は常に、<customizationDir>¥strings ディレ
クトリーにファイルを保存します。strings ディレクトリーの下にはサブディレクトリーはありませ
ん。カスタマイズ済みプロパティー・ファイルの名前にはオーバーライドするデフォルト・プロパ
ティー・ファイルのディレクトリー・パス全体が含まれているため、単一ディレクトリーで十分で
す。ディレクトリー区切り文字を表すスラッシュは、カスタマイズ済みファイル名ではピリオドに
置き換えられます。例えば、ディレクトリー
<WAS_home>¥<application_ear>¥<application_war>¥WEB-INF¥lib¥lc.util.web-3.0.jar¥
com¥ibm¥lconn¥core¥strings¥ に格納されている templates.properties に見つかった製品ストリ
ングをオーバーライドするとします。カスタマイズ済みプロパティー・ファイルを
com.ibm.lconn.core.strings.templates.properties というファイル名で保存します。カスタマイ
ズされたファイル名のピリオドは、デフォルト・ファイルでのディレクトリー区切り文字を表し
ます。完全なファイル名が必要です。このファイルを
24 of 247
<customizationDir>¥strings¥templates.properties として保存することはできません。strings ディレ
クトリーにはプロパティー・ファイル内のカスタマイズされたストリングが保持されます。
JavaScript ファイルに格納されたカスタマイズ済みストリングは、インストール済みソース・ディ
レクトリーに対応するカスタマイズ・ディレクトリーに格納されます。
製品ストリングとその他のユーザー・インターフェース・カスタマイズとの違いにはほかに、翻訳
の問題があります。IBM Connections は、ユーザー・インターフェースで表示する言語を決定する
ために Web ブラウザー・ロケールを使用する、グローバル化された製品です。ストリングは、言
語に固有なファイルと、言語に依存しないファイルに格納されます。デフォルト・ロケール (言語
に依存しないファイル) のストリングは、ファイル名に言語コードが付加されずにファイルに格納
されます。これらのファイルにあるストリングの値は、Web ブラウザーのロケールの製品ストリン
グがない場合に使用されます。言語に固有のファイルには、接尾辞として言語コードを持つファイ
ル名が付けられています。例えば、com.ibm.lconn.core.strings.templates.properties ファイルは、
デフォルト・ロケール用に使用されるストリングが入った、言語に依存しないファイルです。Web
ブラウザー・ロケール用の特定のプロパティー・ファイルがない場合に、このデフォルト・プロパ
ティー・ファイル内のストリングが表示されます。このプロパティー・ファイルにあるストリング
の ブ ラ ジ ル ・ ポ ル ト ガ ル 語 翻 訳 を 組 み 込 む に は 、 com.ibm.lconn.core.strings.templates_ptBR.properties というファイル名で別のファイルを作成します。このファイルにあるストリングは、
ブラジル・ポルトガル語ロケールでユーザーに示されます。作成する各ストリングの項目を持つ、
言語に依存しないプロパティー・ファイルがあることを確認してください。このようにすれば、
ユーザーには常にストリングが表示されます。また、翻訳したくないストリング (自社ブランド名
など) は、言語に依存しないファイルに格納してください。言語コード接尾辞の使用は、JavaScript
ファイルに格納されるストリングにも当てはまります。この場合、ファイル名の後には <file
name>_<langcode>.js の形式が続きます。例えば、act_pt_BR.js のようになります。
2.2.1 製品ストリング(文字列)のカスタマイズ時の一般手
順
IBM Connections でストリングをカスタマイズする際には、以下の手順に従ってください。
1.
2.
3.
4.
5.
ソース・アプリケーション・ファイルの中で、変更したいストリングを見つけます。多くの場
合、ストリングは .jar ファイルに含まれています。
 プロパティー・ファイルに格納されているストリングの場合: ストリングを表すキーを含
むプロパティー・ファイルが入った .jar ファイルを探します。.jar ファイルを一時ロケー
ションに抽出します。IBM Connections には、さまざまなファイルに多数のストリングが
存在します。製品ストリングの場所について詳しくは、IBM Connections の資料で『製品
ストリングのカスタマイズ』を探してください。
 JavaScript ファイルに格納されているストリングの場合: 変更したいストリングを含
む .jsp ファイルを見つけます。
情報を関連するカスタマイズ・ディレクトリーにコピーし、変更を行います。
 プロパティー・ファイルに格納されているストリングの場合: キー-値ストリングのペアを、
インストール済みプロパティー・ファイルから別のテキスト・ファイルにコピーします。
値 を 変 更 し ま す 。 Java パ ッ ケ ー ジ に 合 致 す る フ ァ イ ル 名 を 持 つ フ ァ イ ル を
<customizationDir>¥strings ディレクトリーに保存します。
 JavaScript ファイルに格納されているストリングの場合: 関連するカスタマイズ・ディレ
クトリーに .jsp ファイルをコピーします。オーバーライドしたいストリングを変更します。
カスタマイズ済みファイルからデフォルト・ストリングを削除します。
翻訳済みストリングについては、ファイル名に言語コード接尾辞を付加した追加ファイルを作
成します。
影響を受ける IBM Connections アプリケーションを再始動して、変更をテストします。
他の人々に対して変更を有効にする準備ができたら、変更を公開します。
ファイルをチェックアウトし、バージョン・スタンプを更新し、ファイルをチェックインする
ことで、該当する構成プロパティーを更新します。詳しくは、『1.4 wsadmin ツールを使用し
たカスタマイズの公開』を参照してください。
25 of 247
2.2.2 プロパティー・ファイル内の既存の製品ストリング
(文字列)のカスタマイズ
IBM Connections に関する質問があるユーザーにログイン・ページで対応するために、自社でホス
トしているサポート・フォーラムにユーザーを案内することができます。例えば、製品資料にユー
ザーを導くためのテキストおよびリンクを変更できます。ログイン・ページを変更するには、
login.jsp ページ内のストリングを表すキーを置き換えることができますが、これによりグローバル
化が困難になります。カスタマイズ済みログイン・ページのグローバル化に対応するには、プロパ
ティー・ファイル内のストリングの値を変更してください。
下の図は、変更されたログイン・ページを示しています。
始める前に
ログイン・ページのコピーをカスタマイズ・ディレクトリーに保存します。ログイン・ページのカ
スタマイズ方法について詳しくは、『2.1 ユーザー・インターフェースを企業ブランドおよびポリ
シーに適合させる」の『ログイン・ページのカスタマイズ』の手順を参照してください。
手順
この手順では、ログイン・ページの左側の欄にある「Have a question」の下のテキストを表すスト
リング値を変更します。
1.
変更したいストリングを表すキーを見つけます。この例では、ログイン・ページの左側の欄に
ある「Have a question」の下の「Try the IBM Connections product documentation」を表す
キーを見つけます。
26 of 247
a.
<customizationDir>¥common¥nav¥templates にナビゲートし、login.jsp ページを開きま
す。
b. ストリングを表すキーのある行を見つけます。この例では、キーは login.description2 で、
これはストリング「Try the IBM Connections product documentation」を表しています。
2.
c.
ソース・アプリケーション JAR ファイルでキーを探します。Login.jsp がロードするプロ
パティー com.ibm.lconn.core.strings.templates は、ファイルの先頭にあります。これに
より、変更したいストリングは JAR ファイルの com¥ibm¥lconn¥core¥strings ディレク
トリーに格納されている templates.properties ファイルにあることが分かります。この場
合、ファイルは lc.util.web-3 です。
d.
JAR ファイルを解凍します。lc.util.web-3.0.jar ファイルはすべてのソース・ディレクト
リーで同一であるため、Activities アプリケーションの JAR ファイルを使用します。
i.
<WAS_home>¥Activities.ear¥oawebui.war¥WEB-INF¥lib¥lc.util.web-3.0.jar に ナ ビ
ゲートします。
ii. JAR ファイルを一時ディレクトリーに解凍します。ご使用の圧縮ユーティリティー
で JAR ファイルが圧縮フォーマットとして認識されない場合は、拡張子を .zip に
変更してください。
iii. 一時ディレクトリーにナビゲートします。
iv. com¥ibm¥lconn¥core¥strings ディレクトリーの templates.properties ファイルをテ
キスト・エディターで開きます。
変更したプロパティー・ファイルをカスタマイズ・ディレクトリーに追加します。
a
テキスト・ファイルを作成し、com.ibm.lconn.core.strings.templates.properties という
ファイル名でストリング・カスタマイズ・ディレクトリー <customizationDir¥strings> に
保存します。このファイル名は、ソース・ディレクトリー内の Java パッケージ情報に一
致していなければなりません。Java パッケージで区切り文字を表すスラッシュをピリオ
ド に 置 き 換 え て く だ さ い 。 こ の 例 で は 、 templates.properties フ ァ イ ル は
27 of 247
b.
c.
com¥ibm¥lconn¥core¥strings パッケージに格納されます。カスタマイズ・ディレクト
リーのロケーションについては、『1.2 IBM Connections カスタマイズ変数』を参照して
ください。
login.description2 キー-値ペアを含む行をソース templates.properties ファイルからコ
ピーし、iom.ibm.lconn.core.strings.templates.properties ファイルのその行自体に貼り付
けます。
新しいファイル内のストリングの値を変更します。例:
ヒント: キーがオリジナルに一致するようにするには、常にキーをソースからカスタマイ
ズ済みファイルにコピーするようにしてください。次に値を変更します。
d.
3.
ファイルを保存します。
特定の言語のストリングを変更します。
a. テキスト・ファイルを作成し、ストリング・カスタマイズ・ディレクトリーに保存しま
す。言語コードを含むファイル名を使用してください。例:
 ブラジル・ポルトガル語の場合、
com.ibm.lconn.core.strings.templates_pt_BR.properties というファイル名でファイルを
保存します。
 スペイン語の場合、com.ibm.lconn.core.strings.templates_en.properties というファイ
ル名でファイルを保存します。
b. キー-値ペアを含む行を、次のように、JAR ファイル内の翻訳済みプロパティー・ファイ
ルからコピーします。例:
 ブラジル・ポルトガル語の場合、templates_pt_BR.properties ファイルからコピーしま
す。
 スペイン語の場合、templates_es.properties ファイルからコピーします。
c. キー-値ペアを com.ibm.lconn.core.strings.templates.properties に貼り付け、ストリング
の値を変更し、ストリング値を言語コードで表される言語に翻訳します。
d. 翻訳済みストリングとともにファイルを保存します。製品ストリングのグローバル化に
ついて詳しくは、IBM Connections 資料で『製品ストリングのカスタマイズ』を検索して
ください。
28 of 247
ヒント: IBM Connections のストリングでは、Unicode 文字に Unicode エスケープ・コードが
使用されます。Unicode 文字は ¥uXXXX を使用してエスケープします。XXXX は文字の 16 進
表記です。Unicode エスケープ・コードについて詳しくは、
http://java.sun.com/developer/technicalArticles/Intl/ResourceBundles/ に あ る Oracle Sun
Developer Network の記事『Localization with ResourceBundles』を参照してください。
4.
ログイン・ページ内のリンクを、サポート・フォーラムを指すように変更します。
a.
カスタマイズ・ディレクトリーの login.jsp のコピーで、login.description2 の href 属性を
見つけます。
b.
href 属性の既存の値を自身のリンクに置き換えます。例えば、
http://www.example.com/supportforums などです。
login.jsp を保存します。
c.
5.
変更内容をテストします。
a. WebSphere Application Server Integrated Solutions Console を使用して、影響を受ける
IBM Connections アプリケーションを停止して再始動します。この場合は、すべての
IBM Connections アプリケーション・サーバーを再始動します。
b. ブラウザー・キャッシュをクリアします。
c. ログイン・ページ (http://:/homepage/login/) をロードして、変更をテストします。
6.
他の人々に対して変更を有効にする準備ができたら、変更を公開します。
この例では、変更はすべてのアプリケーションに適用されるため、IBM Connections 構成ファ
イルを更新します。変更の公開について詳しくは、『1.4 wsadmin tool を使用したカスタマイ
ズの公開』を参照してください。
29 of 247
2.2.3 カスタマイズ済み製品ストリング(文字列)の追加
「2.1ユーザー・インターフェースを企業ブランドおよびポリシーに適合させる」の手順『ログイ
ン・ページのカスタマイズ』では、保守予定に関するセクションをログイン・ページに追加しまし
た。グローバル化に対応するために、login.jsp 内のストリング「Next scheduled maintenance」を
カスタマイズ済みプロパティー・ファイル内のストリングに置き換えることができます。
<customizationDir>¥strings ディレクトリー内のカスタマイズ済みプロパティー・ファイルにストリ
ングを追加し、そのストリングに対する参照をオリジナル・ファイル (この場合は login.jsp ファイ
ル) に挿入します。
ヒント: プロフィール、コミュニティー、およびホーム・ページ・アプリケーションでストリング
を追加および更新するには、特定の方法があります。カスタム・ストリングをプロフィールに追加
する方法の例については、『5.2 属性のラベルを指定する』を参照してください。上記以外の場合
のストリングの追加について詳しくは、「IBM Connections 資料」で『ウィジェットのカスタム・
ストリングおよびその他の指定されたシナリオを追加する』を検索してください。
始める前に
com.ibm.lconn.core.strings.templates.properties プロパティー・ファイルを
<customizationDir>¥strings ディレクトリーに作成します。ログイン・ページのカスタム方法の例に
ついては、『プロパティー・ファイル内の既存の製品ストリングのカスタマイズ』を参照してくだ
さい。
手順
この手順では、ハードコーディングされたストリングを、新しいキー-値ペア製品ストリングで置き
換えます。
1.
ストリングをカスタマイズ済みプロパティー・ファイルに追加します。
a. <customizationDir>¥strings にナビゲートし、
com.ibm.lconn.core.strings.templates.properties をテキスト・エディターで開きます。
b
ストリングをその行に <string_key>=<string_value> の形式で追加します。例:
c.
2.
ハードコーディングされたストリングを、ストリング・キーに対する参照に置き換えます。ロ
グイン・ページのテキストの例:
a. <customizationDir>¥common¥nav¥templates にナビゲートし、login.jsp ファイルのコ
ピーをテキスト・エディターで開きます。
b. 「Next scheduled maintenance」を見つけ、それを作成したストリングに対する参照で置
き換えます。形式は fmt:message key="" /> です。
c.
3.
ファイルを保存します。
login.jsp ファイルを保存します。
特定の言語のストリングを変更します。
templates.properties ファイルに、デフォルト (英語) 言語のストリングが入っています。他の
言語のストリングを作成するには、ストリングおよび翻訳された値を言語コードとともにファ
イルに追加します。例えば、ブラジル・ポルトガル語の場合は、login.schedmaint.title キーと
30 of 247
翻訳された値を com.ibm.lconn.core.strings.templates_pt_BR.properties に追加します。
ヒント: IBM Connections のストリングでは、Unicode 文字に Unicode エスケープ・コードが
使用されます。Unicode 文字は ¥uXXXX を使用してエスケープします。XXXX は文字の 16 進
表 記 で す 。 Unicode エ ス ケ ー プ ・ コ ー ド に つ い て 詳 し く は 、 「 Oracle Sun Developer
Network」の記事『Localization with ResourceBundles』
(http://java.sun.com/developer/technicalArticles/Intl/ResourceBundles/) を参照してください。
4.
変更内容をテストします。
a. WebSphere Application Server Integrated Solutions Console を使用して、影響を受ける
IBM Connections アプリケーションを停止して再始動します。この場合は、すべての
IBM Connections アプリケーション・サーバーを再始動します。
b. ブラウザー・キャッシュをクリアします。
c. ログイン・ページ (http://:/homepage/login/) をロードして、変更をテストします。
5.
他の人々に対して変更を有効にする準備ができたら、変更を公開します。
変更の公開について詳しくは、『1.4 wsadmin tool を使用したカスタマイズの公開』を参照し
てください。
2.2.4 JavaScript ファイル内の製品ストリング(文字列)の
カスタマイズ
ユーザー・インターフェース内のストリングの多くはプロパティー・ファイルに格納され、一部の
ストリングは JavaScript ファイルに格納されています。カスタマイズ済みストリングとともに
JavaScript ファイルを保存する場所は、ユーザー・インターフェースの他の部分のカスタマイズに
似ていますが、プロパティー・ファイルに格納されるストリングの場所とは異なります。つまり、
カスタマイズされた .jsp ファイルは、アプリケーション・ソース・ディレクトリー内の対応するイ
ンストール済みファイルと同じカスタマイズ・サブディレクトリーに保存する必要があります。
2.2.5 製品ストリング(文字列)をカスタマイズするための
その他のツール
どのプロパティー・ファイルにストリングがあり、どの JAR ファイルにプロパティー・ファイル
があるかを把握するのが困難な場合があります。また、翻訳済みストリングをテストするために、
ご使用の Web ブラウザーのロケールを変更する必要があります。このような場合、以下のユー
ティリティーが役立ちます。

ストリングのプロパティーを見つける
o Microsoft Windows の場合: .jar ファイルの検索をサポートするために PersistentHandler レ
ジストリー・キーを追加するか、Cygwin または Eclipse を使用します。
o AIX または Linux の場合: 標準装備の grep コマンドを使用します。

翻訳されたストリングをテストする
ロケールに固有のオペレーティング・システムをインストールすることなく、またはオペレー
ティング・システムの設定を変更することなく、ブラウザーのロケールを変更するロケール・
スイッチャー・ツールを使用します。ロケール・スイッチャー・ツールの例としては、Firefox
および Chrome ブラウザー用の Quick Locale Switcher アドオンがあります。
31 of 247
2.2.6 カスタマイズ済み製品ストリング(文字列)のトラブ
ルシューティング
カスタマイズ済みアプリケーション・プロパティー・ファイルでのストリング変更に問題がある場
合は、以下の解決策を試してください。
問題: プロパティー・ファイルで変更したストリングがブラウザーに表示されない。
解決策:
 カスタマイズ済みプロパティー・ファイルの名前が、正しいインストール済み Java パッ
ケージ名に一致していません。例えば、
<WAS_home>¥<application_name.ear>¥<application_name_war>¥WEB- INF¥lib¥
lc.util.web-3.0.jar¥com¥ibm¥lconn¥core¥strings¥templates.properties にあるオリジナル・
プロパティー・ファイルの場合、カスタマイズ済みファイルを
com.ibm.lconn.core.strings.templates.properties として保存します。つまり、ディレクト
リー区切り文字を表すスラッシュをファイル名ではピリオドに置き換えます。
 プロパティー・ファイルを <customizationDir>¥strings ディレクトリーに保存したことを
確認します。サブディレクトリーは使用しないでください。
 カスタマイズ済みキーがオリジナルに一致していることを確認します。
 影響を受ける IBM Connections アプリケーションを再始動します。ストリングに対する変
更は、カスタマイズ・デバッグ機能を有効にしている場合でも、ブラウザー・キャッシュ
のクリア後には表示されません。
問題: ストリングの翻訳版が表示されない。
解決策: Web ブラウザーのロケールが、表示したい言語に一致しているかを確認します。
問題: JSP ファイルで変更したストリングがブラウザーに表示されない。
解決策: デフォルト・ファイルのディレクトリーに対応するカスタマイズ・ディレクトリーに
ファイルを保存したかを確認します。
2.2.7 ファイル・タイプ・アイコンのカスタマイズ
IBM Connections 内のファイルのリストを見ると、アイコンでファイルが表されています。アイコ
ンは、ファイル名拡張子に基づいて選択されます。デフォルト・アイコンとそれらに関連付けられ
た拡張子はオーバーライドが可能です。これらのカスタマイズ済みファイル・タイプ・アイコンは
ファイルおよびコミュニティー・アプリケーションに表示され、またそれらのアプリケーションの
検索結果に表示されます。ファイル拡張子を既存のファイル・タイプ・アイコンに追加するか、ま
たはファイル拡張子を追加してそれを新規アイコンに関連付けることができます。また、別のアイ
コンを既存の拡張子に関連付けることも可能です。
ファイル・タイプ・アイコン・イメージは背景イメージを使用して表示されます。この技法により、
製品全体の HTML マークアップを変更するのではなく、CSS ファイル内のイメージをカスタマイ
ズすることができます。拡張子に関連付けられたファイル・タイプ・アイコンをオーバーライドす
るには、アイコン・イメージを該当するカスタマイズ・ディレクトリーにコピーし、それらのアイ
コンを使用するためのスタイル・ルールを定義します。他のユーザー・インターフェースのカスタ
マイズと同様に、すべてのアプリケーション (この場合はファイル・アプリケーションとコミュニ
ティー・アプリケーション) について、またはアプリケーションのサブセットについてファイル・
タイプ・アイコンを変更できます。ファイル・タイプ・アイコンおよび拡張子について詳しくは、
「IBM Connections 資料」で『ファイル・タイプ・アイコンおよび拡張子』を検索してください。
始める前に
32 of 247




IBM Connections サーバーを再始動することなく変更を表示できるように、カスタマイズ・デ
バ ッ グ 機 能 を オ ン に し ま す 。 カ ス タ マ イ ズ ・ デ バ ッ グ に つ い て 詳 し く は 、 『 1.2 IBM
Connections カスタマイズ変数』を参照してください。
すべてのアプリケーション、またはアプリケーションのサブセットのどちらでロゴを置き換え
るかを決定します。この手順では、すべてのアプリケーションのロゴを変更することを想定し
ています。特定のアプリケーションのカスタマイズについて詳しくは、『1.1.1 カスタマイズの
仕組み』を参照してください。
使用したいアイコンに対するアクセス権を作成または取得します。3 つのサイズのアイコン
(16x16 ピクセル、32x32 ピクセル、および 64x64 ピクセル) が必要です。
アイコンの変更をテストできるように、.odp 拡張子を持つファイルを IBM Connections に追加
します。
手順
この手順では、.odp ファイルに関連付けられたファイル・タイプ・アイコンをオーバーライドしま
す。
1.
2.
3.
4.
5.
カスタマイズ・ディレクトリー (例えば共通カスタマイズ・ディレクトリー内のイメージ・
ディレクトリー) にイメージを保存します。
a. イメージ・ディレクトリーを次のカスタマイズ・ディレクトリーに作成します。
<customizationDir>¥common¥nav¥common¥styles¥
b. 3 つのイメージ・ファイルを新規イメージ・ディレクトリーにコピーします。例えば、
Lotus_Symphony_16.png、Lotus_Symphony_32.png、Lotus_Symphony_64.png です。
(オプション) ご使用のブラウザーにイメージが表示されるかを確認します。イメージは
http://<server>:<port>/files/nav/common/styles/images/<imageFileName> で表示します。
<customizationDir>¥common¥nav¥common¥styles¥ に”base”という名前のディレクトリー
を作成します。
ファイル・タイプ・アイコンを制御するインストール済みスタイル・シートをカスタマイズ・
ディレクトリーにコピーします。
a. <WAS_home>¥Activities.ear¥oawebui.war.¥nav¥common¥styles¥base ディレクトリーに
ナビゲートします。sprite-lconn.css スタイル・シート・ファイルはすべてのソース・
ディレクトリーで同一であるため、アプリケーションからファイルを使用できます。
b. sprite-lconn.css スタイル・シートを共通カスタマイズ・ディレクトリー
<customizationDir>¥common¥nav¥common¥styles¥base¥ にコピーします。カスタマイ
ズ・ディレクトリーについて詳しくは、『1.1.1 カスタマイズの仕組み』を参照してくだ
さい。
新しいロゴに合わせて、デフォルト・テーマのスタイル・シートをオーバーライドします。
a. カスタマイズ・ディレクトリー内の sprite-lconn.css スタイル・シートのコピーを開きま
す。
b. オーバーライドしたい拡張子のルールのある行を見つけます。例えば、.lconn-ftype16odp を検索して .odp 拡張子を持つファイルのルールを見つけます。
c.
d.
オリジナル・ルール内の拡張子に対する参照を削除します。.lconn-ftype16-odp、.lconnftype32-odp、および .lconn-ftype32-odp を行から削除します。
ルールを sprite-lconn.css スタイル・シートに追加し、インストール済みルールをオー
バーライドします。
33 of 247
e.
6.
7.
スタイル・シート内の他のルールをすべて削除します。IBM Connections は、ソース・ア
プリケーション・ディレクトリー内のインストール済みスタイル・シートからデフォル
ト・ルールをロードします。カスタマイズ済みスタイル・シートに残っているのは、デ
フォルト・ルールをオーバーライドする一連のルールのみです。
f.
sprite-lconn.css を保存します。
変更内容をテストします。
a. ブラウザー・キャッシュをクリアします。
b. ファイル アプリケーションにナビゲートし、アイコンの変更をテストするためにアップ
ロードした .odp ファイルを表示します。
他の人々に対して変更を有効にする準備ができたら、変更を公開します。この例では、変更は
すべてのアプリケーションに適用されるため、IBM Connections 構成ファイルを更新します。
変更の公開について詳しくは、『1.4 wsadmin ツールを使用したカスタマイズの公開』を参照
してください。
34 of 247
第3章
ホーム・ページのカスタマイズ
IBM Connections ホーム・ページ は、ユーザーが他の IBM Connections 機能からの要約
データを表示したり、興味のある場所へ素早くナビゲートしたりできる中心的なエリアです。この
セクションでは、ユーザーが利用できるウィジェットの選択を拡張する方法と、メニュー項目を追
加する方法について説明します。さらに、様々な IBM Connections 機能から生成されるメール通知
をカスタマイズする方法についても説明します。
3.1. 「始めに」タブのカスタマイズ
「始めに」タブは、IBM Connections バージョン 3.0 以降の ホーム・ページで表示されます。この
タブでは、ユーザーがより迅速に本製品について学習して本製品を使用し始めることができるよう
になっています。既存ページ内の情報を変更したり、ページを追加/削除したりすることで、「始め
に」タブをカスタマイズできます。「始めに」タブの内容をカスタマイズするには、
gettingstarted-config.xml ファイルを変更します。
デフォルトでは、「始めに」タブは 3 つのページで構成されていて、以下のラベルが付いた縦並び
のタブ形式になっています。



ようこそ
共有
探索
始める前に
IBM Connections サーバーを再始動することなく変更を表示できるように、カスタマイズ・デバッ
グ機能をオンにします。カスタマイズ・デバッグについて詳しくは、『1.2 IBM Connections カス
タマイズ変数』を参照してください。
手順
この手順では、社内 Web サイトでホストされる情報が記載されたページを追加します。
ヒント: ページを削除するには、そのページを表す <step> 要素を見つけ、その enabled 属性の値を
false に変更します。
1.
wsadmin ツールで Home page 構成ファイルにアクセスして、そのファイルをチェックアウト
します。
a.
次のコマンドで Home page アプリケーションの構成ファイルにアクセスします。
b.
次 の コ マ ン ド で Home page 構 成 フ ァ イ ル を チ ェ ッ ク ア ウ ト し ま す 。
HomepageCellConfig.checkOutGettingstartedConfig("<working_directory>
","<cell_name>")
説明:


<working_directory> は、構成ファイルのチェックアウト時に構成ファイルの一時コ
ピーを保管するために Connections で使用されるディレクトリーです。
<cell_name> は 、 IBM Connections ア プ リ ケ ー シ ョ ン を ホ ス ト す る WebSphere
Application Server セルの名前です (大文字と小文字の区別があります)。
例:
35 of 247
重要: この構成ファイルをチェックインするまでは、wsadmin セッションを閉じないでください。
構成ファイルのチェックアウトについて詳しくは、『1.4 wsadmin ツールによるカスタマイズの公
開』を参照してください。
2.
3.
4.
5.
6.
7.
8.
9.
gettingstarted-config.xml ファイルを一時的にチェックアウトした場所にナビゲートします。
テキスト・エディターで gettingstarted-config.xml ファイルを開きます。
いずれかの <step> 要素をコピーして、この新規ページの上に表示したいページを識別する
<step> 要素の後に、コピーした要素を貼り付けます。縦並びのページの順序は、<steps> ブ
ロック内のステップの順序を反映します。
以下のいずれかの方法でページ・ラベルを変更します。
 タイトル・キーを任意のテキストで置き換えます。例えば、「ようこそ」ページのタイト
ルは jsp.start.step1.tab.title キーによって定義されます。jsp.start.step1.tab.title を任意のテ
キストで置き換えます。
bundle 属性では、リソース・バンドルの保管場所が識別されます。タイトル要素自体には、
タイトル・ストリングのキー値が含まれます。
 対応するリソース・バンドル内に定義するキーを指定します。さらに、このリソース・バ
ンドルも定義します。キーを使用すると、変換がサポートされます。例えば、
jsp.start.step1.tab.title キーは、Home page WAR ファイル内の
com.ibm.lconn.homepage.resources.nls.jsp.jsp_resources リソース・バンドルに保管され
ます。gettingstarted-config.xml ファイル内の既存のキーを置き換え、
<customizationDir>¥strings ディレクトリーに保存するファイル内でこの新規キーの値を指
定します。製品ストリングのカスタマイズについて詳しくは、『2.2 製品ストリング(文
字列)のカスタマイズ』を参照してください。
<body-links> 要素を使用して、ページ本文に表示する内容を指定します。
この要素は、ホーム・ページ アプリケーションと同じドメインを使用して http プロトコルお
よび https プロトコルでアクセスできるようにする必要があります。以下に例を示します。
gettingstarted-config.xml ファイルを保存します。
次のコマンドで gettingstarted-config.xml ファイルをチェックインします。
{{{HomepageCellConfig.checkInGettingstartedConfig("","")}}}
<working_directory> および <cell_name> は、ファイルのチェックアウト時に指定した値と同
じです。例:
構成ファイルのチェックインについて詳しくは、『1.4 wsadmin ツールを使用したカスタマイ
ズの公開』を参照してください。
versionStamp 構成プロパティーの値を更新して、他のユーザーが変更箇所を使用できるよう
にします。詳しくは、『1.4 wsadmin ツールを使用したカスタマイズの公開』を参照してくだ
さい。.
36 of 247
3.2. IBM Connections ホーム・ページ にタブを追加
IBM Connections ホーム・ページ にタブを追加して、追加の情報やリンクを表示できます。例えば、
IBM Connections ホーム・ページ をイントラネットのランディング・ページとして使用する場合、
Home page 上に社内/社外 Web ページのタブを組み込むことができます。また、IBM Connections
アプリケーションへのリンクを追加することもできます。
下記の画面キャプチャーに示されるように、ホーム・ページ にはデフォルトで 3 つのタブがあり、
以下のラベルが付いています。



始めに
更新: このタブには、要約ビューが表示されます。
検索: このタブには、統合検索機能があります。
ホーム・ページに表示されるタブは、ソース・アプリケーション・ファイル内にあるテンプレート
によって決まります。必要な HTML を追加してタブを作成することで、テンプレートをカスタマイ
ズできます。このテンプレートは、ホーム・ページ がインストールされている WebSphere
Application Server の「installedApps」ディレクトリーに入っています。
基本的に、タブは、簡単な HTML の記述で追加できます。希望の場所を指し示す標準 HTML リン
クを作成し、このリンクをリスト項目タグ内にラップします。ページに組み込まれる CSS では、
要素に必要なすべてのスタイルが使用されて、タブの外観が他のタブと整合したものになります。
例えば、次の HTML スニペットでは、http://www.ibm.com にリンクするタブが「IBM」というラベ
ルで生成されます。
タブを多く追加すると、ページのレイアウトが変わったり、ページ上の他の要素 (検索フィールド
など) が隠れたりしてしまう可能性があります。中央の場所から複数のリンクを提供したい場合は、
すべてのリンクが含まれたページをロードするタブを 1 つ追加することを検討してください。この
方法により、リンクを分類してユーザー・インターフェースの整合性を保つことができます。ほか
には、ナビゲーション・バーにメニュー項目を追加することもできます。メニューの追加について
詳しくは、『2.1 ユーザー・インターフェースを企業ブランドおよびポリシーに適合させる』の
『リンクまたはメニューをナビゲーション・バーに追加する』を参照してください。
37 of 247
始める前に
IBM Connections サーバーを再始動することなく変更を表示できるように、カスタマイズ・デバッ
グ機能をオンにします。カスタマイズ・デバッグについて詳しくは、『1.2 IBM Connections カス
タマイズ変数』を参照してください。
手順
今回の例では、IBM Connections ホーム・ページ の外側で別のページにリンクするタブを追加する
ことにします。
1. デフォルト・ファイルをカスタマイズ・ディレクトリーにコピーします。
a. アプリケーション・ソース・ディレクトリー <WAS_home>¥profiles¥<profile_name>¥
installedApps¥<cell_name>¥Homepage.ear¥homepage.war¥web¥jsp¥common¥ に ナ ビ
ゲートします。ソース・ディレクトリーについて詳しくは、『1.3 ソース・アプリケー
ション・ファイル』を参照してください。
b. tabs.jspf フ ァ イ ル を ホ ー ム ・ ペ ー ジ の カ ス タ マ イ ズ ・ デ ィ レ ク ト リ ー
<customizationDir>¥homepage¥web¥jsp¥common¥ にコ ピーします。カスタマイズ・
ディレクトリーについて詳しくは、『1.2 IBM Connections カスタマイズ変数』を参照し
てください。
2. tabs.jspf テンプレートにタブを追加します。
a. <customizationDir>¥homepage¥web¥jsp¥common¥ にナビゲートします。
b. テキスト・エディターで tabs.jspf のコピーを開きます。
c. 今回の例にあるサンプル <%-- IBM Tab --%> に表示される行を、コピーした tabs.jspf
ファイルにコピーします。その行を「Widgets Tab」と「Admin Tab」のセクション間に
追加します。
ヒント: Home page の「Admin Tab」セクションの前にタブを追加することで、ヘルプ・コン
テンツとの整合性が保証されます。ヘルプでは、「管理」タブがリスト内の最後のタブとして
識別されます。
この tabs.jspf ファイルには、4 つのタブの定義が含まれたセクションがあります。最初の 3 つ
のタブは、管理者以外のユーザーに表示されるデフォルト・タブです。<%-- Admin Tab --%>
というラベルの付いたタブは、必要な特権を持つユーザーが ホーム・ページ アプリケーショ
ンにログインしたときに表示される「管理」タブです。
38 of 247
<!-- Getting Started Tab -->
<% if (selected.equalsIgnoreCase("gettingStarted")) {%>
<li id="gettingStartedTab" class="lotusSelected"><a href="javascript:void(0);"
role="button" aria-pressed="true"><core:message
label="${gettingStarted}"/></a></li><% } else { %>
<li id="gettingStartedTab"><a
href="${pageContext.request.contextPath}/web/gettingStartedPage.action"
role="button" aria-pressed="false"><core:message label="${gettingStarted}"
/></a></li><% } %>
<%-- Updates Tab --%>
<% if (selected.equalsIgnoreCase("updates")) {%>
<li id="mainTab" class="lotusSelected"><a href="javascript:void(0);" role="button"
aria-pressed="true"><core:message label="${updates}"/></a></li><% } else { %>
<li id="mainTab"><a
href="${pageContext.request.contextPath}/web/displayHomePage.action" role="button"
aria-pressed="false"><core:message label="${updates}" /></a></li><% } %>
<%-- Widgets Tab --%>
<% pageContext.setAttribute("widgetTabStyle", "display:none;"); %>
<c:if test="${ sessionScope.isWidgetTabEnabled
}"><%pageContext.setAttribute("widgetTabStyle", "display:block;"); %>
</c:if><% if (selected.equalsIgnoreCase("widgets")) {%>
<li id="widgetTab" class="lotusSelected" style="${widgetTabStyle}"><a
href="javascript:void(0);" role="button" aria-pressed="true"><core:message
label="${widgets}"/></a></li><% } else { %>
<li id="widgetTab" style="${widgetTabStyle}"><a
href="${pageContext.request.contextPath}/web/widgets" role="button" ariapressed="false"><core:message label="${widgets}"/></a></li><% } %>
<%-- IBM Tab --%>
<li id="newTab" style="${widgetTabStyle}"><a href="http://www.ibm.com"
role="button" aria-pressed="false">New Tab</a></li>
<%-- Admin Tab --%>
<c:if test="${ sessionScope.isAdmin }"><% if (selected.equalsIgnoreCase("admin"))
{%>
<li id="adminTab" class="lotusSelected"><a href="javascript:void(0);" role="button"
aria-pressed="true"><core:message label="${admin}"/></a></li><% } else { %>
<li id="adminTab"><a
href="${pageContext.request.contextPath}/admin/openAdminPage.action" role="button"
aria-pressed="false"><core:message label="${admin}"/></a></li><% } %>
</c:if></ul><script type="text/javascript">dojo.require("lconn.core.aria.Toolbar");
new lconn.core.aria.Toolbar("pageTabs");
</script>
3.
4.
d. tabs.jspf ファイルを保存します。
変更内容をテストします。
a. ブラウザー・キャッシュをクリアします。
b. ホーム・ページ にナビゲートして変更箇所を表示し、タブをテストします。
versionStamp 構成プロパティーの値を更新して、他のユーザーが変更箇所を使用できるよう
にします。詳しくは、『1.4 wsadmin ツールを使用したカスタマイズの公開』を参照してくだ
さい。
3.3. IBM Connections ホーム・ページ でウィジェットを
追加/削除
IBM Connections ホーム・ページ は、1 つ以上の IBM Connections 機能 (ブログやプロフィールな
ど) から取得された要約情報を提供する多くのウィジェットで構成されます。ユーザーは各ウィ
ジェットをページ上に配置して、各自のニーズに合わせて調整された IBM Connections の要約
ビューを作成できます。ユーザーが使用できるウィジェットは、ページの横に表示されます。使用
可能なウィジェットのリストは、管理者が設定できます。IBM Connections ホーム・ページ にイン
39 of 247
ストールされている任意のウィジェットを無効にしたり、使用可能な新規のウィジェットを追加し
たりできます。
IBM Connections ホーム・ページ で管理オプションを有効にするには、最初に、管理権限を付与す
る必要のあるユーザーまたはグループを特定します。選択したユーザーまたはグループにアクセス
権限を付与するには、WebSphere 管理コンソールを使用します。セキュリティー・ロール・マッ
ピング・フォームにアクセスするには、管理コンソールにログインし、「アプリケーション
(Applications)」タブを展開して、「エンタープライズ・アプリケーション」オプションを選択し
ます。当該サーバーにインストールされているアプリケーションのリストがページに表示されます。
「Homepage」というアプリケーションを選択します。プロパティー・ページがロードされたら、
「ユーザー/グループへのセキュリティー・ロールのマッピング」オプションを選択します。次の図
のような画面が表示されます。
「マップされたユーザー」というラベルの列では、IBM Connections Home page に対して特定の
ロールを持つすべてのユーザーが識別されます。「管理」行の「マップされたユーザー」列にエン
トリーがない (さらに、いずれのボックスも選択されていない) 場合は、アプリケーションの管理者
としてユーザーがセットアップされていません。デフォルトのインストール時には、管理者は設定
されません。「選択」列のボックスにチェック・マークを付け、表の上部にある「ユーザーの検
索」をクリックすれば、システムに対して管理者とみなすユーザーをユーザー・レジストリーで検
索できます。
40 of 247
次の図のような画面が表示されます。この画面を使用して、必要なユーザーを IBM Connections
ホーム・ページ の管理者ロールに追加します。
「選択可能 (Available)」リストでユーザーの名前を見つけ、右矢印ボタンをクリックして、その
ユーザー名を「選択済み」リストに追加します。次に、「OK」をクリックして変更内容を受け入
れ、WebSphere 管理コンソールのプロンプトに従って構成を保存します。アプリケーションを再
始動すると、選択したユーザーがログイン時に IBM Connections ホーム・ページ の管理セクショ
ンにアクセスできるようになります。次の図に示されているように、「管理」タブがページに表示
されます。
管理セクションが使用可能になったら、必要に応じてウィジェットを有効/無効にできます。このプ
ロセスは複雑ではなく、すぐに実行できます。無効にされたウィジェットは、IBM Connections
ホーム・ページ の右側にあるメニューに表示されなくなります。ユーザーがそのウィジェットを自
分のページにすでに配置している場合でも、そのウィジェットはそのユーザーに対して表示されな
くなります。IBM Connections ホーム・ページ でウィジェットを有効にすると、そのウィジェット
はメニューに表示され、ユーザーが選択できるようになります。次の図に示されているように、管
理ページにそのオプションが表示されます。
41 of 247
1 つのフォームに、現在有効なウィジェットのリストが表示されます。有効な任意のウィジェット
を無効にするには、対象のウィジェットを選択し、「使用不可」をクリックします。これにより、
そのウィジェット名が無効ウィジェット・リストに移動します。無効なウィジェットを有効にする
には、無効ウィジェットのリストからウィジェットを選択し、「使用可能」をクリックします。こ
の変更は直ちに有効になりますが、ユーザーがページを更新したり、IBM Connections ホーム・
ページから一旦離れて再度戻ってきたり、一旦ログアウトして再度ログインしたりするまで、この
変更は表示上は反映されません。
このページでユーザーが使用できるオプションは他にもあります。ユーザーはウィジェットを編集、
削除、または追加できます。ウィジェットを追加するには、「別のウィジェットの追加」をクリッ
クし、表示されたフォームに入力します。このフォームには以下の情報を入力する必要があります。



ウィジェット・タイトル
ウィジェット記述子の場所を示す URL
「更新」タブまたは「ウィジェット」タブに表示される場所
これらの情報を入力してフォームを送信すると、新しいウィジェットが無効ウィジェット・リスト
に表示されます。IBM Connections ホーム・ページ でユーザーがこのウィジェットを使用できるよ
うにするには、このウィジェットを有効にする必要があります。以下の入力フォームのサンプルに、
予期される値の例を示します。
42 of 247
前提条件が満たされるまでウィジェットを有効にしたい場合を除き、これ以外のフォーム・オプ
ションは不要です。例えば、リスト内のいずれかの IBM Connections アプリケーションに対する
API 呼び出しがウィジェットで必要となる場合は、依存関係の対象アプリケーションを示すボック
スを選択する必要があります。
3.4. IBM Connections ホーム・ページ 用のウィジェット
を作成
このセクションでは、IBM Connections Home page でデプロイする基本的なウィジェットを作成す
る方法について説明します。Web アプリケーションとしてデプロイされるウィジェットのファイル
構造について説明します。また、単純な「Hello World」ウィジェットの作成方法に関するチュート
リアルと、このウィジェットをさらに対話型にする方法についても説明します。
43 of 247
IBM Connections ホーム・ページ ウィジェットは iWidget の仕様に基づいています。ホーム・ペー
ジ に固有のカスタム・ライブラリーが実装されます。このライブラリーは、リリースが切り替わる
ときに変更されることがあります。このライブラリーは、すでに使用可能になっている基本ウィ
ジェットを使いやすくするために用意されています。
このセクションを続行するには、使用されている様々なテクノロジー (JavaScript、XML、HTML、
CSS など) を良く理解しておくことが重要です。また、カスタム Dojo 1.x ウィジェットの作成経験
が多少あることが望まれます。カスタム Dojo 1.x ウィジェットは、IBM Connections ホーム・ペー
ジ のウィジェットの作成を理解する上で欠かせません。
ウィジェットのデプロイ方法については、セクション『3.3 IBM Connections Home page でウィ
ジェットを追加/削除』で説明したため、このセクションでは説明しません。
3.4.1 基本 iWidget の作成
iWidget は、IBM Connections ホーム・ページに新規機能を追加するための基本的なビルディング・
ブロックです。簡単に言うと、iWidget は単一の XML ファイル記述子で構成されます。この記述子
ファイルは iWidget の名前で始まり、その後にいくつかの使用可能な iWidget 属性が続きます。
基本 iWidget の最も簡単な開始点としては、「Hello World」ウィジェットを作成してください。今
回の基本的な例では、iw:content 属性のみが使用されます。この属性自体に iWidget の HTML テン
プレートが含まれます。このテンプレートはフレームワークによってコピーされ、iWidget がデプ
ロイされるページの Document Object Model (DOM) に挿入されます。このウィジェットでは、
iWidget コンテナーに「Hello World!」というテキストが単に表示されるだけです。
このウィジェットを作成するには、次のコードを使用してテキスト・ファイルを作成します。
<iw:iwidget name="helloWorld"
xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget">
<iw:content mode="view">
<![CDATA[
<div>
<div id="helloWorld">Hello World!</div>
</div>
]]>
</iw:content>
</iw:iwidget>
IBM Connections ホーム・ページ では記述子ファイルのロードに HTTP/HTTPS プロトコルが使用
されるため、このファイルは HTTP サーバー (IBM HTTP Server (IHS) や Apache Web サーバーな
ど) に配置する必要があります。
今回の例は非常に基本的なものです。このような XML 記述子ファイルを使用すれば、JavaScript
ライブラリーをインポートし、フレームワークにパラメーターを渡すことができます。iWidget 記
述子のコンテンツ・セクションには、HTML のスタイルを設定するインライン JavaScript や CSS
が含まれた、より複雑なテンプレートを組み込むことができます。このコンテンツ・セクション内
の HTML は最終的に、iWidget がレンダリングされるページ内の既存の CSS スタイルに従うこと
に注意してください。このスタイルの継承は、あるアプリケーションでページ上にデプロイされる
iWidget が親アプリケーションの外観を継承できるため便利です。同じ iWidget でも、別のアプリ
ケーションでデプロイされると外観が変わる可能性があります。
44 of 247
3.4.2 基本 iWidget 用に JavaScript リソース・ファイルを
インポート
前の例の iWidget は非常に基本的なものです。そのサンプル iWidget は、単純なテキスト・メッ
セージを表示する静的な iWidget であり、別のページに投稿される HTML フォームを提供するもの
です。ただし、拡張 JavaScript を使用したり、JavaScript ライブラリーをインポートしたりすれば、
iWidget をさらに対話型にすることができます。スクリプト・タグを使用して JavaScript を HTML
テンプレートに組み込むことができますが、JavaScript 関数の外部ファイルを参照することも可能
です。
iWidget 記述子で定義できるリソースは、フレームワークによってページにインポートされ、
iWidget からそのページにアクセスできるようになります。このフレームワークでは、テンプレー
トと関数コードを分離できます。iw:resource では、インポート対象ファイルの URI が含まれる
URI パラメーターが使用されます。iWidget のインポート先のアプリケーションに関係なく iWidget
でファイルを検出できるように、絶対 URI を指定してください。この URI は、ページのレンダリ
ング時にクライアント・サイドでインポートされるため、クライアント・ブラウザーからのみアク
セスできるようになっていなければなりません。次の例では、iw:resource セクションを組み込むよ
うに iWidget が変更されています。
<iw:iwidget name="helloWorld"
xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget">
<iw:resource uri="<servername>/helloWorldFunctions.js" />
<iw:content mode="view">
<![CDATA[
<div
<div id="helloWorld">Hello World!</div>
<a href="javascript:void(0);" onClick="showMessage();" >
Click me!
</a>
</div>
]]>
</iw:content>
</iw:iwidget>
この iw:resource セクションは URI /helloworldfunctions.js を指しています。この JavaScript ファイ
ルがページに組み込まれ、 HTML テンプレート内のコンテンツ・セクションでその関数にアクセス
できるようになります。このテンプレートでは、アンカー要素によって、組み込まれた JavaScript
リソース・ファイル内に定義された関数が呼び出されます。リソース・ファイル内に定義された関
数は、スクリプト・タグを使用して HTML 文書内に定義された JavaScript 関数と全く同じです。
// JavaScript function to show a message
function showMessage() {
a message string
var msg = "Hello again, world!";
alert(msg);
}
このファイルに含まれるいずれの関数にも、このようにしてアクセスできます。このため、iWidget
の設計タスクを実行するための関数からなるライブラリーを構築できます。この時点で iWidget が
受ける制限は、JavaScript 自体の制限のみです。
45 of 247
3.4.3 iWidget の iScope および iContext を使用
iWidget の仕様には、基本的なテンプレートの表示以上のことを行いたい開発者向けの機能があり
ます。この機能は、iWidget の iContext によって提供されます。この機能について詳しくは、オン
を参照してください。 この仕様に記載されているすべてのものが
ラインの iWidget 1.0 仕 様
IBM Connections ホーム・ページ の 3.0.1 リリースで使用できるわけではありませんが、有用な
ツールを開発者に提供するために必要となる機能を入手できます。
次の例は、iWidget XML 記述子に組み込むことができる iScope オプションを示したものです。
<iw:iwidget name="helloWorld"
xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget" iScope="helloWorld">
<iw:resource uri="/helloworldfunctions.js" />
<iw:content mode="view">
<![CDATA[
<div>
<div id="helloWorld" Hello World!></div>
<a href="javascript:void(0);"
onClick="helloWorld.showMessage();">Click me!></a>
</div>
]]>
</iw:content>
</iw:iwidget>
このコード・サンプルは、前述のオリジナルの例を基にして、記述子の 1 行目に iScope プロパ
ティーを単に追加したものです。iScope プロパティーは iw:iwidget セクションに挿入されています。
この値は、JavaScript オブジェクト/クラスの値にする必要があります。これは、iWidget がページ
上に配置されるか、またはページにおいてレンダリングされるときに初期化されるクラスです。こ
のクラスを初期化するには、このクラスをどこかで定義する必要があります。または、今回組み込
んだリソース・ファイルでその定義を見つけてもかまいません。iScope が参照するクラスが初期化
されると、iContext と呼ばれるプロパティーがそのクラスに追加されます。これは、フレームワー
クで提供されるべき iWidget 機能をすべて提供するオブジェクトです。
サンプル・オブジェクトを以下に示します。
var helloWorld = {
msg1: "Hello World Class Loaded",
msg2: "Hello World, again",
onLoad: function() {
alert(this.msg1);
},
showMessage:function() {
alert(this.msg2);
}
};
このサンプル・オブジェクトの名前は、iWidget 記述子の iScope パラメーターと同じです。このオ
ブジェクトが作成されると、その onLoad メソッドが呼び出されます。このメソッドは、厳密には
クラスのコンストラクターではありませんが、クラスのコンストラクターとして扱うことができま
す。このメソッドに、オブジェクトが作成されたことをユーザーに知らせるなどのためにウィ
ジェットで必要となる任意の初期化コードを指定します。このクラスによって、このクラスを有効
範囲とする 2 つのメッセージが定義されます。最初のメッセージは、クラスがロードされたことを
ユーザーに通知します。2 番目のメッセージは、ユーザーがリンクをクリックしたときに
表示されます。前の例でリンクから呼び出された関数は、このクラスのメソッドになるため、
「helloWorld.showMessage()」を使用して呼び出す必要があります。
46 of 247
前述のとおり、ページ上でインスタンス化される iScope クラスには、iScope クラスに追加の
iWidget 機能を提供する iContext オブジェクトへの参照となる属性セットも含まれます。これにつ
いて最初に注意すべき機能は関数 iContext.getElementById(elemId) です。iContext オブジェクトは
理論的には iScope クラスのメンバーであるため、この iContext を使用すれば任意の場所でこのオ
ブジェクトを参照できます。functioniContext.getElementById(elemId) は、iWidget 記述子のテンプ
レート内から DOM ノードに対する参照を返します。ここで使用している記述子ファイル内には、
「helloWorld」という ID を持つ div があります。次のメソッドをクラスに追加すると、対象 DOM
ノード内にあるテキストを簡単に変更できます。
alterText:function() {
var helloDiv = this.iContext.getElementById('helloWorld');
helloDiv.innerHTML="Hello New World!";
}
この関数をクラスに追加することで、そのクラスがロードされたときに、この関数が使用可能
になります。下記のクラス定義では、alert の後の呼び出しによって、クラスがロードされたこ
とがユーザーに通知されます。このメッセージは画面に表示されますが、ユーザーはウィ
ジェット内のテンプレートにオリジナルのテキストがあることを確認できます。メッセージが
閉じられると、メッセージが変わります。
var helloWorld = {
msg1: "Hello World Class Loaded",
msg2: "Hello World, again",
onLoad: function() {
alert(this.msg1);
alter our text
this.alterText();
},
showMessage:function() {
alert(this.msg2);
},
alterText:function() {
var helloDiv = this.iContext.getElementById('helloWorld');
helloDiv.innerHTML="Hello New World!";
}
};
ウィジェットを作成する場合は、関数でロードされるファイルを作成するよりも、このようにコー
ディングする方法を使用することをお勧めします。例えば、名前は同じだが機能が著しく異なる関
数を定義する 2 つのカスタム・ウィジェットが別々の開発者によって作成されたとします。これら
のウィジェットを 1 つのページに配置できます。この記事で説明したメソッドを使用すれば、必要
な関数を指定の名前空間に保つことができます。その結果、関数の競合が回避されます。
3.4.4 iWidget 内で Dojo ウィジェットを使用
JavaScript リソース・ファイルをインポートして iWidget テンプレート内の DOM ノードを参照で
きれば、Dojo フレームワークからウィジェットをインポートすることもできます。Dojo ウィ
ジェットの作成方法について説明することはこのトピックの範囲を超えてしまいますが、機能豊富
な Dojo フレームワークをカスタム iWidget で利用できるように Dojo ウィジェットを作成する方法
を示すことは十分に関連性があります。このセクションでは、独自のテンプレートを持つ Dojo
ウィジェットの作成方法と、そのウィジェットを iWidget フレームワーク内にラップする方法につ
いて簡単に説明します。
47 of 247
まず、次の例に示す基本的な XML 記述子から始めます。
<iw:iwidget name="helloWorld"
xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget">
<iw:resource uri="/helloWorldFunctions.js" />
<iw:content mode="view">
<![CDATA[
<div
<div id="helloWorld"></div>
</div>
]]>
</iw:content>
</iw:iwidget>
このサンプル・カスタム Dojo ウィジェットには独自の HTML テンプレートが含まれるため、この
Dojo ウィジェット・テンプレートを組み込むための空の div タグがあれば十分です。Dojo ウィ
ジェットを挿入するには、iw:content セクションにコードを追加しさえすればよくなります。次の
例に示されているように、iContext.getElementById を使用してこの div タグを参照し、Dojo ウィ
ジェットの domNode をそこに挿入します。
dojo.registerModulePath('DojoHello','servername/DojoHello');
dojo.require('DojoHello.helloWorld');
var helloWorld = {
dhw: null,
onLoad: function() {
var container = this.iContext.getElementById('helloWorld');
this.dhw=new DojoHello.helloWorld({iContext:this.iCOntext});
container.appendChild(this.dhw.domNode);
}
};
iScope によって作成されるクラスには、多くの変更が含まれます。このリソース・ファイルには、
(Dojo.registerModulePath を使用して) Dojo ウィジェットのファイルが配置される場所が追加され
ています。この結果、登録された名前空間内の任意の項目が指定の場所で Dojo によって検索され
ます。この関数とその他の Dojo 関数について詳しくは、Dojo の Web サイトにある Dojo の資料を
参照してください。また、必要なウィジェットを iWidget XML 記述子内の iWidget テンプレートに
ロードするように Dojo に命令する関数も追加されています。onLoad メソッドが呼び出されると、
DojoHello.helloWorld という新規の Dojo ウィジェットがインスタンス化されます。この Dojo ウィ
ジェットには、iWidget テンプレートの div に追加できる domNode 属性があります。
次に、この iWidget に必要な Dojo ウィジェットを作成します。このウィジェットは、名前空間に
よって指定された場所にあるファイル helloWorld.js に保管されていなければなりません。また、こ
のファイルは、他のファイルと同様にクライアント・ブラウザーからアクセスできなければなりま
せん。Dojo ウィジェットの宣言は、通常と全く同じように行います。dijit._Templated クラスと
dijit._Widget クラスを継承することで、HTML テンプレート・ストリングを指定できます。また、
iWidget フレームワークによって提供される有用な関数に Dojo ウィジェットがアクセスできるよう
に、このウィジェットに iContext を渡すことも有効です。前述の例では、メソッド pressMe をそ
の onClick イベントに関連付けるリンクが含まれたテンプレート・ストリングを単に指定しました。
iContext については何も行っていませんが、作成中に後で必要になった場合は iContext を使用でき
ます。この例にあるコードでは、Dojo ウィジェットから関数を実行するリンクが iWidget 内に生成
されます。この関数からは、メッセージ付きのプロンプトがユーザーに出されます。
48 of 247
dojo.provide('DojoHello.helloWorld');
// Declaration of our dojo widget
dojo.declare("DojoHello.helloWorld", [dijit._Widget,dijit._Templated], {
// Holder for the passed in iContext
object iContext: null,
// String for our HTML template
templateString: "<a href=¥"javascript:void(0);¥"
dojoAttachEvent=¥"onclick:pressMe¥">Press me!</a>",
// Constructor for the Dojo
});
widget postCreate: function() {
// Nothing necessary to do on startup
},
pressMe: function() {
alert("Hello from Dojo!");
}
3.4.5 Dojo および iWidget の iContext を使用してデータを
要求
多くのウィジェットでは、他のアプリケーションからデータを要求できなければなりません。Dojo
フレームワークには、データの要求と変換の両方を行うためのユーティリティー関数が用意されて
います。この関数は標準 JavaScript メソッドを使用して実装できますが、Dojo などのフレーム
ワークを使用してブラウザー機能の問題を避けることをお勧めします。
次のコードは、基本的な XML 記述子を示したものです。
<iw:iwidget name="helloWorld"
xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget"
iScope="helloWorld">
<iw:resource uri="/helloworldfunctions.js"/>
<iw:itemSet id="urls">
<item id="url1" value="http://server/data.xml"></item>
<item id="url2" value="http://server/data.json"></item>
</iw:itemSet>
<iw:content mode="view">
<![CDATA[
<div id="helloWorld"/>
]]>
</iw:content>
</iw:iwidget>
49 of 247
なお、このサンプル・コードは少し変更されていて、iw:itemSet セクションが追加されています。
このセクションでは、iContext オブジェクトの作成時に名前と値のペアを iContext オブジェクトに
渡すことができます。iContext オブジェクトにアクセスできる場合は必ず、iContext オブジェクト
を使用して iWidget XML 記述子ファイルから値を取得できます。各 iw:itemSet 内には、ID (名前)
と値が指定された iw:item があります。iWidget 記述子ファイルには複数の
iw:itemSet を指定できます。また、各 iw:itemSet には複数の iw:item を指定できます。iContext オ
ブジェクトを使用して特定の iw:itemSet を参照するには、iContext.getItemSet(id) を使用します。
このメソッドは、渡された ID を持つ特定の項目セットへの参照を返します。iw:itemSet 内の
iw:item の値を取得するには、iContext.getItemSet(id) から返された参照を含むオブジェクトに対し
て getItemValue(id) メソッドを使用します。前の例では、iw:itemSet を使用して、データの取り出
し元となる様々な URL を保持していました。各 iw:item は、情報のフィードを提供する URL です。
ブラウザーのセキュリティー・モデルが原因で、ウィジェットのロード場所以外のサーバーから
データを要求することはできません。このセキュリティー・リスクはクロス・サイト・スクリプ
ティング (XSS) 攻撃と呼ばれ、深刻なセキュリティーの脆弱性と考えられています。JavaScript 関
数でロード元以外のドメインからデータの要求が試みられると、その要求は停止されます。この問
題を解決するため、iWidget フレームワークには、必要に応じて中間プロキシーを通るように URI
を書き換える関数が用意されています。このフレームワークが、データ要求のプロキシー処理を提
供または許可するアプリケーションの一部になっている場合は、この関数によって、要求が許可さ
れる URI に URI が書き換えられます。IBM Connections の場合は、外部データ要求を許可する構
成可能なセキュア・プロキシーがあります。管理者はセキュリティーを高めるために、データの要
求 元 の ド メ イ ン を 管 理 で き ま す 。 デ ー タ の 要 求 元 の URI を書 き換 えるには 、そ の URI を
iContext.io.rewriteURI(uri) メソッドに渡します。
50 of 247
次のコード例では、iw:itemSet にアクセスしてデータの要求元 URL のリストを取得しています。
dojo.declare("DojoHello.helloWorld", [dijit._Widget,dijit._Templated], {
// Holder for the passed in iContext object
iContext: null,
// String for the HTML template
templateString: "",
// Constructor for the Dojo widget
postCreate: function() {
// Get a uri from the itemsets
var items = this.iContext.getItemSet('urls');
var location = items.getItemValue('url1');
// Transform the location
var nLocation = iContext.io.rewriteURI(location);
// Create Dojo xhr request object
var bindArgs = { handleAs:text,
url:nLocation,
timeout:5000
};
// Create a GET request for the data
var req = dojo.xhrGet(bindArgs);
},
// Add a callback function to handle the returned data
req.addCallback(this,"result");
// This method handles the data returned by the GET request
result: function(data,evt) {
// Append data to the dom
this.resultContainer.innerHTML=data;
});
}
この例では iContext.io.rewriteURI(uri) メソッドによって、ある URL が、iw:item に保管された元の
値から、アクセス可能な URI に変換されます。要求によって返されるテキストは、Dojo ウィ
ジェット自体のテンプレート内の DOM に追加されます。純粋な JavaScript を使用するよりも
xmlHTTPRequests を作成した方が単純であるため、この例では Dojo.xhrGet メソッドを使用して
データを要求しています。
通常、要求によって返されるデータは、よりわかりやすいもの (グラフ・データの場合は視覚表示
など) に変換または解釈されます。また、このデータを使用して、ウィジェット・テンプレート自
体に挿入される HTML を作成することもできます。Web ベースの外部データ・ソースからデータ
を要求できれば、iWidget の用途は大幅に増えると考えられます。
51 of 247
3.5. IBM Connections 内で Google ガジェットを使用
3.5.1 Google ガジェットの概要
Google ガジェットは、IBM Connections の iWidgets に良く似た小さくて軽量のアプリケーション
です。ガジェットは XML リソース、HTML リソース、および Javascript リソースで構成されます。
Google では、http://www.google.com/ig/directory/ でガジェットのディレクトリーを公開してい
ます。Google では、ガジェットを Google サイト以外でも使用可能にするために、ガジェットの表
示に必要な HTML および Java スクリプトを返す Web サービスを提供しています。この Web サー
ビスの出力内容を iWidget 記述子内でラップすることで、IBM Connections ホーム・ページ でもガ
ジェットを使用できるようになります。なお、Web サービスとして使用できないガジェットや、
Google ドメイン内のサイトでしか表示されないガジェットもあります。
3.5.2 ガジェットの選択
Google ガジェットを IBM Connections ホーム・ページ に追加するには、最初に、iWidget ラッ
パーで使用するコードを生成します。必要なコードを作成するには、Google Page Creator ツール
を使用することを最もお勧めします。手順は次のようになります。
1.
次のリンクから Google ガジェット・ライブラリーを開きます。
http://www.google.com/ig/directory?synd=open
2.
3.
4.
5.
希望のガジェットを見つけ、「自分のウェブページに追加」ボタンをクリックします。
「タイトル」、「幅」、「高さ」、「枠線」などの表示設定を構成します。
「コードを取得」ボタンをクリックします。ボタンの下にコードが表示されます。
スクリプト・タグの src 属性をコピーします。この URL を iWidget ラッパー内で使用し
ます。
Business Quote of the Day ガジェットのサンプル URL を以下に示します。
http://www.gmodules.com/ig/ifr?url=http://googlegadgetworld.com/Great
Quotes/BusinessQuotes/businessmoney.xml&amp;synd=open&amp;w=320&amp;h
=210&amp;title=Business+Quote+of+the+Day&amp;border=%23ffffff%7C3px%2
C1px+solid+%23999999
52 of 247
3.5.3 iWidget ラッパーの作成
今回は、ガジェット用の iWidget ラッパーを作成するために、iWidget テンプレートとサーバー・
サイド・コードを使用してガジェットをラップします。ホーム・ページ で他のウィジェットと競合
する JavaScript が Google ガジェットに含まれている可能性があるので、iWidget 記述子内でガ
ジェットを分離するために、HTML の iframe が使用されます。サーバー・サイド・コードでは、
iframe 内にホスト対象の HTML ページが作成されます。この HTML ページには、Google ガジェッ
トの呼び出しとレンダリングに必要なコードが含まれています。
今回の例では、サーバー・サイド・コードに Java が使用されていますが、他の言語を使用しても
かまいません。
次のサンプル・テンプレートが iWidget 記述子として使用されます。
<iw:iwidget name="gadget"
xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget">
<iw:content mode="view">
<![CDATA[
<iframe scrolling="auto" width="100%" height="300px" frameborder="0"
src="<gadget wrapper url>">
</iframe>
]]>
</iw:content>
</iw:iwidget>
iframe 用の HTML ページを作成するために、次のコードが使用されます。
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head></head>
<body>
<%
StringBuffer url = new StringBuffer();
url.append("http://www.gmodules.com/ig/ifr?");
url.append(request.getQueryString());
%>
<script src="<%= url.toString() %>"></script>
</body>
</html>
53 of 247
Quote of the Day ガジェットの URL を挿入した結果の iWidget 記述子を以下に示します。
<iw:iwidget name="googleQuote"
xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget">
<iw:content mode="view">
<![CDATA[
<iframe scrolling="auto" width="100%" height="300px" frameborder="0"
src="/gadgetWrapper/gadgetWrapper.jsp?url=http://googlegadgetworld.com/GreatQuotes
/BusinessQuotes/
businessmoney.xml&amp;synd=open&amp;w=320&amp;h=210&amp;title=Business+Quote+of+th
e+Day">
</iframe>
]]>
</iw:content>
</iw:iwidget>
3.5.4 iWidget のデプロイ
Google ガジェットが iWidget 記述子内にラップされたら、そのガジェットをアプリケーション・
サーバー上にデプロイできます。IBM Connections ホーム・ページ に追加するときは、アプリケー
ションの URL を使用します。新規のウィジェットを ホーム・ページ に追加する方法について詳し
くは、『3.3. IBM Connections ホームページでウィジェットを追加/削除』を参照してください。
3.5.5 関連リンク
IBM Connections で Google ガジェットを使用する方法について詳しくは、以下のリンクを参照し
てください。
IBM Lotus Connections における Google ガジェットのデプロイとインプリメント
Lotus Widget Factory および Google ガジェットを使用した IBM Lotus Connections 2.5 のカスタマ
イズ
3.6. メール通知のカスタマイズ
IBM Connections には、新たに追加されたコンテンツを知らせる日次および週次のメール・ダイ
ジェストを送信する機能があります。デフォルト・テンプレートを変更することで、このメール・
ダイジェストをカスタマイズできます。
このメール・ダイジェストの内容は、FreeMarker エンジンに基づくテンプレートによってフォー
マットされます。IBM Connections 3.0.1 では FreeMarker バージョン 2.3.15 が使用されます。
FreeMarker テ ン プ レ ー ト ・ エ ン ジ ン に つ い て 詳 し く は 、 Web ペ ー ジ
http://freemarker.sourceforge.net/docs/index.html を参照してください。
54 of 247
日次ニュースレターのサンプル・テンプレートを以下に示します。
<#import "aggregated/style.ftl" as s>
<#import "aggregated/util.ftl" as u>
<#compress>
<@s.document "${u.resource('NEWSLETTER_TITLE_DAILY',
'${emailDigestBean.end?date}')}">
<@s.newsLetterDiv>
<@s.digestHeader emailDigestBean "${'daily'}">
</@s.digestHeader>
<#-- Putting qresponses as the first item -->
<#if (emailDigestBean.storiesStats["responses"]?? &&
emailDigestBean.storiesStats["responses"] > 0)>
<@s.digestSection emailDigestBean.stories["responses"]
"responses" emailDigestBean.storiesStats["responses"] >
</@s.digestSection>
</#if>
<#-- Now everything else -->
<#list emailDigestBean.stories?keys as storyCategory>
<#if storyCategory != 'responses'>
<@s.digestSection emailDigestBean.stories[storyCategory]
storyCategory emailDigestBean.storiesStats[storyCategory] >
</@s.digestSection>
</#if>
</#list>
<@s.digestFooter>
</@s.digestFooter>
</@s.newsLetterDiv>
</@s.document>
</#compress>
3.6.1 デフォルト・テンプレートの変更
デフォルト・テンプレートを変更するには、以下の手順を使用してください。
1.
2.
3.
4.
テキスト・エディターを使用して、次の場所にある dailyDigest.ftl テンプレート・ファイルと
weeklyDigest.ftl テンプレート・ファイルを変更します。
¥profiles¥¥config¥cells¥¥LotusConnections-config¥news¥email
ここには、WebSphere Application Server のインストール・ディレクトリーと、Deployment
Manager のプロファイル・ディレクトリー (通常は dmgr01) があります。
ファイルの変更内容を保存します。
WebSphere Integrated Solutions Console を使用して、すべてのノードを同期します。
News アプリケーションを停止して再始動します。
55 of 247
3.6.2 カスタム・テンプレートの作成
カスタム・テンプレートを作成するには、以下の手順を実行してください。
1.
2.
次のディレクトリーに、新規の FreeMarker テンプレート・ファイルを作成するか、または既
存のファイルをコピーします。
¥profiles¥¥config/cells¥¥LotusConnections-config¥news¥email
次の手順に従って、notification-config.xml ファイルにカスタム・テンプレートを登録します。
a. 『 1.4 wsadmin ツ ー ル を 使 用 し た カ ス タ マ イ ズ の 公 開 』 の 説 明 に 従 っ て 、 IBM
Connections マスター構成ファイルを使用するためのコマンド・ライン環境をセットアッ
プします。
b. LCConfigService.checkOutNotificationConfig("<temp_dir>","<cell_name>") コマンドを使
用して、通知構成ファイルをチェックアウトします。
c. テキスト・エディターを使用して、一時ディレクトリーにある notification-config.xml
ファイルを変更します。
d. 変更するテンプレートに固有のコードのセクションを見つけます。各ダイジェスト・タ
イプの ftl プロパティーの値を新規テンプレートのファイル名で置き換えます。
<type name="dailyDigest" notificationType="FOLLOW">
<channel name="email" enabled="true">
<property name="sender">[email protected]</property>
<property
name="ftl">{notification.source.url}/news/email/dailyDigest.ftl</property>
<property
name="bundlePath">{notification.source.url}/news/email/</property>
<property name="bundleName">notification</property>
</channel>
</type>
<type name="weeklyDigest" notificationType="FOLLOW">
<channel enabled="true" name="email">
<property name="sender">[email protected]</property>
<property
name="ftl">{notification.source.url}/news/email/weeklyDigest.ftl</property>
<property
name="bundlePath">{notification.source.url}/news/email/</property>
<property name="bundleName">notification</property>
</channel>
</type>
e.
f.
g.
h.
notification-config.xml ファイルを保存して閉じます。
次のコマンドで構成ファイルをチェックインして戻します。
LCConfigService.checkInNotificationConfig("<temp_dir>","<cell-name>")
WebSphere Integrated Solutions Console を使用して、すべてのノードを同期します。
IBM Connections のアプリケーション・サーバーをすべて停止して再始動します。
3.6.3 テキスト・ストリング(文字列)の変更
メール・ダイジェストで使用されるテキスト・ストリングを変更するには、以下の手順を実行して
ください。
1. テキスト・エディターを使用して、次のディレクトリーにある notification_.properties ファイ
ルを変更します。
¥profiles¥¥config¥cells¥¥LotusConnections-config¥news¥email
これは、言語のロケールです (例: notification_fr.properties)。
2. 変更内容を保存して、ファイルを閉じます。
56 of 247
3.
4.
WebSphere Integrated Solutions Console を使用して、すべてのノードを同期します。
News アプリケーションを停止して再始動します。
3.6.4 イメージのカスタマイズ
メール・ダイジェストで使用されるイメージをカスタマイズするには、以下の手順を実行してくだ
さい。
1.
2.
3.
4.
次のディレクトリーでイメージを見つけます。
¥profiles¥¥config¥cells¥¥LotusConnections-config¥news¥email¥images
カスタマイズするイメージを、同じファイル名で独自のものに置き換えます。
なお、このイメージは、各メール・ダイジェストにおいて MIME 添付ファイルとして送信さ
れます。そのため、イメージのサイズは小さくしてください。
Integrated Solutions Console を使用して、すべてのノードを同期します。
News アプリケーションを停止して再始動します。
3.6.5 関連リンク
IBM Connections のメール・ダイジェストの仕様: http://www10.lotus.com/ldd/lcwiki.nsf/dx/IBM_Connections_3.0.1_Email_Digest
FreeMarker のマニュアル: http://freemarker.sourceforge.net/docs/index.html
57 of 247
第4章
Tivoli Directory Integrator
データを IBM Connections プロフィール・データベースに追加するオプションとして、2 つのオプ
ションがサポートされています。1 つはプロフィール管理 REST API です。もう 1 つは、IBM
Connections 専用に作成された Tivoli Directory Integrator (TDI) (プラグイン付き) です。Tivoli
Directory Integrator を使用すれば、多種多様な API を使用できるため、外部リソースにアクセスし
てそこからデータを取得できるようにするプログラムを作成する場合にローレベルなプログラミン
グを行う必要が軽減されるという利点が生まれます。一方、プロフィール管理 REST API は、様々
なタイプのシステムからプロフィール・データを追加するために使用し、様々な言語で開発し、
様々なプラットフォームで実行することができます。プロフィール管理 REST API は、特定の複雑
な状況 (例えば、特定システム用の Tivoli Directory Integrator プラグインが十分に機能しなかったり、
まったく利用できなかったり、複雑すぎて開発できなかったりする場合) に使用できます。この章
では、Tivoli Directory Integrator の機能や、プロフィール・データベースにデータを追加するため
に Tivoli Directory Integrator を使用する正しい方法について説明します。
4.1. Tivoli Directory Integrator の概要
Tivoli Directory Integrator の内部アーキテクチャーはカーネルとコンポーネントの設計に基づいて
います。この設計のタイプでは、アダプター (コネクター) 経由で外部アプリケーションと通信する、
システムの中心部分 (カーネル) が存在します。Tivoli Directory Integrator のカーネル内部にある
データは Java オブジェクトとして表され、JavaScript (c) で操作できます。ただし、外部アプリ
ケーション・データには様々なタイプがあるため、最も適切なタイプで外部システムとデータをや
りとりするコネクターがカーネルに必要です。
アセンブリー・ラインとして編成されたカーネル内のデータ・フローにおいてコネクター間でデー
タが移動する場合、そのデータ・フローによって、コネクターがどのような順序になるのかと、処
理中にデータがどのように変換されるのかが定義されます。アセンブリー・ライン内では、ワー
ク・エントリーと呼ばれる Tivoli Directory Integrator オブジェクト (Java™ データ・コンテナー) に
よってデータが構造化されます。このオブジェクトには、データがそのデータの属性によって保持
されます。コネクターごとに、ソース・システムからワーク・エントリー属性 (または単に「ワー
ク属性」と呼ばれます) への構成可能なマッピングが含まれます。
例えば、HR データベースと LDAP サーバーがあり、全社員の役職を HR データベースから取得し
て、それを LDAP 内のユーザー・アカウントの適切な属性に当てはめる場合、以下の 2 つのコネク
ターが必要となります。


LDAP コネクター: LDAP サーバーとの間でデータの読み書きを行います。
JDBC コネクター: HR データベースからデータを読み取ります。
58 of 247
次の図はデータ・フローを表したものです。
最初の LDAP コネクターはイテレーター・モードで動作します。このコネクターでは、LDAP 内の
すべてのレコードが 1 つずつ調べられ、適切な属性 (ユーザー ID (UID) など) がユーザーの LDAP
オブジェクトから取得され、場合によっては何かしらの処理が行われて、その属性がワーク・エン
トリーに取り込まれます。その後で、LDAP ユーザー・アカウントからの UID 値を持つワーク・エ
ントリーが JDBC コネクターに渡されます。
注: ID は固有であることが重要です。これは、各種リポジトリー内のユーザー・レコードに関して
同様です。これにより、様々なシステムでユーザー・アカウント間やユーザー・レコード間に「リ
ンク」を作成できます。このような UID の好例として、ユーザーのメールや社員番号など、固有の
ユーザー・レコード ID があります。
JDBC コネクターは現行社員の役職を取得するものでなければなりません。最初に HR データベー
ス内でルックアップが作成され、LDAP からのユーザー ID (UID) の値に従ってレコードが検索され
ます。その後で、役職が別のワーク・エントリー属性に取り込まれ、そのワーク・エントリーが
LDAP コネクターに渡されます。この段階での LDAP コネクターは、LDAP サーバーで現行ワー
ク・エントリーの同一 UID 属性値を持つユーザー・レコードを検索して LDAP サーバー内のユー
ザー・オブジェクトに役職属性の値を取り込むことができるように、更新モードを使用するように
構成されていなければなりません。LDAP コネクターによって、LDAP 内の最後のユーザー・オブ
ジェクトが反復され、UID を持つ最後のワーク・エントリーが生成されて、この最後のワーク・エ
ントリーがアセンブリー・ラインを通ると、このアセンブリー・ラインは停止します。
4.2. カスタム Tivoli Directory Integrator アセンブリー・
ラインから IBM Connections にアクセス
LDAP、JDBC、JMS、SMTP、HTTP (クライアント)、JMX、JNDI、IBM MQ、Lotus Notes など、
様々なタイプのシステムやプロトコルで使用できる Tivoli Directory Integrator コネクターが多数存
在します。これらについては、Tivoli Directory Integrator 7.0 の資料にある次の章ですべて調べるこ
とができます。
http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/topic/com.ibm.IBMDI.doc_7.0/refere
nceguide10.htm?path=7_9_0_5_5_0#availability
59 of 247
また、IBM Connections には、プロフィール・データベース内のデータを操作するためのコネク
ターがさらに 4 つあります。




ProfileConnector: プロフィール・データベースの「社員 (Employee)」表、「プロフィール拡張
(Profile Extension)」表、および各種補助社員表のプロフィール・エントリーを検索、作成、更
新、およびリセットするためのコネクター。
http://www-10.lotus.com/ldd/lcwiki.nsf/dx/Using_the_ProfileConnector_ic301
PhotoConnector: プロフィール・データベースの「写真」表の写真エントリーを検索、作成、
更新、および削除するためのコネクター。
http://www-10.lotus.com/ldd/lcwiki.nsf/dx/Using_the_PhotoConnector_ic301
PronunciationConnector: プロフィール・データベースの「発音」表の発音エントリーを検索、
作成、更新、および削除するためのコネクター。
http://www-10.lotus.com/ldd/lcwiki.nsf/dx/Using_the_PronunciationConnector_ic301
CodesConnector: プロフィール・データベースの各種検索表のコード・エントリー (部門コード
や職場コードなど) を検索、作成、更新、および削除するためのコネクター。
http://www-10.lotus.com/ldd/lcwiki.nsf/dx/Using_the_CodesConnector_ic301
注: これら 4 つのコネクターは、プロフィール・データベースでデータを管理するためにサポート
されている唯一のオプションです。JDBC コネクターなど、他のコネクターを使用して、プロ
フィール・データベースの表に含まれるデータを直接操作することは、サポートされていません。
このように多種多様ですぐに使用可能な Tivoli Directory Integrator コネクターを使用すれば、各種
ソースから得たデータを IBM Connections プロフィールに取り込むことができます。例えば、
Tivoli Directory Integrator では、LDAP リポジトリー、HR データベース、カスタム Domino データ
ベースなど、様々なシステムからユーザーの各種プロフィール情報を取得できます。また、Tivoli
Directory Integrator では、これらすべてのシステムから得られたデータを IBM Connections プロ
フィール・データベースと同期しておくこともできます。
4.3. シナリオの説明
この例では、IBM Connections のプリインストール手順で LDAP サーバーからデータがすでに追加
されている IBM Connections プロフィール・データベースに、カスタム・データベースから取得し
たデータを取り込む方法について説明します。
この例では、ユーザー・プロフィール情報がある 2 つのソース・システムを使用します。


連絡先情報がある Domino LDAP サーバー。
社員の経歴、代替メール、IP 電話番号に関する拡張情報が登録された DB2 データベースのカス
タム表。
社員の主要メール・アドレスを、両方のシステムで同一ユーザーであることを特定するための固有
ユーザー ID として使用します。
また、IBM Connections と Tivoli Directory Integrator はすでにインストールされていて構成されて
いるものとします。プロフィール・データベースにはプロフィールのインストールの一環として
データが追加されているため、Domino LDAP からプロフィール・データベースにデータを最初に
追加する手順はスキップします。この手順については、以下の資料の章に説明があります。
 プロフィール・データベースの作成: IBM Connections Population Wizard を使用したりすぐに
使用できるアセンブリー・ラインを手動で使用したりするデータ追加プロセスについては、次
の Web サイトに説明があります。
http://www-10.lotus.com/ldd/lcwiki.nsf/dx/Populating_the_Profiles_database_ic301
60 of 247

プロフィールへの補足コンテンツの追加: 写真や発音ファイルをファイル・システムから プロ
フィール・データベースにアップロードする方法については、次の Web サイトに説明がありま
す。http://www-10.lotus.com/ldd/lcwiki.nsf/dx/Adding_supplemental_content_to_Profiles_ic301
注: さらに、IBM Connections には、Tivoli Directory Integrator 用にあらかじめ作成されたアセンブ
リー・ラインがあります。管理者はこれを使用して、プロフィール・データを管理したり、プロ
フィール・データベースと LDAP サーバーの間でユーザー・データを同期するタスクを実行したり
できます。詳細が記載されている記事については、リンク
http://www-10.lotus.com/ldd/lcwiki.nsf/dx/Tivoli_Directory_Integrator_commands_ic301 に ア ク セ ス
してください。
今回のシナリオでは、2 つのカスタム・アセンブリー・ラインを作成します。1 つ目は、DB2 の表
からプロフィール・データベースに新規情報をインポートするアセンブリー・ラインです。2 つ目
は、データベース間で更新を同期するアセンブリー・ラインです。
4.4. 開発環境のセットアップ
アセンブリー・ラインを作成し始める前に、Tivoli Directory Integrator Configuration Editor を構成して
おく必要があります。Tivoli Directory Integrator 開発環境の構成について詳しくは、次の資料を参照し
てください。
http://www-10.lotus.com/ldd/lcwiki.nsf/dx/Setting_up_your_development_environment_ic301
手順
1.
2.
3.
Tivoli Directory Integrator Configuration Editor のインストール先ディレクトリーをファイル・
システムに作成します。例えば、C:¥TDIProject¥15082011 のようにします。
このルート・ディレクトリーの下に、名前ワークスペースを入れるサブディレクトリーと、
TDISOL を入れるサブディレクトリーを作成します。
例: C:¥TDIProject¥15082011¥workspace C:¥TDIProject¥15082011¥TDISOL
Tivoli Directory Integrator ソリューション・ディレクトリーがアーカイブされた zip ファイル
を <IBM Connections install root>/TDISOL で見つけます
(例: C:¥IBM¥LotusConnections¥TDISOL¥tdisol.zip)。そのファイルを
C:¥TDIProject¥15082011¥TDISOL に unzip します。内容は次の図にあるような構成になって
います。
注: Tivoli Directory Integrator for Linux を使用している場合、上記のファイルの代わりに
61 of 247
tdisol.tar を使用します。
注: 必ず、IBM Connections 3.0.1 のインストール・ディレクトリーにある tdisol.zip を使用し
てください。バージョン 3.0 からバージョン 3.0.1 にアップグレードした場合は、IBM
Connections 3.0.1 のウィザードで作成されるソリューション・ディレクトリーを使用するこ
とをお勧めします。このディレクトリーは次のようになっています。


Windows の場合: <Wizards_root>¥TDIPopulation¥TDISOL¥win
Linux の場合: <Wizards_root>¥TDIPopulation¥TDISOL¥linux
4.
Configuration Editor を開始するためのショートカットに、-s コマンド・ライン・オプショ
ンを使用して、プロフィール Tivoli Directory Integrator ソリューション・ディレクトリーの場所を
指定します。Windows の場合、デフォルトの場所は「スタート」メニュー->「すべてのプログラ
ム」->「IBM Tivoli Directory Integrator v7.0」->「構成エディターの開始」です。
例えば、C:¥IBM¥TDI¥V7.0¥ibmditk.bat -s C:¥TDIProject¥15082011¥TDISOL¥TDI のように指定し
ます。
次の図は、今回の例の画面イメージを表したものです。
62 of 247
5.
変更したショートカットを使用して Tivoli Directory Integrator Configuration Editor を開始しま
す。例えば、「スタート」メニュー->「すべてのプログラム」->「IBM Tivoli Directory
Integrator v7.0」->「構成エディターの開始」をクリックします。
Configuration Editor のワークスペースを指定するように促すプロンプトが出された場合は、ス
テップ 1 で作成したディレクトリーを選択してください。今回の例では、
C:¥TDIProject¥15082011¥workspace です。
6.
「OK」をクリックして、Tivoli Directory Integrator Configuration Editor を開始します。
63 of 247
4.5. 選択したユーザー属性を外部データベースからプロ
フィール・データベースに追加するためのカスタム・
アセンブリー・ラインの作成
開発環境を構成したため、選択したユーザー・プロフィール属性をカスタム・データベース表から
プロフィール・データベースに追加する最初のアセンブリー・ラインを作成する準備が整いました。
手順は次のとおりです。
1.
2.
3.
4.
プロジェクトを作成します。
アセンブリー・ラインを作成します。
Tivoli Directory Integrator コネクターを追加します。
外部データとワーク・エントリーの間のマッピングを構成します。
4.5.1 Tivoli Directory Integrator プロジェクトの作成
1.
TDI Configuration Editor を開始したら、「Tivoli Directory Integrator」タブをクリックして、
さらに「Tivoli Directory Integrator プロジェクトの作成」をクリックします。
64 of 247
2.
プロジェクト名 (例: DB2toProfiles) を入力して、「完了 (Finish)」をクリックします。
3.
Configuration Editor でプロジェクトが作成されるまで待ちます。デフォルトの作成サーバーが
始動されるのを確認します。
65 of 247
注: デフォルト・サーバーが始動されない場合は、サーバー名を右クリックして「構成のオー
プン」を選択し、自分の環境のソリューション・ディレクトリー・パスが「ソリューション・
ディレクトリー」フィールドに正しく指定されているかどうかを確認してから、Configuration
Editor を再始動してください。
4.5.2 IBM Connections ソリューション・ディレクトリーか
ら新規プロジェクトにデータをインポート
IBM Connections インストール・ファイルには、Tivoli Directory Integrator ソリューション・ディレ
クトリーが含まれています。このディレクトリーには、IBM Connections Tivoli Directory Integrator
コネクターを動作させるために必要となる構成やライブラリーが入っています。このステップでは、
IBM Connections Tivoli Directory Integrator コネクターを使用できるように、ソリューション・ディ
レクトリーから自分のプロジェクトに中間生成物をインポートします。
66 of 247
以下の手順に従ってデータをインポートしてください。
1.
「ナビゲーター」セクションでプロジェクト名を右クリックして「インポート (Import)」を選
択します。
67 of 247
2.
「IBM Tivoli Directory Integrator」を展開し、「構成(Configuration)」を選択して「次へ
(Next)」をクリックします。
3
ソリューション・ディレクトリーから構成ファイル
(例: C:¥TDIProject¥15082011¥TDISOL¥TDI¥profiles_tdi.xml) を選択します。
インポート可能なオブジェクトのリストから「AssemblyLines」のチェック・マークのみを
外して、「完了 (Finish)」をクリックします。
68 of 247
4.
プロフィール・データベース接続プロパティーを構成します。これを行うには、自分のプロ
ジェクト内で「リソース(Resources)」->「プロパティー(Properties)」の順に展開して「プ
ロフィール (profiles)」を選択します。
5.
自分の環境に応じて dbrepos_jdbc_driver プロパティー、dbrepos_jdbc_url プロパティー、
dbrepos_password プロパティー、および dbrepos_username プロパティーの値を変更し
て、Ctrl+s でファイルを保存します。
69 of 247
注: 使用しているデータベース・タイプによっては、Tivoli Directory Integrator インストール済
み環境の拡張機能ライブラリー・ディレクトリー (<TDI_install_dir>¥V7.0¥jvm¥jre¥lib¥ext)
に JDBC ドライバーをコピーして、Configuration Editor を再始動しなければならない場合が
あります。例えば、DB2 を使用している場合は、db2jcc.jar と db2jcc_license_cu.jar を
DB2 インストール・ディレクトリーから C:¥IBM¥TDI¥V7.0¥jvm¥jre¥lib¥ext にコピーする必
要があります。
4.5.3 アセンブリー・ラインの作成
この時点で、最初のアセンブリー・ラインを作成する準備が整っています。以下の手順を実行して
ください。
1.
「ナビゲーター」セクションで自分のプロジェクトが強調表示されていることを確認し、プロ
ジェクト名をクリックしてから、メニューの上部にある「新規 AssemblyLine」をクリックし
ます。
2.
アセンブリー・ラインの名前 (例: populateProfilesDB) を入力して、「完了 (Finish)」をク
リックします。
70 of 247
4.5.4 イテレーター・モードのプロフィール・コネクターの
追加および構成
ここで、アセンブリー・ラインにロジックを作成する作業を開始します。最初に、以下の手順にあ
るように、プロフィール・データベース全体に繰り返し適用されるプロフィール・コネクターを追
加します。
1.
「ナビゲーター」セクションでプロジェクト名の下に表示される新規アセンブリー・ライン名
をクリックしてから、タブの上部メニューにある「コンポーネントの追加(Add compornet)」
をクリックします。
2.
左側にある「タイプ・フィルターの選択」ペインで「コネクター(Connector)」を選択して
「プロフィール・コネクター (ProfileConnector)」を選びます。コネクターの名前 (例:
ProfileConnector_iterator) を入力します。「モード」ドロップダウン・リストから「イテ
レーター(Iterator)」を選択して「完了 (Finish)」をクリックします。
71 of 247
3.
追加したコネクターをテストします。
a.
右側のメニューにある「接続(Connect)」ボタンをクリックします (次の図を参照)。
これにより、プロフィール・データベースへの接続が開始されます。
b.
「次へ (Next)」をクリックします。
c.
次の画面イメージにあるような最初のレコードがプロフィール・データベースから取得さ
れます。
注: 接続しているシステムにデータ属性のデフォルト・リストよりも多くの属性がある場
合は、このアクションにより、現行コネクターのアクセス可能な属性のデフォルト・リス
トも更新され、その属性はマッピングに使用できるようになります。この時点で一部の属
性 が 表 示 さ れ な い 場 合 は 、 属 性 名 を 使 用 し て 手 動 で 属 性 を 追 加 で き ま す 。 IBM
Connections プロフィール・コネクターに使用できる、すぐに使用可能な属性の完全なリ
ストについては、 http://www-10.lotus.com/ldd/lcwiki.nsf/dx/Profiles_attributes_ic301
にある wiki の記事を参照してください。
72 of 247
4.
プロフィール・コネクターがイテレーター・モードになります。つまり、プロフィール・コネ
クターは、プロフィール・データベースに保管されているユーザー固有 ID のフローとして機
能します。この UID は、他のコネクターによって使用されます。他のコネクターは、このUID
を使用して、該当するユーザーのデータを取得し、指定の属性の値を取得し、この値でプロ
フィール・データベースを更新します。今回のシナリオでは、email 属性を UID として使用し
ます。そのため、ユーザーのメールを取得してワーク・オブジェクト属性 (またはワーク属性)
に取り込むようにプロフィール・コネクターを構成します。
注: プロフィール・データベースから取得する必要があるのがユーザーのサブセットのみであ
る場合は、JavaScript を使用して「フック」タブでプロフィール・コネクター・メソッドを書
き直せば、事前のフィルタリングを実行できます。このメカニズムについては、後続のセク
ション 4.6『 外部データベースからプロフィール・データベースに更新を同期するカ
スタム・アセンブリー・ラインの作成』で説明します。
5.
ワーク属性と、プロフィール・データベースから取得されたユーザーのメールとの間にマッピ
ングを追加するには、「入力マップ(Input map)」タブにある「追加 (Add)」ボタンをクリッ
クします。
73 of 247
6.
b.
属性選択メニューで「email」を選択し、「OK」をクリックします。
c.
この属性が、ワーク属性 ID に email を持つアセンブリー・ライン内の他のコネクターか
ら使用できるようになります。
Ctrl+s で構成を保存します。
4.5.5 検索モードの JDBC コネクターの追加
今回の例では、プロフィール・データベースにデータを追加するためのソースとしてカスタム表を
使用するため、JDBC コネクターと DB2 JDBC ドライバーを使用して、この表に接続してデータ
ベースからデータを取得します。別の LDAP や Notes データベースなど、異なるソース・システム
を使用する場合は、それぞれに適したコネクターを使用する必要があります。
以下の手順を実行して JDBC コネクターを追加してください。
74 of 247
1.
アセンブリー・ライン内で「コンポーネントの追加」ボタンをクリックします。
左側にある「タイプ・フィルターの選択」ペインで「コネクター」を選択して「コンポーネン
ト 」 ペ イ ン で 「 JDBC コ ネ ク タ ー 」 を 選 び ま す 。 コ ネ ク タ ー の 名 前 ( 例 :
JDBCConnector_lookup) を入力し、「モード」ドロップダウン・リストから「ルックアッ
プ」を選択して、「次へ (Next)」をクリックします。
2.
以下のフィールドに値を入力して、「完了 (Finish)」をクリックします。





JDBC URL: 今回の例では jdbc:db2://localhost:50000/peopledb とします。
JDBC ドライバー: DB2 の場合は com.ibm.db2.jcc.DB2Driver です。
ユーザー名: 今回の例では、Administrator を使用します。このユーザーはテーブルに対し
て全アクセス権限を持ちます。
パスワード: ユーザーのパスワードです。
表名: 今回の例では EMPCUSTDATA です。この表は「選択」ボタンで選択できます。
75 of 247
3.
接続をテストします。
a.
右側のメニューにある「接続(Connect)」ボタンをクリックします (次の図を参照)。
これにより、指定のデータベースと表への接続が開始されます。
b.
「次へ (Next)」をクリックして、表からデータを取得できるかどうかをテストします。
76 of 247
c.
4.
ツールにより表から最初のレコードが取得されます。
JDBC コネクターを使用してユーザー属性を取得するため、最初に特定ユーザーの固有 ID で、
適切な属性を表の行から選択する必要があります。
a.
「リンク基準(Link Criteria)」タブに移動して「追加 (Add)」をクリックします。
77 of 247
b.
5.
ワーク・オブジェクト属性と列名の間のリンクを指定します。コネクターはこのリンク
を使用して表から選択を行います。今回の例では、PREMAIL という列が表にあります。
この列にはユーザーの主要メールが入っています。この値は、プロフィール・コネク
ターから渡されるワーク属性 $email と同じです。
JDBC コネクターで表からアセンブリー・ラインにデータを取得できるように、表の列とワー
ク属性との間のマッピングを指定する必要があります。
a
「入力マップ」タブに戻って「追加 (Add)」をクリックします。
78 of 247
b.
6.
ワ ー ク 属 性 に 取 り 込 む 表 の 列 名 を 選 択 し ま す 。 今 回 の 例 で は 、 GRADCOUNRY 、
GRADFROM、IPTELEPONYNUMBER、SECMAIL、および SPECIALIZATION です。
「OK」をクリックします。
ア セ ン ブ リ ー ・ ラ イ ン 内 の 他 の コ ネ ク タ ー は 、 ワ ー ク ・ オ ブ ジ ェ ク ト 属 性 ID と し て
GRADCOUNRY 、 GRADFROM 、 IPTELEPONYNUMBER 、 SECMAIL 、 お よ び
SPECIALIZATION を使用してこれらの属性にアクセスできます。
注: ワーク・オブジェクト属性の名前を理解しやすくなるように変更できます。ただし、必ず
すべてのコネクターで同じワーク・オブジェクト属性名を使用してください。
6.
Ctrl+s で作業を保存します。
79 of 247
4.5.6 更新モードのプロフィール・コネクターの追加および
構成
このアセンブリー・ラインの最終段階では、JDBC コネクターを使用して、取得した属性値を プロ
フィール・データベース内の適切な属性に書き込みます。これを行うには、プロフィール・コネク
ターを更新モードで使用します。つまり、このプロフィール・コネクターは、最初にユーザーの
メールでプロフィール・データベース内のユーザー・レコードを検索し、次に、JDBC コネクター
から受け取ったデータをユーザーのプロフィールの適切なフィールドに書き込みます。
以下の手順を実行してプロフィール・コネクターを追加してください。
1.
自分のアセンブリー・ラインに戻って「コンポーネントの追加」をクリックします。左側にあ
る「タイプ・フィルターの選択」で「コネクター」を選択し、「コンポーネント」ペインで
「プロフィール・コネクター (ProfileConnector)」を選びます。コネクターの名前 (例:
ProfileConnector_update) を入力します。「モード」ドロップダウン・リストから「更新」
を選択して「完了 (Finish)」をクリックします。
注: ワーク・オブジェクト属性の名前を理解しやすくなるように変更できます。ただし、必ず
すべてのコネクターで同じワーク・オブジェクト属性名を使用してください。
80 of 247
2.
最初のプロフィール・コネクターと JDBC コネクターに対して行ったようにして、接続をテ
ストして属性のリストを更新します。「接続(Connect)」をクリックしてから「次へ (Next)」
をクリックします。プロフィール・データベースから最初のレコードが表示されます。
3.
このプロフィール・コネクターで行われる変更はすべて、特定のユーザーに対して行われます。
そのため、ワーク・オブジェクト属性と、ユーザーの固有 ID を保持するターゲット・システ
ム内のユーザー・レコード属性との間にマッピングを指定する必要があります。
a.
「リンク基準(Link Criteria)」タブに移動して「追加 (Add)」をクリックします。
b.
ユーザーの主要メールが含まれた email と、ワーク・オブジェクト属性 $email に相当す
る値との間のリンクを指定します。
81 of 247
4.
ここで、アセンブリー・ラインの、ユーザーのプロフィール属性と、ワーク・オブジェクト属
性 と の 間 の マ ッ ピ ン グ を 定 義 す る 必 要 が あ り ま す 。 今 回 の 例 で は 、
work.IPTELEPONYNUMBER を ipTelephoneNumber に マ ッ プ し 、 work.SECMAIL を
groupwareEmail にマップします。experience 属性を追加するために、work.GRADCOUNRY、
work.GRADFROM、および work.SPECIALIZATION を結合する小さなスクリプトを使用しま
す 。 こ の ス ク リ プ ト に よ っ て 、 experience 属 性 を ユ ー ザ ー の プ ロ フ ィ ー ル の 「 経 歴
(Background)」タブにお好みの形式で表示できます。
a.
「出力マップ(Output Map)」タブに戻って「追加 (Add)」ボタンをクリックします。
b.
ワーク属性の値を使用して追加したい属性名を選択します。今回の例では、Domino
LDAP にそのようなデータがないため、追加ウィザードによって属性が追加されることは
ありません。そのため、そのような属性は「属性の追加」ダイアログにも表示されませ
ん。http://www-10.lotus.com/ldd/lcwiki.nsf/dx/Profiles_attributes_ic301 にある記事に基づ
いて、デフォルト属性名を使用して手動で属性を追加する必要があります。
その属性名は ipTelephoneNumber、groupwareEmail、および experience です。
82 of 247
注: 属性を手動で追加する場合、「OK」をクリックして属性ごとに現在のステップを繰り返す
必要があります。
c.
プロフィールの属性をワーク・オブジェクトの属性にマップするために、変更したい属
性ごとに出力マッピング・テーブルの行をダブルクリックします。
83 of 247
5.
d.
work.ipTelephoneNumber を work.IPTELEPONYNUMBER に変更し、
work.groupwareEmail を work.SECEMAIL に変更します。
e.
experience 属性の行をダブルクリックして、work.experience を削除し、次のスクリプト
を追加します。このスクリプトは、JavaScript で書かれた単純なストリング結合スクリ
プトです。
Ctrl+s で作業を保存します。
84 of 247
4.5.7 デバッグ・モードで最初のアセンブリー・ラインを実
行
テストのために、アセンブリー・ラインをデバッグ・モードで実行できます。これにより、コネク
ター間でデータがどのように移動するのかが示されます。各ステップでワーク属性の値を確認でき
ます。
1.
次の図にあるように、アセンブリー・ライン内で「デバッグ・セッションを開始します」ボタ
ンをクリックします。
2.
デバッグ・セッションが開始されたら、「ステップオーバー」をクリックして、アセンブ
リー・ラインの最初のコネクターに移動します。
85 of 247
3.
「ステップオーバー」をもう一度クリックしてプロフィール・コネクターで最初のユーザーの
メールを取得し、email 属性を展開して値を確認します。
4.
最初のプロフィール・コネクターに戻るまで、「ステップオーバー」を何度もクリックします。
こ の 時 点 で 、 ユ ー ザ ー の プ ロ フ ィ ー ル に あ る 適 切 な 属 性 が 更 新 さ れ て い る た め 、 IBM
Connections プロフィールでデータを参照できます。
ipTelephoneNumber 属性と groupwareEmail 属性の表示例を以下に示します。
86 of 247
次のイメージは、experience 属性を示したものです。「経歴 (Background)」タブにテキスト
が表示されています。
5.
デバッグ・モードで実行されているアセンブリー・ラインを停止するために、「停止」をク
リックします。
87 of 247
注: Configuration Editor で「実行 (Run)」をクリックすることによって、完了するまで実行さ
れるアセンブリー・ラインを作成することもできます。
注: <your_TDI_solution_directory_root>/logs にある ibmdi.log ファイルに詳細ログが記録され
ます。例えば、このディレクトリーは C:¥TDIProject¥15082011¥TDISOL¥TDI¥logs のよう
なディレクトリーです。
4.6. 外部データベースからプロフィール・データベースに
更新を同期するカスタム・アセンブリー・ラインの作
成
前のセクションで、ソース・システムからプロフィール・データベースにデータをコピーするため
のアセンブリー・ラインを作成しました。実稼働環境では、ほかにも一般的な操作があります。そ
の 1 つとして、ソース・システムで更新を処理し、プロフィール・データベースでユーザーのプロ
フィールの当該属性を更新する操作があります。これを行うには、イテレーター・モードの JDBC
コネクター用の特殊な構成を使用します。これにより、ソース・システム・データで行われた変更
をコネクターで認識できるようになります。このオプションを使用すると、JDBC コネクターに
よって、前回実行以降のデータが Tivoli Directory Integrator システム・ストアに保管され、最新の
要求の結果が、システム・ストア内に保管されているデータと比較されます。何かしらの変更が見
つかれば、更新されたレコードのデータが JDBC コネクターによってワーク・オブジェクト属性に
取り込まれます。その後で、プロフィール・コネクターを使用してデータを処理できます。
注: Tivoli Directory Integrator では、デフォルトで Apache Derby がシステム・ストア・データベース
として使用されます。ただし、Tivoli Directory Integrator は、DB2 など、他のリレーショナル・デー
タベースを使用するように構成できます。方法については、Tivoli Directory Integrator 資料の記事
http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/topic/com.ibm.IBMDI.doc_7.0/systemstore.htm
を参照してください。
今回の例では、ユーザーがプロフィール・データベースで使用可能かどうかをプロフィール・コネ
クターで事前確認する作業は行いません。この作業は前の例で完了しているためです。
代わりに、プロフィール・コネクターでプロフィール・データベースから適切な固有 ID を持つ
88 of 247
ユーザーを検出できない場合、エントリーをスキップして、プロフィール・コネクターのエラーに
対処する方法をデモンストレーションします。
今回は、ipTelephoneNumber 属性と groupwareEmail 属性のみを更新します。その他の属性は今回
は変更されないため、更新する必要がないからです。
4.6.1 JDBC コネクターを追加して変更を処理するように構
成
この作業には以下の手順を実行してください。
1.
新規のアセンブリー・ラインを作成します。「新規 AssemblyLine」をクリックして名前 (例:
processChanges) を指定します。
2.
アセンブリー・ラインで「コンポーネントの追加」ボタンを使用して JDBC コネクターを追
加します。
左側にある「タイプ・フィルターの選択」で「コネクター」を選択し、「コンポーネント」リ
ストで「JDBC コネクター」を選びます。コネクターの名前 (例: JDBCConnector_delta) を
入力します。「モード」ドロップダウン・リストから「イテレーター」を選択して「次へ
(Next)」をクリックします。
89 of 247
3.
以下のフィールドに以前と同じ値を使用して、「完了 (Finish)」をクリックします。





4.
5.
JDBC URL: 今回の例では jdbc:db2://localhost:50000/peopledb とします。
JDBC ドライバー: DB2 の場合は com.ibm.db2.jcc.DB2Driver です。
ユーザー名: 今回の例では Administrator です。
パスワード: ユーザーのパスワードです。
表名: 今回の例では EMPCUSTDATA です。この表は「選択」ボタンで選択できます。
「接続」をクリックしてから「次へ (Next)」をクリックして、接続をテストします。
「デルタ」タブをクリックし、「デルタを使用可能化」にチェック・マークを付けて、表内の
レコードを一意的に識別する属性の名前を入力します。例えば、PREMAIL のようにします。
90 of 247
6.
「入力マップ」タブに戻って、IPTELEPHONYNUMBER、PREMAIL、および SECEMAIL の
属性マッピングを追加します。
4.6.2 更新モードのプロフィール・コネクターの追加
更新モードのプロフィール・コネクターを追加するには、以下の手順を実行してください。
1.
2.
3.
「モード」で「更新」を選択し、名前 (例: ProfileConnector_update) を指定します。
「接続」をクリックして接続をテストします。
「出力マップ」タブで「追加 (Add)」をクリックして、work.SECEMAIL から groupwareEmail
へのマッピングと、work.IPTELEPHONYNUMBER から ipTelephoneNumber へのマッピング
を追加します。
91 of 247
4.
「リンク基準」タブで email 属性を $PREMAIL とリンクします。
5.
プロフィール・コネクターでプロフィール・データベースにユーザー・レコードが見つからな
い場合は、エラーに対処します。「フック」タブで「データ・フロー (更新)」->「更新エ
ラー」と「データ・フロー (更新)」->「エラー発生時のデフォルト」を 1 つ 1 つ編集して、次
のスクリプトを追加します。
6.
Ctrl+s で作業を保存します。
92 of 247
7.
(オプション) 最初のアセンブリー・ライン実行時に、すべてのワーク属性の値が JDBC コネク
ターによってシステム・ストアにインポートされます。プロフィール・データベースが変更さ
れないようにするには、プロフィール・コネクターを使用不可にして、ユーザー・プロフィー
ル属性が更新されないようにします。プロフィール・コネクターを使用不可にするには、「状
態」ドロップダウン・リストでプロフィール・コネクターの状態を「使用不可」に変更します。
8.
1 回目となるアセンブリー・ラインの実行を行います。
1 回目のアセンブリー・ラインの実行後は、Tivoli Directory Integrator システム・ストアのデルタ・
ストアに全ユーザーの全ワーク属性の現行値が保管されます。そのため、次回からは、表で変更さ
れたユーザー属性のみが JDBC コネクターによってプロフィール・コネクターに渡されます。
4.7. アセンブリー・ラインから単一コマンド・ライン・ス
クリプトを作成
前のセクションでは、Tivoli Directory Integrator Configuration Editor からアセンブリー・ラインを
実行する方法を示しました。ここでは、アセンブリー・ラインからコマンド・ライン・スクリプト
を作成し、このスクリプトが夜間に実行されてソース・システムとプロフィール・データベースと
の間でデータが自動的に同期されるようにスケジュールします。
1.
スクリプトとして使用するアセンブリー・ラインが含まれた構成ファイルをプロジェクトから
Tivoli Directory Integrator ソリューション・ディレクトリーにコピーします。構成ファイルの
名前は <project_name>.xml です。このファイルは
<workspace_root>/<project_name>/Runtime-<project_name>/ に入っています。例えば、
C:¥TDIProject¥15082011¥workspace¥DB2toProfiles¥RuntimeB2toProfiles¥DB2toProfiles.xml を C:¥TDIProject¥15082011¥TDISOL¥TDI にコピーします。
93 of 247
2.
次のコードが含まれた .bat (Linux を使用している場合は .sh) ファイルを作成します。
@echo off
SETLOCAL
CD %~dp0
REM call common script to set Tivoli Directory Integrator paths
CALL .¥TDIENV.bat
REM Start Network Store server if not started already
CALL .¥netstore ping >NUL 2>NUL
IF NOT ERRORLEVEL 1 GOTO STOREOK
CALL .¥netstore start
:STOREOK
CALL "%TDIPATH%¥ibmdisrv" -s .-c <project_name>.xml -r
<assembly_line_name>
:FINISH
ECHO "Script finished"
ENDLOCAL
EXIT /B 0
例えば、プロジェクト DB2toProfiles とアセンブリー・ライン populateProfilesDB の場合、CALL
ディレクティブは次のようになります。
CALL "%TDIPATH%¥ibmdisrv" -s .-c DB2toProfiles.xml -r populateProfilesDB
注: ご使用の環境に応じて、tdienv.dat (.sh) スクリプト内の環境変数の値を変更しなければならな
い場合があります。
これで、このスクリプトを Tivoli Directory Integrator ソリューション・ディレクトリー内でコマン
ド・ラインから実行したり、Microsoft Windows のタスク スケジューラや Linux の cron のような
オペレーティング・システム・ツールを使用して、このスクリプトが適切な時間フレームで実行さ
れるようにスケジュールしたりできるようになりました。
94 of 247
第5章
プロフィールのカスタマイズ
デフォルトの IBM Connections 実装環境では、ユーザーに関する一定数のデータ・フィールド (属
性) と、その属性のデフォルト・レイアウトが提供されます。IBM Connections の実装環境をカス
タマイズすれば、属性を追加したり、レイアウトを変更したりできます。
このセクションでは、例を使用して、新しい属性をプロフィールとプロフィール・ページ・レイア
ウトに追加する方法を示します。
IBM Connections には、すべてのプロフィールを同じように表示するためのデフォルト・プロ
フィール・タイプが用意されています。定義したプロフィール・タイプに応じてプロフィールが
様々な形式で表示されるように IBM Connections をカスタマイズできます。これについて、例を交
えながら説明します。
5.1. 属性フィールドをプロフィールに追加
多くの場合、IBM Connections をデプロイする組織では、属性をプロフィールに追加する必要があ
ります。今回のシナリオ例では、組織のスタッフの多くが契約スタッフであるため、契約会社属性
をプロフィール・ページに追加します。また、別の例では、職種属性をプロフィールに追加します。
属性をプロフィールに追加するために必要な基本手順は次のようになっています。
1.
2.
3.
4.
5.
6.
プロフィール構成ファイルをチェックアウトします。
新規の属性を定義します。
フィールドをレイアウト上に配置します。
プロフィール構成ファイルをチェックインします。
プロフィール・アプリケーションを再始動します。
新規の属性をテストします。
手順
1.
プロフィール構成ファイルをチェックアウトします。
構成ファイルをチェックアウト/チェックインする一般的なプロセスについては、『1.4
wsadmin ツールを使用したカスタマイズの公開』を参照してください。
ご使用のシステムに合わせて次のサンプル・コマンドを修正してください。
cd e:¥IBM¥WebSphere¥AppServer¥profiles¥Dmgr01¥bin
wsadmin -lang jython -user wasmgr -password d3moL0tus
execfile("profilesAdmin.py")
ProfilesConfigService.checkOutConfig("f:/temp", AdminControl.getCell() )
後のステップでファイルをチェックインするために、必ず wsadmin セッションは開いたまま
にしておいてください。
2.
新規の属性を定義します。
a.
b.
c.
テキスト・エディターで profiles-config.xml を開きます。このファイルは、チェックア
ウトされた場所にあります。
セクション <profileExtensionAttributes> を見つけます。
終了タグ </profileExtensionAttributes> の直前に新規の行を追加します。
95 of 247
<simpleAttribute extensionId="contractAgency" length="80" />
3. フィールドをレイアウト上に配置します。プロフィール画面上の属性の順序と表示/非表示は、
同じ profiles-config.xml ファイル内のレイアウト定義によって制御されます。フィールドをレ
イアウト上に配置するには、以下の手順を実行します。
a.
b.
セクション <profileLayout profileType="default"> を見つけます。
<contactInformation> セクションに新規の行を追加して拡張属性を指定します。
この行を displayName 属性の直後に追加します。
4.
プロフィール構成ファイルをチェックインします。同じ wsadmin セッションで、次のコマン
ドを使用してプロフィール構成ファイルをチェックインします。
5.
プロフィール・アプリケーションを再始動します。これは、プロフィールで新規構成を取得す
るために必要です。プロフィール・アプリケーションは、WebSphere Application Server
Integrated Solution Console から停止および開始できます。
96 of 247
6.
新規の属性をテストします。
a. IBM Connections にログインして「マイ・プロフィール」にナビゲートします。
b. 「マイ・プロフィール」を編集します。部分的に成功し、ラベル名の部分に新規フィー
ルドがエラーになったことが示されます。ここにテスト・データを入力すると、役に立
ちます。
新規属性を表示するときは showLabel=false プロパティーが推奨されますが、編集モードではラベ
ルが必要になることに注意してください。
5.2. 属性のラベルの指定
手順『5.1. 属性フィールドをプロフィールに追加 』でフィールドを作成しましたが、フィール
ド・ラベルが正しく表示されていません。ユーザー・インターフェースにあるフィールドのラベル
は、アプリケーション・プロパティー・ファイルに別々に保管されます。ラベルを構成するには、
アプリケーション・プロパティー・ファイルに対する参照をアプリケーション固有の構成ファイル
内に追加して、カスタマイズ・ディレクトリーにあるカスタム・プロパティー・ファイルにラベル
を追加します。多くの場合、プロパティー・ファイルはリソース・バンドルとみなされます。
始める前に
始める前に contractAgency フィールドをプロフィール・アプリケーションに追加します。詳しく
は、『5.1. 属性フィールドをプロフィールに追加』を参照してください。
手順
1.
構成ファイルをチェックアウトします。構成ファイルをチェックアウト/チェックインする一
般的なプロセスについては、『1.4 wsadmin ツールを使用したカスタマイズの公開』を参照し
てください。ご使用のシステムに合わせて次のサンプル・コマンドを修正してください。
後のステップでファイルをチェックインするために、必ず wsadmin セッションは開いたまま
にしておいてください。
2.
プロフィール構成ファイル内に属性を追加します。
a. profiles-config.xml ファイルを一時的にチェックアウトした場所にナビゲートします。
97 of 247
b. テキスト・エディターで profiles-config.xml ファイルを開きます。
c. レイアウト・セクションで <contactInformation> タグを見つけます。
d. courtesyTitle ラベルが含まれている行の下に新規属性の行を追加します。
次の図は、新規属性がどのように表示されるのかを示したものです。
e.
3.
profiles-config.xml ファイルを保存します。
リソース・バンドルを IBM Connections 構成ファイルに追加します。
a. IBM Connections 構成ファイルを一時的にチェックアウトした場所にナビゲートします。
b. テキスト・エディターで LotusConnections-config.xml ファイルを開きます。
c. ファイルの終わりにある <resources> タグを見つけます。
d. 次のコードを追加します。
e.
LotusConnections-config.xml ファイルを保存します。
ヒント: パフォーマンスを向上させるために、使用するリソース・バンドルの数を可能な限り
減らします。すべての新規キーに対して使用するカスタマイズ・ファイルは 1 つにしてくださ
い。
4.
5.
2 つの構成ファイルをチェックインします。構成ファイルのチェックインについて詳しくは、
『1.4 wsadmin ツールを使用したカスタマイズの公開』を参照してください。

profiles-config.xml ファイルを次の wsadmin クライアント・コマンドでチェックインし
ます。

LotusConnections-config.xml ファイルをチェックインします。
contractAgency ストリングをカスタマイズ・ディレクトリーに追加します。
a. ファイルを作成して、label.custom.resources.properties というファイル名でストリン
グ・カスタマイズ・ディレクトリー <customizationDir¥strings> に保存します。カスタマ
イズ・ディレクトリーの場所については、『 1.2 IBM Connections カスタマイズ変
数』を参照してください。
b. テキスト・エディターで label.custom.resources.properties ファイルを開いて、次の
キーと値のペアを独自の行に追加します。
c.


オプション: 他の言語でストリングを表示するには、言語固有版のファイルを作成します。
例えば、
label.custom.resources_fr.properties (フランス語のストリング値の場合)
label.custom.resources_es.properties (スペイン語のストリング値の場合)
ローカライズについて詳しくは、『2.2 製品ストリング(文字列)のカスタマイズ』を参
照してください。
98 of 247
6.
新規の属性をテストします。
a. WebSphere Application Server Integrated Solutions Console で、プロフィール・アプリ
ケーションをホストするサーバーを停止して再始動します。
b. ブラウザー・キャッシュをクリアします。
c. IBM Connections で自分のプロフィールにナビゲートします。次の例にあるように、「連
絡先情報」タブに新規属性「Contract Agency」が表示されます。
次の手順
これで、属性を追加してそのラベルを指定する作業が完了しました。属性は無限にプロフィールに
追加できますが、属性の数が多すぎると、プロフィールが使用不可になります。属性をプロフィー
ルに追加するときに使用する手段を考慮しなければならない場合があります。属性の追加方法につ
いては、『5.3. カスタム拡張属性の追加』を参照してください。
関連作業



ラベルを変更します。今回の手順では属性を作成しました。同様のプロセスで、既存の属性に
付けられたラベルを変更できます。例えば、デフォルトのラベル「Mobile Number」を「Cell
Phone」に変更できます。ラベルの変更について詳しくは、『2.2 製品ストリング(文字列)の
カスタマイズ』を参照してください。
プロフィール API を使用して属性の取得、更新、または削除を行います。詳しくは、『5.3. カ
スタム拡張属性の追加』を参照してください。
プロフィール・タイプを追加して、メイン・プロフィール・ページのレイアウト、およびプロ
フィールで使用されるウィジェットのレイアウトをカスタマイズします。詳しくは、『5.6. プ
ロフィール・タイプの追加』を参照してください。
5.3. カスタム拡張属性の追加
IBM Connections には、拡張属性を追加するための方式がいくつか備わっています。
ブラウザー UI による追加
Contract Agency の例では、属性は editable="true" に設定されたため、ユーザーは、ブラウザー UI
を使用して属性を変更できます。
API による追加
プロフィール API を使用して拡張属性を取得、更新、または削除できます。
これは拡張属性に対するデフォルトの動作です。ただし、プロフィール構成ファイルの
apiConfiguration セクションで次の構文を使用すれば、拡張属性を API から非表示にできます。
99 of 247
IBM Connections API の使用例については、この wiki の『第9章 API の使用』を参照してください。
プロフィール管理 API による追加
IBM Connections 3.0 では、プロフィール管理 API が導入されました。標準属性と同じように拡張
属性にアクセスできます。
IBM Connections API は、通常のユーザーの権限で実行されます。そのため、この API で編集でき
るのはユーザー自身のデータのみです。特定のユーザーは、プロフィール管理 API を使用すれば、
すべてのユーザーのデータを変更できます。プロフィール管理者のロールは WebSphere Integrated
Solution Console から付与されます。
プロフィール管理 API の使用例については、この wiki の『9.7 プロフィール管理 API の使用』を参
照してください。
Tivoli Directory Integrator による追加
IBM Tivoli Directory Integrator でも拡張属性を追加できます。これについては、次のトピックで説
明します。
5.4. IBM Tivoli Directory Integrator を使用してカスタ
ム・フィールドを追加
属性をそのまま追加するプロセスについては、『第 4 章 Tivoli Directory Integrator』に説明があり
ます。IBM Tivoli Directory Integrator で拡張属性を操作するときは、追加の手順が必要となります。



<TDI_solution_directory_root>/conf/LotusConnections-config/ にある tdi-profiles-config.xml
に新規属性を追加します。詳しくは、http://www-10.lotus.com/ldd/lcwiki.nsf/dx/
Populating_custom_extension_attributes_ic301 にある資料トピックを参照してくださ
い。
ワーク属性をプロフィール・コネクターに追加するときは、プロフィール拡張属性に
_extAttrs_ 接頭部を使用していることを確認します。
拡張属性には、「名前: (name:)」、「データ型: (dataType:)」、および「値: (value:)」と
いう 3 つのストリング・フィールドからなる配列としてプロフィール・コネクターからア
クセスできます。これらのフィールドとの間でデータを読み書きするには、これらの
フィールドを操作する追加のスクリプトを使用する必要があります。このようなスクリプ
トの例については、『12.1 OSC 動的フィードのプロフィールへのカスタム属性の追加と
データの取り込み』のセクション『Tivoli Directory Integrator を使用してカスタム属性を
追加』にあるステップ 5.b を参照してください。
注: 『12.2 IBM Connections プラグインと Microsoft Outlook Social Connector の構成』に、
Tivoli Directory Integrator を使用してカスタム属性を追加する例があります。
100 of 247
5.5. プロフィール属性
通常、プロフィール属性は編集可能属性としても読み取り専用属性としても設定できます。ただし、
いくつかの基本フィールドは編集できません。これらのフィールドは、製品資料『プロフィール属
性』に表で指定されています。
5.5.1 読み取り専用属性
フィールドは、次の構文で読み取り専用にできます。
このように指定された属性は、プロフィール表示フォーム上には表示されますが、「マイ・プロ
フィールの編集」フォームには表示されません。
IBM が読み取り専用属性に決定した属性は編集可能属性としては設定できません。
5.5.2 編集可能属性
フィールドは、次の構文で編集可能にできます。
このように指定された編集可能属性は、プロフィール表示フォーム上には表示されるだけでなく、
「マイ・プロフィールの編集」フォームにも変更対象として表示されます。
IBM が編集可能属性に決定した属性は、<attribute> 構文を使用すれば、読み取り専用属性としても
設定できます。
disabled=true プロパティーを使用すれば、属性を読み取り専用属性として「マイ・プロフィール
の編集」フォームに強制的に表示できます。
5.5.3 必須属性
フィールドを必須フィールドにする作業は、WebSphere フォルダー・ツリーの深い位置にある
ファイルを変更する必要があるため、他の作業に比べて多少複雑です。シナリオ例の 1 つで、
「ジョブ・カテゴリー」は必須フィールドです。すべてのプロフィール・タイプに共通の属性に対
してのみ必須属性を使用してください。属性検証は全プロフィール・タイプについて全レイアウト
上の全属性に対して実行されます。例えば、請負業者プロフィールの場合に契約会社フィールドを
必須にすることには意味がありますが、デフォルト・プロフィールの場合に契約会社フィールドを
必須にすることには意味がありません。なぜならば、デフォルト・プロフィールを持つユーザーは
契約会社フィールドを参照も編集もできないためです。
IBM Connections では、Struts フレームワークおよびバリデーター・プラグインが使用されます。
個別の属性検証はファイル validation.xml に定義されます。
101 of 247
基本的な手順を以下に示します。その後に、詳細な手順を示します。
1. validation.xml ファイルを変更します。
2. プロフィール・ユーザー・インターフェース・プロパティー・ファイルにラベルを追加します。
3. プロフィール・アプリケーションを再始動します。
始める前に


「ジョブ・カテゴリー」フィールドをプロフィール・アプリケーションに追加します。詳しく
は、『5.1. 属性フィールドをプロフィールに追加 』を参照してください。
プロフィール・アプリケーションを停止するか、またはプロフィール・アプリケーションが実
行されている WebSphere Application Server サーバー全体を停止します。
手順
1.
2.
ソース・アプリケーション・ディレクトリー
<WAS_home>¥profiles¥<profile_name>¥installedApps¥<cell_name>¥profiles.ear¥lc.prof
iles.app.war¥WEB-INF¥lib¥ にある validation.xml ファイルにナビゲートします。
例えば、Microsoft Windows の場合、このファイルは
C:¥IBM¥WebSphere¥AppServer¥profiles¥AppSrv01¥installedApps¥renconCell01¥
Profiles.ear¥lc.profiles.app.war¥WEB-INF¥validation.xml で す 。 テ キ ス ト ・ エ デ ィ タ ー で
validation.xml ファイルを開きます。
このファイルに検証の行を追加します。
a. セクション <form name="editProfileForm"> を見つけます。
b. validation.xml ファイルのセクションの先頭に最初のフィールドとして以下の行を貼り
付けます。
<field property="attribute(contactInformation.extattr.jobCategory)"
depends="required">
<msg name="required" key="errors.required" />
<arg position="0" name="required"
key="label.editprofile.contactinformation.jobCategory" />
<var>
<var-name>subEditForm</var-name>
<var-value>contactInfo</var-value>
</var>
</field>
3.
4.
validation.xml ファイルを保存します。
プロパティー JAR ファイルを解凍します。プロパティー・ファイルについて詳しくは、『2.2
製品ストリング(文字列)のカスタマイズ』を参照してください。
a. ソース・アプリケーション・ディレクトリーにある lc.profiles.web.app-3.0.jar ファイル
(<WAS_HOME>¥profiles.ear¥lc.profiles.app.war¥WEB-INF¥lib¥lc.profiles.web.app-3.0.jar)
にナビゲートします。
例えば、Microsoft Windows の場合、このファイルは
C:¥IBM¥WebSphere¥AppServer¥profiles¥AppSrv01¥installedApps¥renconCell01¥Profiles.
ear¥lc.profiles.app.war¥WEB-INF¥lib¥lc.profiles.web.app-3.0.jar です。
b. lc.profiles.web.app-3.0.jar ファイルを別の場所にバックアップします (バックアップ・
コピーは同じディレクトリーに残さないでください。さもないと、プロフィールでクラ
スがロードされるときに問題が発生します)。
c. JAR ファイルを一時ディレクトリーに解凍します。ご使用の圧縮ユーティリティーで
JAR ファイルが圧縮フォーマットとして認識されない場合は、拡張子を .zip に変更して
ください。
102 of 247
5.
プロパティー・ファイルを変更します。
a. 一時ディレクトリーにナビゲートします。
b. com¥ibm¥lconn¥profiles¥strings ディレクトリーにある ui.properties ファイルをテキス
ト・エディターで開きます。
c. 次のキーと値のストリング・ペア行を、ui.properties ファイルにある同様の行の近くに
新規行として追加します。
d. ui.properties ファイルを保存します。
6.
変更した情報をアプリケーション・ソース・ディレクトリーに保存します。
a. 解凍したファイルを圧縮し、拡張子 .jar で保存します。ご使用の圧縮ユーティリティー
で JAR ファイルが圧縮フォーマットとして認識されない場合は、解凍したファイルを
lc.profiles.web.app-3.0.zip で圧縮してから、拡張子を .jar に変更してください。
b. イ ン ス ト ー ル し た lc.profiles.web.app-3.0.jar フ ァ イ ル を ソ ー ス ・ デ ィ レ ク ト リ ー
<WAS_HOME>¥profiles.ear¥lc.profiles.app.war¥WEB-INF¥lib¥ から削除します。インス
トールした JAR ファイルのバックアップをこのディレクトリーに残さないでください。
さもないと、Profiles アプリケーションで問題が発生する可能性があります。
c. 変更した lc.profiles.web.app-3.0.jar ファイルを
<WAS_HOME>¥profiles.ear¥lc.profiles.app.war¥WEB-INF¥lib¥ にコピーします。
重要: IBM Connections 3.0.1 では、ソース・アプリケーション・ディレクトリーにある
プロフィール・プロパティー・ファイルを変更する必要があります。製品ストリングに
関しては、標準のカスタマイズ手順に従わないでください。IBM Connections では、カス
タマイズ・ディレクトリーからはプロフィール検証ラベル・ストリングはロードされま
せん。
プロフィール・アプリケーションを再始動します。
変更内容をテストします。
a. ブラウザー・キャッシュをクリアします。
b. プロフィール・アプリケーションにナビゲートして「マイ・プロフィールの編集」を実行
します。
c. プロフィールを変更します。例えば、電話番号などを変更してください。ただし、ジョ
ブ・カテゴリーは入力しないでください。
d. プロフィールを保存しようとすると、次のようなエラー・メッセージが表示されます。
7.
8.
103 of 247
関連作業


プロフィールに属性を追加する場合は、『5.1. 属性フィールドをプロフィールに追加 』を参
照してください。
製品ストリングのカスタマイズに関する一般的な説明については、『2.2 製品ストリング(文字
列)のカスタマイズ』を参照してください。
5.6. プロフィール・タイプの追加
契約会社の例では、拡張属性 (新規フィールド) を追加し、すべてのユーザーがその属性を使用でき
るようにしました。この新規属性は非常に有用ですが、正社員には不要です。プロフィールでは、
様々なプロフィール・タイプに対して別々のレイアウトを使用できます。契約会社の例では、プロ
フィール・タイプが「Contractor」の場合のレイアウトには、契約会社属性が含まれますが、プロ
フィール・タイプが「default」の場合のレイアウトには、このフィールドは表示されません。
プロフィールのタイプやレイアウトは拡張属性に限られたものではありません。別の例として、大
学について考えてみると、職員は自分の属性の多くを変更できるようにし、学生の属性の多くは読
み取り専用するといったように、職員と学生で異なるプロフィール・タイプを持つことが可能です。
プロフィール・タイプを使用すれば、プロフィールで属性のレイアウトだけでなくウィジェットの
レイアウトも制御できます。請負業者の例では、契約スタッフには通常の管理レポート・チェーン
がないこと、および請負業者のプロフィールを表示するときに「レポート・チェーン」ウィジェッ
トが役に立たないことが想定されます。この記事で後から示す手順では、プロフィール・タイプが
「Contractor」となるウィジェット・レイアウトを変更して「レポート先」ウィジェットを削除す
る方法について説明します。
プロフィール・タイプはそれ自体がプロフィール・データベースにある属性ですが、ブラウザー・
インターフェースや API からは変更できません。プロフィール・タイプ属性を変更するには、
Tivoli Directory Integrator を使用するか、または新たに導入されたプロフィール管理 API を使用し
ます。プロフィール・タイプはプロフィールの基本構造です。そのため、当然のことながら、プロ
フィール・タイプ属性は、ユーザー自身が何気なしに変更できるようにはなっていません。
Tivoli Directory Integrator を使用してプロフィールにデータを追加する方法については、『第 4 章
Tivoli Directory Integrator』を参照してください。プロフィール管理 API については、『9.7 プロ
フィール管理 API の使用』を参照してください。
5.6.1 プロフィール・タイプによる属性レイアウトの制御
プロフィール・タイプで属性レイアウトを制御する場合は、profiles-config.xml ファイルを使用し
ます。請負業者の例で追加レイアウトを作成するために必要な手順は次のようになります。
1.
2.
3.
4.
5.
profiles-config.xml 構成ファイルをチェックアウトします。
ファイルを編集して新規レイアウトを作成します。
ファイルをチェックインします。
プロフィール・アプリケーションを再始動します。
変更内容をテストします。
104 of 247
始める前に
新規のプロフィール・フィールドを追加してテストしておきます。詳しくは、『5.1. 属性フィール
ドをプロフィールに追加 』を参照してください。
手順
1.
profiles-config.xml 構成ファイルをチェックアウトします。
構成ファイルをチェックアウト/チェックインする一般的なプロセスについては、『1.4
wsadmin ツールを使用したカスタマイズの公開』を参照してください。
ご使用のシステムに合わせて次のサンプル・コマンドを修正してください。
cd e:¥IBM¥WebSphere¥AppServer¥profiles¥Dmgr01¥bin
wsadmin -lang jython -user wasmgr -password d3moL0tus
execfile("profilesAdmin.py")
ProfilesConfigService.checkOutConfig("f:/temp", AdminControl.getCell() )
後のステップでファイルをチェックインするために、必ず wsadmin セッションは開いたまま
にしておいてください。
2.
テキスト・エディターで profiles-config.xml ファイルを開きます。
次の図は、プロフィールの layoutConfiguration の構造を示したものです。
105 of 247
次の図は、請負業者スタッフに対して重複レイアウトがどのように作成されたのかを示してい
ます。
請負業者の例では、profileType="default" のレイアウトに外部属性 ContractAgency 用の追加
行が含まれていないこと、および profileType="Contractor" のレイアウトにその追加行が含ま
れていることを確認してください。
3.
ファイルをチェックインします。
同じ wsadmin セッションで、次のコマンドを使用してプロフィール構成ファイルをチェック
インします。
4.
プロフィール・アプリケーションを再始動します。
これは、プロフィールで新規構成を取得するために必要です。
プ ロ フ ィ ー ル ・ ア プ リ ケ ー ションは 、WebSphere Application Server Integrated Solution
Console から停止および開始できます。
変更内容をテストします。
5.
関連作業

上記の手順では、メイン・プロフィール・ページのレイアウトが変更されました。検索
ページのレイアウトも変更できます。『5.9. プロフィール検索のカスタマイズ』を参照し
てください。
106 of 247
5.6.2 プロフィール・タイプによるウィジェット・レイアウ
トの制御
請負業者の例や、大学の職員/学生の例では、無用または不適切なウィジェットが存在する可能性が
あります。ウィジェットの配置を制御するにはウィジェット・レイアウトが使用されます。このレ
イアウトは、様々なタイプに対してプロフィール・タイプ非表示/表示ウィジェットで別々に使用で
きます。
基本手順は次のとおりです。
1.
2.
3.
4.
widgets-config.xml ファイルをチェックアウトします。
この構成ファイルを編集して、レイアウトを作成したり変更したりします。
構成ファイルをチェックインします。
変更内容をテストします。
手順
詳細手順は次のとおりです。
1.
widgets-config.xml ファイルをチェックアウトします。
構成ファイルをチェックアウト/チェックインする一般的なプロセスについては、『1.4
wsadmin ツールを使用したカスタマイズの公開』を参照してください。
ご使用のシステムに合わせて次のサンプル・コマンドを修正してください。
cd e:¥IBM¥WebSphere¥AppServer¥profiles¥Dmgr01¥bin
wsadmin -lang jython -user wasmgr -password d3moL0tus
execfile("profilesAdmin.py")
ProfilesConfigService.checkOutConfig("f:/temp", AdminControl.getCell() )
後のステップでファイルをチェックインするために、必ず wsadmin セッションは開いたまま
にしておいてください。
2.
ウィジェットのレイアウトを作成したり変更したりします。
下図は、widgets-config.xml ファイルの一部を抜き出したものです。次の項目によって構成
ファイルが使用されていることが分かります。
 プロフィール
 コミュニティー
さらに、このファイルの使用目的が分かります。


ウィジェット定義
レイアウト
107 of 247
請負業者の例の場合、プロフィール・タイプ「Contractor」専用のレイアウトがほかに必要と
なります。ただし、ウィジェット構成ファイルの場合は、resourceSubType が使用されます。
請負業者の「チェーニングするレポート」ウィジェットを非表示にするには、次の図にあるよ
うに特定のレイアウト・セクションでウィジェットをコメント化するだけです。
3.
ファイルをチェックインします。
同じ wsadmin セッションで、次のコマンドを使用してプロフィール構成ファイルをチェック
インします。
4.
プロフィール・アプリケーションを再始動します。
これは、プロフィールで新規構成を取得するために必要です。
プ ロ フ ィ ー ル ・ ア プ リ ケ ー ションは 、WebSphere Application Server Integrated Solution
Console から停止および開始できます。
変更内容をテストします。
5.
108 of 247
関連作業


このセクションでは、レイアウト内のウィジェットを削除したり移動したりできるという例を
いくつか示しました。
ほかにも、カスタム・ウィジェットをプロフィールのレイアウトに追加することもできます
(『5.7. ウィジェットの追加』)。
プロフィールでプロフィール・タイプを使用すれば、属性レイアウトを制御できます (『5.6. プ
ロフィール・タイプの追加』)。
5.7. ウィジェットの追加
ホームページ、コミュニティー、およびプロフィールにカスタム・ウィジェットを追加すれば、重
要な情報、状況、タスクなど、組織に関連するほとんどすべてのものをプロフィールで統合できま
す。ウィジェットは「resourceOwnerWidget」として設定できます。そのようなウィジェットは、
「マイ・プロフィール」で当該ユーザーにのみ表示されます。タスク・リストや状況ウィジェット
は、このような設定に適したウィジェットの例です。一方、すべてのユーザーに表示されるウィ
ジェットもあります。ここでは、その例として、ソーシャル・バッジ・ウィジェットについて説明
します。
ソーシャル・バッジ・ウィジェットは、社会貢献やプロフィール作成によってユーザーを評価する
ことで IBM Connections とその付属機能の導入を促進します。
このセクションでは、ウィジェットをプロフィール・ページに追加する方法について説明しますが、
ウィジェットのコードを作成する方法については説明しません。ここで使用する例は、静的 HTML
ウィジェットです。
109 of 247
始める前に
実行中のウィジェットがあること、およびそのウィジェットがデプロイされた場所の URL がある
ことを確認します。
今回の例では、定義と HTML の「ペイロード」が含まれた単純な XML ファイルを使用します。
<iw:iwidget name="badge" title="Social Badge"
xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget" supportedModes="view">
<iw:content mode="view">
<![CDATA[
<div align="center" style="margin:6px;border-style:ridge;borderwidth:6px;background:yellow;border-color:yellow;padding:2px">
<b>Level Two Contributor</b></div>
<div style="margin:2px">Dan is a <b>Level 2</b> Contributor:
<ul>
<li><b>24</b> followers </li>
<li><b>7</b> blog posts </li>
<li><b>4</b> communities </li>
</ul>
<p>(Static example Widget)</p>
</div>
]]>
</iw:content>
</iw:iwidget>
この例では、ウィジェットは IBM Connections と同じ HTTP サーバーにデプロイされていて、その
URL は http://social.demos.ibm.com/badge.xml となっています。
手順
1.
widget-config.xml ファイルをチェックアウトします。構成ファイルをチェックアウト/チェッ
クインする一般的なプロセスについては、『1.4 wsadmin ツールによるカスタマイズの公開』
を参照してください。
ご使用のシステムに合わせて次のサンプル・コマンドを修正してください。
cd e:¥IBM¥WebSphere¥AppServer¥profiles¥Dmgr01¥bin
wsadmin -lang jython -user wasmgr -password d3moL0tus
execfile("profilesAdmin.py") ProfilesConfigService.checkOutWidgetConfig("f:/temp",
AdminControl.getCell() )
後のステップでファイルをチェックインするために、必ず wsadmin セッションは開いたまま
にしておいてください。
2.
構成ファイルにウィジェットを定義します。
次の行を構成ファイルの <definitions> ... </definitions> セクション内に追加してください。
<widgetDef defId="socialBadge" url="http://social.demos.ibm.com/badge.xml"
primaryWidget="false" modes="view" />
110 of 247
この行は、終了タグ </definitions> 行の直前に配置すると見つけやすくなります。
3.
ウィジェットをプロフィールのレイアウトに追加します。
通常、ウィジェットは、デフォルト・プロフィール・レイアウトと、メイン・プロフィール・
ペ ー ジ に 追 加 し ま す 。 次 の 行 を <layout resourceSubType="default"> <page
pageId="profilesView"> ... セクション内に追加します。
<widgetInstance uiLocation="col3" defIdRef="socialBadge"/>
4.
widget-config ファイルをチェックインします。
同じ wsadmin セッションで、次のコマンドを使用してウィジェット構成ファイルをチェック
インします。
ProfilesConfigService.checkInWidgetConfig()
5.
プロフィール・アプリケーションを再始動します。
関連作業
今回の手順では、新規ウィジェットを追加する方法について説明しました。プロフィール・タイプ
でウィジェット・レイアウトを制御できます。『5.6. プロフィール・タイプの追加』を参照してく
ださい。
5.8. ログイン属性のカスタマイズ
IBM Connections のログイン属性をカスタマイズする作業は 2 つのパートに分かれます。


ログインを許可するように WebSphere Application Server (WAS) のセキュリティーを構成
する
WAS ログイン・ユーザーを Connections プロフィール・データベース内のエントリーにマップ
するように Connections を構成する
WebSphere Application Server のセキュリティーを構成
WebSphere Application Server の セ キ ュ リ テ ィ ー と ロ グ イ ン を 構 成 す る 方 法 に つ い て は 、
WebSphere Application Server の製品資料
(http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp) を参照してください。
Connections の構成に関係なく WAS にログインできることを証明することは有用な診断プロセス
です。通常、これを行うには、デフォルトの WebSphere Application Server である server1 を始動
して、snoop サーブレットを実行します。一般に snoop サーブレットは DefaultApplication の一部
と し て イ ン ス ト ー ル さ れ ま す 。 通 常 の ア ク セ ス ・ ポ ー ト は 9080 で す ( 例 :
http://testsrv01.demos.ibm.com:9080/snoop)。
Connections のログイン属性は、その属性で WAS にログインできるまではカスタマイズできませ
ん。
Connections のログイン属性をカスタマイズ
profiles-config.xml ファイル内にある下図のセクションでは、WebSphere Application Server のロ
グイン・ユーザーをプロフィール・データベースにマップするために Connections で使用される
フィールドが定義されています。
111 of 247
3 番目の属性 loginId にカスタム値を指定できます。(loginId は、プロフィール・データベース内の
Employee 表の Prof_Login 列を参照します。)
インストール・プロセスで LDAP 属性をプロフィール・データベースにマップすると、選択したカ
スタム・ログイン属性がプロフィール内の loginId 属性にマップされます。
この結果、選択した属性が適用されている状態で WebSphere Application Server にログインすると、
プロフィール・データベース内の Employee 表の Prof_Login 列でその属性が検索されます。
5.9. プロフィール検索のカスタマイズ
プロフィール検索は、検索フォームで拡張属性を使用できるようにカスタマイズできます。また、
組織に関係のない属性を検索対象から除くこともできます。
5.9.1 プロフィール・ディレクトリー検索オプションの構成
今回のシナリオでは、職種属性を検索フォームに追加します。
始める前に



拡張属性をあらかじめ定義しておきます。『5.1. 属性フィールドをプロフィールに追加 』を
参照してください。
拡張属性のラベルを定義しておきます。『5.2. 属性のラベルの指定』を参照してください。
検索に使用するテスト・データを用意しておきます。『5.3. カスタム拡張属性の追加』を参照
してください。
手順
1.
profiles-config.xml ファイルをチェックアウトします。
構成ファイルをチェックアウト/チェックインする一般的なプロセスについては、『1.4
wsadmin ツールを使用したカスタマイズの公開』を参照してください。
ご使用のシステムに合わせて次のサンプル・コマンドを修正してください。
112 of 247
cd e:¥IBM¥WebSphere¥AppServer¥profiles¥Dmgr01¥bin wsadmin -lang jython user wasmgr -password d3moL0tus execfile("profilesAdmin.py")
ProfilesConfigService.checkOutConfig("f:/temp", AdminControl.getCell() )
後のステップでファイルをチェックインするために、必ず wsadmin セッションは開いたまま
にしておいてください。
2.
テキスト・エディターで profiles-config.xml ファイルを開きます。
<searchLayout> セクションを見つけます。次の行を追加します。
<extensionAttribute showLabel="true"
labelKey="label.custom.jobCategory" bundleIdRef="custom"
extensionIdRef="jobCategory" />
3.
4.
ファイルを保存して閉じます。
profiles-config.xml ファイルをチェックインします。
同じ wsadmin セッションで、次のコマンドを使用してプロフィール構成ファイルをチェック
インします。
ProfilesConfigService.checkInConfig()
5.
6.
プロフィール・アプリケーションを再始動します。
ブラウザーで検索フォームをテストします。
カスタマイズが成功すると、次のような表示になります。
次の手順
拡張属性を検索フォーム上に配置したら、次に、フィールドを検索結果ページに追加します。手順
については、この後で説明します。
ヒント
契約会社の例では、すべてのユーザーには当てはまらない属性を使用しました。検索フォームで対
話式の検索を許可せずに属性に対して API 検索を許可することは有用な場合があります。これを行
うには、次の例にあるように hideOnSearchUIForm="true" 構文を使用します。
113 of 247
この検索レイアウトはすべてのプロフィール・タイプで共通です。ちょうど検索を行っているため、
プロフィール・タイプは不明です。これを、検索結果でプロフィール・タイプがが判明している検
索結果レイアウトと対比させてください。
5.9.2 ディレクトリー検索結果のカスタマイズ
拡張属性が表示されるようにプロフィールの検索結果をカスタマイズできます。また、組織に関係
のない属性を検索結果レイアウトから除くこともできます。
今回のシナリオでは、契約会社フィールドを、契約会社が含まれる検索結果に追加します。
始める前に



拡張属性をあらかじめ定義しておきます。『5.1. 属性フィールドをプロフィールに追加 』を
参照してください。
拡張属性のラベルを定義しておきます。『5.2. 属性のラベルの指定』を参照してください。
請負業者プロフィール・タイプかそれに準じたものを定義しておきます。『5.6. プロフィー
ル・タイプの追加』を参照してください。
手順
1.
profiles-config.xml ファイルをチェックアウトします。
構成ファイルをチェックアウト/チェックインする一般的なプロセスについては、『1.4
wsadmin ツールを使用したカスタマイズの公開』を参照してください。
ご使用のシステムに合わせて次のサンプル・コマンドを修正してください。
cd e:¥IBM¥WebSphere¥AppServer¥profiles¥Dmgr01¥bin
wsadmin -lang jython -user wasmgr -password d3moL0tus
execfile("profilesAdmin.py")
ProfilesConfigService.checkOutConfig("f:/temp",
AdminControl.getCell() )
後のステップでファイルをチェックインするために、必ず wsadmin セッションは開いたまま
にしておいてください。
2.
3.
テキスト・エディターで profiles-config.xml ファイルを開きます。
<searchResultsLayout profileType="default"> セクションを見つけます。
profileType="Contractor" のセクションを複写します。
この profileType="Contractor" のセクションに次の行を追加します。groupwareEmail の下にあ
る 3 番目の Column セクションに追加してください。
<extensionAttribute showLabel="true" hideIfEmpty="true"
labelKey="label.custom.jobCategory" bundleIdRef="custom"
extensionIdRef="contractAgency" />
4.
ファイルを保存して閉じます。
114 of 247
5.
profiles-config.xml ファイルをチェックインします。
同じ wsadmin セッションで、次のコマンドを使用してプロフィール構成ファイルをチェック
インします。
ProfilesConfigService.checkInConfig()
6.
7.
プロフィール・アプリケーションを再始動します。
ブラウザーで検索結果フォームをテストします。カスタマイズが成功すると、次のような表示
になります。
ヒント
hideIfEmpty="true" を使用すると、リストが長いときに画面のスペースが節約されるため、検索結
果レイアウトのすべての属性に有用です。
5.9.3 検索先行入力用に設定をカスタマイズ
Connections には、名前の検索先行入力を構成するためのパラメーターがいくつか用意されていま
す。
これらのパラメーターは簡単に構成できます。製品のインフォメーション・センターに説明があり
ます。これらのパラメーターを変更しなければならなくなる要因として、次のような状況が考えら
れます。
115 of 247



ユーザーの数が多く、数個のキーを押した後に先行入力により返される結果の数が多すぎる。
ユーザーの多くがリモート・ユーザーであり、ネットワーク経由での先行入力の反応が遅い。
サーバー・パフォーマンスやネットワークは非常に良好な状態にあり、名刺やサムネールを参
照するオプションをユーザーに提供したい。
正しい設定値は組織ごとに異なります。最適な値が決まるまで、試行錯誤を繰り返してください。
5.10. IBM Sametime の統合
Connections v3.0.1 は、プロフィール・ページや名刺に IBM Sametime 在席確認を表示するように
構成できます。応答可能な状況を示しているユーザーとのインスタント・メッセージ・チャットを
開始するアクションを使用できます。在席確認は、実行中の IBM Sametime リッチ・クライアント
や、新規 IBM Sametime Web プロキシー・サーバーと統合するように構成できます。
また、IBM Sametime クライアントも、名刺を選択し、Activities と連動させるために Connections
と統合できます。
116 of 247
第6章
プロフィールとコミュニティーのビジネス・カー
ドをカスタマイズ
IBM Connections では、2 種類のビジネス・カード・サービスが提供されています。1 つはプロ
フィール用で、もう 1 つはコミュニティー用です。他のすべてのビジネス・カードと同様に、IBM
Connections ビジネス・カードでは、IBM Connections ユーザー・プロフィールやコミュニティー
に関する手短な情報が提供されます。どちらのビジネス・カードも、ユーザーやコミュニティーに
関する情報に簡単にアクセスできるように任意の Web アプリケーションと統合できます。IBM
Connections ビジネス・カードを Web アプリケーションと統合することは、ご使用の Web アプリ
ケーションから IBM Connections にシームレスなナビゲーションを行うときに非常に役立ちます。
また、組織の要件に合わせてプロフィール・ビジネス・カードをカスタマイズすることもできます。
プロフィール・ビジネス・カードのカスタマイズとは、例えば、サード・パーティー・アプリケー
ションへのリンクを追加/削除すること、プロフィール・ビジネス・カードの情報をカスタマイズす
ること、アクション・リンクをカスタマイズすることなどです。
注:



IBM Connections では、JavaScript Object Notion with Padding (JSONP) テクノロジーが使用さ
れています。
JSONP のサポートは継続されますが、ビジネス・カードでこのテクノロジーを使用することは
将来のリリースで推奨されなくなります。IBM Connections で JSONP データが送信されない
ようにするために、Ajax プロキシーを使用できます。これを行うことで、JSONP テクノロ
ジーが使用されることなく、ビジネス・カードが Web アプリケーションで統合されます。
ご使用の Web アプリケーションが IBM Connections 以外のドメインでホストされている場合
は、ビジネス・カードの統合を妨げる可能性のある JavaScript のクロスドメイン呼び出しがブ
ラウザーで許可されないため、Ajax プロキシーを使用してください。Ajax プロキシーでは、
Web ブラウザーに適用されるものと同一生成元ポリシー、および異なるドメイン・ネームが考
慮されます。ビジネス・カードを整合的に統合する今回の例では、ビジネス・カードをクロス
ドメインで呼び出すために Ajax プロキシーをどのように使用できるのかを示します。
また、Ajax プロキシーでは、プライベート・コミュニティーの機密性も考慮されます。Ajax プ
ロキシーを使用しないと、プライベート・コミュニティーに関する機密情報を取得できてしま
います。ユーザーがプライベート・コミュニティーにアクセスした後にどこかの Web サイトに
アクセスした場合、その Web サイトで IBM Connections を呼び出せば、アクセスされたプラ
イベート・コミュニティーに関する機密情報を取得できます。Ajax プロキシーを使用すれば、
個人データが無許可の呼び出しに対して漏えいするリスクがなくなります。
IBM Connections がホストされているサーバーと同じサーバーで、ご使用のアプリケーションがホ
ストされている場合、IBM Connections の Ajax プロキシーを直ちに使用できます。
WebSphere Application Server と WebSphere Portal Server には Ajax プロキシー・コンポーネン
トがバンドルされています。ご使用のアプリケーションがこのどちらかの製品でホストされている
のであれば、その製品の Ajax プロキシーを使用できます。


WebSphere Application Server には、Web 2.0 のフィーチャー・パックが含まれた Ajax プロキ
シーが付属しています:
http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.ws.aj
axproxy.runtime.help/ajaxproxy_gettingstarted.html
WebSphere Portal Server には Ajax プロキシーが付属しています:
http://publib.boulder.ibm.com/infocenter/wpdoc/v6r1/index.jsp?topic=/com.ibm.wp.ent.doc_v6101
/dev/ajax_proxy_cfg.html
117 of 247
6.1. コミュニティー・ビジネス・カードの統合
6.1.1 Web アプリケーションにコミュニティー・ビジネス・
カードを統合
Web アプリケーションで IBM Connections コミュニティー・ビジネス・カードを統合すれば、
Web アプリケーション・ユーザーがコミュニティーに関する情報を素早く取得できるようになりま
す。コミュニティー・ビジネス・カードでは、コミュニティーに関する基本情報 (名前や写真、コ
ミュニティーに関連付けられたウィジェットへのリンクなど) が表示されます。
始める前に
コミュニティー・ビジネス・カードとともにロードされる CSS ファイルには、フォント・スタイ
ル情報は含まれていません。フォント・スタイルをアプリケーションに対してグローバルに定義し
て、アプリケーションに適用されるフォント・スタイルが統合されたコミュニティー・ビジネス・
カードに対しても表示されるようにしてください。フォント・スタイルをグローバルに定義するこ
とによって、視覚的な観点から Web アプリケーションで統合がシームレスになります。次の手順
では、フォント・スタイル情報をグローバルに定義する方法については説明していません。
手順
Web アプリケーションでコミュニティー・ビジネス・カードを統合するには、以下の手順を実行し
てください。
1.
Web ページ・ソース・コードの末尾にあるタグの前に下記のコード・スニペットを追加しま
す。Web アプリケーションにコードを組み込む前に、ご使用の環境に合わせてプレースホル
ダーを実際の値で置き換えてください。このコードは、Web アプリケーションのソース・
コードで変数 SemTagSvcConfig を定義したものです。この変数には、IBM Connections サー
バー・アドレスや Ajax プロキシー・サーバー・アドレスに関する情報のほかに、ビジネス・
カードをロードするときに CSS ファイルをロードするかどうかに関する情報も含まれます。
<script type="text/javascript">
var SemTagSvcConfig = {baseUrl:"community_service_URL>", proxyURL:
"<ajax_proxy_URL>" };
</script>
次の表は、SemTagSvcConfig 変数に使用できるプロパティーをリストしたものです。
プロパティー
説明
baseUrl
proxyURL
ビジネス・カードのリソース・ストリングと CSS ファイルをコミュニティー・
アプリケーションからダウンロードするために使用されます。
baseUrl パラメーターは、ロードする CSS に対して指定する必要があります。例
えば、http://myserver.com/communities などを指定します。
このプロパティーは必須です。
Ajax プロキシーを使用して HTTP 要求を伝えるために使用されます。このプロキ
シー URL は、クロスドメインの問題を避けるために必要です。これは、IBM
Connections サーバーから Web サイトにデータを伝えるために使用されます。
proxyURL パラメーターの値は、ユーザー自身の Ajax プロキシーへのリンクでなけ
ればなりません。その Ajax プロキシーは、ビジネス・カードを統合するアプリ
ケーションと同じドメインにインストールされていなければなりません。例えば、
ご使用のアプリケーションが http://myserver.com/myCustomApp にインストールさ
れている場合、proxyURL の値は http://myserver.com/myCustomAppProxy となりま
す。
このプロパティーは必須です。
118 of 247
isBidiRTL
双方向言語のサポートを提供するために使用されます。このプロパティーでは論
理値が使用されます。このプロパティーはオプションです。
loadCssFiles
ビジネス・カード用の CSS ファイルをダウンロードするために使用されます。
このプロパティーでは論理値が使用されます。このプロパティーはオプションで
す。このプロパティーはデフォルトで true に設定されています。
2.
コミュニティー・ビジネス・カードでは Dojo が使用されます。そのため、ビジネス・カード
を統合するための Web アプリケーションで Dojo がサポートされるようにする必要がありま
す。ご使用の Web アプリケーションで Dojo がサポートされるようにするには、下記のコー
ド・スニペットを Web アプリケーション・ソース・コードに追加します。このコード・スニ
ペットにより、Dojo ライブラリーが IBM Connections サーバーから Web アプリケーションに
追加されます。下記のコードでは、Dojo ライブラリーが追加されるだけでなく、ビジネス・
カードに必要となる Web アプリケーションに semantic_TagService.js JavaScript ファイル
も追加されます。
<script type="text/javascript"
src="<community_service_URL/javascript/dojo_1.4.1/dojo/dojo.js"></script>
<script type="text/javascript"
src="<community_service_URL>/javascript/dojo_1.4.1/dojo/semanticTagServic
e.js">
</script>
Dojo 1.0 以上がすでにアプリケーションで使用されている場合、コードの最初の行を <script
type="text/javascript"
src="<community_service_URL/javascript/dojo_1.4.1/dojo/dojo.js"></script> にすることはでき
ません。
3.
次のコード部分を、コミュニティー・ビジネス・カードを表示する必要のある Web アプリ
ケーションのソース・コードに追加します。
<span class="vcomm X-community-display-inline">
<span class="name" style="display:none;"><community_name></span>
<span class="uuid" style="display:none"><community_uuid></span>
<span class="selectedWidgetId" style="display:none;"><widget_id></span>
</span>
説明:



community_name はコミュニティーの名前です。このパラメーターはテキスト・ストリングで
す。
community_uuid はコミュニティーの UUID です。
widget_id は、コミュニティーに追加されたウィジェットの widgetDefId に相当するテキスト・
ストリングです。このテキスト・ストリングは、ナビゲーション・バーのメニュー項目を強調
表示するために使用されます。この要素はオプションです。コミュニティー・に統合される
iWidget に対してのみ、この要素を指定してください。このウィジェット ID は、iWidget 開発
者によって定義されるものであるため、管理者または iWidget 開発者に要求する必要がありま
す。
119 of 247
次の例は、上述の手順でコミュニティー・ビジネス・カードを統合するサンプル Web ページの
ソース・コードです。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Example</title>
<script type="text/javascript"
src="http://social.demos.ibm.com/communities/javascript/dojo_1.4.1/dojo/dojo.js"></scr
ipt>
<script type="text/javascript"
src="http://social.demos.ibm.com/communities/javascript/dojo_1.4.1/dojo/semanticTagSer
vice.js"></script>
</head>
<body>
<span class="vcomm X-community-display-inline">
<span class="name" style="display:none;">Collaboration Solutions</span>
<span class="uuid" style="display:none">7cb989c5-de45-4b3b-9380-3c4ea92425e3</span>
<span class="selectedWidgetId" style="display:none;">Members</span>
</span>
<script type="text/javascript">
var SemTagSvcConfig =
{
baseUrl: "http://social.demos.ibm.com/communities", proxyURL:
"http://ameetbharti:9080/mum/proxy/", loadCssFiles: true
};
</script>
</body>
</html>
次の図は、サンプル Web アプリケーション内で統合されたビジネス・カードを示しています。
120 of 247
オプションのステップ
下記のコード例は、Ajax によって Web アプリケーションが動的に構成されるときにコミュニ
ティー・ビジネス・カードをどのように統合するのかを示したものです。このコードは、静的ペー
ジの場合は無視してかまいません。前述の手順にあるステップ 1 とステップ 2 を実行してから、こ
のステップを実行してください。
この例にある「containerId」は、コミュニティー・ビジネス・カードが挿入される Web アプリ
ケーションにすでに登録されているドーム・オブジェクト名です。この名前は、ご使用の Web ア
プリケーションに合わせて変更してください。
6.1.2 Lotus Domino クライアント・アプリケーションにコ
ミュニティー・ビジネス・カードを統合
コミュニティー・ビジネス・カードを Lotus Domino 8.5 Web アプリケーションに統合する場合は、
手順が多少異なります。Lotus Domino 8.5 の Ajax プロキシーは、コミュニティー・ビジネス・
カードの統合に使用する前に変更が必要です。また、コミュニティー・ビジネス・カードの統合時
に Lotus Domino 8.5 サーバーの Dojo ライブラリーを使用できます。
手順
Lotus Domino Server 8.5 サーバーにデプロイされているアプリケーションにコミュニティー・ビジ
ネス・カードを統合するときは、以下の手順が必要となります。
1.
次の手順を使用して Lotus Domino Ajax プロキシーに新規規則を追加します。
a. ¥data¥properties¥proxy-config.properties ファイルを開きます。
b. このプロパティー・ファイルに次の規則を追加します。
c.
変更内容を保存してファイルを閉じます。
121 of 247
2.
3.
下記のコード・スニペットをアプリケーションに追加します。下記のコードにより、Lotus
Domino サーバーから Lotus Domino サーバー Dojo サポートの Ajax プロキシーと、IBM
Connections サーバーから sementicTagService.js が追加されます。
次のコード部分を、コミュニティー・ビジネス・カードを表示する必要のある Web アプリ
ケーションのソース・コード内に追加します。次のコードにより、ビジネス・カードが、Web
アプリケーションのソース・コードで使用されるすべての場所でアプリケーションに追加され
ます。
<script type="text/javascript">
var SemTagSvcConfig =
{
baseUrl: "http://<myConnectionsServer.mycompany.com>",
proxyURL:
"http://http://<myDominoServer.mycompany.com>/xsp/proxy/BasicProxy"
,
loadCssFiles: true
};
</script>
<script type="text/javascript"
src="http://<myDominoServer.mycompany.com>/domjs/dojo1.1.1/dojo/dojo.js"></script>
<script type="text/javascript"> dojo.require("dojo.i18n");
dojo.require("dojo.cookie");
</script>
<script type="text/javascript"
src="http://<myConnectionsServer.mycompany.com>/javascript/build/do
jo/semanticTagService.js"></script>
説明


community_name はコミュニティーの名前です。このパラメーターはテキスト・ストリン
グです。
 community_uuid はコミュニティーの UUID です。
widget_id は、コミュニティーに追加されたウィジェットの widgetDefId に相当するテキスト・
ストリングです。このテキスト・ストリングは、ナビゲーション・バーのメニュー項目を強調
表示するために使用されます。この要素はオプションです。コミュニティーに統合される
iWidget に対してのみ、この要素を指定してください。このウィジェット ID は、iWidget 開発
者によって定義されるものであるため、管理者または iWidget 開発者に要求する必要がありま
す。
6.2. プロフィール・ビジネス・カードの統合
プロフィール・ビジネス・カードでは、Web アプリケーション内のユーザーに関する情報が、簡単
にアクセスできる状態で提供されます。2 つのタイプのビジネス・カードを Web アプリケーショ
ンと統合できます。


インライン: このタイプのビジネス・カードはユーザー・インターフェースに組み込まれます。
ポップアップ: このタイプのビジネス・カードは、ユーザー・インターフェースにあるリンクを
ユーザーがクリックしたときに表示されます。
始める前に
ユーザーのビジネス・カードを統合するには、必要な構成変更を行うときに以下のいずれかの値が
必要となります。
122 of 247


ユーザー ID (x-lconn-userid パラメーターを使用): これは、IBM Connections 内でユーザーに固
有の ID です。この ID は管理者によって定義されます。この値は企業の LDAP ディレクトリー
から取り込まれます。
メール・アドレス: IBM Connections の実装環境によっては、ユーザーのメール・アドレスがな
い場合もあります。この場合、ビジネス・カードの統合に x-lconn-userid を使用できます。
6.2.1 インライン・プロフィール・ビジネス・カードの統合
手順
プロフィール・ビジネス・カードを Web アプリケーションに統合するには、以下の手順に従って
ください。
1.
semanticTagService.js ファイルが含まれている下記のコード・スニペットを自分のコードに
追加します。この JavaScript には、プロフィール・ビジネス・カードのサポートに必要な機
能が含まれています。この JavaScript は、ビジネス・カードを統合するための Web アプリ
ケーションに入っていなければなりません。
<script type="text/javascript"
src="<IBM_Connection_Server>/profiles/ibm_semanticTagServlet/j
avascript/semanticTagService.js"></script>
注:
a.
b.
上記 JavaScript の実行前に BODY 要素がロードされて開始されていることを確認してく
ださい。上記スクリプト・リソースが HEAD 要素に組み込まれている場合、defer 属性
(defer="defer") を組み込む必要があります。それ以外の場合は、上記スクリプト・リソー
スを BODY 要素に配置してください。
プロフィール・ビジネス・カード自体に Dojo が組み込まれています。Dojo がアプリ
ケーションで使用されている場合は、上記スクリプト・リソースの代わりに下記のコー
ド・スニペットを組み込んでください。このコード・スニペットに含まれ
る ?inclDojo=false パラメーターによって、IBM Connections に Dojo が組み込まれなくな
ります。?inclDojo=false 設定を使用する場合は、Web ページに Dojo を組み込んだ後に、
Javelin JavaScript を組み込んでください。例えば、IBM Connections からビジネス・
カードに Dojo を組み込みたくない場合は、ステップ 1 のコードを使用する代わりに、次
のスクリプトを使用してください。
<script type="text/javascript"
src="/profiles/ibm_semanticTagServlet/javascript/semant
icTagService.js?inclDojo=false"></script>
c.
loadCssFiles=false パラメーターを JavaScript リソースに追加しても、ビジネス・カード
で CSS ファイルはロードできません。例えば、IBM Connections からビジネス・カード
に CSS ファイルを組み込みたくない場合は、ステップ 1 のコードを使用する代わりに、
次のスクリプトを追加してください。
<script type="text/javascript"
src="/profiles/ibm_semanticTagServlet/javascript/semant
icTagService.js?loadCssFiles=false"></script>
d.
2.
ビジネス・カードは、ファイル・システムにある静的 html ファイルからは表示できませ
ん。ビジネス・カードを統合する html ファイルは、必ずサーバーにデプロイする必要が
あります。
インライン・ビジネス・カードを表示する以下のコード部分を Web アプリケーション・ソー
ス・コードの要求どおりに組み込みます。
123 of 247

ユーザー ID に基づく:
<div class="vcard X-person-display-inline">
<span class="fn" style="display:none;"><user_name></span>
<span class="x-lconn-userid" style="display:
none;"><user_id></span>
</div>

メール・アドレスに基づく:
<div class="vcard X-person-display-inline">
<span class="fn"
style="display:none;"><user_name></span>
<span class="email"
style="display:none;"><user_email_address></span>
</div>
ユーザー ID またはメール・アドレスに基づいてインライン・ビジネス・カードを追加するサンプ
ル・ソース・コードを以下に示します。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-88591">
<title>Profile Business card integration</title>
<script type="text/javascript"
src="http://social.demos.ibm.com//profiles/ibm_semanticTagServlet/jav
ascript/semanticTagService.js"></script>
</head>
<body>
//below div tag will display inline card based on user id.
<div class="vcard X-person-display-inline">
<span class="fn" style="display:none;">Betty Zechman</span>
<span class="x-lconn-userid" style="display: none;">18D2DF4C-DF91DB1B-8025-783900650C33</span>
</div>
//below div tag will display inline card based on email id
<div class="vcard X-person-display-inline">
<span class="fn" style="display:none;">Betty Zechman</span>
<span class="email"
style="display:none;">[email protected]</span>
</div>
</body>
</html>
124 of 247
次の図はインライン・プロフィール・ビジネス・カードを示したものです。
次の図は展開時のインライン・プロフィール・ビジネス・カードを示したものです。
6.2.2 ポップアップ・プロフィール・ビジネス・カードの統
合
ポップアップ・プロフィール・ビジネス・カードを統合する手順は、インライン・プロフィール・
ビジネス・カードを統合する手順と同じです。違うのは、Web アプリケーション・ソースに組み込
むコードです。
125 of 247
手順
1.
semanticTagService.js ファイルが含まれている下記のコード・スニペットを自分のコードに
追加します。この JavaScript には、プロフィール・ビジネス・カードのサポートに必要な機
能が含まれています。この JavaScript は、ビジネス・カードを統合するWeb アプリケーショ
ンに入っていなければなりません。
<script type="text/javascript"
src="<IBM_Connection_Server>/profiles/ibm_semanticTagServlet/
jav ascript/semanticTagService.js"></script>
特殊なケースについては、インライン・プロフィール・ビジネス・カードを統合する手順のス
テップ 1 にある注を参照してください。
2.
ビジネス・カードを表示する以下のコード部分を Web アプリケーション・ソース・コードの
要求どおりに組み込みます。
 ユーザー ID に基づく:
<span class="vcard">
<a href="javascript:void(0);"class="fn url"><user_name></a>
<span class="x-lconn-userid" style="display:
none;"><user_id></span>
</span>

メール・アドレスに基づく:
<span class="vcard">
<a href="javascript:void(0);"class="fn url"><user_name></a>
<span class="email" style="display:
none;"><user_email_address></span>
</span>
126 of 247
ユーザー ID とメール・アドレスの両方のオプションに関してポップアップ・ビジネス・カードを
追加するサンプル・ソース・コードを以下に示します。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-88591">
<title>Profile Business card integration</title>
<script type="text/javascript"
src="http://social.demos.ibm.com//profiles/ibm_semanticTagServlet/jav
ascript/semanticTagService.js"></script>
</head>
<body>
//following span tag will display pop-up business card based on
userID.
<span class="vcard">
<a href="javascript:void(0);"class="fn url">Betty Zechman</a>
<span class="x-lconn-userid" style="display: none;">18D2DF4C-DF91DB1B-8025-783900650C33</span>
</span>
//following span tag will display pop-up business card based on email
id.
<span class="vcard">
<a href="javascript:void(0);"class="fn url">Betty Zechman</a>
<span class="email" style="display:
none;">[email protected]</span>
</span>
</body>
</html>
次の図はポップアップ・ビジネス・カードを示したものです。
127 of 247
次の図は展開時のポップアップ・ビジネス・カードを示したものです。
6.2.3 オプション手順
プロフィール・ビジネス・カード (インラインとポップアップの両方) を統合する場合のオプション
手順を以下に示します。
1.
統合するプロフィール・ビジネス・カードで双方向言語サポートを追加できます。それには、
下記のコード・スニペットを Web アプリケーション・ソース・コードに組み込みます。この
ステップは、上記統合手順が完了した後に実行する必要があります。
<script type="text/javascript">
var SemTagSvcConfig = { isBidiRTL: true};
</script>
128 of 247
2.
Web ページが Ajax によって動的に構成される場合、下記のコード部分を使用してプロフィー
ル・ビジネス・カードを組み込むことができます。このステップは、オプション手順のステッ
プ 1 が完了した後に実行する必要があります。
下記のコードにある「containerId」は、コミュニティー・ビジネス・カードが挿入される
Web アプリケーションにすでに登録されているドーム・オブジェクト名です。この名前は、
ご使用の Web アプリケーションに合わせて変更してください。
var htmlContent =
"<span class='vcard'>"+
"<a href='javascript:void(0);' class='fn
url'>user_name</a>"+
"<span class='email' style='display: none;'>"+
"[email protected]"+
"</span>'+
"</span>";
document.getElementById("containerId").innerHTML +=
htmlContent;
setTimeout("SemTagSvc.parseDom(null, 'containerId')", 500
);
6.3. プロフィール・ビジネス・カードのカスタマイズ
IBM Connections プロフィール・ビジネス・カードをカスタマイズすることは、組織の要件を満た
すときに役立ちます。プロフィール・ビジネス・カードは、以下の方式で変更できます。



カードの上部に表示されるリンクを追加したり、カードの上部に表示されているリンクを削除
したりする。
カードのメイン・セクションに表示される連絡先情報や職場情報をカスタマイズする。
カードの下部に表示されるアクション・リンクを追加したり、カードの下部に表示されている
アクション・リンクを削除したりする。
6.3.1 XML 構成ファイルによるサード・パーティー・リンク
の追加および削除
プロフィール・ビジネス・カードのサード・パーティー・アプリケーション・リンクは追加したり
削 除 し た り で き ま す 。 そ れ に は 、 ¥profiles¥config¥cells¥LotusConnectionsconfig¥LotusConnections-config.xml ファイルを変更します。
手順
プロフィール・ビジネス・カードにリンクを追加するには、以下の手順に従ってください。
1.
IBM Connections 構成ファイルをチェックアウトします。
構成ファイルをチェックアウト/チェックインする一般的なプロセスについては、『1.4
wsadmin ツールを使用したカスタマイズの公開 』を参照してください。ご使用のシステム
に合うように、次のサンプル・コマンドを変更してください。
cd e:¥IBM¥WebSphere¥AppServer¥profiles¥Dmgr01¥bin wsadmin -lang
jython -user wasmgr -password d3moL0tus
execfile("connectionsConfig.py")
LCConfigService.checkOutConfig("f:/temp", AdminControl.getCell()
129 of 247
後のステップでファイルをチェックインするために、必ず wsadmin セッションは開いたままにし
ておいてください。
2. temp ディレクトリーにある LotusConnections-config.xml をテキスト・エディターで開い
て変更し、以下の属性を追加します。
 person_card_service_url_pattern:
このパラメーターではストリング値が使用されます。通常、このパラメーターは、ビ
ジネス・カードに追加されたサービス・リンクをユーザーがクリックしたときに使用
される URL パターンです。
このパラメーターで使用されるアンパーサンド文字 (&) はエスケープされます。
このパラメーターでは以下のプレースホルダーを使用できます。これらのプレースホ
ルダーは実行時に実際の値で置き換わります。
o {email}: プロフィール・ユーザーのメール・アドレス
o {userid}: プロフィール・ユーザーのユーザー ID
o {uid}: プロフィール・ユーザーの UID
o {displayName}: プロフィール・ユーザーの氏名
o {workPhoneNumber}: プロフィール・ユーザーが仕事で使用する電話番号
 person_card_service_name_js_eval:
このパラメーターではストリング値が使用されます。このパラメーターは、所定の
サービスについてビジネス・カードに表示されるテキストを生成するために使用され
ます。この属性の値としてリソース・ストリングを追加できます。このリソース・ス
トリングでは、リソース・バンドル・キーの前に「generalrs.」を組み込む必要があり
ます。
リソース・ストリングをビジネス・カードに追加する方法について詳しくは、
「Adding custom strings for widgets and other specified scenarios」を参照してくださ
い。
3.
tmp ディレクトリーにある service-location.xsd ファイルを開いて、要素 <xsd:simpleType
name="serviceNames"> を見つけます。次のように LotusConnections-config.xml にサー
ビス名を追加します。
130 of 247
4.
IBM Connections 構成ファイルをチェックインします。
同じ wsadmin セッションで、次のコマンドを使用してプロフィール構成ファイルをチェック
インします。
LCConfigService.checkOutConfig()
5.
6.
プロフィール・アプリケーションを再始動します。
これは、プロフィールで新規構成を取得するために必要です。
プ ロ フ ィ ー ル ・ ア プ リ ケ ー ションは 、WebSphere Application Server Integrated Solution
Console から停止および開始できます。
プロフィール・ビジネス・カードを開くことで、変更内容をテストします。
次の図は、ビジネス・カードに追加された「Google Me」と「Quickr」のリンクを示していま
す。
131 of 247
プロフィール・ビジネス・カードからサード・パーティー・リンクを削除するには、サード・パー
ティー・リンクの追加手順に従って構成ファイルをチェックアウトし、サード・パーティー・リン
クを参照する行を削除します。その後で構成ファイルをチェックインして、プロフィール・アプリ
ケーションを再始動します。
6.3.2 JavaScript によるサード・パーティー・リンクの追加
サード・パーティー・リンクは、アプリケーション・レベルで JavaScript を使用してもプロフィー
ル・ビジネス・カードに追加できます。例えば、Web アプリケーションにプロフィール・ビジネ
ス・カードを統合する場合、JavaScript を Web アプリケーションに追加して、サード・パー
ティー・リンクを追加できます。この場合、構成ファイルを変更するなどの、IBM Connections
サーバー・レベルでの構成変更は不要です。
手順
1.
2.
セクション『プロフィール・ビジネス・カードの統合』にある手順に従って、プロフィール・
ビジネス・カードを Web アプリケーションに組み込みます。
以下のパラメーターを指定して SemTagPerson.services.push メソッドを JavaScript コードに
組み込みます。
 name: このパラメーターではストリングが使用されます。このパラメーターは固有で
なければなりません。これは、ビジネス・カードにおけるサード・パーティー・リン
クの ID です。そのため、固有でなければなりません。
 url_pattern: このパラメーターではストリング値が使用されます。通常、このパラメー
ターは、ビジネス・カードに追加されたサービス・リンクをユーザーがクリックした
ときに使用される URL パターンです。
このパラメーターでは以下のプレースホルダーを使用できます。これらのプレースホ
ルダーは実行時に実際の値で置き換わります。
o {email}: プロフィール・ユーザーのメール・アドレス
o {userid}: プロフィール・ユーザーのユーザー ID
o {uid}: プロフィール・ユーザーの UID
o {displayName}: プロフィール・ユーザーの氏名
o {workPhoneNumber}: プロフィール・ユーザーが仕事で使用する電話番号
js_eval: このパラメーターではストリング値が使用されます。このパラメーターは、所
定のサービスについてビジネス・カードに表示されるテキストを生成するために使用
されます。この属性の値としてリソース・ストリングを追加できます。このリソー
ス・ストリングでは、リソース・バンドル・キーの前に「generalrs.」を組み込む必要
があります。
132 of 247


リソース・ストリングをビジネス・カードに追加する方法について詳しくは、
「Adding custom strings for widgets and other specified scenarios」を参照してくださ
い。
location: このパラメーターではストリング値が使用されます。リンクが表示されてい
て、ユーザーがサード・パーティー・リンクをクリックしたときに、location パラメー
ターと url_pattern パラメーターが組み合わされます。
label: js_eval の代わりに label パラメーターを使用して、ビジネス・カードに表示され
るサード・パーティー・サービスに名前を付けることができます。
次のサンプル・コードでは、ビジネス・カードが HTML Web ページに追加され、Google と Quickr
の入り口となるリンクがそのビジネス・カードに追加されます。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-88591">
<title>Adding Service to business card</title>
<script type="text/javascript"
src="http://social.demos.ibm.com/profiles/ibm_semanticTagServlet/java
script/semanticTagService.js"></script>
<script>
SemTagPerson.services.push({name: 'googleService',
url_pattern: '/search?hl=en&q={displayName}&btnG=Google+Search',
label: 'Google Me',
location: 'http://www.google.com'});
SemTagPerson.services.push({name: 'quickrService',
url_pattern: '/QuickrEntry?email={email}',
js_eval: 'generalrs.label_personcard_quickrlink',
location: 'http://quickrdomino.example.com/servlet'});
</script>
</head>
<body>
<span class="vcard">
<a href="javascript:void(0);"class="fn url">Betty Zechman</a>
<span class="x-lconn-userid" style="display: none;">18D2DF4C-DF91DB1B-8025-783900650C33</span>
</span>
</body>
</html>
133 of 247
結果として、次のピクチャーのような表示になります。
6.3.3 プロフィールと Lotus Quickr の統合
ビジネス・カードを使用してプロフィールと Lotus Quickr を統合するには、Quickr リンクをビジネ
ス・カードに組み込みます。これにより、ユーザーは Quickr のユーザーの公開ファイルと共有
ファイルに素早くナビゲートできます。これを行うには、LotusConnections-config.xml 構成
ファイルを変更して Quickr リンクを組み込みます。
始める前に



Quickr のバージョンが IBM Connections によってサポートされていなければなりません。IBM
Connections の詳細なシステム要件を「Detailed system requirements for IBM Connections」で
確認してください。
Lotus Quickr for Lotus Domino のリンクはエントリー・プレースのみと連動します。このリン
クは通常のプレースに対しては機能しません。
LotusConnections-config.xml ファイルで forceconfidentialcommunication を true に設定して
IBM Connections で SSL を有効にしてある場合は、Lotus Quickr でも SSL を有効にする必要が
あります。
手順
プロフィール・ビジネス・カードで Lotus Quickr リンクを使用できるようにするには、以下の手順
を実行してください。
1.
IBM Connections 構成ファイルをチェックアウトします。
構成ファイルをチェックアウト/チェックインする一般的なプロセスについては、『wsadmin
ツールを使用したカスタマイズの公開』を参照してください。ご使用のシステムに合わせて次
のサンプル・コマンドを修正してください。
cd e:¥IBM¥WebSphere¥AppServer¥profiles¥Dmgr01¥bin wsadmin -lang
jython -user wasmgr -password d3moL0tus
execfile("connectionsConfig.py")
LCConfigService.checkOutConfig("f:/temp", AdminControl.getCell() )
134 of 247
後のステップでファイルをチェックインするために、必ず wsadmin セッションは開いたまま
にしておいてください。
2.
テキスト・エディターを使用して temp ディレクトリーから LotusConnections-config.xml
を開いて、以下のように Quickr サービスをファイル内に追加します。ご使用の環境に合わせ
てサーバー値を置き換えてください。
 Lotus Domino 用の Quickr サービスの場合:
sloc:serviceReference serviceName="quickr"
href="http://<www.myquickrserver.mycompany.com>/servlet"
enabled="true"
ssl_href="https://<www.myquickrserver.mycompany.com>/serv
let"
ssl_enabled="true"
person_card_service_url_pattern="/QuickrEntry?email={emai
l}"
person_card_service_name_js_eval="generalrs.label_personc
ard_quickrlink"/>

WebSphere Portal 用の Quickr サービスの場合:
<sloc:serviceReference serviceName="quickr"
href="http://<www.myquickrserver.mycompany.com>/places"
enabled="true"
ssl_href="https://<www.myquickrserver.mycompany.com>/plac
es"
ssl_enabled="true"
person_card_service_url_pattern="/search?#owner={userid}|
{displayName}"
person_card_service_name_js_eval="generalrs.label_personc
ard_quickrlink"/>
3.
IBM Connections 構成ファイルをチェックインします。
同じ wsadmin セッションで、次のコマンドを使用してプロフィール構成ファイルをチェック
インします。
LCConfigService.checkOutConfig()
4.
プロフィール・アプリケーションを再始動します。
これは、プロフィールで新規構成を取得するために必要です。
プ ロ フ ィ ー ル ・ ア プ リ ケ ー ションは 、WebSphere Application Server Integrated Solution
Console から停止および開始できます。
6.3.4 ビジネス・カード情報のカスタマイズ
ユーザーに関する情報が含まれたプロフィール・ビジネス・カードのメイン・セクションを変更し
て、拡張属性などの新規情報を追加したり、既存情報を削除したりできます。また、ビジネス・
カードに初めに表示される情報の順序を変更することもできます。
手順
ビジネス・カード情報をカスタマイズするには、以下の手順を実行してください。
135 of 247
1.
IBM Connections 構成ファイルをチェックアウトします。
構成ファイルをチェックアウト/チェックインする一般的なプロセスについては、『wsadmin
ツールを使用したカスタマイズの公開』を参照してください。ご使用のシステムに合わせて次
のサンプル・コマンドを修正してください。
cd e:¥IBM¥WebSphere¥AppServer¥profiles¥Dmgr01¥bin
wsadmin -lang jython -user wasmgr -password d3moL0tus
execfile("profilesAdmin.py")
ProfilesConfigService.checkOutConfig("f:/temp",
AdminControl.getCell() )
後のステップでファイルをチェックインするために、必ず wsadmin セッションは開いたまま
にしておいてください。
2.
3.
テキスト・エディターを使用して tmp ディレクトリーから profiles-config.xml ファイルを開
きます。
対象となる要素を profiles-config.xml ファイルで見つけます。その要素の下にある以下のい
ずれかの要素を使用して、ビジネス・カードに追加したい情報を追加します。以下の要素は、
情報に対して複数の値を追加するために組み合わせて使用できます。
 attribute: これは、ビジネス・カードに表示される IBM Connections プロフィールに事前定
義された属性です。
 extensionAttribute: これは、ビジネス・カードに表示される IBM Connections プロフィー
ルのカスタム定義属性です。
 html: HTML ブロックを表示する場合は、この属性を選択します。
上記の要素には、以下の属性を指定できます。
 labelKey: この属性は、情報とともに表示されるラベルを指定します。
 showlabel: この属性は、情報のラベルを表示するかどうかを指定します。
 hideIfEmpty: この属性が true に設定されている場合、ビジネス・カードに表示しようとし
ている情報の属性に値が含まれていないと、その情報は表示されません。
 bundleIdRef: この属性を使用すれば、外部バンドルでラベルを選出できます。
リソース・バンドルについて詳しくは、「Adding custom strings for widgets and other
specified scenarios」を参照してください。
 prependHtml: この属性では、値として html コードが使用されます。この html コードは、
ビジネス・カードに表示される情報の前に表示されます。
例えば、次のスニペットを見てください。
<businessCardLayout profileType="default">
<attributes>
...
<html prependHtml="<div class='adr'&gt;"/>
<attribute showLabel="false" hideIfEmpty="true"
...>workLocation.city</attribute>
<extensionAttribute extensionIdRef="region" showLabel="true"
labelKey="label.region" bundleIdRef="mylabels" hideIfEmpty="true"
prependHtml="..."/>
...
</attributes>
...
</businessCardLayout>
136 of 247
4.
プロフィール構成ファイルをチェックインします。
同じ wsadmin セッションで、次のコマンドを使用してプロフィール構成ファイルをチェック
インします。
ProfilesConfigService.checkOutConfig()
5.
プロフィール・アプリケーションを再始動します。
これは、プロフィールで新規構成を取得するために必要です。
プ ロ フ ィ ー ル ・ ア プ リ ケ ー ションは 、WebSphere Application Server Integrated Solution
Console から停止および開始できます。
6.3.5 ビジネス・カード上のアクション・リンクのカスタマ
イズ
プロフィール・ビジネス・カードでは、下部にあるアクション・リンクを変更できます。ユーザー
の仕事用の電話番号に Skype で電話をかける「callMe」のような他のアクションを追加したり、
ユーザーが自分たちのネットワークにプロフィール所有者を追加するために招待状を送信できるよ
うにする「add me」リンクを追加したりできます。
手順
ビジネス・カードにアクション・リンクを追加するには、以下の手順を実行してください。
1.
IBM Connections 構成ファイルをチェックアウトします。
構成ファイルをチェックアウト/チェックインする一般的なプロセスについては、『wsadmin
ツールを使用したカスタマイズの公開』を参照してください。ご使用のシステムに合わせて次
のサンプル・コマンドを修正してください。
cd e:¥IBM¥WebSphere¥AppServer¥profiles¥Dmgr01¥bin
wsadmin -lang jython -user wasmgr -password d3moL0tus
execfile("profilesAdmin.py")
ProfilesConfigService.checkOutConfig("f:/temp",
AdminControl.getCell() )
後のステップでファイルをチェックインするために、必ず wsadmin セッションは開いたまま
にしておいてください。
2.
3.
テキスト・エディターを使用して temp ディレクトリーから profiles-config.xml ファイルを
開き、<businessCardLayout> 要素を見つけます。
アクションは <action> 要素の下に追加できます。例えば、今回は、ユーザーが自分のビジネ
ス・カードから電話できるようにする「callMe」オプションを追加することにします。
137 of 247
次の図は、「callMe」オプションが追加されたビジネス・カードを示しています。
注: 上記の例では、<action> 要素に以下のパラメーターが使用されています。



urlPattern: このパラメーターでは、ユーザーがアクション・リンクをクリックしたと
きに呼び出すことができる JavaScript の機能のストリング情報が使用されます。この
パラメーターでは以下のプレースホルダーを使用できます。これらのプレースホル
ダーは実行時に実際の値で置き換わります。
o {email}: プロフィール・ユーザーのメール・アドレス
o {userid}: プロフィール・ユーザーのユーザー ID
o {uid}: プロフィール・ユーザーの UID
o {displayName}: プロフィール・ユーザーの氏名
o {workPhoneNumber}: プロフィール・ユーザーが仕事で使用する電話番号
liClass: これは、最終的なソース・コードにおいて <li/> タグで他のアクションを区切
るために追加される事前定義の CSS クラス名です。
emailEnabledRequired: この属性では、論理値 (true および false) が使用されます。
これは、メール・アドレスがアクションに必要かどうかを指定します。<action> 要素
では、以下の子要素を使用できます。
o Icon: icon 要素は、アクション付きのアイコン・イメージを指定するために使用
されます。
138 of 247
4.
o label: label 要素は、アクションに対して表示テキストを指定するために使用さ
れます。この属性の値としては、リソース・ストリングを追加してください。
リソース・ストリングの追加方法については、「Adding custom strings for
widgets and other specified scenarios」にアクセスしてください。
o alt: この要素は、HTML の <alt> タグと同じように振る舞います。アイコンがな
い場合に値が表示されます。
プロフィール構成ファイルをチェックインします。
同じ wsadmin セッションで、次のコマンドを使用してプロフィール構成ファイルをチェック
インします。
ProfilesConfigService.checkOutConfig()
5.
プロフィール・アプリケーションを再始動します。
これは、プロフィールで新規構成を取得するために必要です。
プ ロ フ ィ ー ル ・ ア プ リ ケ ー ションは 、WebSphere Application Server Integrated Solution
Console から停止および開始できます。
139 of 247
第7章
ブログのカスタマイズ
7.1. 外部エディターによるオフラインでのブログ作成
IBM Connections ブログ作成アプリケーションでは、オフライン・ブログ作成用に Atom と
MetaWeblog の両方の API がサポートされています。「ブログ・クライアント API」セクションの
下にある「ブログに対して Blogger API および MetaWeblog API を使用可能にする」オプションを
有効にして、個人ブログごとにブログ設定を構成する必要があります。ブログをオフラインで投稿
するときに、アプリケーション・クライアントをいくつ使用しても構いません。
セキュリティー注意事項: サード・パーティーのブログ・エディターを使用するために必要となる
MetaWeblog API は 、 セ キ ュ リ テ ィ ー ・ リ ス ク を 引 き 起 こ す 可 能 性 が あ り ま す 。 こ れ は 、
MetaWeblog API が要求されるたびに、ユーザー名とパスワードが MetaWeblog API のプロトコル
の一部としてその要求に添付されるため、そのユーザー名とパスワードが盗まれる可能性があるか
らです。HTTP の代わりに HTTPS を使用すれば、多少、セキュリティーが向上します。資格情報
が要求として添付されることにかわりはありませんが、資格情報は暗号化されます。最も安全にブ
ログ投稿を作成するには、IBM Connections のリッチ・テキスト・エディターを使用するか、また
は ATOM API を使用します。
IBM Connections では、Web サービスでブログ・エントリーを作成、編集、および削除する機能は
デフォルトで無効になっています。この機能をオンにするには、MetaWeblog API を有効にする必
要があります。また、この機能を必要とする個々のブログごとにも、この設定を有効にする必要が
あります。
注: サード・パーティー・ブログ作成アプリケーションを使用するには、エントリーが少なくとも
1 つは入っているブログがあらかじめ必要となります。
手順
以下の手順では、個々のブログに対して MetaWeblog API を有効にします。
1.
2.
3.
4.
5.
「マイ・ブログ」をクリックし、自分のブログをリストして操作します。
該当するブログの「設定」をクリックして、そのブログの設定を編集します。
必要に応じて、ブログの他の設定も変更します。
「 ブ ロ グ 用 に Blogger API と MetaWeblog API を 有 効 に す る (Enable Blogger and
Metaweblog API for your blog)」設定を選択して、ブログ・クライアント API をアクティブ
にします。
「ブログ設定の更新」をクリックします。
注: 個々のブログごとにブログ設定を構成する必要があります。
これで、MetaWeblog API が有効になりました。現在、ブログ・クライアントを使用してブログを
操作できます。API を使用するように、選択したブログ・エディターを構成できます。以下のセク
ションでは、様々なサード・パーティー・エディターの構成方法について説明します。
7.1.1 ScribeFire をブログ・エディターとして構成
手順
1.
2.
Scribefire を起動します。
http:///blogs/ (例: http://connections.acme.com/blogs/myblog) をブログ・サーバーとしてリスト
します。
140 of 247
3.
4.
5.
6.
7.
Wordpress からブログ・システム・タイプを変更する前に、API URL フィールドにあるスト
リングをコピーします。
ブログ・システムとして「MetaWeblog API」を選択します。
API URL フ ィ ー ル ド か ら コ ピ ー し た ス ト リ ン グ を 貼 り 付 け ま す 。 フ ォ ー マ ッ ト は
http:///blogs/services/xmlrpc (例: http://connections.acme.com/blogs/services/xmlrpc) です。
Connections のユーザー名とパスワードを入力します。
「追加するブログ (Blogs to be added)」リストからブログを選択します。
これで、ScribeFire でブログ・コンテンツを作成して IBM Connections に投稿できるようになりま
した。リッチ・テキストの他、イメージもサポートされます。
7.1.2 w.bloggar をブログ・エディターとして構成
手順
1.
2.
アカウント・ウィザードを起動します。
「はい、新規アカウントとして追加します (Yes, I want to add it as a new Account)」を選択
します。
3. ブログ・ツールとして「カスタム (Custom)」を選択します。
4. 「アカウント・エイリアス (Account Alias)」の下にブログ名を入力します。
5. 「コンテンツ管理 (Content Management)」セクションで以下のオプションを選択します。
 ブログ・ツール (Blog Tool): カスタム (Custom)
 アカウント・エイリアス (Account Alias): 自分のブログ・アカウントの参照に使用す
る名前。
 Ping:これは、ブログ・サービスに対して「ping する」場合に選択します。
 ユーザー・プロキシー・サーバー (User Proxy Server): このオプションは、プロキ
シー・サーバー経由でブログを作成する場合に選択します。
6. 「カスタム・ブログ・ツール設定 (Custom Blog Tool Setting)」セクションで以下のオプショ
ンを選択します。
 投稿 (Posts): metaWeblog API
 カテゴリー (Categories):「metaWeblog API - 単一 (metaWeblog API - Single)」ま
たは「metaWeblog API - 複数 (metaWeblog API - Multi)」(後者を選択した場合、単
一の投稿に対して複数のカテゴリーを使用できます)
7. 「ホスト (Host)」フィールドに connections.acme.com の形式でブログ・サーバーの URL を
入力します。
8. 「パス (Path)」フィールドにパス (/blogs/services/xmlrpc) を入力します。
9. IBM Connections の ユ ー ザ ー 名 と パ ス ワ ー ド を 入 力 し ま す 。 ロ グ イ ン に 成 功 す る と 、
w.bloggar エディターが開きます。
10. w.bloggar で更新したいブログをエディター・ツールバーのメニューから選択します。
これで、w.bloggar でブログ・エントリーを作成して自分のブログに投稿できるようになりました。
7.1.3 Live Writer をブログ・エディターとして構成
手順
1.
2.
3.
4.
5.
Microsoft Live Writer を起動します。
ブログ・サービスとして「他のサービス」を選択します。
ブログの Web アドレスとして http:///blogs/services/xmlrpc
(例: http://connections.acme.com/blogs/services/xmlrpc) のように入力します。
IBM Connections のユーザー名とパスワードを入力します。
ブログ・タイプとして「Metaweblog API」を選択します。
141 of 247
6.
7.
8.
9.
「 ブ ロ グ の リ モ ー ト 投 稿 用 の Web ア ド レ ス 」 に http:///blogs/services/xmlrpc ( 例 :
http://connections.acme.com/blogs/services/xmlrpc) のように入力します。
ブログのリストから自分のブログを選択します。
ブログ・ニックネーム用の名前を入力します。
「完了 (Finish)」をクリックします。
これで、Live Writer でコンテンツを作成して自分のブログに投稿できるようになりました。
7.1.4 MarsEdit をブログ・エディターとして構成
手順
1.
2.
3.
4.
5.
6.
7.
MarsEdit を開始します。
Quick Start を起動します。
ブログの名前を入力します。
ブログの URL を http:///blogs/ (例: http://connections.acme.com/blogs/myblog) のように入力
します。
「完了 (Finish)」をクリックします。
次のウィンドウでプロンプトが出されたら、IBM Connections のユーザー名とパスワードを入
力します。
「OK」をクリックします。
これで、コンテンツを作成して自分の IBM Connections ブログに発行できるように MarsEdit が構
成されました。
142 of 247
第8章
コミュニティーのカスタマイズ
IBM Connections では、IBM OneUI が使用されます。これにより、異なる IBM 製品間で同じスタ
イル・シートを使用できます。例えば、IBM Connections で設計されたスタイル・シートは IBM
WebSphere Portal で使用でき、その逆も可能です。ユーザーが使用する IBM Connections コミュ
ニティー・テーマは複数定義できます。IBM Connections では、既存のデフォルト・コミュニ
ティー・テーマをカスタマイズできます。ただし、カスタマイズされたコミュニティー・テーマで、
すべての IBM Connections コミュニティーに関連付けられたデフォルト・テーマが上書きされてし
まうことに留意しておくことが重要です。カスタム IBM Connections テーマを使用している場合は、
最初に現在のデフォルト・コミュニティー・テーマを削除してから、新規のコミュニティー・テー
マ を 追 加 し て く だ さ い 。 新 規 デ フ ォ ル ト ・ テ ー マ と し て 機 能 さ せ る テ ー マ と し て は IBM
Connections のメイン・テーマに基づくテーマを追加することをお勧めします。
このセクションでは、コミュニティー・テーマを変更する手順について説明します。作成するテー
マは Base と Renovations の 2 つです。Base は新規デフォルト・テーマです。Renovations は新
規カスタマイズ・テーマです。
8.1. コミュニティー・テーマの削除
最初に、新規デフォルト・テーマの Base で置き換えられる現在のデフォルト・テーマを無効にし
ます。すでに無効にしてある場合は、このステップをスキップしてください。既存のテーマを無効
にしたり削除したりするには、コミュニティー構成ファイルを適宜変更してください。
手順
1.
wsadmin ク ラ イ ア ン ト を 使 用 し て 以 下 の コ マ ン ド で コ ミ ュ ニ テ ィ ー 構 成 フ ァ イ ル
communities-config.xml をチェックアウトします。
execfile("communitiesAdmin.py")
CommunitiesConfigService.checkOutConfig("<working_directory>","
<cell_name>")
重要: この構成ファイルをチェックインするまでは、wsadmin セッションを閉じないでくださ
い。
<working_directory> は、構成ファイルのコピー先の一時ディレクトリーです。
注: AIX および Linux のみ: このディレクトリーに書き込み許可を設定する必要があります。そ
うしないと、コマンドが正常には実行されません。
<cell_name> は、IBM Connections アプリケーションをホストする WebSphere Application
Server セルの名前です。
2.
3.
4.
5.
構成ファイルをチェックアウトした <working_directory> にナビゲートします。
テキスト・エディターで communities-config.xml を開きます。
デフォルト・テーマをコメント化します。例えば、デフォルトの赤と緑のテーマを無効にする
には、次のようにします。Config_Edit.png|Edited Config
communities-config.xml ファイルを保存します。
143 of 247
6.
次のコマンドを使用して communities-config.xml ファイルをチェックインして戻します。
CommunitiesConfigService.checkInConfig()
7.
コミュニティー・サーバーを停止して再始動し、変更を適用します。
8.2. コミュニティー・テーマの定義
重要: コミュニティー・テーマは IBM Connections のデフォルト・テーマを上書きするため、IBM
Connections の全体的なルック・アンド・フィールが変わります。このような事態をコミュニ
ティー・テーマの適用時に回避したい場合は、デフォルト・コミュニティー・テーマを削除する必
要があります。
デフォルト・テーマを削除した後は、新規デフォルト (下記の例では Base) をカスタマイズ・テー
マ (下記の例では Renovations) とともに作成することをお勧めします。
手順
1.
2.
3.
4.
5.
6.
7.
8.
defaultTheme ディレクトリーを <WAR>/nav/common/styles から次のディレクトリー内の新
規サブディレクトリーにコピーします。
<install_dir>/<customization_dir>/common/nav/common/styles/
もう 1 つ、<WAR>/nav/common/styles から次のディレクトリー内の新規サブディレクトリー
に defaultTheme ディレクトリーをコピーしたものを作成します。
<install_dir>/<customization_dir>/common/nav/common/styles/
注: ディレクトリー名の末尾は「Theme」でなければなりません。このフォーマットに従うと、
作成されるディレクトリーは、BaseTheme および RenovationsTheme となります。
新規ディレクトリーの一方の名前を BaseTheme に変更します。これにより、ディレクト
リー・パスは次のようになります。
<install_dir>/<customization_dir>/common/nav/common/styles/BaseTheme
新規ディレクトリー BaseTheme 内にある defaultTheme.css を、BaseTheme.css という名
前に変更します。
もう一方の新規ディレクトリーを、RenovationsTheme という名前に変更します。これにより、
ディレクトリー・パスは次のようになります。
<install_dir>/<customization_dir>/common/nav/common/styles/RenovationsTheme
新 規 デ ィ レ ク ト リ ー RenovationsTheme 内 に あ る defaultTheme.css を 、
RenovationsTheme.css という名前に変更します。
必要に応じて RenovationsTheme.css を変更します (色やスタイルなど)。
テーマ・パレットでサムネール・イメージ・プリビューをカスタム・テーマに関連付けるには、
<theme>.jpg ファイルを次のディレクトリーにアップロードします。
<install_dir>/<customization_dir>/communities/images/
次の作業: 新規テーマを定義したら、それをコミュニティー構成ファイルに追加する必要がありま
す。詳しくは、『8.3. コミュニティー構成にテーマを追加』を参照してください。
144 of 247
8.3. コミュニティー構成にテーマを追加
新規テーマを追加するには、以下の手順を使用してください。
1.
wsadmin ク ラ イ ア ン ト を 使 用 し て 以 下 の コ マ ン ド で コ ミ ュ ニ テ ィ ー 構 成 フ ァ イ ル
(communities-config.xml) をチェックアウトします。
execfile("communitiesAdmin.py")
CommunitiesConfigService.checkOutConfig("<working
directory>","<cell name>")
重要: この構成ファイルをチェックインするまでは、wsadmin セッションを閉じないでください。
<working_directory> は、構成ファイルのコピー先の一時ディレクトリーです。
2.
3.
4.
注: AIX および Linux のみ: このディレクトリーに対する書き込み許可を付与する必要がありま
す。そうしないと、コマンドが正常には実行されません。
<cell_name> は、IBM Connections アプリケーションをホストする WebSphere Application
Server セルの名前です。
構成ファイルをチェックアウトした <working_directory> にナビゲートします。
テキスト・エディターで communities-config.xml を開きます。
次に示されているように、新規テーマを communities-config.xml ファイルに追加します。
説明:

5.
6.
<comm:themeUuid> はテーマの固有 ID です。スペースや特殊文字は含めないでください。
長さは 36 文字以下でなければなりません。これはテーマの名前でなければなりません。
 <comm:displayNameKey> は 表 示 名 の リ ソ ー ス ・ キ ー で す 。 こ の キ ー は 、
com.ibm.lconn.communities.strings.ui_en.properties ファイル内に作成されます。
 <comm:thumbnailUrl> は、テーマ・パレットに表示されるサムネール・イメージの場所で
す。このイメージは次の場所に入っていなければなりません:
/customization/communities/images/
communities-config.xml ファイルを保存します。
次のコマンドを使用して communities-config.xml ファイルをチェックインして戻します。
CommunitiesConfigService.checkInConfig()
7.
コミュニティー・サーバーを停止して再始動し、変更を適用します。
145 of 247
第9章
API の使用
この章では、API を使用して IBM Connections をカスタマイズする方法について説明します。
9.1. IBM Connections API の概要
IBM Connections には、製品の機能ごとに豊富なアプリケーション・プログラミング・インター
フェースが用意されています。各機能にはそれぞれ別の API が用意されていますが、これらの API
は製品全体で同じ動作になります。IBM Connections は、HTTP または HTTPS を使用してアクセ
ス可能な REST スタイルの API を使用します。HTTP や REST などの標準を使用することで、プ
ログラミング言語およびオペレーティング・システムが異なるさまざまな環境においても、容易に
API を使用できます。
IBM Connections API すべての基盤となるのが、フィードです。この場合のフィードとは、Atom
Syndication Format を使用する 1 つの XML データ・ファイルになります。Atom Syndication
Format について詳しくは、以下の Web サイトにアクセスしてください。
The Atom Syndication Format
Atom は XML ベースであるため、HTTP を介して XML を送受信できるすべてのアプリケーション
で API を使用することができます。Atom フィードは、ほとんどの場合、情報の取り込みに使用さ
れますが、IBM Connections API を使用すると、情報の作成および更新も可能になります。
以 前 の リ リ ー ス の IBM Connections で は 、 前 の ド ラ フ ト の Atom Publishing Protocol
(http://purl.org/atom/app#) に 記 載 さ れ た 名 前 空 間 を 使 用 し ま し た が 、 最 新 の 標 準 の 名 前 空 間
(http://www.w3.org/2007/app) を支持することで、以前の名前空間は非推奨となりました。
9.2. さまざまなプログラミング言語での IBM Connections
API の使用
このセクションでは、ブックマークの追加作業を実行するために、さまざまなプログラミング言語
で IBM Connections API を使用する方法について具体的に説明します。IBM Connections は、使用
しやすい REST スタイルの API で、そのすべての機能を提供します。そのため、あるモジュール
における API の動作を理解すれば、すべてのモジュールにその動作を適用できます。この点に留意
しながら、このトピックでは、複数の言語で記述されたアプリケーション・コードを使用した、
ブックマーク・アプリケーションでのブックマークの作成に重点を置いて説明します。
IBM Connections に用意された REST スタイルの API は、HTTP リクエストを受信して Atom 文書
を返します。そのため、API を使用してブックマークを作成する作業は、正しい HTTP リクエスト
を組み立てるという意味になります。Atom API リクエスト URL を組み立てる方法について詳しく
は、IBM Connections 3.0.1 の製品資料を参照してください。
IBM Connections ブックマーク・アプリケーションは、以前のバージョンでドッグイアと呼ばれて
いました。しかし、ブックマーク API では引き続きドッグイア (dogear) という用語を API URL で
参照します。
146 of 247
API 呼び出しは、特定の形式を使用した HTTP 呼び出しに過ぎません。以下のコード片は、ブック
マーク・アプリケーションでエントリーを作成する Atom 文書の例です。
POST /dogear/api/app?email=user@company HTTP/1.1
Host: www.company.com
Content-Type: application/atom+xml
Authorization: Basic RG9uIFA1aXhvdAAAAm9jaW5hAAR1
<?xml version="1.0" encoding="utf-8">
<entry xmlns="http://www.w3.org/2005/Atom">
<author><name>Author</name></author>
<title>IBM Connections wiki</title>
<content type="html"><![CDATA[IBM Connections wiki>]]>
</content>
<category scheme="http://www.ibm.com/xmlns/prod/sn/type"
term="bookmark" />
<category term="wiki" />
<category term="Connections" />
<link href="http://www-10.lotus.com/ldd/lcwiki.nsf" />
</entry>
次の例では、IBM Connections wiki へのブックマークを作成して Connections と wiki という用語で
タグ付けします。また、タイトルは「IBM Connections wiki」に、説明は「IBM Connections wiki
bookmarked from Java」に設定されます。
注: これらのコード例では、Apache Abdera を使用する個所があります。Apache Abdera は、Atom
Syndication Format および Atom Publishing Protocol のオープン・ソースの実装です。Abdera によ
り、Atom クライアントを迅速に開発するための Java 開発ツールキットが提供されます。Apache
Abdera プロジェクトについて詳しくは、Apache Abdera プロジェクトのサイトを参照してくださ
い。
147 of 247
Java (コア Java) での API の使用:
// Create a secure connection to the server
SocketFactory factory = SSLSocketFactory.getDefault();
Socket socket = factory.createSocket("servername", 443);
OutputStreamWriter out=new
OutputStreamWriter(socket.getOutputStream(), "UTF8");
// Create the request and encode the username and password
out.write("POST /dogear/api/app?email=userEmail HTTP/1.1¥r¥n");
out.write("HOST: servername¥r¥n");
String encoding = new
String(Base64.encodeBase64("user:pass".getBytes()));
out.write("Authorization: Basic " + encoding + "¥r¥n");
String data = "<?xml version=¥"1.0¥" encoding=¥"utf-8¥" ?>" +
"<entry xmlns=¥"http://www.w3.org/2005/Atom¥">" +
"<title>IBM Connections wiki</title>" +
"<content type=¥"html¥"><![CDATA[IBM Connections wiki bookmarked
from Java]]></content>" +
"<category scheme=¥"http://www.ibm.com/xmlns/prod/sn/type¥"
term=¥"bookmark¥" />" +
"<category term=¥"wiki¥" />" +
"<category term=¥"Connections¥" />" +
"<link href=¥"http://www-10.lotus.com/ldd/lcwiki.nsf¥" />" +
"</entry>";
out.write("Content-Length: " + data.length() + "¥r¥n");
out.write("Content-Type: application/atom+xml¥r¥n");
out.write("¥r¥n");
out.write(data);
out.flush();
// Process the response
BufferedReader in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
String line;
while ((line = in.readLine()) != null)
{ System.out.println(line);
}
148 of 247
ヘルパー・クラス (Abdera) を使用する Java での API の使用:
Abdera abdera = new Abdera();
AbderaClient client = new AbderaClient(abdera);
client.addCredentials("https://servername", null, null, new
UsernamePasswordCredentials("user","password"));
ClientResponse resp =
client.get("https://servername/dogear/api/app");
Document<Service> service_doc = resp.getDocument();
Service service = service_doc.getRoot();
Collection collection = service.getCollection("My Bookmarks",
"Entries");
String coll_uri = collection.getResolvedHref().toASCIIString();
Entry entry = abdera.newEntry();
entry.addLink("http://www-10.lotus.com/ldd/lcwiki.nsf"); // URL
being bookmarked
entry.setTitle("IBM Connections Product Documentation");
entry.setContentAsHtml("IBM Connections wiki bookmarked from Java");
entry.addCategory("wiki");
entry.addCategory("Connections");
entry.addCategory("http://www.ibm.com/xmlns/prod/sn/type","bookmark",
null);
// Mark private
entry.addCategory("http://www.ibm.com/xmlns/prod/sn/flags","private",
null);
resp = client.post(coll_uri, entry);
switch(resp.getType()) {
case SUCCESS:
String location = resp.getLocation().toASCIIString();
System.out.println("New entry created at: " + location);
break;
default:
System.out.println("Error: " + resp.getStatusText());
}
149 of 247
Perl での API の使用:
request LWP::UserAgent
use LWP:Debug qw(+ -conns);
my
my
my
my
my
$user = "[email protected]";
$pw = "password";
$server = "dogear.tap.ibm.com";
$url = "http://".$server."/api/app";
$port = "443";
# Create a user object
my $ua = LWP::UserAgent->new;
$ua->agent("MyBookmark/0.1");
$ua->credentials($server.':'.$port,'Dogear',$user,$pw);
push @{$ua->requests_redirectableA},'POST';
# Create a request
my $req = HTTP:Request->new(POST => $url);
use XML:Generator ':pretty';
# Build XML document
my $gen = XML:Generator->new(':pretty',namespace =>
["http://www.w3.org/2005/atom"]);
$content = sprintf$gen=>xml($gen->entry($gen->author("Author"),
$gen->title("IBM Connections wiki"),
$gen->content({type=>'html'},"IBM Connections wiki bookmared from
Perl.");
$gen>category({scheme=>"http://www.ibm.com/xmlns/prod/sn/type",term=>"boo
kmark"}),
$gen->category({term=>"wiki"});
$gen->category({term=>"Connections"});
$gen->link({href=>"http://www-10.lotus.com/ldd/lcwiki.nsf"})
)
);
# Set request content
$req->content_type('application/atom+xml');
$req->content($content);
# Pass request to the user agent and get a response
my $res = $ua->request($req);
# Check the outcome of the response
if ($res->is_sucess) {
print "Bookmark posted.¥n";
}
else {
print $res->status_line, "¥n";
}
150 of 247
VBScript での API の使用
url = "https://dogear.tap.ibm.com/api/app"
entry = "<?xml version="1.0" encoding="utf-8">" &_
"<entry xmlns="http://www.w3.org/2005/Atom">" &_
"<author><name>Author</name></author>" &_
"<title>IBM Connections wiki</title>" &_
"<content type="html"><![CDATA[IBM Connections
wiki bookmarked from VBScript>]]>" &_
"</content>" &_
"<category
scheme="http://www.ibm.com/xmlns/prod/sn/type" term="bookmark" />" &_
"<category term="wiki" />" &_
"<category term="Connections" />" &_
"<link href="http://www10.lotus.com/ldd/lcwiki.nsf" />" &_
"</entry>"
Set objHTTP = CreateObject("Microsoft.XMLHTTP")
objHTTP.open "POST", url, False, "[email protected]", "password")
objHTTP.setRequestHeader "Content-Type", "application/atom+xml"
objHTTP.send entry
Document.Write objHTTP.statusText
Set objHTTP = Nothing
9.3. 個人のプロフィールの取得: サンプル・アプリケー
ション
IBM Connections API が提供するサービスのうち、最もよく使用されるサービスの 1 つが、個人の
プロフィールの取得です。このトピックでは、プロフィール API を使用して個人のプロフィールを
取得するサンプル・アプリケーションについて説明します。
IBM Connections に用意された REST スタイルの API は、HTTP リクエストを受信して Atom 文書
を返します。したがって、個人の情報を取得するためには、正しい HTTP リクエスト URL を構成
する必要があります例えば、以下の URL は、E メール・アドレス [email protected] を持つ
個人のプロフィール情報が含まれる Atom 文書を返します。
http://connections.demoibm.com/profiles/atom/[email protected]
Atom API リクエスト URL を組み立てる方法について詳しくは、『IBM Connections Product
Documentation』を参照してください。Web ブラウザー、または HTTP リクエストの送信が可能な
他のクライアントを使用して、プロフィール API リクエストを送信すると、結果の Atom 文書が返
されます。
151 of 247
次の例は、プロフィール Atom 文書を示しています。
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns:app="http://www.w3.org/2007/app"
xmlns:thr="http://purl.org/syndication/thread/1.0"
xmlns:fh="http://purl.org/syndication/history/1.0"
xmlns:snx="http://www.ibm.com/xmlns/prod/sn"
xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"
xmlns="http://www.w3.org/2005/Atom">
<id>tag:profiles.ibm.com,2006:feed</id>
<generator version="3.0.1.0" uri="http://www.ibm.com/xmlns/prod/sn">IBM
Connections - Profiles</generator>
<title type="text">profile with email [email protected]</title>
<author>
<name>IBM Connections - Profiles</name>
</author>
<updated>2011-08-15T20:16:59.743Z</updated>
<fh:complete/>
<link
href="http://server/profiles/atom/profileTags.do?targetKey=d988f052-3f1846a8-90f9-1a3b4c7a1d94&amp;lastMod=1312810122978"
rel="http://www.ibm.com/xmlns/prod/sn/tag-cloud"
type="application/atomcat+xml"/>
<link
href="http://server/profiles/atom/mv/theboard/entries.do?key=d988f052-3f1846a8-90f9-1a3b4c7a1d94&amp;lastMod=1312810122978"
rel="http://www.ibm.com/xmlns/prod/sn/mv/theboard"
type="application/atom+xml"/>
<link
href="http://server/profiles/atom/mv/theboard/entry/status.do?key=d988f0523f18-46a8-90f9-1a3b4c7a1d94" rel="http://www.ibm.com/xmlns/prod/sn/status"
type="application/atom+xml"/>
<link
href="http://server/profiles/atom/connections.do?connectionType=colleague&amp
;key=d988f052-3f18-46a8-90f9-1a3b4c7a1d94&amp;lastMod=1312810122978"
rel="http://www.ibm.com/xmlns/prod/sn/connections/colleague"
type="application/atom+xml"/>
<link href="http://server/profiles/atom/reportingChain.do?key=d98f0523f18-46a8-90f9-1a3b4c7a1" rel="http://www.ibm.com/xmlns/prod/sn/reportingchain" type="application/atom+xml"/>
<link href="http://server/profiles/atom/peopleManaged.do?key=d988f0523f18-46a8-90f9-1a3b4c7a1d94" rel="http://www.ibm.com/xmlns/prod/sn/peoplemanaged" type="application/atom+xml"/>
<link
href="http://server/profiles/atom/profileExtension.do?key=d988f0523f18-46a8-90f91a3b4c7a1d94&amp;extensionId=profileLinks&amp;lastMod=1312810122978"
rel="http://www.ibm.com/xmlns/prod/sn/ext-attr" type="text/xml"
snx:extensionId="profileLinks"
xmlns:snx="http://www.ibm.com/xmlns/prod/sn"/>
<link
href="http://server/profiles/atom/profile.do?email=bochs%40thinksis.com"
rel="self" type="application/atom+xml"/>
<entry>
<id>tag:profiles.ibm.com,2006:entryd988f052-3f18-46a8-90f91a3b4c7a1d94</id>
<title type="text">Frank Adams</title>
<updated>2011-08-08T13:28:42.978Z</updated>
<category term="profile"
152 of 247
scheme="http://www.ibm.com/xmlns/prod/sn/type"/>
<contributor>
<name>Frank Adams</name>
<snx:userid>E514AA26290C91108525688600530CAC</snx:userid>
<email>[email protected]</email>
<snx:userState>active</snx:userState>
</contributor>
<link href="http://server/profiles/atom/profileEntry.do?key=d988f0523f18-46a8-90f9-1a3b4c7a1d94" rel="self" type="application/atom+xml"/>
<link href="http://server/profiles/html/profileView.do?key=d988f0523f18-46a8-90f9-1a3b4c7a1d94" rel="related" type="text/html"/>
<link href="http://server/profiles/photo.do?key=d988f052-3f18-46a890f9-1a3b4c7a1d94&amp;lastMod=1312810122978"
rel="http://www.ibm.com/xmlns/prod/sn/image" type="image"/>
<link href="http://server/profiles/audio.do?key=d988f052-3f18-46a890f9-1a3b4c7a1d94&amp;lastMod=1312810122978"
rel="http://www.ibm.com/xmlns/prod/sn/pronunciation" type="audio"/>
<link href="http://server/profiles/vcard/profile.do?key=d988f0523f18-46a8-90f9-1a3b4c7a1d94" rel="alternate" type="text/directory"/>
<summary type="text">Profile information for Frank Adams</summary>
<content type="xhtml">
<sp_0:div xmlns="http://www.w3.org/1999/xhtml"
xmlns:sp_0="http://www.w3.org/1999/xhtml">
<span class="vcard">
<div>
<img
src="http://server/profiles/photo.do?key=d988f052-3f18-46a8-90f91a3b4c7a1d94&amp;lastMod=1312810122978" class="photo"/>
</div>
<div>
<a class="fn url"
href="http://server/profiles/atom/profile.do?key=d988f052-3f18-46a8-90f91a3b4c7a1d94">Frank Adams</a>
</div>
<div>
<a class="email"
href="mailto:[email protected]">[email protected]</a>
</div>
<div class="org">
<span class="organization-unit"/>
</div>
<div class="role"/>
<div class="title">Manager</div>
<div class="adr work postal">
<div class="street-address">100 Main Street</div>
<span class="locality">New York</span>
<span class="region">NY</span>
<span class="postal-code">10001</span>
<div class="country-name"/>
<div class="x-country-code"
style="display:none">USA</div>
<div class="x-worklocation-code"
style="display:none">New York</div>
</div>
<div class="x-office">
<span class="x-building"/>
<span class="x-floor"/>
<span class="x-office-number">New York</span>
</div>
<div class="tel">
<abbr class="type" title="work">Work:</abbr>
<span class="value">555-123-456</span>
</div>
<div class="x-is-manager" style="display:none">Y</div>
<div class="x-profile-key">d988f052-3f18-46a8-90f9153 of 247
1a3b4c7a1d94</div>
<div class="uid">E514AA26290C91108525688600530CAC</div>
<div class="x-profile-uid">frank.adams</div>
<div class="x-lconnuserid">E514AA26290C91108525688600530CAC</div>
<div class="rev" style="display:none">2011-0808T13:28:42.978Z</div>
<div class="x-profiletype" style="display:none">default</div>
</span>
</sp_0:div>
</content>
</entry>
</feed>
次のコード例は、従来の XML DOM 処理を使用して、個人のプロフィールを取得し、属性を抽出す
る方法を示しています。
Abdera abdera = new Abdera(); Parser parser = abdera.getParser();
URL api_url = new
URL("http://connections.demoibm.com/profiles/atom/profile.do?emai=PBrown@dem
oibm.com");
Document<Element> document = parser.parse(api_url.openStream());
Feed feed = (Feed)document.getRoot();
// Navigating the content element to get the profile of the person
List<Entry> entries = feed.getEntries();
Entry entry = entries.get(0);
// Name
System.out.println("Name: " + entry.getTitle());
Element content = entry.getContentElement();
List<Element> divElements =
content.getFirstChild().getFirstChild().getElements();
for (Element divElement : divElements) {
if ("org".equalsIgnoreCase(divElement.getAttributeValue("class")))
{
List<Element> spanElements = divElement.getElements();
for (Element spanElement : spanElements) {
// Organization
if ("organizationunit".equalsIgnoreCase(spanElement.getAttributeValue("class"))) {
System.out.println("Organization: " +
spanElement.getText());
}
}
}
// Title
if ("title".equalsIgnoreCase(divElement.getAttributeValue("class")))
{
}
System.out.println("Title: " + divElement.getText());
154 of 247
if ("tel".equalsIgnoreCase(divElement.getAttributeValue("class")))
{ List<Element> spanElements = divElement.getElements();
for (Element spanElement : spanElements) {
// Telephone number
if
("value".equalsIgnoreCase(spanElement.getAttributeValue("class")))
{ System.out.println("Telephone: " +
spanElement.getText());
}
}
}
}
次のコード例は、XPath を使用して、個人のプロフィールを取得し、属性を抽出する方法を示して
います。
Abdera abdera = new Abdera();
Parser parser = abdera.getParser();
URL api_url = new
URL("http://connections.demoibm.com/profiles/atom/profile.do?email=PBrown@dem
oibm.com");
Document<Element> document = parser.parse(api_url.openStream()); Feed feed =
(Feed)document.getRoot();
List<Entry> entries = feed.getEntries(); Entry entry = entries.get(0);
Element content = entry.getContentElement();
// Using XPath functions to get the profile of the person
XPath xpath = abdera.getXPath();
System.out.println("Name: " + xpath.valueOf("a:entry/a:title", feed));
System.out.println("Organization: " +
xpath.valueOf("//xhtml:div[@class='org']/xhtml:span[@class='organizationunit']", feed));
System.out.println("Title: " + xpath.valueOf("//xhtml:div[@class='title']",
feed));
System.out.println("Telephone: " +
xpath.valueOf("//xhtml:div[@class='tel']/xhtml:span[@class='value']",
content));
9.4. コミュニティーを ACL エンジンとして使用
IBM Connections のコミュニティー・アプリケーションは、共通の関心事を持つユーザー・グルー
プ内でのコラボレーションを促進します。コミュニティー・アプリケーションでは、さまざまなタ
イプのコミュニティーと、そのコミュニティー内のさまざまなアクセス・ロールをサポートします。
公開アクセス権限が設定された公開コミュニティーには、すべてのユーザーが参加できますが、プ
ライベート・コミュニティーは特定のグループに限定されます。一般に、コミュニティーは 3 つの
異なるロールをサポートしています。

所有者 は、他の所有者またはメンバーの追加や削除など、コミュニティーに対するすべて


の操作が可能です。
メンバー は、コミュニティーに対する読み取りと送信が可能です。
読者 は、コミュニティーのコンテンツの読み取りのみが可能です。
155 of 247
ロール・ベースの特権管理機能によって、コミュニティーはそのままアクセス制御リスト (ACL) エ
ンジンのソースとなります。このトピックでは、コミュニティーに基づくアクセス制御リストを実
装します。
注: 作業をシンプルなものにしておくため、この例では、JAVA ACL インターフェースを使用した
アクセス制御リストの実装は行いません。しかし、JAVA ACL インターフェースの実装は、簡単な
修正で実現できます。
以下の URL は、特定の communityUUid で指示されたコミュニティーのメンバー情報を取得する
API リンクの例です。
http://connections.demoibm.com/communities/service/atom/community/members?comm
unityUuid=3feb483b-4720-491c-9527-dad1f63123f9
コミュニティー Atom API について詳しくは、IBM Connections インフォメーション・センターを
参照してください。
以下の XML セグメントは、URL によって返されたメンバー情報のエントリーの例です。
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:app="http://www.w3.org/2007/app" xmlns:opensearch="http://a9.com//spec/opensearch/1.1/" xmlns:snx="http://www.ibm.com/xmlns/prod/sn">
<opensearch:totalResults>6</opensearch:totalResults>
<opensearch:startIndex>1</opensearch:startIndex>
<opensearch:itemsPerPage>10</opensearch:itemsPerPage>
<title type="text">Sample Community - Members</title>
<id>http://server/communities/service/atom/community/members?communityUuid=3f
eb483b-4720-491c-9527-dad1f63123f9</id>
<updated>2011-08-15T20:04:10.696Z</updated>
<generator uri="http://www.ibm.com/xmlns/prod/sn" version="3.0.1.0">IBM
Connections - Communities</generator>
<link
href="http://server/communities/service/atom/community/members?communityUuid=
3feb483b-4720-491c-9527-dad1f63123f9" rel="self"/>
<link
href="http://server/communities/service/atom/community/members?communityUuid=
3feb483b-4720-491c-9527-dad1f63123f9&amp;outputType=categories"
rel="http://www.ibm.com/xmlns/prod/sn/tag-cloud"
type="application/atomcat+xml"/>
<link
href="http://server/communities/service/atom/community/service?communityUuid=
3feb483b-4720-491c-9527-dad1f63123f9"
rel="http://www.ibm.com/xmlns/prod/sn/service"
type="application/atomsvc+xml"/>
<snx:communityLastMod
component="http://www.ibm.com/xmlns/prod/sn/communities">1313412198531</snx:c
ommunityLastMod>
<entry>
156 of 247
http://communities.ibm.com:2006/service/atom/community/members?communityUuid=
3feb483b-4720-491c-9527-dad1f63123f9&amp;[email protected]</id>
<title type="text">Frank Adams</title>
<summary type="text">Frank Adams</summary>
<link
href="http://server/profiles/atom/[email protected]"
type="application/atom+xml"/>
<link
href="http://server/profiles/vcard/[email protected]"
type="text/directory"/>
<published>2011-02-02T03:37:34.132Z</published>
<updated>2011-02-02T03:37:34.132Z</updated>
<contributor>
<email>[email protected]</email>
<snx:userid>E514AA26290C91108525688600530CAC</snx:userid>
<snx:userState>active</snx:userState>
<name>Frank Adams</name>
</contributor>
<link
href="http://server/communities/service/atom/community/members?communityUuid=
3feb483b-4720-491c-9527-dad1f63123f9&amp;[email protected]"
rel="self"/>
<link
href="http://server/communities/service/atom/community/members?communityUuid=
3feb483b-4720-491c-9527-dad1f63123f9&amp;[email protected]"
rel="edit"/>
<snx:role
component="http://www.ibm.com/xmlns/prod/sn/s">owner</snx:role>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<span>
<a
href="http://server/profiles/atom/[email protected]"
class="url fn">Frank Adams</a>
<div>
<a href="mailto:[email protected]"
class="email">[email protected]</a>
</div>
<div class="x- guid">E514AA26290C91108525688600530CAC</div>
<div class="x-community-role">owner</div>
</span>
</div>
</content>
</entry>
</feed>
157 of 247
ACL には、重要な概念が 2 つあります。1 つはロールの検査で、もう 1 つは特権の注入です。まず
は、特定のコミュニティーについて、ある個人のロールを取得する作業から始めます。以下のコー
ドは、IBM Connections API を実行します。パラメーターとしてユーザーの E メール・アドレスを
読み取ります。
private String getRole(String userEmail) {
Abdera abdera = new Abdera();
Parser parser = abdera.getParser();
Document<Element> document;
try {
URL api_url = new
URL("http://connections.demoibm.com/communities/service/atom/community/member
s?communityUuid=" + communityUuid);
document = parser.parse(api_url.openStream());
} catch (Exception e) {
return null;
}
Feed feed = (Feed) document.getRoot();
XPath xpath = abdera.getXPath();
Map<String,String> namespace = new HashMap<String,String>();
namespace.putAll(xpath.getDefaultNamespaces());
namespace.putAll(feed.getNamespaces());
return xpath.valueOf("a:entry[a:contributor/a:email='" + userEmail +
"']/snx:role", feed, namespace);
}
この個人 (指定された E メール・アドレスを持つ) のロールを直接見つけるために XPath を活用し
たため、メソッドはとても簡潔に見えます。XPath 式 a:entry[a:contributor/a:email='" + userEmail +
"']/snx:role は、指定された E メール・アドレスの投稿者に正確にマッチするエントリーの下のロー
ル・タグを表します。しかし、XPath に不慣れなユーザーには少々複雑な記述です。正しく XPath
式を組み立てる方法について詳しくは、『XPath Tutorial』を参照してください。
特定のコミュニティーについて、ある個人のロールを取得した後、特権の注入を開始できます。こ
の実装はいくつかの方法で行えます。また、JDK 提供のデフォルトの ACL 実装を利用することも
できます。ここでは、作業をシンプルにするために、ゼロから実装を行います。このコードは、ご
使用のシステムの要件に合わせてカスタマイズできます。
158 of 247
以下のコードは、さまざまな特権を持つ各種ロールを付与する場合の例です。
public class CommunitiesACL {
private String communityUuid = null;
public static enum Permission {MANAGE, POST, READ};
private Map<String, Set<Permission>> permissionMap = null;
private Set<Permission> owner = null;
private Set<Permission> member = null;
private Set<Permission> reader = null;
public CommunitiesACL(String uuid) {
communityUuid = uuid;
init ();
}
private void init() {
owner = new HashSet<Permission>();
owner.add(Permission.MANAGE);
owner.add(Permission.POST);
owner.add(Permission.READ);
member = new HashSet<Permission>();
member.add(Permission.POST);
member.add(Permission.READ);
reader = new HashSet<Permission>();
reader.add(Permission.READ);
}
permissionMap = new HashMap<String, Set<Permission>>();
permissionMap.put("owner", owner);
permissionMap.put("member", member);
permissionMap.put("reader", reader);
}
さまざまな特権を各種ロールに付与した後、個人のロールを取得するために使用したメソッドに加
えて、以下の例では、最も重要なメソッドである checkPermission をコミュニティー ACL に実装
します。
159 of 247
以下のコードは、ある個人が特定の権限を持っているかどうかを検査する方法を示しています。
public boolean checkPermission(String userEmail, Permission permission) {
String role = getRole(userEmail);
boolean hasPermission = false;
try {
hasPermission = permissionMap.get(role).contains(permission);
}
catch (NullPointerException e) {
// Does not have this role
}
return hasPermission;
}
以下のコードは、コミュニティー ACL クラスを使用する方法を示しています。
public static void main(String[] args) {
CommunitiesACL acl = new CommunitiesACL("62e8161d-345e-48ba-9b334a4318007800");
System.out.println(acl.checkPermission("[email protected]",
CommunitiesACL.Permission.MANAGE));
}
9.5. ブログの投稿およびコメントに関する作業
ブログは、情報の取り込みと公開という両方の目的で、ずっと以前から Atom フィードおよび RSS
フィードを使用していました。そのため、ブログ API に使用される Atom フィードには、馴染みが
あります。ブログ・フィードを取り込むためにさまざまなツールとアプリケーションが存在するた
め、この解説では、ブログ・エントリーおよびコメントの公開に重点を置いて説明します。
9.5.1 ブログ・エントリーの投稿
新しいブログ・エントリーを投稿するには、まずそのブログのサービス文書を取得します。サービ
ス文書には、新しいエントリーの投稿に必要な URL が含まれています。API への入力は、ブロ
グ・エントリー文書です。
160 of 247
以下のサンプル・コードを使用して、新しいブログ・エントリーを投稿できます。
// Create an Abdera client and add credentials to it.
Abdera abdera = new Abdera();
AbderaClient client = new AbderaClient(abdera);
AbderaClient.registerTrustManager();
client.addCredentials("https://server", null, null, new
UsernamePasswordCredentials("user","password"));
// After authentication, we use Abdera to get the service document and parse
the document to get required collection.
ClientResponse resp =
client.get("https://server/blogs/services/atom?lang=en_us"); Document<Service>
ServiceDocument = resp.getDocument();
ServiceDocument.writeTo(System.out);
Service service = ServiceDocument.getRoot();
// Provide title of workspace and title of the Blogs collection at this stage
to retrieve the collection.
// In this example, Sample Blog is the name of the blog. Weblog Entries is
the collection of entries to be returned.
Collection collection = service.getCollection("Sample Blog", "Weblog
Entries");
// Obtain collections uri where entry needs to be posted.
String CollectionURI =
collection.getResolvedHref().toASCIIString();
// Create a new atom entry document as below which needs to be posted to the
blog.
Entry entry = abdera.newEntry();
entry.newId();
entry.addAuthor("John Doe");
entry.setUpdated(new Date());
entry.setTitle("Test entry from Java");
entry.setContentAsHtml("This is the content of the entry.");
entry.addCategory("tag1");
entry.addCategory("tag2");
//Post the created entry document to the collections uri obtained from
service document.
RequestOptions opt = client.getDefaultRequestOptions();
resp = client.post(CollectionURI, entry, opt );
161 of 247
9.5.2 コメントの送信
ブログ・エントリーに対してコメントを投稿するには、まずそのブログのサービス文書を取得しま
す。次に、Comment Entries コレクションを使用して、コメントを投稿するための URL を見つけ
ます。各コメントをエントリーまたは別のコメントに付加する必要があるため、コメントの投稿先
となるブログ・エントリーの ID も見つけなければなりません。
// Create an Abdera client and add credentials to it.
Abdera abdera = new Abdera();
Parser parser = abdera.getParser();
AbderaClient client = new AbderaClient(abdera);
AbderaClient.registerTrustManager();
client.addCredentials("https://server", null, null, new
UsernamePasswordCredentials("user","password"));
// After authentication we use Abdera to get the service document and parse
the document to get required collection.
ClientResponse resp = client.get("https://server/blogs/api");
Document<Service> ServiceDocument = resp.getDocument();
ServiceDocument.writeTo(System.out);
Service service = ServiceDocument.getRoot();
// Provide title of workspace and title of the Blogs collection at this stage
to retrieve the collection.
// In this example, Sample Blog is the name of the blog. Weblog Entries is
the collection of entries to be returned.
Collection collection = service.getCollection("Sample Blog", "Weblog
Entries");
String CollectionURI = collection.getResolvedHref().toASCIIString();
// Use the Comment Entries collection to find the URL to post comments
Collection collectionComments = service.getCollection("Sample Blog", "Comment
Entries");
String CommentURI = collectionComments.getHref().toASCIIString();
Document<Element> doc;
URL url = new URL(CollectionURI);
resp = client.get(url.toString());
doc = parser.parse(resp.getInputStream());
Feed feed = (Feed) doc.getRoot();
Entry entry2 = null;
162 of 247
// Loop through the entries to find the id of the entry to post the comment
for (Entry entry : feed.getEntries()) {
System.out.println("¥t" + entry.getTitle());
title of each comment entry
System.out.println("¥t" + entry.getContent());
actual content of the comment .
System.out.println("¥t" + entry.getId());
comment entry id .
System.out.println("¥t" + entry.getLink("edit"));
entry2 = entry;
}
// This prints the
// This prints the
// This prints the
// Creating the atom entry that needs to be posted .
Entry entry1 = abdera.newEntry();
entry1.setTitle("Sample Comment");
entry1.setContent("html");
entry1.setContentAsHtml("This is another sample comment HTML content");
// ThreadHelper Class used to add the tag to the entry1
// and entry 2 is the Blog entry to which this comment is a response . The
of entry2 is added
to the tag on entry1
ThreadHelper.addInReplyTo(entry1, entry2);
System.out.println(entry1);
//Construction in entry1 completed now post to the Blogs API.
RequestOptions opt = client.getDefaultRequestOptions();
resp = client.post(CommentURI , entry1, opt);
System.out.println("posted?" + resp.getStatus() + "/" +
resp.getStatusText());
9.6. ファイル CMIS API の使用
ファイル CMIS API は、Content Management Interoperability Services (CMIS) 標準を使用して、
ファイル・アプリケーションのデータを公開します。CMIS は、さまざまなエンタープライズ・コ
ンテンツ管理 (ECM) システム間においてアプリケーション・コードの移植性を高めることを目標
に作成された標準です。実際に、CMIS 互換アプリケーションはすべて IBM Connections と連携し
ます。このページに、既存のCMIS クライアント・アプリケーションのリストがあります。
CMIS 標準の詳細については、この解説では取り上げません。
CMIS 標準の詳細な資料は、OASIS CMIS Web サイトにあります。
163 of 247
ファイル CMIS API を使用するには、まずアプリケーションによって API サービス文書を取得する
必要があります。この文書は、https://server/files/basic/cmis/my/servicedoc にあります。以下の例
は、サービス文書の先頭を示しています。
<?xml version="1.0" encoding="UTF-8"?>
<app:service xmlns:snx="http://www.ibm.com/xmlns/prod/sn"
xmlns:cmisra="http://docs.oasis-open.org/ns/cmis/restatom/200908/"
xmlns:cmism="http://docs.oasis-open.org/ns/cmis/messaging/200908/"
xmlns:lcmis="http://www.ibm.com/xmlns/prod/sn/cmis"
xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:app="http://www.w3.org/2007/app">
<app:workspace>
<atom:title type="text">Frank Adams</atom:title>
<atom:link href="https://server:443/files/basic/opensocial/container"
rel="http://www.ibm.com/xmlns/prod/sn/opensocial"
type="application/xrds+xml"/>
<app:collection
href="https://server/files/basic/cmis/repository/p%21E514AA26290C911085256886
00530CAC/folderc/snx%3Aroot">
<cmisra:collectionType>root</cmisra:collectionType>
<atom:title type="text">Root Children Collection</atom:title>
</app:collection>
<app:collection
href="https://server/files/basic/cmis/repository/p%21E514AA26290C911085256886
00530CAC/typesc">
<cmisra:collectionType>types</cmisra:collectionType>
<atom:title type="text">Types Children Collection</atom:title>
</app:collection>
<app:collection
href="https://server/files/basic/cmis/repository/p%21E514AA26290C911085256886
00530CAC/checkedout">
<cmisra:collectionType>checkedout</cmisra:collectionType>
<atom:title type="text">Checkedout Collection</atom:title>
<app:accept>application/atom+xml;type=entry</app:accept>
</app:collection>
<app:collection
href="https://server/files/basic/cmis/repository/p%21E514AA26290C911085256886
00530CAC/query">
<cmisra:collectionType>query</cmisra:collectionType>
<atom:title type="text">Query Collection</atom:title>
<app:accept>application/cmisquery+xml</app:accept>
</app:collection>
<app:collection
164 of 247
href="https://server/files/basic/cmis/repository/p%21E514AA26290C911085256886
00530CAC/unfiled">
<cmisra:collectionType>unfiled</cmisra:collectionType>
<atom:title type="text">Unfiled Collection</atom:title>
</app:collection>
<atom:link
href="https://server/files/basic/cmis/repository/p%21E514AA26290C911085256886
00530CAC/typesd"
rel="http://docs.oasisopen.org/ns/cmis/link/200908/typedescendants"
type="application/atom+xml;type=feed"/>
<atom:link href="https://server/files/basic/cmis/nonce"
rel="http://www.ibm.com/xmlns/prod/sn/cmis/nonce" type="text/plain"/>
....
サービス文書を使用して、アプリケーションは提供されたリンクをたどり、文書リポジトリーにア
クセスします。
以下の例では、Apache Abdera を使用して、特定ユーザーの「マイ・ファイル」コレクションにあ
る文書のリストを取得します。
Abdera abdera = new Abdera(); Parser parser = abdera.getParser();
AbderaClient client = new
AbderaClient(abdera);
AbderaClient.registerTrustManager();
client.addCredentials("https://server", null, null, new
UsernamePasswordCredentials("user","password"));
ClientResponse resp =
client.get("https://server/files/basic/cmis/my/servicedoc");
Document<Service> service_doc = resp.getDocument();
Service service = service_doc.getRoot();
Collection collection = service.getCollection("Frank Adams","Root Children
Collection");
URL myFilesUrl = new URL(collection.getResolvedHref().toASCIIString());
resp = client.get(collection.getResolvedHref().toASCIIString());
Document<Element> document = parser.parse(resp.getInputStream());
Feed feed = (Feed)document.getRoot();
List<Entry> entries = feed.getEntries(); resp =
client.get(entries.get(0).getLink("down").getHref().toASCIIString());
165 of 247
document = parser.parse(resp.getInputStream());
feed = (Feed)document.getRoot();
entries = feed.getEntries();
for (Entry entry: entries) {
// Using XPath functions to get file information
XPath xpath = abdera.getXPath();
Map<String,String> ns = new HashMap<String,String>();
ns.put("atom", "http://www.w3.org/2005/Atom");
ns.put("app", "http://www.ibm.com/xmlns/prod/sn");
ns.put("cmisra", "http://docs.oasis-open.org/ns/cmis/restatom/200908/");
ns.put("cmis", "http://docs.oasis-open.org/ns/cmis/core/200908/");
System.out.println("File name: " +
xpath.valueOf("cmisra:object/cmis:properties/cmis:propertyString[@queryName='
cmis:name']", entry, ns));
System.out.println("File size: " +
xpath.valueOf("cmisra:object/cmis:properties/cmis:propertyInteger[@queryName=
'cmis:contentStreamLength']", entry, ns));
}
ファイル CMIS API を使用して文書リポジトリーの情報を作成または更新する場合は、アプリケー
ションによって最初に nonce (ランダム・ストリング) トークンを取り出す必要があります。nonce
トークンは、クロス・サイト RF (CSRF) 攻撃からの保護に使用されます。次のコード例を使用し
て、nonce トークンを取り出すことができます。
Abdera abdera = new Abdera();
AbderaClient client = new AbderaClient(abdera);
AbderaClient.registerTrustManager();
client.addCredentials("https://server", null, null, new
UsernamePasswordCredentials("user","pass"));
String nonceUrl = "https://server/files/basic/cmis/nonce";
resp = client.get(nonceUrl);
StringWriter writer = new StringWriter();
IOUtils.copy(resp.getInputStream(), writer);
String nonce = writer.toString();
// Add the nonce to the request
RequestOptions options = new RequestOptions();
options.addHeader("X-Update-Nonce", nonce);
この解説、およびこの wiki の他の解説に示すコード例では、Java を使用して API Atom フィード
を処理するときに、Apache Abdera ライブラリーを使用しました。CMIS API で大量の処理を予定
している場合は、Apache Chemistry などの他のライブラリーを使用する方が、ニーズに対して適
切に対応できる場合があります。
Apache Chemistry について詳しくは、プロジェクトの Web サイトにアクセスしてください。
166 of 247
9.7. プロフィール管理 API の使用
プロフィール管理 API は、IBM Connections データベース・リポジトリーのユーザーを管理するた
め、Tivoli Directory Integrator (TDI) に代わるものとして設計されました。プロフィール管理 API は、
通常のプロフィール API とは異なる目的で使用されます。通常のプロフィール API は、認証済み
ユーザーのみを処理するように設計されています。プロフィール管理 API は TDI の機能と同様に、
ユーザーを作成、更新、または削除する目的で使用できます。プロフィール管理 API で Tivoli
Directory Integrator を置き換えることのできる環境もありますが、通常はこの 2 つを併用します。
他の API と同じく、プロフィール管理 API は REST スタイルのインターフェースを使用します。
そのため、Abdera ライブラリーには、この API と連携するほとんどの機能が用意されています。
プロフィール管理 API を使用する前に、プロフィール・アプリケーションでユーザーを「管理者」
ロールにマップする必要があります。管理者ロールを持つユーザーだけがプロフィール管理 API を
使用できます。プロフィール・アプリケーションでユーザーを管理者ロールに追加するには、
WebSphere Application Server 管理コンソールを開きます。プロフィール・アプリケーションのセ
キュリティー・ロール・マッピング・フォームにナビゲートするため、「アプリケーション
(Applications)」 -> 「アプリケーション・タイプ (Application Types)」 -> 「WebSphere エン
タープライズ・アプリケーション」 -> 「プロフィール」を選択し、ユーザーまたはグループを
マップするために「セキュリティー」ロールを選択します。
以下のサンプル・コードは、E メール・アドレス・パラメーターを使用して、既存のユーザーを取
得します。
Abdera abdera = new Abdera();
AbderaClient client = new AbderaClient(abdera);
AbderaClient.registerTrustManager();
client.addCredentials("http://servername", null, null, new
UsernamePasswordCredentials("user","password")); ClientResponse resp =
client.get("http://servername/profiles/admin/atom/profileService.do");
Document<Service> service_doc = resp.getDocument();
Service service = service_doc.getRoot();
Collection collection = service.getCollection("Profiles Administration
Workspace", "All User Profiles");
String coll_uri = collection.getResolvedHref().toASCIIString() + "?email=" +
emailAddress;
resp = client.get(coll_uri);
switch(resp.getType()) {
case SUCCESS:
Document<Element> doc = resp.getDocument();
doc.writeTo(System.out);
break;
default:
}
System.out.println("Error: " + resp.getStatusText());
167 of 247
以下のコードは、プロフィール文書からユーザーを作成します。
Abdera abdera = new Abdera();
AbderaClient client = new AbderaClient(abdera);
AbderaClient.registerTrustManager();
client.addCredentials("http://servername", null, null, new
UsernamePasswordCredentials("user","password"));
ClientResponse resp =
client.get("http://servername/profiles/admin/atom/profileService.do");
Document<Service> service_doc = resp.getDocument();
Service service = service_doc.getRoot();
Collection collection = service.getCollection("Profiles Administration
Workspace", "All User Profiles");
String coll_uri = collection.getResolvedHref().toASCIIString() +
"[email protected]";
Entry entry = abdera.newEntry();
entry.setId("ignored");
entry.addCategory("http://www.ibm.com/xmlns/prod/sn/type", "profile", null);
try {
File f = new File("NewProfile.xml");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
StringBuffer sb = new StringBuffer();
String eachLine = br.readLine();
while (eachLine != null)
{ sb.append(eachLine
); sb.append("¥n");
eachLine = br.readLine();
}
entry.setContent(sb.toString(),Type.XML);
} catch (Exception e) {
e.printStackTrace();
}
resp = client.post(coll_uri, entry);
168 of 247
}
switch(resp.getType()) {
case SUCCESS:
System.out.println("New profile created.");
break;
default:
System.out.println("Error: " + resp.getStatusText());
プロフィール管理 API を使用してユーザーを更新することもできます。ユーザーを更新する際は、
すべての属性が API に渡されることに注意してください。そのため、最初にユーザーのプロフィー
ル文書を取得してください。プロフィール文書を更新した後、ユーザーの追加と同じ手順で新しい
文書を送信します。以下にプロフィール文書の例を示します。
<person xmlns="http://ns.opensocial.org/2008/opensocial">
<com.ibm.snx_profiles.attrib>
<entry>
<key>com.ibm.snx_profiles.base.distinguishedName</key>
<value>
<type>text</type>
<data>CN=Frank Adams,o=Renovations</data>
</value>
</entry>
<entry>
<key>com.ibm.snx_profiles.base.guid</key>
<value>
<type>text</type>
<data>E514AA26290C91108525688600530CA2</data>
</value>
</entry>
<entry>
<key>com.ibm.snx_profiles.base.uid</key>
<value>
<type>text</type>
<data>fadams</data>
</value>
</entry>
<entry>
<key>com.ibm.snx_profiles.base.givenName</key>
<value>
<type>text</type>
<data>Frank</data>
</value>
</entry>
<entry>
<key>com.ibm.snx_profiles.base.surname</key>
<value>
<type>text</type>
<data>Adams</data>
</value>
</entry>
169 of 247
<entry>
<key>com.ibm.snx_profiles.base.email</key>
<value>
<type>text</type>
<data>[email protected]</data>
</value>
</entry>
<entry>
<key>com.ibm.snx_profiles.base.displayName</key>
<value>
<type>text</type>
<data>Frank Adams</data>
</value>
</entry>
</com.ibm.snx_profiles.attrib>
</person>
重要な点として、拡張属性はプロフィール管理 API を介して使用することができます。拡張属性は、
プロフィール管理 API を使用して取得および更新できます。
170 of 247
第 10 章 IBM Web Experience Factory
10.1. 概要
IBM Web Experience Factory Designer は、Java 2 Platform, Enterprise Edition (J2EE) Web アプリ
ケーション、およびポートレットを開発するためのツールです。このツールは、Eclipse ベースの
統合開発環境 (IDE) にプラグインとしてインストールできます。
IBM Web Experience Factory Designer では、ビルダーを使用してモデルを開発するためのプロ
ジェクトを作成し、次にそれらのモデルから結果の Web アプリケーションとポートレットを生成
します。IBM WebSphere Portal Server フレームワークは、ページのナビゲーションやコラボレー
ション機能など、複数のサービスを提供します。各ビルダーには、ウィザードのユーザー・イン
ターフェースがあり、そこで入力項目を指定します。ビルダーは、アプリケーションの一部を自動
的に生成または変更します。
このトピックでは、REST Service Call Builder を使用した、カスタム Web アプリケーションやま
たはポートレットの IBM Connections への統合について説明します。説明するサンプル・アプリ
ケーションは、Eclipse 3.2、Web Experience Factory 7.0.1 を使用して開発しています。また、
IBM Connections 3.0.1 サーバーへのアクセス、およびオプションで IBM WebSphere Portal Server
v7.0 へのアクセスが必要です。IBM Connections で使用可能な API について詳しくは、資料『IBM
Connections APIs』を参照してください。この wiki には、API を中心に説明するセクション『9.0
API の使用』もあります。
10.2. サンプル・アプリケーション
サンプル・アプリケーションは、事務用品 (Office Supplies) 販売店に関するアプリケーションです。
Dan Misawa は、この事務用品販売店の店員で、商品に関する毎月のブログ更新を担当しています。
彼はその月の目玉商品の情報を、IBM Connections ベースのブログ・サイトに投稿します。時間を
節約するため、Dan は、新しく作成したブログ・エントリーに対して商品カタログから直接基本情
報を投稿できるように、開発チームに依頼しています。そのようにすれば、ブログ・エントリーに
コンテンツを追加するだけでよく、入力した商品の情報が正しいことを確認しなくても済みます。
次の図は、このアプリケーションのウェルカム・ページを示しています。ウェルカム・ページには、
カタログにある商品のリストが示されます。ユーザーは、その品目の 1 つをクリックすると、詳細
を表示することができます。
171 of 247
商品の要約ビューにあるリンクをクリックすると、次の図に示すように、その商品の詳細を表示す
ることができます。Dan は商品の詳細ページから、その月の目玉商品として選択された商品を、ブ
ログに投稿するように選択できます。
「Post to My Blog」をクリックすると、次の図に示すように、Dan は自分のブログに新しく作成
されたブログ・エントリーを見ることができます。ここで、商品に関する重要情報が商品イメージ
とともに自動的に入力されます。この自動処理によって、Dan はカタログから情報を探してブロ
グ・エントリーに入力したり貼り付けたりする作業から解放されます。
また、入力の誤りも最小限に抑えられます。
172 of 247
10.3. Office Supplies IBM Web Experience Factory プロ
ジェクト
Office Supplies アプリケーションを作成する最初の手順は、IBM Web Experience Factory プロジェ
クトの作成です。以前に Web Experience Factory プロジェクトを作成したことがない場合は、製
品付属のチュートリアルを実行してください。チュートリアルからサンプル Web アプリケーショ
ン・プロジェクトを作成することで、ご使用の環境が正しく構成されていることを確認します。
下記の図に示すように、このチュートリアルには Designer の「ようこそ (Welcome)」タブからア
クセスできます。
173 of 247
Web Experience Factory を使用して Web アプリケーションおよびポートレットを開発するには、
アプリケーション・サーバー (例えば、Tomcat、IBM WebSphere Application Server Community
Edition、または IBM WebSphere Application Server) にアクセスできなければなりません。Web
Experience Factory Designer 7.0.1 には、WebSphere Application Server Community Edition が事前
に構成されています。開発プロセス中に、IBM WebSphere Portal のサーバーにアクセスする必要
はありません。ただし、連携ポートレットなど、Portal の機能が必要なポートレットを開発してい
る場合は、Portal のサーバーを使用しないとポートレットをテストすることができません。
以下の手順を使用して、Office Supplies プロジェクトを作成します。
1.
2.
3.
4.
5.
6.
7.
Web Experience Factory Designer メニューから「ファイル (File)」 -> 「新規 (New)」 ->
「WebSphere Portlet Factory プロジェクト (WebSphere Portlet Factory Project)」をク
リックします。
プロジェクト名として OfficeSupplies を入力します。「次へ (Next)」をクリックします。
機能セットのページが表示されます。このプロジェクトでは、機能セットを追加する必要はあ
りません。「次へ (Next)」をクリックします。
デ プ ロ イ メ ン ト の 構 成 ペ ー ジ が 表 示 さ れ ま す 。 Web Experience Factory Designer に は
WebSphere Application Server Community Edition が事前に構成されているため、このサンプ
ルでは、プロジェクトのデプロイメントを構成する必要はありません。
WebSphere Application Server Community Edition をアプリケーション・サーバーとして使用
しない場合、または Portal のサーバーに接続する場合は、プロジェクト・デプロイメントの構
成方法の詳細について、Web Experience Factory wiki のデプロイメントに関するトピックを参
照してください。
プロジェクトをここで公開するかどうかを尋ねるプロンプトが出されます。
サンプルを実行するには、プロジェクトを公開する必要があります。しかし、ここですぐに公
開する必要はありません。
後で公開することを選択した場合に、プロジェクトを公開するには、そのプロジェクトを右ク
リックして「アプリケーションの公開 (Publish Application)」を選択します。
174 of 247
10.4. Office Supplies サービス・プロバイダー
『10.3 Office Supplies IBM Web Experience Factory プロジェクト』の説明に従って IBM Web
Experience Factory Web アプリケーション・プロジェクトを作成したら、Office Supplies サービ
ス・プロバイダー・モデルを作成できます。このサービス・プロバイダーにより、一貫した方法で
事務用品のデータベースにアクセスすることができます。これは、このサンプル・アプリケーショ
ンに役立つだけでなく、Dan Misawa (架空の従業員) の会社で今後使用される、そのデータベース
へのアクセスが必要になるいずれのアプリケーションでも役立ちます。コンシューマーは、Web
Experience Factory で開発される他のアプリケーションに限りません。Web Experience Factory に
サービス・プロバイダーを作成するときは、サービスを公開して WSDL を生成することを選択で
きます。Web サービスを取り込む機能を備えた外部のアプリケーションはすべて、Office Supplies
サービス・プロバイダーのサービス・コンシューマーになることができます。
175 of 247
ご使用の環境でこのサンプルを簡単に実行できるようにするため、ここではデータベースに接続し
ません。代わりに、固定 XML 変数からデータを取得します。Web Experience Factory wiki にある
データ・アクセスのサンプルを参照してください。例えば、さまざまなデータ・ソース (DB2、
Oracle、PeopleSoft、SAP、Lotus Domino など多数) からデータを取得するサービス・プロバイ
ダーの作成方法などの解説があります。
10.4.1
Office Supplies モデルの作成
以下の手順を使用して、Office Supplies サービス・プロバイダー・モデルを作成します。
1.
2.
3.
4.
5.
10.4.2
OfficeSupplies プロジェクトを右クリックして、コンテキスト・メニューから「新規 (New)」
-> 「WebSphere Portlet Factory モデル」を選択します。
プロジェクトのコンテキスト・メニューを使用してモデルを作成しているため、「プロジェク
トの選択」ダイアログ・ボックスに「OfficeSupplies」がデフォルトで選択された状態で表示
されます。「次へ (Next)」をクリックします。
「Factory 開始モデル」から、モデル・タイプとして「空」を選択します。「次へ (Next)」を
クリックします。
「新規モデルの保存」ステップで、サービス・プロバイダー・モデルを redwiki/data フォル
ダーに置くことができます。そのために、「フォルダーの入力または選択」で
「redwiki/data」を付加して、モデル名を「OfficeSuppliesProvider」に設定します。
「完了 (Finish)」をクリックします。
ビルダーをモデルに追加
Office Supplies サービス・プロバイダー・モデルに次のビルダーを追加することができます。



Service Definition
Variable
Action List
176 of 247


Simple Schema Generator
Service Operator
ビルダーを追加する詳細な手順は、この解説の後半で取り上げますが、以下の図は完成したモデル
を示しています。
ステップ 1: Service Definition Builder の追加
以下の手順を使用して、Service Definition Builder を追加します。
1.
2.
3.
4.
5.
「ビルダーの追加 (add builder)」アイコンをクリックして、ビルダーをビルダー呼び出しリ
ストに追加します。
「Builder ピッカー」ダイアログ・ボックスが表示されます。「すべて」カテゴリーから
「Service Definition」を選択します。
ヒント: ビルダーをすばやく見つけるには、「Builder ピッカー」ダイアログ・ボックスに、ビ
ルダー名の最初の文字を入力します。例えば、ビルダー・リストで最初に文字 s を入力すると、
名前の先頭に s を使用するビルダーが表示されます。
OfficeSupplies などのような、ビルダーの記述名を入力します。
「テスト・サポート」セクションを展開して、「テスト・サポートを追加」をクリックします。
この操作によって、自動的に「Main を生成」チェック・ボックスが有効になります。
ビルダーの残りのパラメーターについては、デフォルト値のままにします。
177 of 247
6.
「OK」をクリックして処理を終了します。
以下の図は、完成したビルダーを示しています。
ステップ 2: データを取得するメソッドの作成
データを取得するための Variable Builder を作成します。Variable Builder を追加するには、以下の
手順を使用します。
1.
2.
3.
4.
「ビルダーの追加 (add builder)」アイコンをクリックします。
「すべて」カテゴリーから「Variable」を選択します。
ビルダー名として suppliesData を入力します。
ビルダー・タイプとして「XML」を選択します。
178 of 247
5.
以下の例に示す XML テキストを、ビルダーの初期値に入力します。
「OK」をクリックします。
<office_supplies>
<office_supply>
<name>Compass</name>
<qty_instock>100</qty_instock>
<price>14.95</price>
<img_file>compass.jpg</img_file>
<comments></comments>
</office_supply>
<office_supply>
<name>Staples</name>
<qty_instock>50</qty_instock>
<price>2.95</price>
<img_file>staples.jpg</img_file>
<comments></comments>
</office_supply>
<office_supply>
<name>Poster</name>
<qty_instock>75</qty_instock>
<price>1.95</price>
<img_file>poster.jpg</img_file>
<comments></comments>
</office_supply>
<office_supply>
<name>Desk Calendar</name>
<qty_instock>20</qty_instock>
<price>9.95</price>
<img_file>deskcalendar.jpg</img_file>
<comments></comments>
</office_supply>
</office_supplies>
179 of 247
以下の図は、完成したビルダーを示しています。
ステップ 3: データを取得するアクションの作成
Action List Builder を追加するには、以下の手順に従います。
1.
2.
3.
4.
5.
「ビルダーの追加 (add builder)」アイコンをクリックします。
「すべて」カテゴリーから「Action List」を選択します。
ビルダー名として returnSupplies を入力します。
「戻りの型」として「IXml」を選択します。
「XML タイプ」は「型なし XML」のままにします。
6.
「Action List」の下の
ボタンをクリックして、「Special」フォルダーから「Return」
を選択します。
180 of 247
7.
ボタン
をクリックして、ソースを選択します。
181 of 247
8.
「OK」を 3 回クリックします。
Action List Builder は、次の図のようになります。
9. ビルダーの残りのパラメーターについては、デフォルト値のままにします。
10. 「OK」をクリックして終了します。
ステップ 4: Simple Schema Generator Builder の追加
Simple Schema Generator Builder を追加するには、以下の手順に従います。
1.
2.
3.
4.
5.
「ビルダーの追加 (add builder)」アイコンをクリックします。
「すべて」カテゴリーから「Simple Schema Generator」を選択します。
ビルダー名として OfficeSuppliesSchema を入力します。
「サンプル・データ」ドロップダウン・メニューから「suppliesData」変数を選択します。
ビルダーの残りのパラメーターについては、デフォルト値のままにします。
182 of 247
6.
「OK」をクリックして終了します。
以下の図は、完成したビルダーを示しています。
ステップ 5: Service Operations Builder の追加
Service Operations Builder を追加するには、以下の手順に従います。
1.
2.
3.
4.
「ビルダーの追加 (add builder)」アイコンをクリックします。
「すべて」カテゴリーから「Service Operation」を選択します。
「データ・サービス」に「OfficeSupplies」が事前設定されていることを確認します。
「操作名」として getSupplies を入力します。
5.
「呼び出すアクション」の
ボタンをクリックして、「メソッド」から
7.
「returnSupplies」を選択します。
操作の説明として、「在庫のある事務用品のリストを返す (return the list of available office
supplies)」と入力します。
「操作入力」セクションで「入力なし (No inputs)」を選択します。
8.
「操作結果 (Operational Results)」の「結果スキーマ」にある
6.
ボタンをクリックして、
「OfficeSuppliesSchema」 -> 「office_supplies」を選択します。
9. ビルダーの残りのパラメーターについては、デフォルト値のままにします。
10. 「OK」をクリックして終了します。
下記に示す完成したビルダーの図は、Service Operation Builder にアクション・リストへの関連付
けが必要なことを示しています (「呼び出すアクション」パラメーター)。したがって 、
returnSupplies Action List Builder を作成しました。このビルダーは、値を返す 1 行の呼び出しであ
り、XML データを含む 1 つの変数です。実際のアプリケーションでは、Action List Builder はデー
タベースまたは他のデータ・ソースの呼び出しに使用され、呼び出しを起動する可能性が高くなり
ます。また、この図は、Service Operation Builder 側ではスキーマ情報がない限り、操作が返す
データをどのように扱うかはわからないことも示しています。スキーマの作成は Simple Schema
Generator Builder が行います。このビルダーによって、ユーザーはスキーマの作成方法を習得しな
くても済みます。代わりに、サンプル・データ (suppliesData 変数の値) をビルダーに提供するだけ
です。
183 of 247
ビルダーによって、有効なスキーマ構造が生成されます。
10.4.3 Office Supplies サービス・プロバイダー・モデ
ルのまとめ
要約すると、サービス・プロバイダーを作成するには、Service Definition Builder と Service
Operation Builder が必要です。これらのビルダーによって、サービス・プロバイダーの基盤が作成
されます。Web Experience Factory を使用してビルダーを作成するときは、このツールによってメ
ソッド、変数、ページ、Java コードなど、アプリケーションが作動するために必要なものが生成
されます。生成されるコードは、選択したビルダーのタイプ、およびビルダーに入力したパラメー
ターによって異なります。Web Experience Factory によって生成される成果物を表示するには、
『ビルダーをモデルに追加 』セクションの最初の図に強調表示した矢印アイコンをクリックしま
す。
下記の図は、getSupplies サービス操作によってメソッド、データ・サービス、および変数が生成
されることを示しています (青色で強調表示)。メソッドの 1 つ (例えば getSuppliesExecute) をク
リックすると、アプリケーション・ツリーの右側で、生成されたコードを見ることができます。
184 of 247
Office Supplies サービス・プロバイダーのテスト
テスト・サポートを追加するオプションを選択したことを思い出してください。サービス・プロバ
イダーの開発プロセス中にこのオプションを選択しておくと、操作が返す内容をプレビューした後
で、サービス・コンシューマーからの呼び出しのテストに移ることができるため、非常に役立ちま
す。
「OfficeSuppliesProvider.model」を右クリックして、「実行 (Run As)」 --> 「アクティブなモ
デルの実行」をクリックします。
185 of 247
下記の図は、Service Definition Builder の Web Experience Factory テスト・サポートによって生成
される内容を具体的に示しています (getSupplies 操作をテストするためのリンクがある Web ペー
ジ)。getSupplies リンクをクリックすると、この図に示すように、商品リストの含まれる表が表示
されます。
次の手順
Office Supplies サービス・プロバイダー・モデルが正常に作成されました。これで、『10.5 ブロ
グ・サービス・プロバイダー』の説明に従って、ブログ・プロバイダーを作成することができます。
注: サンプル・コードは『10.6 Office Supplies アプリケーション』からダウンロードできます。
186 of 247
10.5. ブログ・サービス・プロバイダー
『10.4 Office Supplies サービス・プロバイダー』の説明に従って Office Supplies サービス・プロ
バイダーを作成した後、次のステップに移ることができます。このサンプルでは、Web アプリケー
ションのデータ・ソースから取り出した選択済みのデータに基づいて、Lotus Connections ブロ
グ・エントリーを作成します。Lotus Connections のコンポーネント (ブログ、ブックマーク、およ
びプロフィール) との間でデータを取得および公開する場合の一連の例については、IBM Web
Experience Factory wiki の『IBM - Lotus Connections Integration Samples』を参照してください。
10.5.1
接続構成データ・モデル
このサンプルでは Import to XML Builder を使用します。Import to XML Builder は、Java プロパ
ティー・ファイルまたは XML ファイルの内容が含まれる変数をモデルに追加します。このモデル
によって、現在のユーザーに関するサーバー接続情報を入力できる server_info.properties ファイ
ルから、値を簡単に取り出すことができます。
接続構成データ・モデルを作成するには、以下の手順に従います。
1.
OfficeSupplies プロジェクトを右クリックして、「新規」 -> 「WebSphere Portlet Factory
モデル」を選択します。「プロジェクトの選択」ダイアログ・ボックスが開き、デフォルトで
「OfficeSupplies」に設定されます。「次へ (Next)」をクリックします。
2. 「モデルの選択」ダイアログ・ボックスの「Factory 開始モデル」で「空」を選択します。
「次へ (Next)」をクリックします。
3. models フォルダーを展開して、新規作成したモデルを配置するために redwiki フォルダーを
強調表示します。
4. 「名前」フィールドに ConnectionConfigData を入力して「完了 (Finish)」をクリックします。
5. ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
6. 「すべて」カテゴリーから「Import to XML」を選択します。
7. 「名前」として serverURLs を入力します。
8. 「ファイル・パス」として /models/redwiki/config/server_info.properties を入力します。
9. 「 フ ァ イル ・フ ォ ー マッ ト」 と し て 「 名 前 / 値の プロ パテ ィー ・フ ァイ ル (Name/Value
Properties File)」を選択します。
10. ビルダーの残りのパラメーターについては、デフォルトのままにします。
11. 終了して保存するため、「OK」をクリックします。
server_info.properties ファイルを作成する必要があります。このファイルは、サンプルの zip
ファイルから抽出するか、または下記のデータ例を使用して作成できます。
#############################################
#
# Default configuration for accessing Connections servers.
#
# Note - HTTPS is required for the URL
#
#############################################
#
# Blogs
Server Information
blogs_url=https://social.demos.ibm.com/blogs
blogs_default_handle=productblog
blogs_user_name=dmisawa
blogs_user_password=password
187 of 247
10.5.2
ブログ・サービス・プロバイダー・モデル
BlogsProvider は、REST スタイルの呼び出しを実行して、ブログ・データをサーバーに公開する
サービス・プロバイダー・モデルです。ブログの公開は、Atom Publishing API を使用して行われ
ます。REST Service Call Builder を使用して、リクエストを行ってサーバーに公開するためのラン
タイム・コードを生成し、このプロバイダー・モデル内の各操作について、設計時の入力および結
果 xsd スキーマ情報を生成します。
BlogsProvider モデルでは、プロパティー・ファイルから 4 つの変数を使用します。また、title と
content という 2 つのパラメーターを受け取ります。
サービス・プロバイダーを作成するには、以下の手順に従います。
1.
2.
3.
4.
OfficeSupplies プロジェクトを右クリックして、「新規」 -> 「WebSphere Portlet Factory
モデル」を選択します。「プロジェクトの選択」ダイアログ・ボックスが開き、デフォルトで
「OfficeSupplies」に設定されます。「次へ (Next)」をクリックします。
「モデルの選択」ダイアログ・ボックスの「Factory 開始モデル」で「空」を選択します。
「次へ (Next)」をクリックします。
models フォルダーを展開して、新規作成したモデルを配置するために redwiki フォルダーを
強調表示します。
「名前」フィールドに BlogsProvider を入力して「完了 (Finish)」をクリックします。
次に、ビルダーを BlogsProvider モデルに追加します。
10.5.3
ConnectionsConfigData モデルのインポート
ブログ・プロバイダーから接続構成データを読み取れるようにするには、ConnectionsConfigData
モデルをこの BlogsProvider モデルにインポートする必要があります。
ConnectionsConfigData モデルをインポートするには、以下の手順に従います。
1.
2.
3.
4.
5.
6.
10.5.4
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
「すべて」カテゴリーから「Imported Model」を選択します。
「名前」パラメーターに ConnectionsConfigData を入力します。
インポートするモデルを指定するため、ピッカーを使用して
「redwiki/ConnectionConfigData」を選択します。
ビルダーの残りのパラメーターについては、デフォルトのままにします。
「OK」をクリックして終了します。
blogsAccess サービス定義の作成
blogsAccess サービス定義を作成するには、以下の手順に従います。
1.
2.
3.
4.
5.
6.
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
「すべて」カテゴリーから「Service Definition」を選択します。
「サービス名」フィールドに blogsAccess を入力します。
「テスト・サポート」セクションを展開して、「テスト・サポートを追加」オプションと
「Main を生成」オプションを有効にします。
ビルダーの残りのパラメーターについては、デフォルトのままにします (下記の図を参照して
ください)。
「OK」をクリックして終了します。
188 of 247
下記の図は、blogsAccess サービス定義を示しています。
10.5.5
addEntry REST サービス呼び出しの作成
これは、IBM Connections API に対して REST 呼び出しを行う、サンプル・アプリケーションのコ
ア部分にあたります。
REST サービス呼び出しを作成するには、以下の手順に従います。
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
「すべて」カテゴリーから「REST Service Call」を選択します。
「名前」フィールドに addEntry を入力します。
「HTTP 要求タイプ」ラジオ・ボタンの選択肢から「POST」を選択します (下記の図を参照
してください)。
「URL」フィールドに、次のテキストを入力します。
${Variables/serverURLs/Configuration/blogs_url}/${Variables/serverURLs/Configurati
on/blogs_default_handle}/api/entries
このテキストは、よく注意して入力してください。完全な URL を表すため、ここには 2 つの
変数が含まれていて、リテラル・テキストがいくつかあります。
「本体コンテンツのデータ・タイプ」として createEntry/entry を入力します。
「本体コンテンツ・タイプ (body content-type)」フィールドから「application/atom+xml」を
選択します。
「ユーザー名」フィールドと「パスワード」フィールドで、ピッカーを使用して userName
変数と userPassword 変数をそれぞれ選択します (下記の図を参照してください)。
「結果を無視」オプションが選択されていることを確認します。
ビルダーの残りのパラメーターについては、デフォルトのままにします。
「OK」をクリックして終了します。
189 of 247
下記の図は、REST Service Call のプロパティーを示しています。
10.5.6
addEntryData メソッドの作成
addEntryData メソッドを作成するには、以下の手順に従います。
1.
2.
3.
4.
5.
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
「すべて」カテゴリーから「Method」を選択します。
「名前」フィールドに addEntryData と入力します。
引数の title と content を String として入力します (下記の図を参照してください)。
「メソッド本体」フィールドに、次のテキストを入力します。
{
// Build up the new XML
IXml entry = XmlUtil.create("entry");
entry.setAttribute("xmlns", "http://www.w3.org/2005/Atom");
entry.setText("title", title);
IXml contentElement = entry.addChildElement("content");
contentElement.setAttribute("type", "html");
// decode the content. When running in portal this is encoded for security
reasons.
// see for more information
http://publib.boulder.ibm.com/infocenter/wpdoc/v6r0/index.jsp?topic=/com.ibm.
wp.zos.doc/wps/tbl_sec.html
if(content != null)
{
content = content.replaceAll("&lt;", "<");
content = content.replaceAll("&gt;", ">");
}
contentElement.setText(content);
// Set the REST Service input
webAppAccess.getVariables().setXml("addEntryRestInputs", entry);
}
190 of 247
6.
7.
ビルダーの残りのパラメーターについては、デフォルトのままにします。
「OK」をクリックして終了します。
下記の図は、addEntryData Method Builder を示しています。
10.5.7
addNewEntry アクション・リストの作成
addNewEntry アクション・リストを作成するには、以下の手順に従います。
1.
2.
3.
4.
5.
6.
7.
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
「すべて」カテゴリーから「Action List」を選択します。
「名前」として addNewEntry と入力します。
下記の図に示すように、title と content の 2 つを「引数」に追加し、「データ型」を string と
して指定します。
「ピッカー (Picker)」ボタン
を使用して、下記の図に示すように 2 つの「アクション」を
追加します。
ビルダーの残りのパラメーターについては、デフォルトのままにします。
「OK」をクリックして終了します。
191 of 247
この図は、addNewEntry アクション・リストを示しています。
10.5.8
createBlogEntry サービス操作の作成
createBlogEntry サービス操作を作成するには、以下の手順に従います。
1.
2.
3.
4.
5.
6.
7.
8.
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
「すべて」カテゴリーから「Service Operation」を選択します。
「データ・サービス」選択リストから「blogAccess」を選択します。
名前のフィールドに createBlogEntry を入力します。
をクリックして、ピッカー・ダイアログ・ボックスから
「ピッカー (Picker)」ボタン
「addNewEntry」を選択します。
「操作結果」セクションを展開し、「結果構造処理」ラジオ・ボタンから「結果なし (No
results)」を選択します。
ビルダーの残りのパラメーターについては、デフォルトのままにします。
「OK」をクリックして終了します。
192 of 247
この図は、createBlogEntry サービス操作を示しています。
10.5.9 ブログ・サービス・プロバイダー・モデルのまと
め
要約すると、他の Web Experience Factory モデルまたは外部のアプリケーションから、プロバイ
ダーによって公開されたメソッドを取り込むことができるように、サービス・プロバイダーを作成
しました。このサンプルのコンシューマーは OfficeSupplies という別の Web Experience Factory
モデルです。これは、『10.6 Office Supplies アプリケーション』に説明があります。現在のところ、
ブログ・サービス・プロバイダーでは、ブログ・エントリー作成操作のみ提供します。このサービ
ス・プロバイダーは、ブログ・エントリーの取得、編集、削除や、ブログ・エントリーに対するコ
メントの取得、追加、編集など、他の操作に対応するよう拡張することが簡単にできます。こうし
た追加の操作について詳しくは、Web Experience Factory wiki のサンプル・アプリケーションを参
照してください。
ユーザーがブログ・エントリーを作成できるようにするには、REST スタイルの呼び出しを使用し
てブログ・データをサーバーに公開します。Web Experience Factory には、そのような呼び出しを
簡単に行えるようにする REST Service Call Builder が用意されています。REST API に関する詳細
な知識は不要です。次に、Service Operation Builder を使用して、サービス・コンシューマーから
使用可能なブログ・エントリーを作成する操作を提供します。createBlogEntry サービス操作は
addNewEntry アクション・リストを呼び出します。このアクション・リストは、REST Service
Call Builder によって生成されるデータ・サービスを使用して、REST 呼び出しを起動します。
完成したブログ・サービス・プロバイダー・モデルの概要は、以下のようになります。
193 of 247
10.5.10 ブログ・サービス・プロバイダー・モデルのテス
ト
OfficeSuppliesProvider をテストしたときと同じ方法で BlogsProvider モデルをテストできます。
1.
2.
3.
4.
BlogsProvider モデルを右クリックして、「実行 (Run As)」 --> 「アクティブなモデルの実
行」をクリックします。
createBlogEntry のリンクをクリックします。
簡単な「タイトル」と短い「コンテンツ (Contents)」のテキストを入力して、「サブミット」
をクリックします。
Connections ブログが表示されます。
予期した結果が表示されない場合は、次のようにします。




Web Experience Factory のデザイナーにある「問題 (Problems)」タブを確認します。
WebSphere Community Edition サーバーのログを確認します。
ブログ・アプリケーションをホストする IBM Connections サーバーのログを確認します。
REST Service Call Builder の URL 値をよく確認します。
194 of 247
次の手順
『10.6 Office Supplies アプリケーション』に説明のある、Office Supplies アプリケーションを作成
する次の手順に進むことができます。
注: サンプル・コードは『10.6 Office Supplies アプリケーション』からダウンロードできます。
10.6. Office Supplies アプリケーション
注: このトピックを続行する前に、『10.5 ブログ・サービス・プロバイダー』を完了する必要があ
ります。
サンプル・アプリケーションに必要な最後のモデルは OfficeSupplies モデルです。このモデルは、
ユーザー・インターフェース (UI) およびアプリケーション・ロジックを管理し、簡単に言うと、
OfficeSupplies カ タ ロ グ か ら デ ー タ を 読 み 取 っ て ブ ロ グ に 書 き 込 み ま す 。 下 記 の 図 は 、
OfficeSupplies モデルに必要なビルダーの概要を示しています。
10.6.1
OfficeSupplies モデルの作成
1.
OfficeSupplies プロジェクトを右クリックして、「新規」 -> 「WebSphere Portlet Factory
モデル」を選択します。
2.
「プロジェクトの選択」ダイアログ・ボックスが開き、デフォルトで「OfficeSupplies」に設
定されます。「次へ (Next)」をクリックします。
「モデルの選択」ダイアログ・ボックスの「Factory 開始モデル」で「空」を選択します。
「次へ (Next)」をクリックします。
models フォルダーを展開して、新規作成したモデルを配置するために redwiki フォルダーを
強調表示します。
「名前」フィールドに OfficeSupplies を入力します。
「完了 (Finish)」をクリックします。
3.
4.
5.
6.
次に、ビルダーを OfficeSupplies モデルに追加します。
195 of 247
10.6.2
ブログ・サービス・コンシューマーの作成
ブログ・サービス・コンシューマーを作成するには、以下の手順に従います。
1.
2.
3.
4.
5.
6.
7.
10.6.3
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
「すべて」カテゴリーから「Service Consumer」を選択します。
「名前」フィールドに blogsData を入力します。
「プロバイダー・モデル」フィールドのピッカー・ダイアログ・ボックスから
「redwiki/data/BlogsProvider」を選択します。
「入力を上書き」オプションを有効にします。
ビルダーの残りのパラメーターについては、デフォルトのままにします。
「OK」をクリックして終了します。
Office Supplies サービス・コンシューマーの作成
Office Supplies サービス・コンシューマーを作成するには、以下の手順に従います。
1.
2.
3.
4.
5.
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
「すべて」カテゴリーから「Service Consumer」を選択します。
「名前」フィールドに OfficeSuppliesData を入力します。
「プロバイダー・モデル」フィールドのピッカー・ダイアログ・ボックスから
「redwiki/data/OfficeSuppliesProvider」を選択します。
ビルダーの残りのパラメーターについては、デフォルトのままにします。
196 of 247
6.
「OK」をクリックして終了します。
10.6.4 View and Form Builder を追加して
OfficeSuppliesデータを表示
OfficeSuppliesデータを表示するには、以下の手順に従います。
注: このサンプルをゼロから構築している場合は、サンプル zip ファイルをダウンロードして 2 つ
の HTML ファイルを見つける必要があります。
1.
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
2. 「すべて」カテゴリーから「View and Form」を選択します。
3. 「名前」フィールドに OfficeSupplies を入力します。
4. 「 ビ ュ ー ・ デ ー タ 操 作 」 フ ィ ー ル ド の ピ ッ カ ー ・ ダ イ ア ロ グ ・ ボ ッ ク ス か ら
「DataServices/OfficeSuppliesData/getSupplies」を選択します。
5. 「テーマの使用」を選択解除します。
6. 「 ビ ュ ー ・ ペ ー ジ HTML 」 フ ィ ー ル ド の ピ ッ カ ー ・ ダ イ ア ロ グ ・ ボ ッ ク ス か ら
「/redwiki/pages/supplies_view_and_form_view.html」を選択します。
注: ゼロから構築している場合は、このファイルをインポートする必要があります (アプリ
ケーションでファイルを検出できる限り、ファイルをインポートする正確な場所は重要ではあ
りません)。
7. 「行詳細サポート」セクションを展開します。
8. 「詳細へのリンクを作成する」オプションを有効にします。
9. 「詳細リンク列」選択リストから「名前」を選択します。
10. 「詳細アクション・タイプ」選択リストから「選択した行から詳細データを直接取得する
(Get details data directly from the selected row)」オプションを選択します。
11. 「詳細ページ HTML」フィールドのピッカー・ダイアログ・ボックスから
「/redwiki/pages/supplies_detail_view_and_form_view.html」を選択します。
注: ゼロから構築している場合は、このファイルをインポートする必要があります。
197 of 247
(アプリケーションでファイルを検出できる限り、ファイルをインポートする正確な場所は重
要ではありません。)
12. ビルダー下部の「拡張」で、「Main を生成」オプションが選択されていることを確認します。
13. ビルダーの残りのパラメーターについては、デフォルトのままにします。
14. 終了して保存するため、「OK」をクリックします。
10.6.5
ヘッダー・ロゴをアプリケーションに追加
ヘッダー・ロゴをアプリケーションに追加するには、以下の手順に従います。
注: このサンプルをゼロから構築している場合は、サンプル zip ファイルをダウンロードしてこの
ロゴ・ファイルを見つける必要があります。
1.
2.
3.
4.
5.
6.
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
「すべて」カテゴリーから「Image」を選択します。
「名前」フィールドに HeaderLogo と入力します。
「位置指定の方法」ラジオ・ボタンの「名前付きタグ上」が選択されていることを確認します。
「ページ」ドロップダウン・リストから「OfficeSupplies_ViewPage」を選択します。
「タグ」から「header_logo」を選択します。
198 of 247
7.
8.
9.
10.6.6
「イメージ・ソース」ピッカー・ダイアログ・ボックスから「/redwiki/images/connections530x140.jpg」を選択します。
注: ゼロから構築している場合は、このイメージをインポートする必要があります (アプリ
ケーションでファイルを検出できる限り、ファイルをインポートする正確な場所は重要ではあ
りません)。
ビルダーの残りのパラメーターについては、デフォルトのままにします。
終了して保存するため、「OK」をクリックします。
サムネールをOfficeSuppliesの詳細に追加
サムネールをOfficeSuppliesの詳細に追加するには、以下の手順に従います。
1.
2.
3.
4.
5.
6.
7.
8.
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
「すべて」カテゴリーから「Image」を選択します。
「名前」フィールドに Thumbnail と入力します。
「位置指定の方法」ラジオ・ボタンの「名前付きタグ上」オプションが選択されていることを
確認します。
「ページ」選択リストから「OfficeSupplies_DetailPage」を選択します。
「タグ」から「img_button」を選択します。
「イメージ・ソース」ピッカー・ダイアログ・ボックスから
「${Variables/OfficeSupplies_SelectedRowData/office_supply/img_file}」を選択します。
この変数の先頭に /redwiki/images/ を付加し、計算された値が連結されるようにします。
ビルダーの残りのパラメーターについては、デフォルトのままにします。
199 of 247
9.
「OK」をクリックして終了します。
注: このサンプルをゼロから構築している場合は、サンプル zip ファイルをダウンロードして
サムネール・イメージを見つける必要があります。その後、イメージを適切なフォルダーに配
置します。例として、Windows Explorer セッションの下記の図をご覧ください。
10.6.7
正常終了を示すページの作成
正常終了を示すページを作成するには、以下の手順に従います。
1.
2.
3.
4.
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
「すべて」カテゴリーから「Page」を選択します。
「名前」フィールドに postSuccess と入力します。
「ページ・コンテンツ (HTML)」フィールドの内容を以下のテキストで置き換えます。
<html>
<body>
<form name="myForm" method="post">
<div align="center">
<span name="successText">You have successfully
posted this product as the featured product of the month to your
Blog</span>
</div>
</form>
</body>
</html>
5.
6.
ビルダーの残りのパラメーターについては、デフォルトのままにします。
「OK」をクリックして終了します。
200 of 247
10.6.8
setBlogContent メソッドの作成
setBlogContent メソッドを作成するには、以下の手順に従います。
1.
2.
3.
4.
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
「すべて」カテゴリーから「Method」を選択します。
「名前」フィールドに setBlogContent を入力します。
「メソッド本体」に、次のコードを入力します。
{
//Get the text values of the selected supplies String suppliesName =
webAppAccess.getVariables().getXmlText("OfficeSupplies_SelectedRow Data",
"office_supply/name");
String suppliesQty =
webAppAccess.getVariables().getXmlText("OfficeSupplies_SelectedRowData",
"office_supply/qty_instock");
String suppliesImgFile =
webAppAccess.getVariables().getXmlText("OfficeSupplies_SelectedRowData",
"office_supply/img_file");
String suppliesPrice =
webAppAccess.getVariables().getXmlText("OfficeSupplies_SelectedRowData",
"office_supply/price");
//Build the content
String strContent = "";
strContent += "*<br>";
strContent += "DISCLAIMER*<br>";
strContent += "* This blog entry is automatically generated by a sample
redwiki application, please ignore the content *<br>";
strContent += "*<br<br>";
strContent += "Please check on our
product of the month: <b" + suppliesName + "</b<br<br>";
strContent += "<img
src='http:localhost:8080/Lotus_Connections/images/" + suppliesImgFile + "'
name='header_logo'/<br>";
strContent += "Hurry while supplies last! We currently have " + suppliesQty +
" in stock. <br>";
strContent += "You can get a " + suppliesName + " for $" + suppliesPrice + "
each";
//Set the blog content input IXml blogInput =
webAppAccess.getVariables().getXml("blogsDataCreateBlogEntryInputs");
blogInput.setText("arguments/content", strContent);
}
5.
6.
ビルダーの残りのパラメーターについては、デフォルトのままにします。
「OK」をクリックして終了します。
201 of 247
10.6.9
postToBlog アクションの作成
postToBlog アクションを作成するには、以下の手順に従います。
1.
2.
3.
4.
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
「すべて」カテゴリーから「Action List」を選択します。
「名前」フィールドに postToBlog を入力します。
「戻りの型」は「Object」のままにします。
5.
をクリックして、「特殊
1 番目のアクションを追加します。「ピッカー (Picker)」ボタン
/割り当て (Special/Assignment)」を選択します。
をクリックし、「詳細を表示」を選択
「ターゲット」の下の「ピッカー (Picker)」ボタン
します。
「変数」の下の「blogsDataCreateBlogEntryInputs/arguments/title」を選択します。選択内容
を確定するには「OK」をクリックします。
「ソース」の下で「今月の目玉商品 (Featured product of the month)」を入力します。アク
ションを確定するには「OK」をクリックします。
6. 2 番目のアクションを追加します。「ピッカー (Picker)」ボタン
をクリックし、「メソッ
ド」の下の「setBlogContent」を選択します。
7. 3 番目のアクションを追加します。「ピッカー (Picker)」ボタン
をクリックし、「デー
タ・サービス (DataServices)」の下の「blogs/createBlogEntry」を選択します。
8. 4 番目のアクションを追加します。「ピッカー (Picker)」ボタン
をクリックし、「ページ
(Pages)」の下の「postSuccess」を選択します。
9. ビルダーの残りのパラメーターについては、デフォルトのままにします。
10. 「OK」をクリックして終了します。
10.6.10 postToBlog ボタンの追加
postToBlog ボタンを追加するには、以下の手順に従います。
1.
2.
3.
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
「すべて」カテゴリーから「Button」を選択します。
「名前」フィールドに postToBlog を入力します。
202 of 247
4.
「ページ」フィールドで、1 番目のドロップダウンを使用して「OfficeSupplies_DetailsPage」を
選択します。
5. 「タグ」フィールドで、2 番目のドロップダウンを使用して「blog_button」を選択します。
6. 「ラベル」フィールドに「ブログに投稿 (Post to My Blog)」を入力します。
7. 「アクション・タイプ」選択リストから「フォームを送信してアクションを呼び出す (Submit
form and invoke action)」を選択します。
8. ピッカー・ダイアログ・ボックスから「postToBlog」アクションを選択します。
9. ビルダーの残りのパラメーターについては、デフォルトのままにします。
10. 「OK」をクリックして終了します。
この図は、完了したモデルのビルダーを示しています。
203 of 247
10.6.11 まとめ
要約すると、Office Supplies Web アプリケーションは、すべてのものを 1 つにまとめます。Office
Supplies サービス・プロバイダーからデータを取り込み、ブログ・サービス・プロバイダーからブ
ログ投稿サービスも取り込みます。2 つの Service Consumer Builder を作成して両方のサービス・
プロバイダーから取り込んだのは、このためです。
ページのレイアウトをセットアップするには、View and Form Builder を使用します。View and
Form Builder を使用すると、コードを記述することなく、作成、読み取り、更新、削除 (CRUD) の
機能に簡単にアクセスできます。ダウンロード後にビルダーを調べて、『10.6 Office Supplies アプ
リケーション』の説明に従ってセットアップしてください。ビュー・ページ、入力ページ、行詳細、
および更新ページのセクションが表示されます。このサンプルでは、入力および更新の機能は使用
しません。
この View and Form Builder ではたくさんのことが行われます。それでは、詳しく見ていきましょ
う。
View and Form Builder の「拡張」セクションで、「Main を生成」オプションを有効にすることが
できます。このビルダーによって main が生成されるようにすることで、ユーザーは明示的に main
を作成する必要がなくなります。作成する場合は、Action List Builder を使用して main を作成でき
ます。一般に、View and Form Builder 生成の main ページを表示する以外に、実行する追加の操作
がある場合を除いて、ユーザーが main を作成することはありません。
Web Experience Factory では、すべてのモデルに main が必要です。これは、「実行 (Run)」メ
ニュー・オプション (または Ctrl+F11 ショートカット・メニュー) を使用して実行できるようにする
ためです。とはいうものの、いくつかのモデル (主としてサービス・プロバイダー・モデル) に
main がないことに気付いたことでしょう。これは、そのモデルを実行しようとしない限り、問題
ありません。実行すると、エラー・メッセージが表示されます。通常、このようなモデルは、独立
したアプリケーションとして実行されることを予定していないため、main を組み込まずにセット
アップされます (例えば、サービス・プロバイダー)。
では、View and Form Builder の説明に戻りましょう。ビルダーの横にある「WebApp ツリー」矢
印のリンクをクリックすると、アプリケーション・ツリーが開きます。いくつかのコンポーネント
が生成されるのが分かります。作成されるコンポーネントの 1 つが OfficeSupplies_ViewPage です。
これは、このアプリケーションの実行時に表示されるページです。さて、このページの外観はどの
ように制御するのでしょうか。
このページの外観をカスタマイズする場合は、ユーザー独自の HTML を作成し、View and Form
Builder の 「 ビ ュ ー ・ ペ ー ジ ・ オ プ シ ョ ン 」 セ ク シ ョ ン で ビ ュ ー ・ ペ ー ジ と し て
/redwiki/pages/supplies_view_and_form_view.html を指定します。
View and Form Builder の「行詳細サポート」セクションを見てみると、「詳細へのリンクを作成
する」オプションが有効になっていることが分かります。このオプションはマスター機能、または
「名前」列がクリック可能な詳細機能を作成し (「詳細リンク列」として「名前」を指定)、選択し
た行の詳細データを開きます。また、詳細ページの外観をカスタマイズするため、カスタム HTML
を作成して「詳細ページ HTML」を「/redwiki/pages/supplies_detail_view_and_form_view.html」に
設定しています。Image Builder を使用して詳細ページにサムネールを追加しました。これは詳細
ペ ー ジ に 表 示 さ れ ま す (View and Form Builder に よ り 、 詳 細 ペ ー ジ と し て
OfficeSupplies_DetailsPage というページが生成されます)。
次に、ユーザーがブログ・エントリーに現行情報を追加できるようにするためのボタンを詳細ペー
ジに追加しました。これは postToBlog アクション・リストというボタンで、ブログ・サービス・
プロバイダー操作を呼び出し (Lotus Connections ブログ・サービスに接続します)、新規エント
リーを作成します。setBlogContent メソッドは、コンテンツをブログ・サービスに送信する前に
フォーマット設定するアシスタント・メソッドです。
204 of 247
最後に、ユーザーが選択したOfficeSuppliesデータの内容をブログ・エントリーに正しく投稿でき
たという、正常終了を示すページを表示しました。
次の手順
IBM Connections と統合する Web アプリケーションを作成しました。Office Supplies ポートレッ
トを作成して IBM WebSphere Portal Server にデプロイする場合は、『10.7 ポータル・サーバーへ
のデプロイ』に進みます。
注: サンプル・コードは『10.6 Office Supplies アプリケーション』からダウンロードできます。
10.7. ポータル・サーバーへのデプロイ
このセクションのここまでのトピックで、Web アプリケーションを作成しました。IBM Web
Experience Factory の使用経験がないユーザーはこれから、Web Experience Factory により、1 回
の作成で複数のサーバーにデプロイできることを学びます。すべてを 1 つのコード・ベースから行
えます。Web Experience Factory 7.0.1 から WebSphere Application Server、WebSphere Portal
Server、およびリッチ・クライアント・プラットフォームにデプロイすることができます。
このトピックでは、アプリケーションをポータル・サーバーにデプロイできるようにする方法を示
します。以下の手順に従って、Portlet Adapter Builder を追加する必要があります。
10.7.1 Portlet Adapter Builder の追加
Portlet Adapter が OfficeSupplies.model に追加されます。Portlet Adapter Builder を追加するには、
以下の手順に従います。
1.
2.
3.
4.
5.
ビルダー呼び出しリストから「新しいビルダー呼び出しを追加 (Add a new builder call)」を
クリックします。
「ポータル統合」カテゴリーから「Portlet Adapter」を選択します。
「名前」フィールドと「ポートレットのタイトル」フィールドに OfficeSupplies を入力します。
ビルダーの残りのパラメーターについては、デフォルトのままにします。
「OK」をクリックして終了します。
この図は、Portlet Adapter Builder を示しています。
205 of 247
10.7.2
ポートレットのテスト
ポートレットを公開してテストするには、以下の手順に従います。
1.
2.
OfficeSupplies プロジェクトを右クリックして「公開」をクリックします。
ポータル・サーバーに公開するためには、ここでサーバー構成を作成する必要があります。
3.
リストから「IBM WebSphere Application Server」と「Portal Server 7.x」を選択して、
「OK」をクリックします。
ご使用のポータル・サーバーのホスト、ポート、ユーザー名、およびパスワードを入力して、
「テスト接続」をクリックします。
4.
5.
「OK」をクリックします。再度「OK」をクリックして公開します。
(サーバーのパフォーマンスおよびネットワークの速度によっては、公開されるまでにしばら
くかかることがあります。)
206 of 247
6.
公 開 後 に 、 「 リ モ ー ト ・ ア プ リ ケ ー シ ョ ン 同 期 方 法 の 選 択 (Select Remote Application
Sychronization Method)」の「同期モード」で「HTTP」を選択し、「OK」をクリックします。
7.
管理者としてポータル・サーバーにログインし、新規ページを作成して、そのページに Office
Supplies ポートレットを追加します。ポートレットは、WAS CE サーバー上で実行されたよ
うに実行されます。
この簡単なサンプルでは、ブログ URL と他の構成データは、引き続き ConnectionsConfigData モ
デル内のプロパティー・ファイルから読み取られています。ポートレットに対するソリューション
としては、そのポートレットの構成パラメーターまたはポートレットの設定を使用する方が優れて
います。IBM Web Experience Factory の資料には、プロファイル・セットを使用してポートレット
のパラメーターおよび設定を管理する方法についての説明があります。
サンプル・コードをダウンロードする方法、およびご使用の環境にそのコードをインストールする
方法について詳しくは、『10.6 Office Supplies アプリケーション』を参照してください。
207 of 247
10.8. Office Supplies アプリケーションのサンプル・コード
このトピックには、Office Supplies サンプル・コードと、サンプルのインストールの説明がありま
す。Office Supplies サンプル・コードは IBM Web Experience Factory 7.0.1 用に記述されています。
また、このコードは、Web Experience Factory または IBM WebSphere Portal 7.0 に付属してプリ
インストールされる IBM WebSphere Application Server Community Edition (WAS CE) 上で実行す
るように構成されます。
サンプルを実行するには、以下の作業を実行する必要があります。





10.8.1
1.
2.
3.
4.
サンプル・アプリケーションのインポート。
高速妥当性検査。
構成変数の編集。
IBM Connections サーバーから SSL 証明書をインポート。
サンプルの実行。
サンプル・アプリケーションのインポート
ポータル・サーバーに接続することを予定していない場合は、OfficeSupplies.zip をダウン
ロードします。
接続を予定している場合は、OfficeSuppliesPortlet.zip をダウンロードします。これらの zip
ファイルはどちらもこの解説に添付されています。
WebSphere Portlet Factory プロジェクトを作成します (ポータルがない環境で実行する場合は、
『10.3 Office Supplies IBM Web Experience Factory プロジェクト』を参照してください。
ポータル・サーバー構成については、『10.7 ポータル・サーバーへのデプロイ』を参照してく
ださい)。
プロジェクトを右クリックしてコンテキスト・メニューから、「インポート (Import)」 ->
「WebSphere Portlet Factory アーカイブ」を選択します (下記の図を参照してください)。
「完了 (Finish)」をクリックします。
これでサンプルがインポートされました。
208 of 247
10.8.2
高速検証
これは、IBM Connections にリンクしていない、サンプルの一部分を対象とした高速な検査です。
IBM Web Experience Factory と WAS CE が機能していることを証明します。
1.
2.
3.
「プロジェクト・エクスプローラー (Project Explorer)」で「OfficeSupplies」プロジェクトを
展開し、「OfficeSuppliesProvider.model」にナビゲートします。
「OfficeSuppliesProvider.model」を右クリックして、「実行 (Run As)」 --> 「アクティブ
なモデルの実行」をクリックします。
結果は下記のように表示されます。getSupplies リンクをクリックします。
下記の結果が表示される場合、Web Experience Factory と WebSphere Community Edition は
正しく実行されています。
209 of 247
10.8.3
構成変数の編集
ご使用の IBM Connections サーバーとブログにリンクするように、サンプルを構成する必要があり
ます。
1.
「プロジェクト・エクスプローラー」で「OfficeSupplies」プロジェクトを展開し、
「Office Supplies」 --> 「モデル (Models)」 --> 「ConnectionConfigData.model」 -->
「server_info.properties」にナビゲートします。
2.
「server_info.properties」を右クリックして「開く」をクリックします。
表示された変数を、ご使用の環境が反映されるように変更します。URL の先頭には https:// を
使用しなければならないことに注意してください。
3.
プロパティー・ファイルを保存します。
10.8.4 IBM Connections サーバーから SSL 証明書をイン
ポート
ブログ API では、データの送信 (POST) に HTTPS プロトコルを使用しなければなりません (この
サンプルではパスワードが送信されるため、HTTPS は効果的です)。
このサンプルは、Windows 上で WAS CE サーバーを実行する環境を想定しています。
1.
Windows の 「 ス タ ー ト 」 メ ニ ュ ー -> 「 IBM WebSphere 」 -> 「 Application Server
Community Edition」 -> 「サーバーの停止 (Stop the server)」をクリックして、WAS CE
サーバーを停止します。
プロンプトが出されたら、サーバーのユーザー名とパスワードを入力します
(デフォルトのユーザー名は「system」、パスワードは「manager」です)。
210 of 247
2.
3.
4.
5.
6.
10.8.5
IBM Connections WAS サーバーの「フロントにある」HTTP サーバーから SSL 証明書を抽出
します。
HTTP サーバーを使用していない場合は、SSL 証明書を IBM Connections が実行されている
WAS から直接抽出します。
この例では、抽出したファイルの名前は social_cert.arm になります。
この証明書ファイルを次のディレクトリーにコピーします。
C:¥IBM¥Portlet Factory¥WASCE¥jre¥lib¥security
コマンド・プロンプト・ウィンドウを開き、ディレクトリーを同じ security フォルダーに変更
します。
cd C:¥IBM¥Portlet Factory¥WASCE¥jre¥lib¥security
次のコマンドを実行して、証明書を信頼します。
"C:¥IBM¥Portlet Factory¥WASCE¥jre¥bin¥keytool" -import -trustcacerts -alias social - keystore
cacerts -file social_cert.arm
(鍵ストアのデフォルトのパスワードは「changeit」です。)
WAS CE サーバーを始動します。
サンプルの実行
これは、IBM Connections にリンクしていない、サンプルの一部分を対象とした高速な検査です。
Web Experience Factory と WebSphere Community Edition が機能していることを証明します。
1.
2.
3.
WAS CE を始動します。
「 プ ロ ジ ェ ク ト ・ エ ク ス プ ロ ー ラ ー 」 で 「 OfficeSupplies 」 プ ロ ジ ェ ク ト を 展 開 し 、
「OfficeSupplies.model」にナビゲートします。
「OfficeSuppliesProvider.model」を右クリックして、「実行 (Run As)」 --> 「アクティブ
なモデルの実行」をクリックします。
『10.0 IBM Web Experience Factory』に示すような結果が表示されます。
211 of 247
第 11 章 IBM Mashup Center
IBM Mashup Center は、エンドツーエンドのエンタープライズ・マッシュアップ・プラットフォー
ムです。管理、セキュリティー、およびガバナンスという IT に必要な機能を備え、動的な Web ア
プリケーションを迅速に組み立てることができます。IBM Mashup Center は、アプリケーションの
再使用可能なビルディング・ブロック (ウィジェット、フィード、マッシュアップ) をすばやく作成、
共有、検出できるエンドツーエンドのマッシュアップ・プラットフォームです。ビルディング・ブ
ロックは新規アプリケーションへの組み込みや、既存アプリケーション内での活用が簡単に行える
ため、結果として、開発コストを低く抑えながら、投資収益率 (ROI) は向上し、動的アプリケー
ションの配信が迅速化して、生産性が向上します。Lotus Widget Factory は、IBM Mashup Center
で実行されるカスタム・ウィジェットを作成するための開発環境です。
この章では、IBM Connections に基づいて動的な Web アプリケーションを作成するため、Lotus
Widget Factory と IBM Mashup Center で、どのように IBM Connections REST API を活用できる
かを示します。Lotus Widget Factory は、IBM Connections API を利用して IBM Connections の
データを表示または操作する iWidget の作成に使用できます。IBM Mashup Center では、作成した
iWidget をホストおよび表示することができます。IBM Mashup Center は、IBM Connections REST
API を変換および再構成して、IBM Connections のデータを視覚化することができます。
11.1. Lotus Widget Factory の使用
Lotus Widget Factory は簡単に使用できる統合開発環境で、動的な iWidgets をコーディングせずに
開発できます。どんなレベルのスキルを持つ開発者でも、Lotus Widget Factory を使用して、ウィ
ジェットを迅速に開発できます。また、Lotus Widget Factory では、ウィジェットを IBM Mashup
Center に対してシームレスにデプロイすることができます。Lotus Widget Factory には、簡単に
ウィジェット作成を行うためのウィザードが用意されています。ウィジェットのカスタマイズ、
ウィジェットのイベント処理、既存アプリケーションとデータ・ソースの再使用に関するサポート
が組み込まれています。Lotus Widget Factory では、REST サービスや Web サービス、または動的
なウィジェットを作成するための他の形式を介してデータを公開している、既存のデータ・ソース
を使用できます。
212 of 247
次の図は、Lotus Widget Factory のレイアウトを示しています。
11.1.1
Lotus Widget Factory の用語
Lotus Widget Factory の説明でよく使用される用語を以下に示します。
ビルダー
Web アプリケーション成果物を生成する再使用可能なコンポーネント。呼び出し元のコン
テキストに基づく Java および JSP コードを含むが、これに限定されません。ビルダーを使
用して、JSP ページへのボタンのように簡単な機能を追加したり、フォームのすべての
フィールドを XML 変数にリンクしたり、Web サービスの作成または取り込みを行ったりし
ます。より複雑なビルダーでは、フォームとコントロールを備えた複数のページを Web ア
プリケーションに追加することもあります。ビルダーは動的にコードを記述できる仮想プロ
グラマーであると考えてください。ビルダーでは、さまざまな状態で、または各種プロ
フィールに基づいて、異なるコードを記述できます。
デプロイ
Lotus Widget Factory において「デプロイ」は、アプリケーションの WAR ファイルを作成
して、エンド・ユーザーが実行できるように WAR をターゲット・サーバーにインストール
することを表します。
デザイナー
ビルダーをアプリケーションおよびウィジェットとして組み立てるために使用される Lotus
Widget Factory 開発環境。Lotus Widget Factory デザイナーは、Eclipse および IBM Rational
開発環境の IDE に接続されます。
フィード
マッシュアップ、ポータル・ベースの複合アプリケーションなど、Web サイトで頻繁に更
新されるコンテンツを Web ベースのコンシューマーに配布できるデータ・フォーマット。
Lotus Widget Factory では、フィードからのコンテンツを表示するウィジェットを作成でき
ます。フィードは、Atom Syndication Format および Really Simple Syndication (RSS) を含
む、さまざまなフォーマットで構成できます。フィードについて詳しくは、
http://en.wikipedia.org/wiki/Web_feed を参照してください。
213 of 247
マッシュアップ
複数のデータ・ソースの情報を混ぜ合わせて (マッシュして) 統合された新しいユーザー・
エクスペリエンスにする、軽量な Web アプリケーション。マッシュアップでは、通常、新
しいデータ・ソースを作成するため、または単一のグラフィカル・インターフェースでデー
タを表示する新規アプリケーションを作成するために、データをマッシュします。一般的に
ビジネスの環境では、特定の状態や問題に対処するために、マッシュアップによってウィ
ジェットのアセンブリーからの企業データと Web ベース・データを 1 つの動的なアプリ
ケーションに結合します。ウィジェット側では、マッシュが発生する前に、互いを認識する
必要はありません。
モデル
一連のビルダーの呼び出しを保持するコンテナー。結果として、アプリケーションの動作、
構造、データ、および表示を表現するアプリケーション・コンポーネントが生成されます。
モデルは、一連のビルダーの呼び出しを格納する XML ファイルです。
プロジェクト
Eclipse ベースの IDE である Lotus Widget Factory デザイナーにおける、リソースの最上位
の組織。1 つのプロジェクトには複数のファイルとフォルダーが格納されます。プロジェク
トは、リソースの作成、バージョン管理、共有、および編成に使用されます。プロジェクト
には、セッション・プロパティーと永続プロパティー、環境変数の設定、および他のプロ
ジェクトへの参照を含めることができます。
公開
Lotus Widget Factory で 公開 アクションを使用すると、Lotus Mashups ツールボックス
(Lotus Mashups Toolbox) でウィジェットを認識して、マッシュアップ・ページの構成時に
ウィジェットを使用できるようにします。
WAR ファイル
Web アーカイブ (WAR) ファイルは、パッケージ化された Web アプリケーションで、Web
プロジェクト内で作成されたリソースをテスト、デプロイ、および公開するためにエクス
ポートできます。
ウィジェット
Web ページや、リッチ・クライアント内の組み込みブラウザーに簡単に配置できる、小さな
ポータブル・アプリケーションまたは動的コンテンツの一部分。ウィジェットは、任意の言
語 (Java、.NET、PHP、その他多数) で記述するか、シンプルな HTML フラグメントにする
ことができます。イベントを受け渡すウィジェットをワイヤリングして、マッシュアップを
作成することができます。ウィジェットは、ベンダーによって異なる名前 (例えば、ガ
ジェット、ブロック、フレーク) で呼ばれています。
ウィジェットは、Lotus Widget Factory、Eclipse、IBM WebSphere sMash、またはメモ帳など、さ
まざまなツールを使用して作成できます。ウィジェットの作成およびデプロイ・プロセスを簡素化
するため、Lotus Widget Factory が IBM Mashups に組み込まれています。Lotus Widget Factory は、
Eclipse ベースで迅速にウィジェットを作成するための環境です。
11.2. Lotus Widget Factory でのプロジェクトの作成
以下の例では、Lotus Widget Factory を使用して IBM Connections API に基づいてウィジェットを
作成する方法について説明します。
1 つの Lotus Widget Factory に複数のウィジェットを格納できます。プロジェクトには、作成する
ウィジェットを実装するモデルが含まれます。以下の手順に従って、新規プロジェクト HelloWorld
を作成します。
1.
2.
3.
Lotus Widget Factory Designer を開きます。これは、モデルの編集およびウィジェットの開発
を行うブラウザー・ベースのグラフィカル・ツールです。このツールを開くには、「スター
ト」 -> 「プログラム」 -> 「IBM Lotus Widget Factory」に移動します。Lotus Widget
Factory のユーザー・インターフェースが表示されます。
「ファイル (File)」メニューから、「ファイル (File)」 -> 「新規 (New)」 -> 「Lotus Widget
Factory プロジェクト (Lotus Widget Factory Project)」を選択します。新規プロジェクト・
ウィザードが開きます。
プロジェクト名 HelloWorld を入力します。
214 of 247
4.
5.
「完了 (Finish)」をクリックします。このシナリオのプロジェクトの作成では、デフォルトを
受け入れます。これで、Lotus Widget Factory プロジェクトが作成されました。
新規プロジェクト・ウィザードによって、プロジェクトを自動的にデプロイするための許可を
求めるプロンプトが出されます。Lotus Mashups サーバーがインストール済みで実行されてい
る場合は、「はい」をクリックします。この時点でプロジェクトをデプロイするということは、
新規ウィジェットの作成など、現在のプロジェクトに加えたすべての変更が自動的に保存され
ることを意味します。プロジェクトがユーザー・インターフェースの「プロジェクト・エクス
プローラー」ペインに表示されます。
次の図は、Lotus Widget Factory で作成された HelloWorld プロジェクトを示しています。
Lotus Widget Factory プロジェクトは、以下のコンポーネントで構成されます。






デプロイメント記述子 (Deployment Descriptor): これは、デプロイメント情報、MIME タイ
プ、セッション構成の詳細、および Web アプリケーションの他の設定が含まれる XML ファイ
ルです。Web デプロイメント記述子ファイル (web.xml) は、J2EE 環境での開発、組み立て、
およびデプロイで共有される WAR ファイルに関する情報を提供します。
Java リソースのソース (Java Resources Soruce): Java ランタイム環境のすべてのライブラ
リーが含まれます。
通常、このフォルダーの内容は変更する必要がありません。
モデル (Model): プロジェクト内のすべてのモデルが含まれます。「モデル (Model」ディレク
トリーは、WebContent フォルダーに含まれる「モデル (Model)」ディレクトリーへのリンクで
す。どちらのディレクトリーも使用できます。
プロフィール (Profile): プロフィールとプロフィール・エントリーが含まれる、すべてのプロ
フィール・セットを保管します。「モデル (models)」ディレクトリーと同様に、「プロフィー
ル (profiles)」ディレクトリーは WebContent フ ォルダー の下に 含まれ る「プ ロフィ ー ル
(profiles)」ディレクトリーへのリンクです。どちらのディレクトリーも使用できます。
ウィジェット・モデル (Widget Model): このウィジェット・プロジェクトでウィジェットが有
効なすべてのモデル (サンプルと作成したモデルの両方) が含まれます。
WebContent: WEB_INF フォルダーのコンテンツを除く、クライアントに対して直接サービス
提供が可能なすべての成果物が含まれます。
215 of 247
11.2.1
プロジェクトでのモデルの作成
Lotus Widget Factory モデルは、開発者がウィジェットの作成に使用する基本のオブジェクトです。
Lotus Widget Factory の他のコンポーネントは、プロジェクトの作成後に、自動的に作成されます。
モデルとは、次の説明のすべてに該当します。



指定された入力によるビルダー呼び出しのリストが含まれた XML ファイル。
Web アプリケーションの青写真。
ウィジェット・アプリケーションの生成方法を示す一連の命令。
さまざまなモデルを作成できるように、Lotus Widget Factory には複数のウィザードが用意されて
います。REST ウィジェット・ウィザードは、基本の REST ベースのコンシューマー・アプリケー
ションを実行するために必要なすべてのビルダーをモデルに取り込みます。このウィザードは、自
己文書化を行い、簡単に使用できるように設計されています。
ウィザードに表示される選択項目は、プロジェクトに追加する機能セットによって異なります。表
示されるウィザード・ステップの進行は、作成することを選択したモデルのタイプによって異なり
ます。モデルを作成するときは、結果として、1 組のビルダー呼び出しが Widget Factory の「アウ
トライン (Outline)」ペインに表示されます。ビルダーの変更、またはビルダーへの追加はいつでも
行えます。モデルを保存すると、ビルダー呼び出しの XML 表現が、プロジェクト内の「モデル
(models)」フォルダーのファイルに保存されます。
以下の手順で、IBM Connections の REST API を使用して公開ブックマークを表示するモデルの作
成方法を示します。
1.
2.
3.
4.
アクティブなプロジェクトを右クリックして、「新規」 -> 「Lotus Widget Factory モデル」
に進みます。モデル・ウィザードが表示されます。
新しいモデルを含めるプロジェクトを選択します。この場合は「HelloWorld」を選択します。
作成するモデルのタイプを選択します。この場合は、「REST ベースのビューとフォーム
(REST based view & Form)」を選択して、「このモデルをウィジェットとしてデプロイする
(deploy this model as widget)」にチェック・マークを付けます。
ウィジェットにタイトルを付け、ウィジェット・カテゴリーの 1 つを選択します。ウィジェッ
ト・カテゴリーは、Mashup Center に関連しています。カテゴリーによって、ウィジェットが
Mashup Center に表示される場所が決まります。
216 of 247
5.
「REST 呼び出し情報 (REST Call Information)」パネルで、REST API URL を指定し、必要に
応じてユーザー名とパスワードを指定します。「URL からパラメーターを抽出 (Extract
parameters from the URL)」をクリックします。
6. 「サンプル・データ (Sample Data)」パネルは空白のままにします。上の手順で
入力した URL がパラメーター化されたため、スキーマの作成元サンプル・デー
タを取得するための設計時の呼び出しとしてその URL が適さない場合は、結果
のスキーマを生成するためにサンプル・データの URL を入力する必要がありま
す。
217 of 247
7.
表示する REST API のエレメントを選択します。この例では「エントリー (entries)」を選択
します。「次へ (Next)」をクリックします。
8.
ページ送りを使用して結果を表示する場合は、「データ表示をページ送りする (Page data
display)」を選択します。
9. 「列の管理 (Manage column)」パネルで、短縮、列の順序、列見出しなど、REST API に
よって生成された列を管理できます。
10. 「詳細へのリンクを作成する (Create Link to Details)」は選択しないでください。これは、
ユーザーがウィジェットに表示されたエレメント名をクリックしたときに、詳細ページを表示
する場合に選択する必要があります。
218 of 247
11. モデルの名前を指定して、プロジェクト内の場所を選択します。「完了 (Finish)」をクリッ
クします。
219 of 247
12. 次の図のような画面が表示されます。
13. プロジェクトを右クリックして「公開 (Publish)」をクリックし、モデルを公開します。ロー
カル・サーバーが実行されていない場合は、選択して実行します。
14. 「実行 (Run)」 -> 「実行 (Run As)」 -> 「アクティブなモデルの実行」を選択します。ブラウ
ザーに以下の出力が表示され、「ブックマーク」に関する情報が示されます。
220 of 247
Lotus Widget Factory について詳しくは、『Lotus Widget Factory Wiki』にアクセスしてください。
11.3. IBM Mashup カタログによる IBM Connections API
の変換
IBM Mashup Center カタログを使用して、新しく変更されたフィードを提供するために IBM
Connections API を変換および再構成することができます。これらのフィードは、IBM Mashup
Center のデプロイ可能なウィジェットで使用することができます。また、この変換済みのフィード
は 、 IBM Mashup Center に 用 意 さ れ た 、 す ぐ に 使 用 可 能 な ウ ィ ジ ェ ッ ト を 使 用 し て IBM
Connections のデータを視覚化するためにも使用できます。例えば、IBM Connections プロフィー
ル検索 API を検索エンジンのフィードと混合して新しいフィードを生成できます。新しいフィード
には、IBM Connections とその検索エンジンの両方の検索結果が含まれることになります。別の例
として、IBM Connections のプロフィール検索用 REST API を、email エレメントのみが含まれる
ように変更できます。Title や Status などの他のエレメントは IBM Mashup Center カタログによっ
て破棄できます。
以下の例では、IBM Connections プロフィール検索 API を email 以外のすべてのエレメントを破棄
するように変更し、新し く変 換 され たフィ ー ドを IBM Mashup Center のすぐに使用可能な
「フィード・リーダー」ウィジェットで表示できるようにする方法について説明します。
221 of 247
1.
2.
IBM Mashup Center のカタログを新しいページで開きます。
「作成 (Create)」、「新規データ・マッシュアップ」の順にクリックします。
3.
「データ・マッシュアップ」ページで、「ソース」演算子をドラッグ・アンド・ドロップし、
ダブルクリックしてそのプロパティーを開きます。1 つ以上の IBM Connections REST API を
操作するために、ユース・ケースに従って使用できる演算子が複数あることに注意してくださ
い。
「URL」フィールドに http:///profiles/atom/search.do?name=ted と入力します。
4.
222 of 247
5.
「プレビュー」タブで、ロードされたフィード・データ構造を確認することができます。
6.
「抽出」演算子をドラッグ・アンド・ドロップして、「ソース」演算子のワイヤーを「抽出」
演算子にリンクします。
223 of 247
7.
「プロパティー」タブの「抽出」演算子をダブルクリックします。「抽出エレメント」をク
リックして、contributor エレメントの下にある email エレメントを選択します。
8.
「抽出」演算子から「公開」演算子まで、ワイヤーをリンクします。
224 of 247
9.
「公開」演算子をダブルクリックして、そのプロパティーを変更します。ここで、公開する
フィードのタイプを選択できます。例えば、RSS、XML、ATOM、および JSON があります。
10. 「プレビュー」タブで、フィルターに掛けられた「email」エレメントのみが表示され、残り
のエレメントが破棄されたことを確認できます。
225 of 247
11. 「保存」をクリックして 新しく作成されたフィードを保存し、フィードのタイトルとバー
ジョンを指定します。
12. カタログのホーム・ページを最新表示すると、新しく作成したフィードがカタログに表示され
ます。このフィードは、変更された情報を取得して表示するために、「フィード・リーダー」
などの他のウィジェットで使用することができます。
226 of 247
第 12 章 Microsoft Outlook Connector
Microsoft Outlook Social Connector (OSC) を使用して、LinkedIn、Facebook、IBM Connections な
どのさまざまなソーシャル・サービスからソーシャル・データを取得することができます。この
データは、「人物情報ウィンドウ (People Pane)」の OSC 管理対象の連絡先およびアクティビ
ティー・エントリーを通じて Outlook で確認できます。任意のフォルダーで E メール・メッセージ
を選択すると、ソーシャル・ネットワークにおける送信者のすべてのアクティビティーと、これま
での E メールでのやり取りが表示されます。
デフォルトで OSC プロバイダーは、プロフィールのネットワーク・メンバーとそのアクティビ
ティーをすべて取得し、キャッシュに入れます。また、現在接続していない他の IBM Connections
メンバーについてアクティビティーを取得するように OSC を構成することもできます。「プロ
フィールのネットワーク (Profiles Network)」に登録されていない IBM Connections メンバーのア
ク テ ィ ビ テ ィ ー は 、 動 的 フ ィ ー ド を 介 し て 取 り 出 す こ と が で き ま す 。 そ の た め に は 、 IBM
Connections サーバー側で追加のデータ・フィールドを認識する必要があります。このフィールド
は、適切なユーザーのニュース・ストリームを IBM Connections 内で検索するために使用され、
MD5 または SHA1 ハッシュ関数によってハッシュ化されたユーザーの E メールが必要です。
12.1. OSC 動的フィードのプロフィールへのカスタム属性
の追加とデータの取り込み
このセクションでは以下の内容について説明します。



12.1.1
ハッシュ化された E メールをプロフィール・サービスに保管するために、拡張属性を構成する
方法。
Tivoli Directory Integrator を使用してこの属性にデータを取り込む方法。
この属性が REST API によって動作することを確認するテスト。
カスタム属性の追加
新規属性の名前を hashEmail とします。この属性は、プロフィール API を介してアクセスできる
がユーザーによる変更はできないようにするため、この属性を追加するプロセスは、『 5.1 属性
フィールドをプロフィールに追加 』の説明とは少し異なります。
227 of 247
属性を構成する基本的な手順は、以下のとおりです。
1.
2.
3.
4.
プロフィール構成ファイルをチェックアウトします。
新規属性を <simpleAttribute> として <profileExtensionAttributes> エレメントに追加し、この
新規拡張属性が編集可能であることを示すために <apiModel> エレメントに追加します。
プロフィール構成ファイルをチェックインします。
プロフィール・アプリケーションを再始動します。
注: このプロセスの説明は、以下の資料にあります。
http://www-10.lotus.com/ldd/lcwiki.nsf/dx/Configuring_the_Profiles_server_to_support_feeds_ic301
手順
1.
プロフィール構成ファイルをチェックアウトします。
このプロセスの説明は、この資料のセクション『5.1 属性フィールドをプロフィールに追加
の説明とは少し異なります。
ご使用の環境に対して以下のコマンドを使用するだけで済みます。
』
cd e:¥IBM¥WebSphere¥AppServer¥profiles¥Dmgr01¥bin wsadmin.bat -lang
jython -user wasmgr -password d3moL0tus execfile("profilesAdmin.py")
ProfilesConfigService.checkOutConfig("f:/tmp",AdminControl.getCell())
後でファイルをチェックインするために、wsadmin セッションは開いたままにしておいてく
ださい。
2.
新規属性を <profileExtensionAttributes> エレメントに追加して、この新規拡張属性が API
から編集可能であることを示します。
a. profiles-config.xml をチェックアウトした場所を見つけて (この例では f:/tmp)、ファイ
ルをテキスト・エディターで開きます。
b. <profileExtensionAttributes> エレメントを見つけます。
<simpleAttribute extensionId="hashEmail" length="40"/>
c.
終了タグ </profileExtensionAttributes> の直前に新規行を追加します。
228 of 247
例:
<profileExtensionAttributes>
<!-This extension attribute is
-->
<xmlFileAttribute
required by the 'MyLinks' profile widget
extensionId="profileLinks" schemaFile="profile-links.xsd"
indexBindingExpr="/linkroll/link/@name |
/linkroll/link/@url">
<indexFields>
<indexField fieldName="linkName"
fieldExpr="/linkroll/link/@name" />
</indexFields>
</xmlFileAttribute>
<simpleAttribute extensionId="hashEmail" length="40"/>
</profileExtensionAttributes>
d.
<apiModel> エレメントを見つけます。
<editableApiExtensionAttribute extensionIdRef="hashEmail"/>
e.
終了 </apiModel> の直前に新規行を追加します。
例:
<apiConfiguration>
<apiModel profileType="default">
<editableApiAttribute>jobResp</editableApiAttribute>
[...]
<editableApiAttribute>timezone</editableApiAttribute>
<editableApiExtensionAttribute extensionIdRef="hashEmail"/>
</apiModel>
</apiConfiguration>
3.
プロフィール構成ファイルをチェックインします。
手順 1 で使用したものと同じ wsadmin セッションで、以下を実行します。
ProfilesConfigService.checkInConfig()
4.
WebSphere Application Server Integrated Solutions Console でエンタープライズ・アプリケー
ションとしてプロフィールを再始動します。コンソールには、例えば、
http://connectionsbw.demos.ibm.com:9060/ibm/console からアクセスできます。
これで属性にデータを取り込む準備ができました。
229 of 247
12.1.2 Tivoli Directory Integrator によるカスタム属性へ
のデータの取り込み
プロフィール・データベースのカスタム属性にデータを取り込むには、少なくとも 2 つの方法があ
ります。


プロフィール管理 API を使用する方法。この API の説明は、http://www10.lotus.com/ldd/lcwiki.nsf/dx/Configuring_the_Profiles_server_to_support_feeds_ic301 にあり
ます。
Tivoli Directory Integrator を使用する方法。このセクションでは、この手法について説明します。
これは、以下の手順で構成されます。
1.
2.
3.
4.
5.
6.
拡張属性が処理されるようにプロフィール・コネクターを構成します。
Tivoli Directory Integrator 構成エディターを開始し、新規アセンブリー行を作成します。
プロフィール・コネクターを使用して、ユーザーの E メールをそのプロフィールから取得
します。
E メールのハッシュを計算し、結果を 16 進ストリングに変換します。
JavaScript を使用して、拡張属性としてデータを取り込む作業オブジェクト属性を作成し
ます。
プロフィール・コネクターを使用して、ハッシュ化された E メールにデータを取り込みま
す。
始める前に



Tivoli Directory Integrator 環境がプロフィール・データと連携するように構成されているこ
とを確認します (詳しくは、『第 4 章 Tivoli Directory Integrator』を参照してください)。
拡張属性を hashEmail という名前でプロフィールに構成します (詳しくは、上記のセク
ションを参照してください)。
この wiki ページの添付から HashEmail.jar をダウンロードし、Tivoli Directory Integrator
がインストールされているファイル・システム上に配置します。例えば、ソリューション
のディレクトリーに配置します。
手順
1.
拡張属性が処理されるようにプロフィール・コネクターを構成します。
a. ソ リ ュ ー シ ョ ン の デ ィ レ ク ト リ ー に 移 動 し 、 tdi-profiles-config.xml フ ァ イ ル を
見 つ け て テ キ ス ト ・ エ デ ィ タ ー で 開 き ま す 。 このファイルは以下の場所にあります。
<TDI_solution_directory_root>/conf/LotusConnections-config/
例 : C:¥TDIProject¥15082011¥TDISOL¥TDI¥conf¥LotusConnections- config¥tdi-profilesconfig.xml
b. <profileExtensionAttributes> エレメントを見つけます。
230 of 247
c.
終了タグ </profileExtensionAttributes> の直前に新規行を追加します。
<simpleAttribute extensionId="hashEmail" length="40"
userTypeString="String"/>
例:
<profileExtensionAttributes>
<!-This extension attribute is required by the 'MyLinks'
profile widget
-->
<xmlFileAttribute
extensionId="profileLinks"
schemaFile="profile-links.xsd"
indexBindingExpr="/linkroll/link/@name |
/linkroll/link/@url">
<indexFields>
<indexField fieldName="linkName"
fieldExpr="/linkroll/link/@name" />
</indexFields>
</xmlFileAttribute>
<simpleAttribute extensionId="hashEmail" length="40"
userTypeString="String"/>
</profileExtensionAttributes>
d.
2.
3.
ファイルを保存して閉じます。
Tivoli Directory Integrator 構成エディターを開始し、新規アセンブリー行を作成します。
Tivoli Directory Integrator 構 成 エ デ ィ タ ー を 開 始 し 、 新 規 ア セ ン ブ リ ー 行 を
populateHashEmail という名前で作成する方法について詳しくは、『第 4 章 Tivoli Directory
Integrator』を参照してください。
プロフィール・コネクターを使用して、ユーザーの E メールをそのユーザー・プロフィール
から取得します。
作成したアセンブリー行にイテレーター・モードで新しい ProfileConnector を追加し、「入力
マップ (Input Map)」タブで作業オブジェクト属性「_extAttrs_hashEmail」と「email」を追
加します。
231 of 247
4.
注: この ProfileConnector の「差分 (Delta)」機能を使用して、E メール・アドレスの変更を処
理できます。
注: プロフィールの拡張属性はすべて、接頭部 _extAttrs_ を使用して表されます。そのため、
この接頭部をアセンブリー行内の属性名に使用することが重要です。
E メールのハッシュを計算し、結果を 16 進ストリングに変換します。
現在のユーザーの E メールからハッシュを計算して 16 進ストリングに変換するために、
「Java クラス関数コンポーネント (Java Class Function Component)」の HashEmail.jar から
適切なメソッドを使用できます。この作業を実行するには、以下の手順に従います。
a. 「コンポーネントの追加 (Add component)」をクリックし、「タイプ・フィルターの選
択 (Select Type Filter)」メニューから「関数 (Functions)」を選択し、「Java クラス関
数コンポーネント (Java Class Function Component)」を選択して「次へ (Next)」をク
リックします。
232 of 247
b. 「参照」をクリックして HashEmail.jar を見つけます。例えば、
C:¥ProfilesUpdate¥HashEmail.jar にあります。「選択」をクリックして
「 HashEmail 」 を 「 Java ク ラ ス (Java Class) 」 と し て 選択し、「java.lang.String
hashString(java.lang.String p1, java.lang.String p2)」を「メソッド」ドロップダウ
ン・リストから選択します。「完了 (Finish)」をクリックします。
c.
「出力マップ (Output Map)」タブで「work.email」を「p1」に、ストリング「"MD5"」
を「p2」にそれぞれマップします。
233 of 247
注: デフォルトで OSC は MD5 を使用します。しかし、SHA1 を使用するように構成する
こともできます。その場合は、この手順で「p2」のストリングとして「SHA1」を使用し
てください。環境で使用されているハッシュ関数を確認するには、以下の資料の説明を参
照してください。http://www-
10.lotus.com/ldd/lcwiki.nsf/dx/Configuring_the_Profiles_server_to_support_feeds
_ic301
d.
5.
「入力マップ (Input Map)」タブで、「hashEmail」を「conn.value」にマップします。
拡張属性としてデータを取り込む作業オブジェクト属性を作成するには、JavaScript をアセン
ブリー行に追加する必要があります。
a. 「コンポーネントの追加 (Add component)」をクリックし、「タイプ・フィルターの選
択 (Select Type Filter)」メニューから「スクリプト (Scripts)」を選択して、「空のスク
リプト (Empty Script)」を選択します。fillCustomAttribute のような名前を指定して、
「完了 (Finish)」をクリックします。
234 of 247
b.
スクリプト本体として、以下のスクリプトを追加します。
//Checking if attribute is already populated
if (work._extAttrs_hashEmail != null)
{
// If it is populated, just updating it
work._extAttrs_hashEmail[2] = "value:" + work.hashEmail;
}
else
{
// Populating attribute by creating an Array and filling in name: dataType:
and value: fields by appropriate values
var customAttr = system.newAttribute("_extAttrs_hashEmail");
customAttr.addValue("name:"); customAttr.addValue("dataType:");
customAttr.addValue("value:" + work.hashEmail);
work._extAttrs_hashEmail = customAttr;
}
235 of 247
6.
プロフィール・コネクターを使用して、hashEmail にデータを取り込みます。
a. 更 新 中 の ProfileConnector を 追 加 し 、 「 出 力 マ ッ プ (Output Map) 」 タ ブ で
「work._extAttrs_hashEmail」を「_extAttrs_hashEmail」にマップします。
236 of 247
b.
7.
12.1.3
1.
リンク基準 (Link Criteria)」タブで、「email」、「に等しい」、および「$email」を追
加します。
作業内容を保存します。
テスト
最初のユーザーに対してアセンブリー行をデバッグ・モードで実行し、このユーザーの E
メール・アドレスを覚えておきます。
237 of 247
2.
3.
4.
この反復中に hashEmail 属性にデータが取り込まれます。
注: アセンブリー行をデバッグ・モードで実行する方法について詳しくは、『第 4 章 Tivoli
Directory Integrator』を参照してください。
Web ブラウザーを開き、次のようなリンクに移動します。
https://<your_IBM_Connections_server_name>/profiles/atom/profileExtension.do?ext
ensionId=hashEmail&email=<user_email>
ここで <user_email> は、前の手順でデータを取り込んだ hashEmail 属性を持つユーザーの E
メールです。
例:
https://connectionsbw.demos.ibm.com/profiles/atom/profileExtension.do?extensionId=hashEm
ail&[email protected]
この要求は、プロフィール・データベースから hashEmail 属性の値を返します。次の手順で
使用するため、この値も覚えておいてください。
同じブラウザーで次のようなリンクから、hashEmail を使用してそのユーザーの vcard を要求
します。
https://<your_IBM_Connections_server_name>/profiles/atom/search.do?format=lite&
output=hcard&outputType=profile&search=FIELD_EXTATTR_HASHEMAIL:<hashE
mail_attr_value>
ここで <hashEmail_attr_value> は、前の手順の hashEmail 値です。
例:
https://connectionsbw.demos.ibm.com/profiles/atom/search.do?format=lite&output=h
card&outputType=profile&search=FIELD_EXTATTR_HASHEMAIL:b48b3f5cc81f2a1
b339f6d86a1320a9c
238 of 247
5.
次の図のように、ユーザーの vcard が XML でプロフィール・データベースから取得されます。
次の手順
セクション『12.2 IBM Connections プラグインと Microsoft Outlook SocialConnector の構成』に進
んでください。
239 of 247
12.1.4
HashEmail クラス
以下に、HashEmail クラスのソース・コードを示します。
import java.io.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class HashEmail
{
// In this method: first argument will be user's email and second - an
algorithm ID: MD5 or SHA1
public static String hashString(String email, String alg) throws
NoSuchAlgorithmException, UnsupportedEncodingException
{
MessageDigest md = MessageDigest.getInstance(alg);
//Before hashing email, we need to make it all in lower case
md.update(email.toLowerCase().getBytes("iso-8859-1"), 0,
email.length());
//Converting the byte-array into a hex-string
byte[] hash = md.digest();
StringBuffer buf = new StringBuffer();
for( int i=0; i < hash.length; i++ )
{
int b = hash[i];
if( b < 0 )
b = 256 + b;
if( b < 16 )
buf.append("0");
buf.append(Integer.toHexString(b));
}
//Returning hash as a hex-string
return buf.toString();
}
}
240 of 247
12.2. IBM Connections プラグインと Microsoft Outlook
Social Connector の構成
このセクションでは、IBM Connections と連携するように Microsoft Outlook Social Connector を構
成する手順について説明します。
始める前に


『IBM Lotus and WebSphere Portal Business Solutions Catalog』から、Microsoft Office および
Microsoft Windows 用の IBM Connections 3.0.1 プラグインをダウンロードしてインストールし
ます。
『Microsoft Download Center』から Microsoft Outlook Social Connector をダウンロードしてイ
ンストールします。
手順
1.
Microsoft Outlook を開き、「接続 (Connections)」 -> 「設定」に移動します。
2.
IBM Connections に 接 続 す るためのユ ー ザー名とパ ス ワードを入 力 します。次 に 、IBM
Connections のサービスの 1 つに対応する URL を入力します。例えば、アクティビティーの
場合、URL は https://social.demos.ibm.com/activities となります。「接続のテスト (Test
Connections)」をクリックすると、プラグインによって IBM Connections のデプロイメント
から他のサービスの URL が検出されます。構成が終了したら、「OK」をクリックします。
241 of 247
Microsoft Office および Microsoft Windows 用の IBM Connections 3.0.1 プラグインが構成されまし
た。次に Microsoft Outlook Social Connector を構成します。
3.
「ツール」 -> 「ソーシャル・ネットワーク・アカウントの設定 (Social Network Account
Settings)」に移動します。
242 of 247
4.
「IBM Connections」にチェック・マークを付け、「接続」をクリックして「完了 (Finish)」
をクリックします。
243 of 247
これで、Microsoft Outlook Social Connector によって、組織内のすべての E メール・アドレ
スについて IBM Connections からのソーシャル・データが表示されます。
244 of 247
Fly UP