本文へジャンプ

Lotus > Lotus Developer Domain > 
   
 

WebSphere Portal V5.1.0.1プログラミング・モデルを活用する:第1部:モデルの概要

 
   
 
コンテンツ
はじめに
モデルの各部を調べる
ポータルとSOA
成果物:ポートレット
ポートレット・フレームワーク
成果物:テーマとスキン
成果物:ポートレット・サービス
部品の組み立て:ポータルの集約
動的UI管理
セキュリティー
仮想ポータル
モデルへの影響
ポートレット・アプリケーションのサンプル
まとめ
ダウンロード
リソース
筆者について(原文のまま)
Stefan Hepper, WebSphere Portal Programming Model Architect,IBM
Stefan Liesche, WebSphere Portal and Workplace Foundation Lead Architect,IBM

レベル:初級
原文の掲載:2005年12月14日
更 新 日:2006年08月25日更新
原文はこちら(US)

これは、ポータル開発者とシステム管理者がIBM® WebSphere® Portal V5.1.0.1プログラミング・モデルを企業ポータルに適用する際に役立つ5部構成の最初の記事です。 この記事では、モデルのさまざまな部分について紹介し、ポータル・テクノロジーの概要と、ポータルがサービス指向アーキテクチャー(SOA)にどのように関連するのかを説明します。 モデルの成果物(ポートレット、テーマ、スキン、ポートレット・サービスなど)や、異なるパーツをまとめてポータル・ページを作成する、集約と呼ばれるプロセスの制御方法について理解できます。 次に、2つの一般的な概念であるセキュリティーと仮想ポータルがどのようにプログラミング・モデルと関連するのかを説明します。 最後に、第1部で説明した概念を表すポートレット・アプリケーションをダウンロードし、試すことができます。このポートレット・アプリケーションは、以降の連続記事でも使用されます。

はじめに


WebSphere Portalプログラミング・モデルは、J2EEプログラミング・モデルの拡張です。このプログラミング・モデルを使用して、WebSphere Portalプラットフォームの豊富な機能を活用するWebアプリケーションを実装します。 これには、コンポーネントをページ階層に組み込む集約と統合、柔軟なナビゲーション、コンテンツとアプリケーションの集約、ブランディング、カスタマイズ、パーソナライズ、コンテンツ管理、文書管理、検索などが含まれます。 ポータルが原理的にどのように動作するのかを図1に示します。

図1.ポータルの原理:画面上でのアプリケーション統合


ユーザーはポータルと対話します。ポータルはさまざまなバックエンド・アプリケーションと対話し、ユーザーのためにこれらをまとめて、単一のブラウザー・ウィンドウ、つまりポータル・ページへと集約します。 また、WebSphere Portalは、これらのコンポーネントを1つのコンテキスト内に統合します。この機能は、画面上での統合と呼ばれることがあります。ユーザーのアプリケーションはポータルによって統合され、単一のウィンドウに表示されます。 このため、エンド・ユーザーは、多くの異なるシステムからの内容を、ユーザーにとって意味のある1つのコンテキストで、統一されたビューとして入手できます。 この強力な機能により、企業はユーザーに、広範囲に分散したITインフラストラクチャー内で、アプリケーションの複雑なネットワークを扱うための統合および統一された作業方法を提供できます。 異なるITシステムを異なるユーザー・インターフェースで扱う代わりに、ユーザーは単一のユーザー・インターフェースを用いて、1つのITシステム、つまりポータルを扱うだけでよいのです。

WebSphere Portalプログラミング・モデルは、集約ステップを異なるレベルでカスタマイズできるさまざまなAPI、SPI、JSP、Taglib、およびディスクリプターで構成されています。 この記事の目的は、このモデルを使用してポータルのどの部分をカスタマイズおよび拡張できるかについて、その概要を説明することです。
上に戻る

モデルの各部を調べる


ポータル・ページは、ポートレットによって生成された異なるマークアップ・フラグメントで構成されています。 すべてのポートレット・フラグメントを収集し、クライアントに送り返される単一ページを作成するプロセスは、集約と呼ばれています。これを図2に示します。

