ShowTable of Contents
はじめに
XPages Extension Library の Social Enabler には Sametime コントロールが含まれています。Sametime コントロールを使用することで、XPages アプリケーションに Sametime のアウェアネスとインスタントメッセージの機能を組み込むことができます。Social Enabler の Sametime コントロールは、Sametime 8.5 から追加された Sametime Web クライアントの技術を利用しています。Sametime Web クライアントの技術は Dojo に基づいており、Dojo ライブラリ上の Web クライアントの UI を提供しており、Sametime Proxy サーバーコンポーネントで利用するとができます。
この記事では、XPages Extension Library の Social Enabler Sametime コントロールを使用し、XPages アプリケーションに Sametime LiveName と Web Client コンポーネントを組み込む方法について解説します。この記事の内容は Domino および Domino Designer 8.5.3 での XPages Extension Libray を基に記述されています。
この記事は、以下の英語の記事を日本語訳したものです。
How to use Social Enabler Sametime controls of XPages Extension Library
Domino の FQHN について
XPages Extension Library には、Social Enabler で Sametime の連携を試す際に、JavaScripot ライブラリのクロスサイトスクリプトの制限によって Social Enabler の Sametime ステータスなどの UI が正しく表示されないことあります。この問題を回避するために、Social Enabler を実装した XPages アプリケーションを提供する Domino サーバーを、Sametime と同じドメインでアクセスできるように構成します。
たとえば Lotus Greenhouse の Sametime は、greenhouse.lotus.com というホスト名でサービスを提供しているので、XPages アプリケーションを提供する Domino にも my_domino.lotus.com でアクセスできるようにします。これは Domino を lotus.com ドメインで構成しても良いですが、異なるドメインで構成済みの Domino に対し、クライアントの hosts ファイルで my_domino.lotus.com での接続を定義することも可能です。
Sametime 用に Social Enabler の環境を構成する
XPages Extension Library のインストール
XPages Extension Library の標準的な導入方法は以下の記事に記載されています。
XPages Extension Library Deployment in Domino 8.5.3 and IBM XWork Server
XPages Extension Library のインストールが完了したら、以下の手順に従って「OAuth Token Store」データベースを作成します。
-
WebSecurityStore.ntf を XPages Extension Library のパッケージからコピーします。
-
Domino 管理クライアントか Domino Designer で WebSecurityStore.ntf を開き、アプリケーションに署名します。
-
WebSecurityStore.nsf をテンプレートから作成します。アプリケーションのタイトルは自由につけてよいですが、ファイル名は変更しないでください。
Social Enabler を使用することで XPages アプリケーションをさまざまなソーシャルサービスやクラウドサービスに接続することができます。ある種のサービスに接続するためには、XPages Extension Library の導入後に追加の構成が必要になります。しかし Sametime 接続においては、 Lotus Greenhouse の Sametime サービスに接続するための構成が XPages Extension Library のサンプルアプリケーションに含まれており、インストールしてすぐに Sametime 接続を試すことができます。
XPages Extension Library のインストールが完了したら、Social Enabler の Sametime 接続を試すことができます。サンプルアプリケーションの実行の前に Lotus Greenhouse にアカウントがあることを確認してください。サンプルアプリケーションは
Lotus Greenhouse にある Sametime サーバーに接続します。
Social Enabler サンプルアプリケーションを試す
Social Enabler のサンプルアプリケーションは、リリースされた XPages Extension Library のパッケージに XPagesSBT.nsf として含まれています。以下の手順で Sametime 接続のサンプルを試してください。
-
XPagesSBT.nsf を Domino のデータフォルダへコピーする
-
Domino 管理クライアントか Domino Designer で XPagesSBT.nsf を開き、アプリケーションに署名します。そしてテスト用に NSF ファイルに適切な ACL エントリを追加します。しかし、ユーザーの認証情報(ユーザー名とパスワード)は「OAuth Token Store」データベースに、ユーザー名と関連つけて保持されるため、アプリケーションへの Anonymous アクセスは推奨しません。
-
Web ブラウザから以下の URL で NSF ファイルを開きます。http:///XPagesSBT.nsf/
-
「Sametime」タブをクリックし Sametime コントロールのサンプルページを開きます。
-
左側のペインで「Livename」セクションが選択されているので、「Login」リンクをクリックするか「Login to Sametime」リンクをクリックします。そしてログインダイアログかログインペインで Lotus Greenhouse ユーザー名とパスワードを入力します。
-
ログインが成功すると、Sametime ステータスが Livename に表示されます。
これで Social Enabler の環境が Sametime 用に構成され、接続の確認ができました。
Social Enabler に含まれる、Sametime 接続用のコントロール
Social Enabler の環境では、XPages アプリケーションで Sametime の Livename や Web クライアントを表示するために、2つの Sametime 用コントロールとひとつの汎用のコントロールを使用できます。
カテゴリ |
コントロール名 |
説明 |
コア・コントロール |
計算結果フィールド |
適切された contentType 属性を指定することで Sametime Livename を表示する。 |
Social Business Toolkit |
Sametime Client |
Sametime リソースをロードするコントロール。もしリソースがロードされないと、Sametime ウィジェットがまったく表示されない。 |
|
Sametime Widget |
Sametime クライアントに関連する Dojo dijit を生成するコントロール。このコントロールの表示の時点で Sametime Client コントロールが生成されていないと何も表示されない。 |
Sametime Client コントロールは UI コンポーネントを生成しませんが、他のコントロールとともに常に使用されます。計算結果フィールドコントロールは Sametime Livename を表示するために使用され、Sametime Widget は Sametime Livename か Sametime Web クライアントウィジェットを表示するために使用されます。
アプリケーションに Sametime コントロールを埋め込むための準備
Sametime コントロールを使用する前のアプリケーションの構成
アプリケーションに Sametime コントロールを挿入する前に、Social Enabler を利用できるようにアプリケーションを構成します。
-
アプリケーションプロパティを開き「Advanced」タブを開きます、そして「XPages Library」セクションの以下の2つのライブラリを選択します。
-
com.ibm.xsp.extlib.library
-
com.ibm.xsp.extlibx.library
-
「XPages」タブで、「Theme Default」セクションの「Application Theme」で「oneuiv2.1」を選択するとよいでしょう。これによって Social Enabler の UI がより洗練された表示になります。
Endpoint の構成を追加する
Endpoint 構成は、Social Enabler のコンポーネントがどの Sametime との接続を行うかを指定します。faces-config.xml には JavaServer Faces の Managed-bean の構成を含んでおり endpoint も managed-bean の属性として定義されます
faces-config.xml を見るには、メニューから [Window] - [Show Eclipse Views ] - [Package Explorer] を選択して Package Explorer を表示し、Package Explorer ビューで \WEB-INF フォルダを開きます。もし Lotus Greenhouse の Sametime サーバーに接続するのであれば、XPagesSBT.nsf の faces-config.xmlの内容をご自身のアプリケーションへコピーすればよいです。Sametime への接続には「PwdStore」 と 「greenhouseSametime」の二つの managed-bean の定義が必要です。
<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
<!--
Password store physical implementation.
-->
<managed-bean>
<managed-bean-name>PwdStore</managed-bean-name>
<managed-bean-class>com.ibm.xsp.extlib.sbt.security.password.store.BANSFPasswordStore
</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
<managed-property>
<property-name>database</property-name>
<value>WebSecurityStore.nsf</value>
</managed-property>
</managed-bean>
<!--
Greenhouse Sametime
-->
<managed-bean>
<managed-bean-name>greenhouseSametime</managed-bean-name>
<managed-bean-class>com.ibm.xsp.extlib.sbt.services.client.endpoints.SameTimeEndpoint
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>url</property-name>
<value>https://greenhouse.lotus.com</value>
</managed-property>
<managed-property>
<property-name>passwordStore</property-name>
<value>PwdStore</value>
</managed-property>
<managed-property>
<property-name>authenticationPage</property-name>
<value>_BasicLogin?endpoint=greenhouseSametime</value>
</managed-property>
</managed-bean>
</faces-config>
ここで定義した endpoint を xsp.properties ファイルにも登録します。faces-config.xml と同じフォルダにある xsp.properties を開き、以下の行を追加して保存します。
extlib.endpoint.sametime=greenhouseSametime
再利用する XPage とカスタムコントロールをコピーする
XPagesSBT.nsf サンプルアプリケーションは再利用可能な XPage とカスタムコントロールを含んでおり、それは Sametime への接続機能の開発に利用することができます以下の再利用可能なコンポーネントをご自身のアプリケーションにコピーするとよいでしょう。
設計要素 |
設計名 |
説明 |
XPage |
_BasicLogin.xsp |
ユーザー名とパスワードによる基本認証ログインページ |
カスタムコントロール |
BasicAuthenticationPanel.xsp |
_BasciLogin.xsp へのリンクを提供 |
|
sbtLoginDialog.xsp |
ログインダイアログを開くためのリンクを提供 |
|
sbtLoginPage.xsp |
_BasicLogin.xsp 出使用される部品 |
|
sbtLoginPanel.xsp |
sbtLoginDialog.xsp と sbtLoginSection.xsp で使用される部品 |
|
sbtLoginSection.xsp |
ログインセクションを開くためのリンクを提供 |
アプリケーションに Sametime コントロールを追加する
準備が整ったので、アプリケーションへ Sametime のコントロールを追加します、このセクションでは以下の4つについて説明します。
-
Sametime へのログインページの追加
-
計算結果フィールドコントロールを使用した Livename コンポーネントの追加
-
Sametime Widget コントロールを使用した Livename コンポーネントの追加
-
Sametime Widget コントロールを使用した Web クライアントの追加
どの場合でも Sametime クライアントを生成するために、 Sametime Client コントロールも追加する必要があります。このコントロールは Web ページ上で表示される Sametime コントロールで使用されるパラメータを保持します。もしこのコントロールがページ上になかったり適切に生成されていないと、そのほかの Sametime コントロールは Sametime サーバーに接続していないような状態になります。
Sametime へのログインページの追加
Social Enabler の Sametime 接続機能は、アプリケーションが、ユーザー名とパスワードによるベーシック認証でSametime サーバーにログインできるようにします。以下に示す3つのカスタムコントロールのひとつを使用して、自身の XPages アプリケーションに Sametime へのログインページを追加できます。
"BasicAuthenticationPanel" カスタムコントロール
このカスタムコントロールを使用するときには、以下のカスタムプロパティを指定します。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex"
xmlns:xc="http://www.ibm.com/xsp/custom">
<xe:sametimeClient id="sametimeClient1" autoLogin="true"
clientScriptFile="livename" autoTunnelURI="true">
</xe:sametimeClient>
<xc:BasicAuthenticationPanel endpoint="sametime"></xc:BasicAuthenticationPanel>
</xp:view>
「sbtLoginDialog」カスタムコントロール
このカスタムコントロールを使用するときには、以下のカスタムプロパティを指定します。
-
dialogTitle
-
Label
-
endpoint
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex"
xmlns:xc="http://www.ibm.com/xsp/custom">
<xe:sametimeClient id="sametimeClient1" autoLogin="true"
clientScriptFile="livename" autoTunnelURI="true">
</xe:sametimeClient>
Login Dialog:
<xc:sbtLoginDialog id="loginDialog" dialogTitle="Login To Sametime"
endpoint="sametime" label="Login To Sametime">
</xc:sbtLoginDialog>
</xp:view>
「sbtLoginSection」カスタムコントロール
このカスタムコントロールを使用するときには、以下のカスタムプロパティを指定します。
-
dialogTitle
-
Label
-
endpoint
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex"
xmlns:xc="http://www.ibm.com/xsp/custom">
<xe:sametimeClient id="sametimeClient1" autoLogin="true"
clientScriptFile="livename" autoTunnelURI="true">
</xe:sametimeClient>
Login Section:
<xc:sbtLoginSection id="sbtLoginSection1"
sectionTitle="Login To Sametime" endpoint="sametime" label="Login To Sametime">
</xc:sbtLoginSection>
</xp:view>
計算結果フィールドコントロールを使用した Livename コンポーネントの追加
計算結果フィールドコントロールは contentType="xs:st.livename" 属性を設定することで Sametime Livename を表示できます。
<xp:text escape="true" id="computedField8" contentType="xs:st.livename">
<xp:this.value><![CDATA[#{"UserID|Display Name"}]]></xp:this.value>
</xp:text>
あるいは
<xp:text escape="true" id="computedField7"
contentType="xs:st.livename">
<xp:this.value><![CDATA[#{javascript:"UserID|Display Name"}]]></xp:this.value>
</xp:text>
「value」の書式は "Sametimeユーザー ID | 表示名" です。
ログインしているユーザー自身の ID を取得するには、以下のスクリプトのように @Endpoint("sametime").getUserIdentity() を使用します。
<xp:text escape="true" id="computedField3" contentType="xs:st.livename">
<xp:this.value><![CDATA[#{javascript:@Endpoint("sametime").getUserIdentity()+"|[user display name]"}]]></xp:this.value>
</xp:text>
完全な XPage のコードは以下のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex"
xmlns:xc="http://www.ibm.com/xsp/custom">
<xe:sametimeClient id="sametimeClient1" autoLogin="true"
clientScriptFile="livename" autoTunnelURI="true">
</xe:sametimeClient>
Here is an example with the id and a display name set:
<xp:text escape="true" id="computedField3" contentType="xs:st.livename">
<xp:this.value><![CDATA[#{javascript:@Endpoint("sametime").getUserIdentity()+"|[user display name]"}]]></xp:this.value>
</xp:text>
</xp:view>
Sametime Widget コントロールを使用した Livename コンポーネントの追加
Sametime Livename は Sametime Widget Control を使って表示することもできます。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex"
xmlns:xc="http://www.ibm.com/xsp/custom">
<xe:sametimeClient id="sametimeClient1" autoLogin="true"
clientScriptFile="livename" autoTunnelURI="true">
</xe:sametimeClient>
Here is an example using a sametime widget:
<xe:sametimeWidget id="sametimeWidget1" dojoType="sametime.LiveName">
<xe:this.dojoAttributes>
<xp:dojoAttribute name="userId">
<xp:this.value><![CDATA[#{javascript:@Endpoint("sametime").getUserIdentity()}]]></xp:this.value>
</xp:dojoAttribute>
</xe:this.dojoAttributes>
</xe:sametimeWidget>
<xp:br></xp:br>
</xp:view>
Sametime Widget コントロールを使用した Web クライアントの追加
Sametimg Widget コントロールで dojoType="sametime.WebClient" を指定することで Sametime Web クライアントを表示します。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex"
xmlns:xc="http://www.ibm.com/xsp/custom">
<xp:br></xp:br>
<xe:sametimeClient id="sametimeClient1" autoLogin="true"
autoTunnelURI="true" clientScriptFile="widgets">
</xe:sametimeClient>
Sametime WebClient:
<xp:br />
<xe:sametimeWidget id="sametimeWidget1" dojoType="sametime.WebClient"></xe:sametimeWidget>
<xp:br></xp:br>
</xp:view>