この章では、ポートレットの機能、特性、テクノロジおよびツールについて説明し、ニーズに最も適したポートレット構築テクノロジを決定できるようにします。内容は、次のとおりです。
表2-1 「ポートレット構築テクノロジの比較マトリックス」では、横軸上にOracle Portalで使用できるテクノロジとツールを示し、縦軸上でそれぞれの機能と特性を要約しています。このマトリックスには、このガイドで詳細に説明するOmniPortlet、Webクリッピング、Javaポートレット(PDK-Java)および標準などのツールやテクノロジが掲載されています。ポートレット・ビルダーについては付録で説明し、PL/SQLポートレット(PDK-PL/SQL)については、このマトリックスでのみ説明します。
注意: これらはポートレットを構築するための主なツールですが、その他のツールやテクノロジもあります。たとえば、Oracle ReportsやOracle Business Intelligence Discovererなどです。これらのツールについては、このガイドでは説明しません。 |
この章の他の項では、表2-1にリストした特性の詳細を説明します。この表で機能と特性すべてに簡単に目を通した後、後続の項で詳細情報を参照してください。
表2-1 ポートレット構築テクノロジの比較マトリックス
Webクリッピング | OmniPortlet | PDK-Java | 標準 | ポートレット・ビルダー | PDK-PL/SQL |
---|---|---|---|---|---|
|
|||||
単純なウィザード・ベースのツール。他のWebサイトのWebコンテンツをポータル内に取得して表示する際に役立ちます。 |
ブラウザからアクセス可能なウィザード・ベースのツール。広範囲なデータソースからデータを取得して表示できます。 |
Oracle Portal専用に構築されたポートレットのAPI。 |
ブラウザからアクセス可能なウィザード・ベースのツール。データベース中心の単純なアプリケーションまたはポートレットに最適です。 |
Oracle Portal専用に構築されたポートレットのAPI。 |
|
|
|||||
専門知識は不要。 |
サポートされる1つ以上のデータソース、およびポートレット、ページ・パラメータ、イベントの概念に関する基本的な理解。 |
Java、サーブレット、JSPの知識。 |
Java、サーブレット、JSPの知識。 |
リレーショナル・データベース概念の基本的な理解。必要に応じてSQL、PL/SQL。 |
SQL、PL/SQL、PL/SQL Webツールキット。 |
サポートされるデータソース(詳細は、2.3項「必要な専門知識」を参照) |
|||||
ネットワーク上でHTTPまたはHTTPSを介してアクセス可能なすべてのWebサイト。 |
CSV、XML、Webサービス、SAP、SQL、Webサイト、JCA。 |
制限なし。 |
制限なし。 |
SQL(ローカルDBまたはDBリンクを介したリモートDB)。 |
SQL(ローカルDBまたはDBリンクを介したリモートDB)。 |
|
|||||
Webプロバイダ |
Webプロバイダ |
Webプロバイダ |
WSRP |
データベース・プロバイダ |
データベース・プロバイダ |
|
|||||
有効期限ベースのキャッシュ、無効化ベースのキャッシュ(パーソナライズ時に自動的に無効化)。 |
有効期限ベースのキャッシュ、無効化ベースのキャッシュ(パーソナライズ時に自動的に無効化)。 |
有効期限ベースのキャッシュ、有効化ベースのキャッシュ、無効化ベースのキャッシュ、ESI。 |
有効化ベースのキャッシュ、有効期限ベースのキャッシュ。 |
有効期限ベースのキャッシュ。 |
有効期限ベースのキャッシュ、有効化ベースのキャッシュ、無効化ベースのキャッシュ。 |
|
|||||
ブラウザ - ウィザード。 |
ブラウザ - ウィザード。 |
Oracle JDeveloper - Javaポートレット・ウィザード(または、ウィザードを使用しない他のJava開発環境)。 |
Oracle JDeveloper - Javaポートレット・ウィザード(または、ウィザードを使用しない他のJava開発環境)。 |
ブラウザ - 必要に応じてPL/SQL開発環境。 |
PL/SQL開発環境。 |
|
|||||
その場で開発。 |
ポートレットはその場で構築しません。ポートレットのページへの追加、デフォルトの編集およびパーソナライズを行います。 |
ポートレットはその場で構築しません。ポートレットのページへの追加、デフォルトの編集およびパーソナライズを行います。 |
開発後に追加、およびその場で開発。 |
ポートレットはその場で構築しません。ポートレットのページへの追加、デフォルトの編集およびパーソナライズを行います。 |
|
|
|||||
適用外。 |
柔軟性が高い。HTMLレイアウトを使用します。 |
柔軟性が高い。 |
柔軟性が高い。 |
制限あり。 |
柔軟性が高い。 |
|
|||||
あり。これが本来の機能です。 |
あり。Webデータソースを使用します。 |
あり。java.netパッケージを使用します。 |
あり。java.netパッケージを使用します。 |
なし。 |
あり。UTIL_HTTPパッケージを使用します。 |
|
|||||
あり。(Webクリッピング9.0.4.0.2以上でサポート。) |
URLリライティングはサポートされませんが、パブリック・ポートレット・パラメータとイベントを使用することで実現できます。 |
プライベート・ポートレット・パラメータを使用します。 |
サーブレットおよびJSPを組み込みます(PortletContext.getRequestDispatcher()メソッドを使用)。 |
レポートおよびチャートのページ区切りがインラインでレンダリングされます。 |
プライベート・ポートレット・パラメータを使用します。 |
|
|||||
適用外。 |
あり。2Dチャートと3Dチャート。 |
BI Beanを使用します。 |
BI Beanを使用します。 |
HTMLチャート。 |
プログラムによるHTMLチャート。 |
|
|||||
あり。(Webクリッピング9.0.4.0.2以上でサポート。) |
はい。 |
はい。 |
なし。 |
はい。 |
はい。 |
|
|||||
適用外。 |
適用外。 |
はい。 |
はい。 |
なし。 |
はい。 |
|
|||||
はい。 |
はい。 |
はい。 |
ポートレットのプライベート・イベント(アクション)。 |
なし。 |
なし。 |
ユーザー権限に基づいてポートレットの表示/非表示を切り替える機能 |
|||||
なし。ただし、UIを介して公開されないセキュリティ・マネージャの適用が可能です。 |
なし。ただし、UIを介して公開されないセキュリティ・マネージャの適用が可能です。 |
あり。セキュリティ・マネージャを使用します。 |
あり。サーブレット・セキュリティ・モデルは、PortletRequest.isUserInRole()やPortletRequest.getUserPrincipal()などのメソッドを使用してサポートされます。 |
はい。 |
あり。セキュリティAPIを使用します。 |
|
|||||
適用外。 |
はい。 |
はい。 |
はい。 |
なし。 |
はい。 |
|
|||||
適用外。 |
なし。 |
プログラムによるサポート。 |
プログラムによるサポート。 |
はい。 |
プログラムによるサポート。 |
|
|||||
Webクリッピング9.0.4.0.2以上では、外部アプリケーションの統合がサポートされます。 |
Basic認証は、データソースに認証が必要な場合にサポートされます。 |
外部アプリケーション統合がサポートされます。LDAP統合は、ポートレットがLDAPサーバーと同じファイアウォールの内側で実行される場合にサポートされます。 |
なし(カスタム・ユーザー属性を介して実行可能です)。LDAP統合がサポートされます。 |
なし(Oracle Portalリポジトリ内で実行されるため、SSO統合は必要ありません)。 |
SSOは、mod_osoを使用することで有効になります。 |
この項では、各ポートレット構築テクノロジをその用途の特性(ウィザード・ベースまたはプログラムなど)の観点から説明します。
Webクリッピングは、単純なウィザード・ベースのツールで、他のWebサイトのWebコンテンツをポータル内に取得して表示する際に役立ちます。Webクリッピングでは、専門知識は不要です。
Webクリッピングを使用して構築できるポートレットの例
Webクリッピングを使用して、次のポートレットを構築できます。
株式チャート・ポートレット
パーソナライズされた天気ポートレット
Webメール・ポートレット
OmniPortletは、様々な形式の広範囲なデータソースから情報を取得して表示するために、簡単に使用できるウィザード・ベースのツールです。OmniPortletは、ブラウザで完全に稼働します。OmniPortletをポータル・ページにドロップし、「定義」リンクをクリックして、データソースと表示形式を選択します。次を含む様々なデータソースから選択できます。
スプレッドシート
SQL
XML
Webサービス
Webページ
OmniPortletは、追加の開発ツールを使用したり高度な専門知識がなくても使用できます。そのようなユーザーでも、再利用可能で高性能なポートレットを構築できます。
OmniPortletで作成できるポートレットの例
OmniPortletを使用して、次のポートレットを作成できます。
RSSニュース・フィード・ポートレット
販売チャート・ポートレット
SAP Business Suiteポートレット
ウィザード・ベースのポートレット構築ツールではニーズを満たさない場合は、Javaを使用してプログラムでポートレットを構築できます。2003年に、JavaポートレットAPIがJava Community Processによって標準化されました。Java Specification Request(JSR)168標準に準拠して構築されたポートレットは、異なるポータル・プラットフォーム間で相互運用できます。Oracle JDeveloperプラグインの1つであるJavaポートレット・ウィザードは、Javaポートレットを開始する際に役立ちます。
注意: Javaでポートレットを構築する場合は、ポートレットの機能を完全に制御できます。たとえば、外観や動作方法を制御できます。 |
Javaを使用して構築できるポートレットの例
Javaで次のポートレットを構築できます。
ディスカッション・フォーラム・ポートレット
電子メール・ポートレット
ポートレット・ビルダーは、データ駆動ポートレットを作成するためのウィザード・ベースのツールで、データはOracleデータベースに存在します。インタラクティブなフォームを構築して、データベース・レコードを挿入、更新および削除できます。柔軟性のあるレポートおよびHTML棒グラフを作成して、データベースの情報を表示できます。また、ポートレット・ビルダーでは、動的リンクを使用して、データ駆動ポートレット間でパラメータを渡したり、ナビゲートすることもできます。
ポートレット・ビルダーを使用して構築できるポートレットの例
ポートレット・ビルダーを使用して、次のポートレットを構築できます。
データ入力ポートレット
パートナの動的リスト・ポートレット
販売結果ポートレット
Javaポートレットと同様に、PL/SQLポートレットは、組込みのポートレットではニーズを満たすことができないWebアプリケーションを構築するために、柔軟なアプローチを提供します。たとえば、アプリケーションで特別なビジネス・ルールやロジックを実装する必要がある場合、またはカスタム設計された認証要件を満たす場合などです。PL/SQLポートレットは、通常、SQLおよびPL/SQLを使用してデータ集約型の操作を実行する必要がある場合に使用されます。Oracle Portalには、プログラムによるプロバイダ登録、オブジェクト・レベルの権限管理、ユーザー・インタフェース制御、多言語サポートなど、豊富なPL/SQL APIが用意されています。
たとえば、情報プロバイダはカスタム・ポートレットを作成し、Oracle Portalを介してアプリケーションをユーザーに表示できます。開発者は、Oracle Portal Developer Kit(PDK)の仕様に従って独自のポートレットを構築し、プロバイダをOracle Portalに登録します。Oracle PDKを使用すると、ニーズに適したポートレットを開発できます。
PL/SQLを使用して構築できるポートレットの例
PL/SQLを使用して、次のポートレットを構築できます。
コンテンツ・アップロード・ポートレット
サイト・マップ・ポートレット
高度なデータ入力およびレポート・ポートレット
ポートレット構築ツールでは、ポートレットの開発技能を必要としない場合も、高度な専門知識があることを前提としている場合もあります。この項では、ポートレット構築ツールを、それぞれのツールを効果的に使用するために必要な知識レベルの観点から説明します。
Webクリッピングは、専門知識を必要としないツールです。ただし、クリップしたWebページのコンテンツをパラメータ化する場合は、パブリック・ポートレット・パラメータおよびページ・パラメータを理解している必要があります。
OmniPortletでは、ポートレット内で利用するデータソースに関する基本的な知識が必要です。表2-2は、OmniPortletで使用できるデータソースの種類と、それぞれを使用するために必要な情報の説明です。
表2-2 OmniPortletのデータソース
データソース | 必要な情報 |
---|---|
スプレッドシート |
ポートレットに表示するデータが含まれたスプレッドシートを指すURL。 |
SQL |
データソースへの接続情報およびデータベースからデータを取得するSQL問合せ。 |
XML |
XMLソースの位置、必要に応じてXSLフィルタおよびXMLスキーマのアドレス。 |
Webサービス |
Web Services Description Language(WSDL)URL、Webサービスのメソッド、必要に応じてXSLフィルタのURLとXMLスキーマのURL。 |
Webページ |
Webページ・データソースは、Webクリッピングと同じ環境で使用されます。したがって、専門知識は不要です。 |
J2EE Connector Architecture |
OmniPortletウィザードの「タイプ」ページには表示されませんが、J2EE Connector Architecture(JCA)1.0アダプタも使用できます。JCAでは、ERPシステム(Oracle Financials、SAP、PeopleSoftなど)に保持されている企業データを格納および取得するためのメカニズムが提供されます。 |
Javaポートレットを構築するには、少なくともJ2EEのサブセットに関する知識が必要です。HTML、JavaサーブレットおよびXMLに関する知識が必須ですが、JSPの経験も役立ちます。実行するタスクによって、Javaに関するその他の知識が必要になる場合もあります。Javaポートレットを使用すると、(Java言語でサポートされている)すべてのデータソースにアクセスできます。
ポートレット・ビルダーを使用する場合は、リレーショナル・データベースの概念をよく理解している必要があります。実現する内容によって、SQLおよびPL/SQLの知識が必要になる場合もあります。ポートレット・ビルダーを使用すると、データベース・リンクを使用して、ローカルの(Oracle Application Serverインフラストラクチャ)データベースまたはリモート・データベースからデータを消費できます。
アプリケーションでポートレットを使用するには、先に、ポートレットをデプロイし、ポートレットをデプロイしたプロバイダを登録する必要があります。図2-1に示すとおり、ポートレットは、次の3つのプロバイダ・タイプでOracle Portalにデプロイできます。
Webプロバイダ
WSRPプロデューサ
データベース・プロバイダ
Webプロバイダは、J2EEアプリケーション・サーバーにデプロイされます。このサーバーは多くの場合リモートで、HTTPを介したSimple Object Access Protocol(SOAP)を使用してOracle Portalと通信します。Oracle Portalの開発者プレビューでは、OASIS標準の1つであるWeb Services for Remote Portlets(WSRP)がサポートされます。データベース・プロバイダは、PL/SQLで実装され、Oracle PortalがインストールされているOracleデータベースにデプロイされます。
Webプロバイダは、最も一般的に使用され、柔軟なタイプのプロバイダです。Webプロバイダは、Oracle Portalと同じアプリケーション・サーバー、リモート・アプリケーション・サーバーまたはネットワーク上の任意の場所に存在できます(図2-2)。Webプロバイダは、事実上、どのWebテクノロジを使用しても実装できます。ただし、Oracle Portal Developer Kitでは、Webプロバイダの構築タスクを簡略化するJavaフレームワークが提供されます。
Webプロバイダは、デプロイ、定義およびOracle Portalとの通信に関し、XML、SOAP、HTTPまたはJ2EEなどのオープン標準を使用します。また、Webプロバイダは、J2EEコンテナへのデプロイが可能なため、Oracle Portalリポジトリ・データベースに余分な負荷がかかりません。
ポートレットを開発しWebプロバイダとして公開すると、様々な利点があります。次のタスクを実行できます。
ポートレットをリモートでデプロイします。
既存のWebアプリケーション・コードを利用してポートレットを作成します。
宣言によってプロバイダを指定できます。
各データベース・プロバイダから提供されているのより多くの機能を利用できます。
標準のJavaテクノロジ(サーブレットやJSPなど)を使用してWebプロバイダのポートレットを開発できます。
Webプロバイダを使用してポートレットを公開するには、ポートレットを管理し、SOAPを使用してOracle Portalと通信できるプロバイダを作成する必要があります。Webプロバイダを使用してポートレットを公開する方法の詳細は、6.3項「Oracle JDeveloperを使用したJPS準拠のポートレットの構築」を参照してください。
Web Services for Remote Portlets(WSRP)はWebサービスの標準です。この標準によって、ポータルまたは他の中間Webアプリケーションを使用する、ユーザー対象で視覚的なWebサービスのプラグ・アンド・プレイが可能になります。その標準性により、特定の言語(JSR 168、.NET、Perlなど)をベースとする標準対応のコンテナと任意のWSRPポータル間の相互運用が可能です。このため、WSRP対応のコンテナにデプロイされたポートレットは、その言語に関係なく、この標準をサポートするあらゆるポータル上にレンダリングできる。アーキテクチャの視点からみると、WSRPプロデューサは、Webプロバイダによく似ています。WSRPポータル・アーキテクチャの詳細は、「WSRPとJPSの関連」を参照してください。
ポートレットをWSRPプロデューサとして公開するには、ポートレットを管理するプロデューサを作成する必要があります。WSRPの詳細は、Oracle Technology NetworkでWSRPおよびJSR 168標準についてのページを参照してください。WSRPプロデューサとしてポートレットを公開する方法の詳細は、6.3.3項「Oracle WebLogic ServerへのJSR 168ポートレットのデプロイ」を参照してください。また、Oracle Portal Verification Serviceを使用して、WSRPプロデューサをオンラインでテストすることもできます。
http://portalstandards.oracle.com/portal/page/portal/OracleHostedWSRPPortal/Welcome
デフォルトでは、Portalセッション・ストアはOracle Internet Directoryから入手したユーザーのプロファイル情報を、Portalセッションの期間中保持します。
ただし、場合によってはWSRPプロデューサが、プロデューサに送られてきたWSRP UserContext情報への更新を必要とすることがあります。この情報はセッション中に変わります。この場合、ターゲット・ページの生成時にキャッシュされたユーザー情報を消去して新しい情報をOracle Internet Directoryから入手するために、アプリケーションまたはポートレット・プロデューサはブラウザを次のURLにリダイレクトします。
http(s)://server.domain.com:port/portal/pls/portal/portal.wwsec_app_user_info.flush_cache?p_requested_url=<url-encoded-target-page>
1つ以上のPL/SQLポートレットを所有するデータベース・プロバイダを作成することもできます。データベース・プロバイダとそのPL/SQLポートレットは、Oracle Metadata Repositoryデータベースに存在し、PL/SQLパッケージとして実装されます。リモート・サーバー上のデータベース・プロバイダにアクセスする場合は、連携されたPortalアダプタを使用できます(図2-3)。連携されたPortalアダプタの詳細は、『Oracle Fusion Middleware Oracle Portal管理者ガイド』を参照してください。
データベース・プロバイダは、PL/SQLを使用してデータ集約型の操作を実行する必要がある場合は理想的です。Oracle Portalのユーザー・インタフェース、またはPDKで提供されるPL/SQL APIを使用してフォームまたはチャートを構築している場合がその例です。
データベース・プロバイダを使用してポートレットを公開する方法の詳細は、8.13項「プログラムを使用したプロバイダの登録」を参照してください。
図2-4は、ポートレット・プロバイダの基本的なアーキテクチャを示しています。
ユーザーがWebブラウザでポータル・ページを表示するとき、リクエストの流れは次のようになります。
ユーザーは、Webブラウザのアドレス・フィールドにURLを入力することで、Webブラウザからポータル・ページをリクエストします。
Parallel Page Engine(PPE)は、Oracle Application Serverの中間層に存在し、Oracle Portal RepositoryからPortalページ・レイアウト、ポートレットおよび(ページ・メタデータとも呼ばれる)プロバイダ情報を取得します。
注意: PPEは、リクエストされたポータル・ページをページ・メタデータに基づいて構築する役割を果します。 |
PPEは、ポートレット・コンテンツのすべてのプロバイダを問い合せます。
プロバイダは、ポートレットがHTMLコードまたはXMLコード形式のポートレット・コンテンツを生成するように、それぞれのポートレットに対して必要なコールを実行します。
プロバイダは、ポートレット・コンテンツをPPEに戻します。
PPEはポータル・ページを組み立て、Oracle Application ServerはこのページをWebブラウザに戻します。
ポートレットおよびプロバイダのアーキテクチャについては、Portal Centerにある「Portlet Development」のページを参照してください。
http://portalcenter.oracle.com
Webクリッピング、OmniPortletおよびJavaポートレットは、Webプロバイダを介してOracle Portalと通信します。Oracle Portalをインストールした後は、WebクリッピングとOmniPortletを使用できます。それぞれのプロバイダは、最初からOracle Portalに登録済みです。Javaポートレットのプロバイダは、明示的に登録する必要があります。
注意: WebクリッピングおよびOmniPortletの開発は、急速に進んでいます。これらのポートレットの最新バージョンは、OTNからダウンロードできます。これらのツールをダウンロードして使用する場合は、Oracle WebLogic Serverにデプロイし、WebプロバイダとしてOracle Portalに登録する必要があります。詳細は、『Oracle Fusion Middleware Oracle Portal管理者ガイド』を参照してください。 |
ポートレット・ビルダーで構築されたデータ駆動ポートレットは、データベース・プロバイダを介してOracle Portalと通信します。ポートレット・ビルダーのプロバイダは自動的に登録されるため、Oracle Portalに明示的に登録する必要はありません。
PL/SQLポートレットは、データベース・プロバイダを介してOracle Portalと通信します。データベース・プロバイダを明示的に登録する必要があります。
Oracle Portalには、プロバイダ登録ウィザードが用意されています。このウィザードには、ナビゲータの「プロバイダ」タブからアクセスできます。登録画面には次のセクションがあります。
プロバイダ情報: プロバイダ名、タイムアウトの詳細、実装スタイルが含まれています。
ユーザー/セッション情報: プロバイダにセッション情報を転送する方法が含まれています。
データベース・プロバイダ: 実装の所有者や名前などデータベース・プロバイダ固有の情報が含まれています。
Webプロバイダ: プロバイダのURL、プロバイダに転送されたユーザーIDおよびプロキシ情報などWebプロバイダ固有の情報が含まれています。
WSRPプロデューサ: WSDL URL、プロデューサにより提供されるセッション処理情報など、WSRPプロデューサ固有の情報が含まれています。
セッション処理に影響を与えるセクションは、「ユーザー/セッション情報」セクションとウィザードのWebプロバイダ登録ページの「Cookieドメイン」チェック・ボックスです。同じCookieドメインを使用することの詳細は、Portal Center(http://www.oracle.com/technology/products/ias/portal/portlet_development_10gr2.html
)の「Portlet Development」ページにある記事、「Sharing Session Cookies Not Allowed in PDK-Java Release 2」を参照してください。
ユーザー/セッション情報
「ユーザー/セッション情報」セクションでは、開発者がプロバイダにOracle Portalから受信させるセッション関連情報に応じて、2つのオプションのうちいずれかを選択できます。2つのオプションは次のとおりです。
パブリック: このオプションを選択すると、ユーザーの名前が「パブリック」に設定されます。プロバイダは、セッションIDやユーザーのログイン時刻などのセッション関連情報を受信しなくなります。このオプションは、プロバイダ登録API(8.13項「プログラムを使用したプロバイダの登録」を参照)のLOGIN_FREQUENCY_PUBLICと等価です。
ユーザー: このオプションを選択すると、Oracle Portalユーザーの名前がプロバイダに送信されます。このセクションには次の2つのオプションがあります。
ログイン頻度: ここでは、プロバイダにセッション情報を送る頻度、つまりユーザーがログインする必要のある頻度を決定する3つのオプション(常時、ユーザー・セッションごとに1回、なし)から、いずれかを選択できます。
Portalユーザー固有のセッション情報が必要です。: プロバイダ・コールでセッション情報を送信するかどうかを指定できます。
キャッシュは、ポータルのパフォーマンスを向上させるための重要な役割を果します。Oracle Portalでは、ページ、ポートレット、スタイル、ページ・メタデータのキャッシュなど、様々なレベルのキャッシュがサポートされています。ポートレットのキャッシュは、正確な情報をタイムリな方法でユーザーに配信するために重要です。Oracle Portalで使用できるすべてのポートレット構築テクノロジで、キャッシュはサポートされています。
Oracle Portalでは、ユーザーによるページおよびポートレットのパーソナライズがサポートされているため、ページの表示はユーザーによって異なることがあります。Oracle Portalのキャッシュは、ユーザーごとに異なるコンテンツを使用できるように設計されています。したがって、ポートレットなどのポータル・オブジェクトは、ユーザー・レベルとシステム・レベルの2つのレベルでキャッシュできます。この2つのレベルのキャッシュについて説明します。
ユーザー・レベルのキャッシュは、特定のユーザーを対象とします。格納されたキャッシュ・エントリは、そのユーザー固有のものであり、他のユーザーはアクセスできません。ユーザー・レベルのキャッシュに適したものとして、電子メールまたは株式チッカー・ポートレットなど、パーソナライズがサポートされたポートレットがあります。
システム・レベルのキャッシュでは、複数のユーザーが1つのキャッシュ・エントリを共有できます。したがって、すべてのユーザーのオブジェクトのコピーをキャッシュする必要はありません。システム・レベルのキャッシュに適したコンテンツの例として、パーソナライズが不可能な新規ポートレットまたはカスタム構築されたナビゲーション・ポートレットがあります。
キャッシュを使用せずに、Webクリッピング、OmniPortletおよびポートレット・ビルダーで様々なデータソースにアクセスすると、時間がかかる場合があります。キャッシュを有効にする場合は、Oracle PortalまたはOracle Web Cacheに対して、ポートレット・コンテンツのコピーを保持するように指示します。ポートレットがリクエストされ、そのコンテンツが以前にキャッシュされている場合、ポートレットは、データソースへの問合せとそのコンテンツの再生成に時間を費やす必要がありません。以前にキャッシュされたポートレット・コンテンツが単に戻されます。キャッシュには次のタイプがあります。
有効期限ベースのキャッシュ: ポートレット・コンテンツが静的である場合、またはコンテンツの表示が最新であることが重要でない場合は、有効期限ベースのキャッシュを検討します。有効期限ベースのキャッシュを使用する場合は、キャッシュ期間を指定する必要があります。
有効化ベースのキャッシュ: 頻繁な変更または予測不可能な変更がある動的コンテンツを含むポートレットの場合、有効化ベースのキャッシュの使用を検討します。ポートレットは、コンテンツをキャッシュ・キーに関連付け、そのキーの値をコンテンツとともに戻します。ポートレット・コンテンツがリクエストされると、ポートレットは、キャッシュ・キーに基づいて、現在のコンテンツが有効かどうかを判断します。ポートレット・コンテンツが有効な場合は、キャッシュされたコンテンツを使用できる(つまり、コンテンツが有効である)ことを示すレスポンスを戻します。有効でない場合は、新しいポートレット・コンテンツを生成し、そのコンテンツの新しいキャッシュ・キーとともに戻します。
無効化ベースのキャッシュ: 無効化ベースのキャッシュは、最も複雑ですが、最も柔軟性のあるキャッシュ形式です。有効期限ベースのキャッシュの効率性と、キャッシュ・コンテンツを任意の時点で無効化する機能が必要な場合は、無効化ベースのキャッシュの使用を検討します。Oracle Web Cache内のオブジェクトは、明示的に無効化されるまで有効とみなされます。
Webクリッピング、OmniPortletおよびポートレット・ビルダーで構築されたポートレットには、ポートレットがキャッシュされる期間を指定できます(有効期限ベースのキャッシュ)。さらに、WebクリッピングおよびOmniPortletで構築されたポートレットは、エンド・ユーザーがポートレットをパーソナライズすると、自動的にリフレッシュされます。
Javaポートレットでは、有効期限ベース、有効化ベース、無効化ベースの3種類のキャッシュがサポートされています。Javaポートレットでは、無効化ベースのキャッシュを、有効期限ベースまたは有効化ベースのキャッシュのいずれかと組み合せることができます。
また、ポートレットのすべてのコンテンツをキャッシュすることに加えて、Edge Side Include(ESI)を使用してポートレットのフラグメントをキャッシュできます。
ここでは、様々なタイプのポートレットの構築に使用できる開発ツールについて説明します。
OmniPortlet、Webクリッピングおよびポートレット・ビルダーでは、ブラウザ・ベースのウィザードを開発ツールとして使用します。
任意のJava開発環境を使用してJavaポートレットを作成できますが、プロフェッショナルな統合開発環境(IDE)であるOracle JDeveloperを使用することをお薦めします。他のIDEも検討できますが、PDKには、Javaポートレット・ウィザードを組み込むOracle JDeveloperプラグインが含まれているため、Javaポートレットの開発作業を最小限にできます。
Javaポートレット・ウィザードでは、JSR168とPDK-Javaの両方のポートレットに対する開始用のスケルトンおよびファイル構造が生成されます。スケルトンに追加する必要があるのは、独自のビジネス・ロジックのみです。また、Oracle JDeveloperを使用してアプリケーションをパッケージ化し、Oracle WebLogic ServerなどのJ2EEコンテナにデプロイできます。ポートレット・プロバイダのテストにも使用できます。デプロイする予定のプラットフォームのバージョンと一致する場合は、開発用Javaポートレット・ランタイム環境としてOracle JDeveloperに付属している、事前構成されたOracle WebLogic Serverを使用することをお薦めします。
PL/SQLポートレットの開発時に、Oracle PortalのPL/SQL APIをコールすることで、Oracle PortalにアクセスするPL/SQLプログラム・ユニットを作成できます。このアクセスを可能にするには、Oracle Portalがインストールされているデータベースと同じデータベースにプロバイダのスキーマを作成して、プロバイダおよびポートレットPL/SQLパッケージを格納します。このプロバイダのスキーマには、Oracle PortalのPL/SQL APIに対する実行権限が付与されている必要があります。
データベース・プロバイダおよびPL/SQLポートレットの開発を容易にするために、PL/SQLジェネレータを使用できます。PL/SQLジェネレータは、データベース・プロバイダとそのPL/SQLポートレットに関するインストール可能なPL/SQLコードを作成する、ホスティング対象のユーティリティです。PL/SQLジェネレータは、プロバイダおよびポートレットの定義をXMLファイル形式で受信するWebアプリケーションです。プロバイダおよびポートレットで使用するXMLタグの構文は、PDK-JavaでWebプロバイダを定義するために使用するXMLタグのサブセットです。PL/SQLジェネレータは、SQL*Plusから実行できるSQLスクリプトを出力します。このスクリプトには、プロバイダおよびポートレットのパッケージをインストールするためのSQLコマンドが含まれています。
ホスティングされるPL/SQLジェネレータは、OTNの「Oracle Portal Developer Kit」ページで入手できます。
http://www.oracle.com/technology/products/ias/portal/pdk.html
Oracle Portalでは、図2-5に示すとおり、2種類のポートレット作成スタイルがサポートされています。
この図では、「開発後に追加する」ポートレットの作成は、通常、ポートレット開発者のタスクで、「その場で開発する」ポートレットの作成は、ページ設計者の責任であることを示しています。
OmniPortletとWebクリッピングはどちらも、その場で開発するポートレット作成スタイルを提供します。最初に、ポータル・ページにポートレットを追加し、次に、そのページのポートレットをその場で定義します。
通常、Javaポートレットは開発後に追加するポートレット作成スタイルを提供します。Oracle JDeveloperでは、Oracle PDK-JavaおよびJSR 168ポートレットの作成に役立つ2つのウィザードを使用できます。ウィザードは、ポートレットの作成に必要な基本ファイルを生成します。開発者は、ポートレットのロジックは手動でコーディングします。Javaポートレットの開発の流れは、ポートレットを作成し、プロバイダにポートレットをデプロイし、プロバイダをOracle Portalに登録して、ポートレットをページに追加するというものです。
注意: 広範囲のコーディングによって、その場で開発するJavaポートレットを作成できます。たとえば、WebクリッピングおよびOmniPortletは、ともにJavaポートレットです。 |
ポートレット・ビルダーでは、最初にポートレットを定義します。以前に定義されたポートレットをポートレット・リポジトリで使用できるため、それらのポートレットをページに追加できます。ただし、単純なポートレットの場合は、OmniPortletおよびWebクリッピングと同様に、ポートレット・ビルダーでもその場での開発が提供されます。
注意: ポートレット・ビルダーのその場での開発テクノロジで構築されたポートレットは、ナビゲータを使用して構築されたポートレットに比べいくつか制限があります。 |
Javaポートレットと同様に、PL/SQLポートレットでは通常、「開発後に追加する」作成方法に従います。PL/SQLポートレットをその場で開発するには、広範囲のコーディングが必要です。たとえば、ポートレット・ビルダーで提供されているその場で開発する単純なポートレットは、PL/SQLで作成されています。
この項では、ポートレット構築ツールをユーザー・インタフェースの制御の観点から説明します。
OmniPortletでは、スクロール・ニュース、表、チャートなど、いくつかの異なるビルトイン・レイアウトを使用できます。また、このビルトインのHTMLレイアウトを使用して、HTMLおよびJavaScriptを使用するポートレットのルック・アンド・フィールをパーソナライズすることもできます。
JavaポートレットおよびPL/SQLポートレットでは、ポートレットのユーザー・インタフェースを完全に制御できます。ポートレットでは、Oracle Portalページのレンダリング・ルールに準拠しているHTMLコンテンツを自由に生成できます。
この項では、ポートレット構築ツールを、他のソースからコンテンツを組み込む機能の観点から説明します。
リモートWebサイトのコンテンツをソースの位置で表示されているとおりに表示するポートレットの場合、使用する最適なツールはWebクリッピングです。Webクリッピングでは、ソースHTMLページの変更をある程度許容できます。クリップされた表がソース・ページ内のある場所から別の場所に移動した場合、Webクリッピング・エンジンは、内部の「ファジー・マッチ」アルゴリズムを使用してその表を再度検出できます。Webクリッピングで構築されたポートレットでは、リモートWebサイトへのセッションも管理できます。また、Webクリッピングでは、エンド・ユーザーによるHTMLフォーム値のパーソナライズがサポートされています。
リモートWebサイトのデータのみを使用してレイアウトを使用しないポートレットの場合、最善の選択はOmniPortletです。データを取得して処理し(書式設定、フィルタ処理など)、表、チャートまたはニュース形式でポートレットに表示するには、OmniPortletを使用します。OmniPortletは、WebページのデータをそのWebページのデータソースを使用して抽出する強力なツールです。
Javaポートレットは、下位レベルのJavaネットワークAPIを利用して、リモートWebサイトからコンテンツを取得し、処理できます。不必要な開発作業を避けるために、WebクリッピングまたはOmniPortletが実用的な選択肢でないことを必ず確認してから、Javaを選択してください。
PL/SQLポートレットでは、UTL_HTTPパッケージのプロシージャとファンクションを使用して、インターネット上のデータにアクセスするためにWebサービスと通信できます。このパッケージは、SQLおよびPL/SQLからHTTPコールアウトを実行します。また、このパッケージは、HTTPSとも呼ばれるSecure Sockets Layerプロトコル(SSL)上のHTTPを、直接またはHTTPプロキシを介してサポートします。他のインターネット関連のデータ・アクセス・プロトコル(ファイル転送プロトコル(FTP)やGopherなど)も、これらのプロトコルをサポートしているHTTPプロキシ・サーバーを使用することでサポートされます。
ユーザーは、リンクまたはフォームのボタンなど、ポートレット内のアクティブ要素を使用してリモートURLにナビゲートできます。たとえば、ニュース・ポートレットでは、ハイパーリンクをクリックして、関心のあるニュースの詳細情報が表示されているニュース・サイトにナビゲートできます。たとえば、ユーザーがニュース・ポートレットのニュース・サマリー・リンクをクリックすると、そのページを離れて、ニュース・サイトに移動します。
リクエストされたコンテンツを同じポートレット・コンテナ内にレンダリングすることで、ユーザーをポータル・ページのコンテキスト内に留まらせることが必要な場合があります。たとえば、ユーザーがニュース・ポートレットのニュース・サマリー・リンクをクリックすると、ポートレットが詳細なニュース記事でリフレッシュされます。
Webクリッピング・ポートレットは、インライン・コンテンツ・レンダリングを実行するためのURLリライティングをサポートします。ソースWebサイトを起点とするリンクを処理し、それをリライトすることで目的に機能を実伝できます。
次の3つのオプションから選択できます。
ポートレット内のURLをリライトしないように選択できます。この場合、リンクをクリックすると、ユーザーはPortalを離れ、クリッピングを提供しているWebサイトに移動します。リンク先が認証を必要とする場所の場合は常に、ユーザーがログイン情報を入力しないと、リンク先は表示されません。
「外部アプリケーション」にWebクリッピング・プロバイダを登録してクリッピングで認証を必須にする場合には、ポートレット内のすべてのURLをリライトして「サーバーにログイン」を指すようにWebクリッピングに指示できます。この場合、ナビゲーションを行うと、ユーザーがOracle Portalを離れる一方で、「サーバーにログイン」が使用されてブラウザに「外部アプリケーション」へのログイン画面が表示されます。
インライン・レンダリングを選択すると、ポートレット内のすべてのURLがポータル・ページを指すようにリライトされ、Webクリッピング・ポートレット内でのブラウズはすべてOracle Portal内に留まります。「外部アプリケーション」にWebクリッピング・プロバイダを登録すると、Webクリッピング・プロバイダはその外部アプリケーションにログインさせられます。この場合、Webクリッピング・プロバイダを介したPortal内のナビゲーションが、この外部アプリケーションによって認証されます。
OmniPortletでは、URLリライティングは直接提供されませんが、パブリック・ポートレット・パラメータとイベントを使用することで、インライン・レンダリング機能を実現できます。イベントは、OmniPortletが存在しているポータル・ページにマップする必要があります。
Javaポートレット内のリンクとボタンは完全に制御できるため、インライン・レンダリング機能を簡単に実装できます。インライン・レンダリングを実現するには、ページのURLにプライベート・ポートレット・パラメータを追加する必要があります。
ポートレット内でStrutsを使用する場合、コンテンツは、PDK-Struts統合フレームワークによって常に同じポートレット・コンテナにレンダリングされます。
ポートレットが複数のJSPで構成される場合(サーベイ内またはウィザード内の複数のステップなど)、ポートレットでは特別なパラメータを使用して、コンテンツのレンダリングに使用するJSPを実行時に指定できます。
ポートレット・ビルダーで構築されたポートレットでは、固有のインライン・レンダリングはサポートされていません。ただし、SQLベースのレポートおよびチャート内にリンクを構築し、リンクが特定のポータル・ページを指すようにできます。必要に応じて、パラメータをポータル・ページに渡し、ポートレット・パラメータにマップすることもできます。
この項では、ポートレット構築ツールをチャート作成機能の観点から説明します。
OmniPortletは、棒、折れ線および円の各チャートをサポートします。OmniPortletのチャートは、動的に生成されるイメージで、ハイパーリンクを含むことができます。
Javaポートレットでは、Oracle Business Intelligence(BI)Beanを使用して、高度なチャート・ポートレットをプログラムで作成できます。
注意: Oracle ReportsおよびOracle BI Discovererのポートレットでは、専門的なグラフを作成するためにBI Beanが使用されます。 |
Oracle Portalには、ページ・パラメータ、パブリック・ポートレット・パラメータおよびプライベート・ポートレット・パラメータの3種類があります。これらのパラメータは次のように説明できます。
ページ・パラメータ: ページ・パラメータは、ページに値を渡すために使用します。ページ・パラメータを使用すると、ページがコールされた場所およびページを表示しているユーザーに応じて、ページに表示される情報を変更できます。また、ページ設計者は、ページ・パラメータを使用して複数のポートレットに同じ値を渡すことでページ上のポートレットを同期化できます。このように、ポートレットとページ・パラメータを組み合せることで、ページ上のポートレットを再利用および調整できる機能が提供されます。この機能がないと、異なるパラメータ値を使用するために、ポートレットを個別にコーディングすることが必要になります。
パブリック・ポートレット・パラメータ: パブリック・ポートレット・パラメータは、ポートレットに値を渡すのに使用します。ポートレット・パラメータを使用すると、ポートレットに表示される情報を、特定のページまたは特定のユーザーに対して固有にできます。ポートレット・パラメータは、ポートレット開発者によって作成され、ユーザー・インタフェースを介してページ設計者に公開されます。ページ設計者は、ポートレットをページに追加した後、パブリック・ポートレット・パラメータに値を割り当てることで、ポートレットに表示される情報をそのページ固有にできます。
ページ設計者は、特定の値(定数)、システム変数(ポータル・ユーザー名など)またはページ・パラメータを指定することで、パブリック・ポートレット・パラメータに値を割り当てることができます。ポートレットは実行時に、指定されたソースから値を受信します。このように、ページ設計者は、パラメータのソースを完全に制御し、開発者は、ポートレットに送信したデータの使用方法を完全に制御できます。
プライベート・ポートレット・パラメータ: プライベート・ポートレット・パラメータを使用すると、ポートレットに内部ナビゲーションを実装できます。ページがリクエストされるたびに、ポートレットにパラメータを渡すことができます。プライベート・ポートレット・パラメータは、同じポートレット・インスタンス内で排他的に渡すことができます。
プライベート・ポートレット・パラメータを使用するために、フル・ページをリフレッシュする必要はありません。ポータル・ページ全体をリフレッシュせずにポートレットのみをリフレッシュするリンクを、ポートレット内に作成できます。これにより、影響を受けるポートレットのコンテンツのみが更新され、ページ内のそれ以外の部分は更新されません。これをプログラム的に設定する方法の詳細は、第7章「Javaポートレットの拡張」の「ページの部分的なリフレッシュ」を参照してください。
パブリック・ポートレット・パラメータがサポートされているポートレットを使用すると、ページ設計者は、ポートレット・インスタンスごとにポートレットのデータ入力を調整できます。この場合、ポートレット開発者は、ポートレット・ロジックに集中でき、ページ設計者は、ポートレットを簡単に再利用してページとポートレット間の相互作用を処理できます。
この章で説明した5つのポートレット構築テクノロジ(OmniPortlet、Webクリッピング、Javaポートレット、ポートレット・ビルダーおよびPL/SQLポートレット)のすべてが、パブリック・ポートレット・パラメータをサポートしています。OmniPortlet、Webクリッピングおよびポートレット・ビルダーでは、ウィザード・インタフェースを介して完全なサポートが提供されます。Javaポートレットに対しては、プログラムまたはJavaポートレット・ウィザードを使用してパブリック・ポートレット・パラメータのサポートを追加できます。PL/SQLポートレットでは、プログラムでのみパブリック・パラメータがサポートされます。
注意: JSR 168標準では、パブリック・ポートレット・パラメータの概念は提供されません。Javaポートレットでパブリック・ポートレット・パラメータを利用する場合は、PDK-Javaを使用する必要があります。 |
この項では、ポートレット構築ツールをプライベート・パラメータのサポートの観点から説明します。
OmniPortlet、Webクリッピングおよびポートレット・ビルダーでは、ポートレット開発者に対しプライベート・ポートレット・パラメータへのアクセスが提供されません。
イベントとは、ポータル・ページを表示するように定義したユーザー・アクションです。ユーザー・アクションには、ポートレット内のリンクまたはボタンに対するクリックが含まれます。ページ設計者は、ページ上のポートレットでイベントが発生したときに実行する内容を指定します。イベントの発生時、ページ設計者は、現在のページを再表示したり、必要に応じてそのページのパラメータに値を渡して、ユーザーを別のポータル・ページにナビゲートすることもできます。
この項では、ポートレット構築ツールを認証機能のサポートの観点から説明します。
WebクリッピングおよびOmniPortletを使用してポータル・ページ上に構築されたポートレットは、セキュリティ・マネージャを使用して表示/非表示を動的に切り替えることができます。WebクリッピングおよびOmniPortletでは、セキュリティ・マネージャはユーザー・インタフェースを介して公開されませんが、XMLプロバイダの定義ファイルを編集することで適用できます。
PDKでは、Javaポートレットに対するセキュリティ・マネージャがいくつか提供されています。次に例を2つ示します。
グループ・セキュリティ・マネージャ: グループ・セキュリティ・マネージャを使用すると、特定のグループのメンバーであるユーザーにポートレットは表示されますが、メンバーでないユーザーには表示されません。
認証レベル・セキュリティ・マネージャ: 認証レベル・セキュリティ・マネージャを使用すると、ユーザーの認証レベルに基づいてポートレットへのアクセスを制御できます。たとえば、ポートレットを、パブリック・ユーザーに対して非表示にし、認証されたユーザーに対して表示します。
JSR 168ポートレットでは、標準のサーブレット・メカニズムがサポートされています。
この項では、ポートレット構築ツールを他の言語に対するサポートの観点から説明します。
Webクリッピング、OmniPortlet、JavaポートレットおよびPL/SQLポートレットでは、ポータル・ユーザーが選択した言語でテキスト情報が表示されます。
この項では、ポートレット構築ツールを外部アプリケーションに対する認証の観点から説明します。
Webクリッピングの外部アプリケーション・フレームワークとの統合では、外部Webサイトへのパスワードの保存を完全に自動化するメカニズムが提供されます。実行する必要があるのは、プロバイダ登録時に外部アプリケーションIDをWebクリッピング・プロバイダに関連付ける操作のみです。
OmniPortletでは、データソースがパスワードで保護されている場合、接続情報を保存できます。データソースへのアクセスに対する接続情報は、すべてのユーザーで共有するか、またはユーザーごとに保存できます。OmniPortletでは、データベース接続情報に加え、HTTP Basic認証に使用するユーザー名とパスワードのペアも格納できます。接続情報は、OracleデータベースにあるOmniPortletの保護データ・リポジトリに格納されます。
Javaポートレットは、Oracle Internet DirectoryなどのLDAPサーバーに加え、外部アプリケーション・フレームワークともプログラムで統合できます。
Oracle HTTP Server上の認証モジュールであるmod_ossoを使用して、シングル・サインオンを可能にするPL/SQLポートレットを構築できます。mod_ossoは、パートナ・アプリケーションを統合するために初期のリリースで使用されていたSingle Sign-On SDKの単純な代替モジュールです。mod_ossoを使用すると、Single Sign-On Serverへの単一のパートナ・アプリケーションとして機能することで、認証処理が簡素化されます。
PL/SQLポートレットは、外部アプリケーション・フレームワークとプログラムで統合できます。