図2.ポータル・ページの集約


集約の流れは次のようになります。

  1. クライアントはポータルに要求を送信します。ポータル・サーブレットは要求ヘッダーを調べ、どのデバイスとどのユーザーがページを要求しているのかを判断します。
  2. ポータルはこのページのポートレットを決定し、これらのポートレットへのユーザーのアクセス権をチェックします。ここが、カスタマイズできる最初のプラグ・ポイントとなります。ログインとログアウトの動作を変更できます。このカスタマイズ方法の詳細については、このシリーズの後の記事で解説します。
  3. レイアウト・システムが呼び出されます。これは、ルック・アンド・フィールをレンダリングするテーマとスキンで構成されています。テーマとスキンはポータル・システムの重要なプラグイン・ポイントで、ポータル・ページ全体のルック・アンド・フィールを制御します。テーマとスキンの詳細については、この記事の「成果物:テーマとスキン」で後述します。
  4. ユーザー・アクションは、ポータルから、ポートレットに対応するポートレット・コンテナーに転送されます。このコンテナーはポートレットのランタイム環境を提供し、ポートレットAPIを介してポートレットと対話します。ポートレット・コンテナーはプロセス・アクション呼び出しをポートレットに発行し、ポートレットはアクションを処理して、必要に応じてその状態を変更します。
  5. 最後に、レイアウト・システムによってレンダリングが開始され、ポータルはページ上の各ポートレットのポートレット・コンテナーを呼び出します。ポートレット・コンテナーは要求されたポートレットのレンダリング・メソッドを呼び出し、ポートレットはそのマークアップ・フラグメントを出力ストリームにレンダリングします。すべてのポートレットが処理されると、完成したページがクライアントに返されます。
上に戻る

ポータルとSOA

サービス指向アーキテクチャー(SOA)は、アプリケーションの機能をサービスとしてエンド・ユーザー・アプリケーションまたは他のサービスに配布する分散システムを構築するためのアプローチです。SOAは、これらの異なるサービスを統合および管理するメカニズムを提供します。

ポータルはSOAの概念にどのように適合するのでしょうか。ポータルは優れたユーザー・インターフェース(UI)のサポートをSOAに提供します。ミドルウェアがライフ・サイクル(ユーザー単位のカスタマイズ、集約、他のコンポーネントとの統合など)の共通機能を処理するのに対し、開発者は、ポータルの構築ブロックであるポートレットを使用することで、アプリケーション固有の機能に重点を置くことができます。

ポータルは、SOAランタイムがサービスを組み合わせて統合する方法と似た方法で、UIを集約および統合する機能をもたらします。コンポーネントUIはより大きく価値のあるUIへと集約され、ITサービスの単一ビューをユーザーに提供します。ユーザーは、この1つのUIだけをマスターすれば済みます。もともと個別に設計されたアプリケーションを新しい機能として統合できます。ポートレット間通信を使用して、コンポーネントを統合できます。たとえば、電子メール・ポートレットがコラボレーション・ポートレットと通信し、受信ボックスにフィルターを設定し、送信者がオンラインでチャット可能なときだけ受信済みメールを表示する、といったことが可能です。この機能は、どちらのオリジナル・アプリケーションでも利用できません。

ポータル・モデルの驚くべき結果として、オンデマンド・ビジネスの機敏さが改善されたことが挙げられます。システム管理者は、プログラミングなしに新しいアプリケーションを作成するアプリケーション・インテグレーターになることができます。必要なのは、新しいページの定義、ページへのポートレットの追加、ポートレット間のワイヤリング、権限の設定です。セルフサービス・ポータルにより、ユーザーは自分自身の必要性に応じて作業環境を調整できます。このため、アプリケーション開発者はポータル・アーキテクチャーによって解放され、新しいビジネス・バリューの構築に専念できます。

ローカル・ポートレットのサービス・インターフェースとプロトコルは、Java Portlet Specification によって定義されます。Web Services Remote Portlet(WSRP)はポートレットのリモート・レンダリングの標準で、ポータルが複数のリモート・ソースからコンテンツを集約することを可能にします。WSRPはWebサービスの統合機能をプレゼンテーション指向コンポーネントに拡張し、プラットフォーム、実装言語、およびベンダー間でビュー・レイヤーを共有できるようにします。追加のプログラミングを行うことなく、コンテンツとアプリケーション・プロバイダーのサービスを検出し、標準に準拠したアプリケーションに組み込むことができます。
上に戻る

成果物:ポートレット

ポートレットは、ポートレット・アプリケーションの基本的な構築ブロックです。この記事では、JavaPortlet APIまたはプログラミング・モデルについて触れない代わりに、WebSphere Portal特有の拡張に重点を置いて説明します。Portlet APIの詳細については、「リソース」を参照してください。

タグ・ライブラリー

JSR168は、ほとんどの共通ポートレット仕様の機能(アクションの作成やURLのレンダリングなど)についてのタグ・ライブラリーを定義します。また、JSP Standard Template Library(JSTL)は、JSPの追加共通機能(反復、フォーマット、国際化対応)を提供します。WebSphere Portal は、他の国際化対応の拡張を使用可能にするポートレットについての追加タグ・ライブラリーを提供します。

標準タグ・ライブラリーが十分でない場合に限り、アプリケーション固有のタグ・ライブラリーをポートレット・アプリケーションに含める必要があります。

ブローカーによるポートレットの対話

現在、Java Portlet Specificationが提供するポートレット間のデータ共有のサポートには制限があります。ポートレットは、他のポートレットとデータを共有するために、同じWebアプリケーション内のポートレット・セッションだけを利用できます。

WebSphere Portalは、ブローカーによるポートレット間の対話メカニズムの概念を提供します。すべてのポートレットはブローカーとの対話機能を登録し、ブローカーはポートレット間の対話を推進します。ブローカーは、「ポートレットは、型付きプロパティーのプロバイダーであり、コンシューマーである」という原理に基づいて動作するため、プロパティー・ブローカーと呼ばれています。ポートレットは、プロパティーの提供と消費の権利を直接登録するか、プロパティーを消費および提供するアクションの登録を介してこれを間接的に行います。プロパティーに関連する型付き情報を使用することにより、プロパティー・ブローカーは異なるポートレットに属するプロパティー間の互換性を判断できます。これによって、疎結合で高度に対話的なアプリケーションが可能になります。ポータル管理者は、実行時に統合されるようにポートレット間の結び付きを定義できます。

ポートレット間通信のプログラミング・モデルは、既存のJSRポートレットのAPIメソッドprocessActionを使用して、ポートレットにプロパティーの変更を通知します。このため、これらのポートレットはIBM拡張をサポートしない環境でも実行できます。IBM以外の環境では、プロパティー・ブローカーの特殊なアクションは起動されません。

通常、ポートレット・アプリケーションの開発者は、ブローカーによる基本的な連携メカニズムを利用するために、(通常のポートレット開発を超える)追加のプログラミングを求められることはありません。代わりに、開発者はプロパティーとアクションをWSDLファイルでブローカーに宣言する必要があります。WebSphere Portal V5.1.0.1では、プロパティー・ブローカーのメカニズムは、同じページ上のポートレット、または異なる2つのページ上のポートレットだけに制限されています。

上に戻る

ポートレット・フレームワーク

より複雑なポートレット・アプリケーションを作成するときにフレームワーク使用すると、多くの開発作業を節約できるだけでなく、これらのポートレット・アプリケーションが適切な設計となり、維持しやすくなります。WebSphere Portalは、Struts、Java Server Faces、および、JSF Widget Libraryの3つのフレームワークをサポートします。

Struts

Strutsは最も古いWeb開発フレームワークの1つで、非常に大きな開発者コミュニティーと非常に優れたツールのサポートを持っています。StrutsはApache[Struts]のオープン・ソース・プロジェクトで、サーブレットおよびJSPプログラマーにマルチページのModel-View-Controller(MVC)フレームワークを提供するために作成されました。Strutsはサーブレット用に開発されたため、ポートレットに対してはそのままでは機能しません。ポートレットは、アクションおよびレンダリング・フェーズと共に、インターフェースに厳密に組み込まれたMVCパターンを持ちます。また、ポートレットとサーブレットの要求/応答は異なるので、適合させる必要があります。WebSphere Portalは、WebSphere Portal上でJSR168ポートレットをサポートするよう変更された特殊なバージョンのStrutsV1.1ライブラリーを提供します。

Java Server Faces(JSF)

Java Server FacesはJava Webアプリケーション用のUIフレームワークで、Java Community Processを介して標準化されました。これはたいへん新しいフレームワークなので、ポートレットについて考慮しており、ポートレットとサーブレットに対してそのままで機能します。UIコンポーネントに加え、JSFは、ステート・ハンドリング、検証、およびこれらのコンポーネントのイベント処理についてのインフラストラクチャー・サポートも提供します。JSFは、ポートレットと共に適切に動作する強力で柔軟性の高いフレームワークです。

WebSphere PortalはJSFライブラリーを含めることによってJSFをサポートするため、テーマとスキンはこのUIフレームワークを活用できます。Rational Application Developerは、ツールのサポートを行います。ウィザードを使用してJSFベースのポートレットを作成できます。また、ポートレットが用いる追加JSF UIウィジェットを使用することもできます。

JSF Widget Library(JWL)

Rational Application Developerによって提供されるJWLは、ポータルとポートレット・プログラマーがJSFをベースとした追加ウィジェットを使用できるようにします。このライブラリーの大きな特長の1つとして、これらのウィジェットがクライアント機能を持つことが挙げられます。ウィジェットは、ビューを更新するためにクライアントで処理を実行できます。これによってサーバーとのやり取りが削減され、応答時間が劇的に短くなるため、ユーザー・エクスペリエンスが飛躍的に改善されます。他のポートレットと同様に、これらのウィジェットを使用するWebSphere Portalポートレットをデプロイできます。
上に戻る

成果物:テーマとスキン

J2EE JSPモデルは、Webアプリケーションの構築時に、プログラミングの役割を設計の役割から切り離すためのベースを提供します。WebSphere Portalは、より明確な分離と高い柔軟性を持つフレームワークを提供することにより、これを進化させています。WebSphere Portalのテーマとスキンは、適切に定義された成果物(JSPとCSSクラスを含む)によって、ユーザー・エクスペリエンスのブランディングとルック・アンド・フィールのアスペクトを分離しています。トポロジー・モデルで参照されるテーマとスキンの実装を単に置き換えることにより、ユーザー・エクスペリエンスのブランディングと全体のルック・アンド・フィールを簡単に変更できます。WebSphere Portal V5.1.xでは、テーマとスキンを適用しなければならないディレクトリー構造を定義するため、テーマとスキンをWebSphere Portalにデプロイすることができます。

テーマはページのルック・アンド・フィール(ブランディングを含む)のアスペクトを制御します。スキンは、ポートレット・コントロールを公開します。テーマとスキンを円滑に機能させるために、ポートレットのプログラマーは、グローバルに定義された標準CSS形式クラス(JSR 168およびWSRPで定義されたものなど)を実装で使用する必要があります。これにより、個別に開発されたポートレットが同じページに集められ、同じチームによって開発されたポートレットのように表示されます。

WebSphere Portal5.1のデフォルトのテーマの一部を図3に示します。どのテーマも、ページ用のテーマとして選択できます。また、これらのテーマをテンプレートとして使用して、カスタム・テーマを作成できます。

図3.WebSphere Portal5.1のデフォルトのテーマの一部


ポートレット・ウィンドウをレンダリングするWebSphere Portal V5.1のデフォルトのスキンの一部を図4に示します。テーマの場合と同様に、スキンをカスタマイズしたり、独自のスキンを作る際のサンプルとして使用できます。

図4.WebSphere Portal V5.1のデフォルトのスキンの一部


テーマとスキンに関する情報は、Theme ListモデルおよびSkin Listモデルを介してプログラマチックに取得できます。これらのモデルは、テーマ・オブジェクトとスキン・オブジェクトを公開しています。これらは、特定のテーマまたはスキンに関する情報を入手するために使用します。
上に戻る

成果物:ポートレット・サービス

ポートレット・サービスは、名前からもわかるように、ポートレットによって使用されるサービスです。サービスの種類には、WP5.1と共に出荷されるデフォルト・ポートレット・サービスとカスタム・ポートレット・サービスの2種類があります。

ポートレット・サービスのプログラミング・モデルは、ポートレットAPIで指定されていない機能をポートレットに提供するためのフレームワークを定義します。ポートレットは、このようなサービスを標準JDNI検索を通じて取得できます。インターフェースの定義では、ポートレット・サービスはまったく制限されていません。一般に、ポートレット・サービスはポートレットAPI(ポートレット要求など)からオブジェクトを入力パラメーターとして受け取ります。一部の(IBM独自の)ポートレット・サービスは、WebSphere-Portalの一部として提供されますが、カスタム・サービスをポータルに追加することもできます。

ポートレット・サービスには、ほぼ独立する次の2つの観点があります。

  • サービス・アクセス(クライアント・ビュー)は、ポートレット・サービスのインターフェースをどのように定義し、ポートレットがサービスの実装をどのように取得するのかを示します。
  • サービス・プロバイダー(サーバー・ビュー)は、サービスがどのように実装および登録されるのかを示します。

ポートレット・サービスのプログラミング・モデルはシングルトン・ベースです。これは、ポートレット・サービスのポートレット・エンティティー固有のインスタンスがないことを意味します。このため、ポートレットのinitメソッドでサービスを検索し、それをインスタンス変数に格納するプログラミング手法が推奨されています。

WebSphere Portal V5.1.0.1は、次のポートレット・サービスを提供します。これらのサービスは、一般的な使用を目的としたAPIです。

  • コンテンツ・アクセス・サービス(Content access service)
    com.ibm.portal.portlet.service.contentaccess.ContentAccessService
    ポートレットのインターネットへのアクセスを可能にし、ポータル管理者がこのアクセスを一括して管理できるようにします(たとえば、プロキシー・サーバーを設定し、特定のWebサイトを除外します)。
  • クリデンシャル・ボールト(Credential vault)
    com.ibm.portal.portlet.service.credentialvault.CredentialVaultService
    バックエンド・システム用のユーザーIDとパスワードを保存し、ポータル・ユーザーにシングル・サインオンを提供します。このサービスについては、このシリーズのセキュリティーとユーザー管理の記事で詳しく説明する予定です。
  • 動的UIマネージャー(Dynamic UI manager)
    com.ibm.portal.portlet.service.dynamicui.DynamicUIManagementFactoryService
    動的ポートレットとページを起動します。詳細については、次のセクション(LINK)を参照してください。
  • タスク・マネージャー・サービス(Task manager service)
    com.ibm.portal.portlet.service.taskmanager.TaskManagerDelegateFactoryService
    および
    com.ibm.portal.portlet.service.taskui.TaskUIManager
    ポートレットがBPEL関連のワークフローに参加できるようにします。

次のサービスはSystem Programming Interface (SPI)です。より複雑で、高度な用途を目的としています。

  • Pumaユーザー管理(Puma user management)
    com.ibm.portal.um.portletservice.PumaHome
    ポータル・ユーザーまたはグループのプロファイルへのアクセスを提供します。ユーザーおよびグループを検索、作成、変更、削除できます。このサービスについては、このシリーズのセキュリティーとユーザー管理の記事で詳しく説明する予定です。
  • クリデンシャル・ボールト暗号化出口(Credential Vault encryption exit)
    com.ibm.portal.portlet.service.credentialvault.spi.EncryptionExit
    保存されているユーザーIDとパスワードの暗号化を可能にします。
  • ポータル・モデルSPI(Portal model SPI)
    com.ibm.portal.model
    現在のナビゲーションとポータルのコンテンツ・モデルに読み取りアクセスを与えます。他のポートレットとページへのナビゲーション・リンクを提供するポートレットを作成できます。このプログラミング・インターフェースについては、動的および状況依存ポートレットに関する記事で詳しく説明する予定です。
上に戻る

次のページへ