ポートレット開発ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容

ポートレットの構築

この章では、ポートレット ウィザード、製品付属のポートレットの使用を含め、ポートレットの最も一般的な作成方法について説明します。また、WebLogic Portal でサポートされている各ポートレット タイプの構築手順も説明します。

この章に進む前に、「ポートレットの開発について」に記述されているポートレット作成に関する概念を把握する必要があります。

この章の内容は以下のとおりです。

 


サポート対象ポートレット タイプ

WebLogic Portal では、次のポートレット タイプがサポートされています。

各ポートレット タイプの詳細については、「ポートレット タイプ」を参照してください。

 


ライブラリ モジュール内のポートレット

ライブラリ モジュール内にあるポートレットなどのリソースをポータル アプリケーションにコピーし、必要に応じて変更することができます。プロジェクトに存在するポートレットは、ライブラリ モジュール内の同じ名前のポートレットよりも優先されます。使用可能なポートレットのリストを表示するには、ワークベンチのマージ済みプロジェクト ビューを使用します。ライブラリ モジュール内のリソースは、斜体で表示されます。ツリーを展開すると、各モジュールに格納されたリソースを表示できます。すべてのライブラリ モジュールと、ファイル システム上のライブラリ モジュールの場所を示す参照リストを表示するには、[ウィンドウ|設定|WebLogic|ライブラリ モジュール] を選択します。

使用するポートレットが見つかったら、マージ済みプロジェクト ビュー内でポートレットを右クリックし、[プロジェクトにコピー] オプションを選択します。図 5-1 は、[プロジェクトにコピー] オプションが選択されているマージ済みプロジェクト ビュー内のライブラリ モジュール ポートレットの例を示します。

注意 : GroupSpace サンプル アプリケーションに属するポートレットは、GroupSpace 対応でないアプリケーションでは使用できません。
注意 : J2EE ライブラリのリソースをプロジェクトにコピーすると、将来 WebLogic Portal 製品を更新するときに、これらのリソースに影響する製品の変更を手動で組み込む作業が必要になる場合があります。今後配布されるパッチをインストールした場合、WebLogic Portal では、コピーされた J2EE ライブラリ リソースがプロジェクトにないコンフィグレーションのみサポートされます。
図 5-1 マージ済みプロジェクト ビューからプロジェクトにコピーされるポートレット

マージ済みプロジェクト ビューからプロジェクトにコピーされるポートレット

ライブラリ モジュールの詳細については、『ポータル開発ガイド』を参照してください。

 


ポートレット ウィザード リファレンス

新規のポートレットを作成する場合に使用できる重要なツールの 1 つに WebLogic Portal のポートレット ウィザードがあります。以降の節では、ポートレット ウィザードについて詳しく説明します。

通常、このウィザードの最初のダイアログでポートレット タイプを選択します。既存のリソースに基づいてポートレットを生成する場合、可能であればポートレット ウィザードによって常にポートレット タイプが自動的に検出されます。

作成順序 - リソースが先の場合とポートレットが先の場合

この節では、ポートレットの作成を開始する 2 つの方法の概要を示します。その方法とは、ポートレットのリソース情報またはリソース ファイルを先に作成する方法と、ポートレット自体を先に作成する方法です。

リソースを先に作成する場合

ポートレットの基礎として使用する JSP ファイルなどがすでに存在する場合があります。JSP ファイル以外でも、リソースをポータル (コンテンツ セレクタなど) にドラッグすると、ポートレット ウィザードが自動的に起動します。

ポートレットの基礎として使用するリソースがすでにある場合、以下の手順を実行します。

  1. Workshop for WebLogic でポータルの [.portal] ファイルを作成するか、開きます。
  2. JSP ファイルなどのリソースをエディタのデザイン ビューにあるポータルのプレースホルダ領域のいずれかにドラッグします。
  3. Workshop for WebLogic で、図 5-2 の例に示すような確認ダイアログが表示されます。

    図 5-2 リソースをドラッグ アンド ドロップすると表示されるポートレット ウィザードのメッセージ


    リソースをドラッグ アンド ドロップすると表示されるポートレット ウィザードのメッセージ

    [はい] をクリックすると、リソース ファイルの情報を使用してポートレットの作成プロセスが開始され、[ポートレットの詳細] ダイアログが表示されます。図 5-3 に例を示します。

    図 5-3 リソースをドラッグ アンド ドロップすると表示されるポートレット ウィザードの詳細ダイアログの例


    リソースをドラッグ アンド ドロップすると表示されるポートレット ウィザードの詳細ダイアログの例

ポートレットを先に作成する場合

最初の段階でソース ファイルがまだ存在しない場合、[新しいポートレット] ダイアログとポートレット ウィザードを使用してポートレットを作成できます。そのためには、ポータル Web プロジェクト内のフォルダを右クリックして、[新規|ポートレット] を選択します。図 5-4 に、[新しいポートレット] ダイアログの例を示します。

図 5-4 ポートレット ウィザードの新しいファイル ダイアログ

ポートレット ウィザードの新しいファイル ダイアログ

親フォルダを確認または変更し、ポートレット名を指定して [終了] をクリックすると、ポートレット ウィザードが起動し、[ポートレット タイプの選択] ダイアログが表示されます。図 5-5 にダイアログの例を示します。

図 5-5 ポートレット ウィザード - [ポートレット タイプの選択] ダイアログ

ポートレット ウィザード - [ポートレット タイプの選択] ダイアログ

各ポートレット タイプの作成手順の詳細については、「各ポートレット タイプの構築方法」を参照してください。

ポートレット ウィザードの起動

ポートレット ウィザードは、Workshop for WebLogic で以下のいずれかの操作を実行すると起動します。

[新しいポートレット] ダイアログ

[ファイル|新規|ポートレット] を使用して新規ポートレットを作成する場合は、ポートレット ウィザードが起動する前に [新しいポートレット] ダイアログが表示されます。図 5-4 に、[新しいポートレット] ダイアログの例を示します。

デフォルトで、ポートレットを追加するために選択した場所が親フォルダになります。

このダイアログでは、新規ポートレット用のプロジェクトおよびディレクトリを選択し、ポートレット ファイルの名前を指定する必要があります (このファイル名は、ポートレットの作成後に [パッケージ・エクスプローラ] ビューに表示されます)。[終了] ボタンは最初は無効になっています。このボタンは、有効なプロジェクトまたはディレクトリおよびポートレット名を選択した場合に有効になります。このダイアログのフォルダ ツリーで無効なポータル プロジェクトを選択すると、ダイアログの最上部近くのステータス領域に、当該プロジェクトが有効なポータル プロジェクトではないことを示すエラー メッセージが表示されます。有効なプロジェクト (使用できるものがある場合) が選択されるまで次の手順に進むことはできません。

注意 : WebLogic Portal バージョン 9.2 では、ポータル以外のプロジェクトをポータル プロジェクトに変換するオプションは用意されていません。既存のプロジェクトにポータル ライブラリ モジュールを統合する方法については、『ポータル開発ガイド』を参照してください。

[ポートレット タイプの選択] ダイアログ

ポートレット ウィザードを起動すると、作業しているプロジェクトのタイプに基づいて有効なポートレット タイプが決定され、[ポートレット タイプの選択] ダイアログに表示されます。

たとえば、WSRP プロデューサ機能 (および必要な付属機能) のみがインストールされたポータル Web プロジェクトで作業している場合は、ポータル ライブラリのフルセットがダイアログに含まれるわけではありません。この場合は、JPF、JSF、ブラウザ、および Struts ポートレット タイプのみが有効な選択項目となり、他のポートレット タイプは [ポートレット タイプの選択] ダイアログに表示されません。

プロジェクト タイプに基づく有効なポートレット タイプが存在しない場合は、情報メッセージが表示されます。

図 5-8 に、[ポートレット タイプの選択] ダイアログの例を示します。

図 5-8 ポートレット ウィザード - [ポートレット タイプの選択] ダイアログ

ポートレット ウィザード - [ポートレット タイプの選択] ダイアログ

[ポートレットの詳細] ダイアログ

ポートレット タイプの選択後に表示される [ポートレットの詳細] ダイアログは、作成するポートレットのタイプに応じて異なります。[ポートレットの詳細] ダイアログの各データ入力フィールドの詳細については、「各ポートレット タイプの構築方法」に記載されているポートレット構築タスクを参照してください。

 


各ポートレット タイプの構築方法

以下の節では、WebLogic Portal でサポートされている各ポートレット タイプの作成方法を説明しています。

JSP ポートレットと HTML ポートレット

JSP ポートレットは単純な JSP ファイルによく似ています。多くの場合、既存の JSP ファイルを使用してポートレットを構築できます。ポートレットが単純で、複雑なビジネス ロジックの実装を必要としない場合、JSP ポートレットをお勧めします。さらに、JSP ポートレットは、単一ページのポートレットに最適です。

ポートレット ウィザードの起動」で説明するように、ポートレット ウィザードを起動する方法はいくつかあります。ここでは、既存の JSP ファイルをベースにポートレットを作成する場合を想定します。

JSP ポートレットを作成するには、以下の手順を実行します。

  1. JSP ファイルを右クリックし、メニューから [ポートレットの生成] を選択します。
  2. ポートレット ウィザードの [ポートレットの詳細] ダイアログが表示されます。図 5-9 に例を示します。

    図 5-9 ポートレット ウィザード - JSP ポートレットの詳細ダイアログ


    ポートレット ウィザード - JSP ポートレットの詳細ダイアログ

  3. 表 5-1 のガイドラインに従って、このポートレットに使用する値を指定します。
  4. 表 5-1 ポートレット ウィザード - JSP ポートレットのデータ入力フィールド
    フィールド
    説明
    タイトル
    [タイトル] の値はすでに入力されている場合がある。必要に応じて値を変更できる。
    コンテンツ URI
    [コンテンツ パス] (JSP の場所) の値はすでに入力されている場合が多い。必要に応じてこの値を変更できる。
    エラー ページ URI
    エラーが発生した場合にデフォルト エラー ページが表示されるようにするには、チェック ボックスを選択して目的の URI へのパスを指定する。
    タイトル バーあり
    ポートレットでタイトルバーを使用する場合は、このチェック ボックスを選択する。表示されるタイトルは、[タイトル] フィールドの値と一致する。ポートレットの状態またはモードを変更可能にするには、ポートレットにタイトルバーが必要。
    状態
    ユーザがポートレットを最小化、最大化、フロート、または削除できるようにするには、目的のチェック ボックスを選択する。ポートレットの状態の詳細については、「ポートレットの状態」を参照。
    使用できるモード
    ポートレットからヘルプへのアクセスを許可したり、ユーザがポートレットを編集できるようにしたりすることが可能。
    オプションを有効にするには、目的のチェック ボックスを選択し、適切な機能を提供する JSP ページへのパスを指定する。ポートレットのモードの詳細については、「ポートレット モード」を参照。

  5. [作成] をクリックします。
  6. Workshop for WebLogic のウィンドウが更新され、表示ツリーに [Portlet_Name.portlet] ファイルが追加されます。デフォルトで、コンテンツ ファイルと同じディレクトリにポートレット ファイルが配置されます。

Java ポートレット

Java ポートレットは、ポートレット ポータビリティのルールを規定する JSR 168 仕様に基づきます。Java ポートレットは、各種ポートレット コンテナ間でのポータビリティを重視するソフトウェア会社などの企業に適しています。

WebLogic Portal は、JSR 168 仕様の規定を上回る機能を Java ポートレット用に備えています。たとえば、スレッディング オプションを設定したり、バッキング ファイルを使用したりすることができます。これらの機能を実装するために、WebLogic Portal では、他のポートレット タイプと同じ方法で作成する通常の [.portlet] ファイルだけでなく、標準的な [portlet.xml] ファイルと [weblogic-portlet.xml] ファイルも使用されます。

Java ポートレットの構築

Java ポートレットを作成するには、以下の手順を実行します。

  1. ポートレットを保存するフォルダを右クリックし、[新規|ポートレット] を選択します。
  2. [新しいポートレット] ダイアログが表示されます。

  3. ポートレットの名前を入力し、[作成] をクリックします。
  4. ポートレット ウィザードに [ポートレット タイプの選択] ダイアログが表示されます。

  5. [Java ポートレット] ラジオ ボタンを選択し、[次へ] をクリックします。
  6. [Java ポートレットの詳細] ダイアログが表示されます。図 5-10 に例を示します。

    図 5-10 ポートレット ウィザード - [Java ポートレットの詳細] ダイアログ


    ポートレット ウィザード - [Java ポートレットの詳細] ダイアログ

  7. 該当するラジオ ボタンを選択して、新規ポートレットを作成するか、既存のポートレットを ([portlet.xml] ファイル内のエントリとして) 更新するかを指定します。
  8. 新規ポートレットを作成する場合、WebLogic Portal では、ウィザードで入力した情報を基に、以下の 2 つのタスクが実行されます。

    • 新しい [.portlet] ファイルを作成する。
    • 新しい [portlet.xml] ファイルを作成する (これがプロジェクトで作成される最初の Java ポートレットの場合) か、WEB-INF ディレクトリ内にある [portlet.xml] ファイルにエントリを追加する。
    • ウィザードで既存のポートレットを参照することを選択した場合、ウィザードには [portlet.xml] ファイル内のすべてのエントリに対応する選択項目が表示されるため、新規 [.portlet] ファイルを作成し、それを [portlet.xml] ファイル内の既存のエントリに関連付けることができます。

  9. 表 5-2 のガイドラインに従って、このポートレットに使用する値を指定します。すべてのフィールドの入力が必須です。
  10. 表 5-2 ポートレット ウィザード - Java ポートレットのデータ入力フィールド
    フィールド
    説明
    [新しいポートレット] -
    [タイトル]
    [タイトル] の値は、[portlet.xml] ファイルの <title> 要素に対応する。[.portlet] ファイルのタイトルは、[portlet.xml] ファイルのタイトルに優先する。
    [新しいポートレット] -
    [定義ラベル]
    この値は、ポートレットの定義ラベルとして機能する。さらに重要なことは、この値が portlet.xml デプロイメント記述子の <portlet-name> 要素に対応するという点である。この値はユニークであることが必要。
    [新しいポートレット] -
    [クラス名]
    有効なクラス名を入力するか、[参照] をクリックして Java クラスに移動する。この値は、<portlet-class> 要素に対応する。
    現時点で存在しない javax.portlet.Portlet クラスを入力する場合、[作成] をクリックすると、対応する [.java] ファイルが作成される。
    [既存のポートレット] - [リストから選択]
    このドロップダウン メニューは [portlet.xml] ファイルを基に設定され、値として <portlet-name> 要素の値が使用される。
    既存のポートレットを選択すると、[タイトル] フィールドと [クラス名] フィールドは読み込み専用フィールドとして表示される。

    注意 : 既存の Java ポートレットを Workshop for WebLogic にインポートした場合は、JSR 168 ポートレット taglib の WebLogic Portal 実装について [web.xml] ファイルにエントリを追加する必要はない。この taglib は暗黙的に宣言される。JSP では taglib URI として必ず http://java.sun.com/portlet を使用すること。

  11. [作成] をクリックします。
  12. 入力した値に基づき、ウィザードによって [.portlet] ファイルが作成され、/WEB-INF/portlet.xml にエントリが追加されるか (すでに存在する場合)、または必要な場合は当該ファイルが作成されます。

    Workshop for WebLogic に、新しく作成されたポートレットと最新のプロパティが表示されます。図 5-11 に、Java ポートレットの外観とプロパティの例を示します。

    図 5-11 Java ポートレットの外観とプロパティ


    Java ポートレットの外観とプロパティ

[portlet.xml] ファイルの [portlet-name] 属性は、[.portlet] ファイルの definitionLabel プロパティに一致します。

ポートレット作成後、プロパティ ビューでプロパティを変更することも、エディタ内でポートレットをダブルクリックして生成された Java クラスを表示および編集することもできます。

注意 : [.portlet] ファイルを削除すると、対応するエントリは [portlet.xml] ファイル内に残ります。[portlet.xml] ファイルは、定期的にクリーンアップしたほうがよい場合もあります。これらの余分なエントリは、ポータル実行時に問題を引き起こすことはありませんが、ログ ファイルにエラー メッセージが生成されます。

Java ポートレット デプロイメント記述子

Java ポートレットには、portlet.xml という個別のデプロイメント記述子ファイルが WEB-INF ディレクトリに用意されています。さらに、[weblogic-portlet.xml] というファイルもあります。このファイルは、機能を追加するために使用できる BEA 固有のオプションのファイルです。

コード リスト 5-1 に、[portlet.xml] ファイルのエントリの例を示します。

コード リスト 5-1 単純な「Hello World」Java ポートレットの [portlet.xml] ファイルの例

<?xml version="1.0" encoding="UTF-8"?>
<portlet-app version="1.0"
   xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <portlet>
      <description>Description goes here</description>
      <portlet-name>helloWorld</portlet-name>
      <portlet-class>aJavaPortlet.HelloWorld</portlet-class>
      <portlet-info><title>Hello World!</title></portlet-info>
      <supports>
         <mime-type>text/html</mime-type>
         <portlet-mode>view</portlet-mode>
      </supports>
      <portlet-info><title>new Java Portlet</title></portlet-info>
   </portlet>
</portlet-app>

Java ポートレットを他のシステムで使用するためのパッケージ化

WebLogic Portal では、JSR 168 仕様に準拠し、各種オペレーティング システムで広く使用できる Java ポートレットが生成されます。WebLogic Portal で作成した Java ポートレットをパッケージ化するには、任意のパッケージ化/アーカイブ ツール (Workshop for WebLogic の [ファイル|エクスポート|WAR ファイル] 機能など) を使用して、[portlet.xml] ファイル、ポートレットの [.class] ファイル、ポートレットが機能するために必要なその他のファイルから、標準的な WAR ファイルを作成します。これらの必須ファイルには、WebLogic Portal JAR 以外の Java クラス、アプリケーションに含まれる BEA 以外の EJB、表示を処理する JSP または HTML ファイルも含まれる点に注意してください。

weblogic-portlet.xml による Java ポートレットのカスタマイズ

WebLogic Portal では、標準の JSR 168 仕様を上回る機能を Java ポートレットで実現できます。オプションの weblogic-portlet.xml ファイルを使用すると、機能を追加することができます。以下の節で例を示します。

フロート可能な Java ポートレット

フロート可能な Java ポートレットを作成するには、以下のサンプル コードに示すように、weblogic-portlet.xml でカスタム状態を宣言します。

    <portlet>

<portlet-name>fooPortlet</portlet-name>

<supports>

<mime-type>text/html</mime-type>

<window-state>

<name>float</name>

</window-state>

</supports>

    </portlet>

Java ポートレットへのアイコンの追加

Java ポートレットにアイコンを追加するには、以下の説明に従って [weblogic-portlet.xml] ファイルを編集する必要があります。

  1. ポータルで使用されるスキンの画像ディレクトリにアイコンを配置します。たとえば、スキン名が avitek の場合、アイコンを以下の場所に配置します。
  2. myPortal/skins/avitek/images

  3. アプリケーション パネルで [weblogic-portlet.xml] ファイルを探し、ダブルクリックして開きます。このファイルは、たとえば以下のようにポータルの WEB-INF フォルダにあります。
  4. myPortal/WEB-INF/weblogic-portlet.xml

  5. [weblogic-portlet.xml] ファイルに以下の行を追加します。
  6. <portlet>
    <portlet-name>myPortlet</portlet-name>
    <supports>
    <mime-type>text/html</mime-type>
    <titlebar-presentation>
    <icon-url>myIcon.gif</icon-url>
    </titlebar-presentation>
    </supports>
    </portlet>
  7. 上記の行を以下のように置き換えます。
    • myPortlet は、WEB-INF/portlet.xml で指定されているポートレットの名前に変更する。
    • mime-type も WEB-INF/portlet.xml の mime-type に一致させる。
    • myIcon.gif は、追加するアイコンの名前に変更する。

Java ページ フロー ポートレット

ポートレット ウィザードでは、Apache Beehive ページ フローを使用してコンテンツを取得するポートレットを構築できます。

ページ フロー ポートレットを作成するには、以下の手順を実行します。

  1. ページ フロー ポートレットを保存するフォルダを右クリックします (このフォルダは WebContent ディレクトリ内にある必要があります)。
  2. [新親|ポートレット] を選択します。
  3. [新しいポートレット] ダイアログが表示されます。

  4. ポートレットの名前を入力し、[作成] をクリックします。
  5. ポートレット ウィザードに [ポートレット タイプの選択] ダイアログが表示されます。

  6. [Java ページ フロー ポートレット] ラジオ ボタンを選択し、[次へ] をクリックします。
  7. ポートレット ウィザードの [ポートレットの詳細] ダイアログが表示されます。図 5-12 に例を示します。

    図 5-12 ポートレット ウィザード - JPF ポートレットの詳細ダイアログ


    ポートレット ウィザード - JPF ポートレットの詳細ダイアログ

  8. 表 5-3 のガイドラインに従って、このポートレットに使用する値を指定します。
  9. 表 5-3 ポートレット ウィザード - JPF ポートレットのデータ入力フィールド 
    フィールド
    説明
    タイトル
    このポートレットのタイトル。タイトルバーの表示を選択すると、タイトルバーにこの値が表示される。
    [コンテンツ パス]
    ページ フロー リクエストの URI。ここに値を入力することも、[参照] [web.xml] ファイルのコート エントリ をクリックしてクラス ピッカーを開き、該当するクラスを選択することもできる。
    クラス ピッカーを使用してページ フロー クラスを選択する場合、この完全修飾クラス名は、JPF の URI パスに変換される。JPF はプロジェクト内には存在しないが、ポートレットの作成時に [.portlet] ファイルによって参照される。
    対応するクラスがプロジェクトまたはライブラリ モジュールにない「.jpf」を入力または指定すると、ページ フローに対応する [.java] ファイルがポートレット ウィザードで作成される。複数のプロジェクト ソース ディレクトリが存在する場合、ソース ディレクトリを自分で選択して新しい [.java] ファイルを格納するようにウィザードから要求される。.java テンプレートは、この処理の一部として作成される別の .jpf を参照する。この .jpf は、新しいページ フロー クラスのパッケージ名と同じディレクトリ構造を使用する Web コンテンツ ディレクトリに作成される。
    [エラー ページ パス]
    エラーが発生した場合にデフォルト エラー ページが表示されるようにするには、チェック ボックスを選択して目的の URI へのパスを指定する。
    タイトル バーあり
    ポートレットでタイトルバーを使用する場合は、このチェック ボックスを選択する。表示されるタイトルは、[タイトル] フィールドの値と一致する。ポートレットの状態またはモードを変更可能にするには、ポートレットにタイトルバーが必要。
    状態
    ユーザがポートレットを最小化、最大化、フロート、または削除できるようにするには、目的のチェック ボックスを選択する。ポートレットの状態の詳細については、「ポートレットの状態」を参照。
    使用できるモード
    ポートレットからヘルプへのアクセスを許可したり、ユーザがポートレットを編集できるようにしたりすることが可能。
    オプションを有効にするには、目的のチェック ボックスを選択し、適切な機能を提供する JSP ページまたはページ フローへのパスを指定する。ポートレットのモードの詳細については、「ポートレット モード」を参照。

  10. [作成] をクリックします。
  11. Workshop for WebLogic のウィンドウが更新され、表示ツリーに [Portlet_Name.portlet] ファイルが追加されます。デフォルトで、コンテンツ ファイルと同じディレクトリにポートレット ファイルが配置されます。

ページ フロー ポートレットの作成プロセスを十分に理解するには、ページ フローの概念に精通していることが必要です。WebLogic Portal でのページ フローの使用の詳細については、『ポータル開発ガイド』を参照してください。

Web サービスを呼び出すページ フロー ポートレットを作成する場合は、「Web サービス ポートレット」を参照してください。

JSF ポートレット

JSF ファセットがインストールされている (つまり、ポータル Web プロジェクトを作成したときに JSF ファセットを選択した) WSRP プロデューサまたはフレームワーク Web アプリケーション用に JSF ポートレットを作成できます。

JSF ポートレットを作成するには、以下の手順を実行します。

  1. Web コンテンツ ディレクトリ内の [パッケージ・エクスプローラ] ビューを右クリックして、メニューから [新規|ポートレット] を選択します。
  2. [新しいポートレット] ダイアログが表示されます。図 5-15 に、[新しいポートレット] ダイアログの例を示します。

    図 5-13 ポートレット ウィザード - [新しいポートレット] ダイアログ


    ポートレット ウィザード - [新しいポートレット] ダイアログ

    デフォルトで、ポートレットを追加するために選択した場所が親フォルダになります。

  3. 必要な場合は親フォルダのフィールドを編集して、新規ポートレット用のプロジェクトおよびディレクトリを指定します。
  4. [終了] ボタンは最初は無効になっています。このボタンは、有効な親フォルダとポートレット名を選択した場合に有効になります。このダイアログのフォルダ ツリーで無効なポータル プロジェクトを選択すると、ダイアログの最上部近くのステータス領域に、当該プロジェクトが有効なポータル プロジェクトではないことを示すエラー メッセージが表示されます。

  5. 新規ポートレットのファイル名を入力します。
  6. [終了] をクリックして、次に進みます。
  7. ポートレット ウィザードに [ポートレット タイプの選択] ダイアログが表示されます。

  8. [Java Server Faces (JSF) ポートレット] をクリックして、[次へ] をクリックします。
  9. ポートレット ウィザードの [ポートレットの詳細] ダイアログが表示されます。図 5-14 に例を示します。

    図 5-14 ポートレット ウィザード - JSF ポートレットの詳細ダイアログ


    ポートレット ウィザード - JSF ポートレットの詳細ダイアログ

  10. 表 5-4 のガイドラインに従って、このポートレットに使用する値を指定します。
  11. 表 5-4 ポートレット ウィザード - JSF ポートレットのデータ入力フィールド 
    フィールド
    説明
    タイトル
    ポートレット タイトル。タイトルバーの表示を有効にすると、タイトルバーにこの値が表示される。
    [コンテンツ パス]
    コンテンツ URI の値。この値は、JSF 対応の [.jsp] ファイルを指す必要がある。
    [エラー ページ パス]

    注意 : エラー ページは JSF ポートレットではサポートされません。

    タイトル バーあり
    ポートレットでタイトルバーを使用する場合は、このチェック ボックスを選択する。表示されるタイトルは、[タイトル] フィールドの値と一致する。ポートレットの状態またはモードを変更可能にするには、ポートレットにタイトルバーが必要。
    状態
    ユーザがポートレットを最小化、最大化、フロート、または削除できるようにするには、目的のチェック ボックスを選択する。ポートレットの状態の詳細については、「ポートレットの状態」を参照。
    使用できるモード
    ポートレットからヘルプへのアクセスを許可したり、ユーザがポートレットを編集できるようにしたりすることが可能。
    オプションを有効にするには、目的のチェック ボックスを選択し、適切な機能を提供するファイルへのパスを指定する。ポートレットのモードの詳細については、「ポートレット モード」を参照。

  12. [作成] をクリックします。
  13. Workshop for WebLogic のウィンドウが更新され、表示ツリーに [Portlet_Name.portlet] ファイルが追加されます。

注意 : ポータル ページで複数の JSF ポートレットを使用する場合は、JSF 表示タグのすぐ後で namingContainer JSP タグを使用して、生成されるコンポーネント ツリーでのコンポーネントの命名を可能にします。このタグの詳細については、『ポータル開発ガイド』か、パッケージ com.bea.portlet.adapter.faces の「Javadoc」を参照してください。

ブラウザ ポートレット

ブラウザ ポートレット (コンテンツ URI ポートレットとも呼ばれます) は、基本的には、URL を使ってコンテンツを取得する HTML ポートレットです。ポータル プロジェクト内に含まれるデータの表示だけに限定されている他のポートレットのタイプとは違って、ブラウザ ポートレットは、ポータル プロジェクトの範囲外にある URL コンテンツを表示することができます。

ポートレット ウィザードの起動」で説明するように、ポートレット ウィザードを起動する方法はいくつかあります。ここでは、ポータル プロジェクト内の [パッケージ・エクスプローラ] ビュー ツリーを右クリックして、メニューから [新規|ポートレット ] を選択した場合を想定します。

ブラウザ ポートレットを作成するには、以下の手順を実行します。

  1. ポータル プロジェクト内のナビゲーション ツリーを右クリックして、メニューから [新規|ポートレット] を選択します。
  2. [新しいポートレット] ダイアログが表示されます。図 5-15 に、[新しいポートレット] ダイアログの例を示します。

    図 5-15 ポートレット ウィザード - [新しいポートレット] ダイアログ


    ポートレット ウィザード - [新しいポートレット] ダイアログ

    デフォルトで、ポートレットを追加するために選択した場所が親フォルダになります。

  3. 必要な場合は親フォルダのフィールドを編集して、新規ポートレット用のプロジェクトおよびディレクトリを指定します。
  4. [終了] ボタンは最初は無効になっています。このボタンは、有効な親フォルダとポートレット名を選択した場合に有効になります。このダイアログのフォルダ ツリーで無効なポータル プロジェクトを選択すると、ダイアログの最上部近くのステータス領域に、当該プロジェクトが有効なポータル プロジェクトではないことを示すエラー メッセージが表示されます。

  5. 新規ポートレットのファイル名を入力します。
  6. [終了] をクリックして、次に進みます。
  7. ポートレット ウィザードに [ポートレット タイプの選択] ダイアログが表示されます。

  8. [ブラウザ (URL) ポートレット] をクリックして、[次へ] をクリックします。
  9. ポートレット ウィザードの [ポートレットの詳細] ダイアログが表示されます。図 5-16 に例を示します。

    図 5-16 ポートレット ウィザード - ブラウザ ポートレットの詳細ダイアログ


    ポートレット ウィザード - ブラウザ ポートレットの詳細ダイアログ

  10. 表 5-5 のガイドラインに従って、このポートレットに使用する値を指定します。
  11. 表 5-5 ポートレット ウィザード - ブラウザ ポートレットのデータ入力フィールド 
    フィールド
    説明
    タイトル
    ポートレットのタイトル。この値は、Workshop for WebLogic ワークベンチのエディタ ビューのポートレットのタイトルバーに表示される。
    コンテンツ URL
    ポートレットが情報を取得するために使用するコンテンツ URL (外部 URL) の値。
    入力する URL の形式はバリデータによりチェックされ、正しい形式でない場合はメッセージが表示される。URL を変更することも、警告を無視して URL をそのまま使用し続けることもできる。
    タイトル バーあり
    ポートレットでタイトルバーを使用する場合は、このチェック ボックスを選択する。表示されるタイトルは、[タイトル] フィールドの値と一致する。ポートレットの状態またはモードを変更可能にするには、ポートレットにタイトルバーが必要。
    状態
    ユーザがポートレットを最小化、最大化、フロート、または削除できるようにするには、目的のチェック ボックスを選択する。ポートレットの状態の詳細については、「ポートレットの状態」を参照。
    使用できるモード
    ポートレットからヘルプへのアクセスを許可したり、ユーザがポートレットを編集できるようにしたりすることが可能。
    オプションを有効にするには、目的のチェック ボックスを選択し、適切な機能を提供する JSP ページへのパスを指定する。ポートレットのモードの詳細については、「ポートレット モード」を参照。

  12. [作成] をクリックします。
  13. Workshop for WebLogic のウィンドウが更新され、表示ツリーに [Portlet_Name.portlet] ファイルが追加されます。デフォルトで、コンテンツ ファイルと同じディレクトリにポートレット ファイルが配置されます。

注意 : ブラウザ ポートレットの内部実装は、ポートレット コンテンツの非同期表示により異なります。このため、プロパティ ビューに表示されるポートレット属性 [非同期コンテンツ表示] は [none] に設定され、読み込み専用です。コンテンツの非同期表示の詳細については、「ポートレット コンテンツの非同期表示」を参照してください。

Struts ポートレット

ポートレット ウィザードを使用すると、Struts モジュールに基づくポートレットを作成できます。

Struts ポートレットを作成するには、まず、既存の Struts アプリケーションをポータル Web アプリケーションに統合する必要があります。WebLogic Portal への Struts アプリケーションの統合の詳細については、『ポータル開発ガイド』を参照してください。

Struts ポートレットを作成するには、以下の手順を実行します。

  1. 生成するポートレット ファイルを格納するフォルダを作成するか、またはそのフォルダに移動します。
  2. Workshop for WebLogic の最上位メニューから、[ファイル|新しいポートレット] を選択します。
  3. [新しいポートレット] ダイアログが表示されます。

  4. ポートレットの名前を入力し、[作成] をクリックします。
  5. ポートレット ウィザードに [ポートレット タイプの選択] ダイアログが表示されます。

  6. [Struts ポートレット] ラジオ ボタンを選択し、[次へ] をクリックします。
  7. ポートレット ウィザードに図 5-17 のような [Struts モジュール パス] ダイアログが表示されます。

    図 5-17 ポートレット ウィザード - [Struts モジュール パス] ダイアログ


    ポートレット ウィザード - [Struts モジュール パス] ダイアログ

  8. Struts モジュールの相対パスを指定します。
  9. [次へ] をクリックします。

    [Struts コンフィグレーション ファイル] ダイアログが表示されます。図 5-18 に例を示します。

    図 5-18 ポートレット ウィザード - [Struts コンフィグレーション ファイル] ダイアログ


    ポートレット ウィザード - [Struts コンフィグレーション ファイル] ダイアログ

  10. Struts モジュールの XML コンフィグレーション ファイルへのパスを入力するか、このファイルを参照し、[追加] をクリックします。
  11. ベスト プラクティスとして、コンフィグレーション ファイルはポータル Web プロジェクトの WEB-INF ディレクトリに配置することをお勧めします。

  12. [次へ] をクリックします。
  13. 図 5-19 のような [Struts アクション] ダイアログが表示されます。

    図 5-19 ポートレット ウィザード - [Struts アクション] ダイアログ


    ポートレット ウィザード - [Struts アクション] ダイアログ

  14. Struts ポートレットのアクションを指定します。
  15. ドロップダウン メニューには、前の手順で選択したコンフィグレーション ファイル内のエントリに基づいてアクションが表示されます。

  16. [作成] をクリックします。

Workshop for WebLogic のウィンドウが更新され、表示ツリーに [Portlet_Name.portlet] ファイルが追加されます。デフォルトでは、ウィザードの [Struts モジュール パス] ダイアログで指定したディレクトリにポートレット ファイルが配置されます。

リモート ポートレット

リモート ポートレットの開発は、結合ポートレット環境での基本的なタスクであるため、リモート ポートレットの作成タスクの詳細については、『BEA WebLogic Portal の連合ポータル ガイド』を参照してください。

WSRP を使用すると、WebLogic ポータル内で以下のタイプのポートレットを表示できます。

Web サービス ポートレット

Web サービス ポートレットは、特別なタイプのページ フロー ポートレットであり、Web サービスを呼び出すことができます。Web サービス ポートレットを作成するには、Workshop for WebLogic と WebLogic Portal の機能を使用します。

Web サービスを呼び出すポートレットを作成するには、まず以下の必須タスクを実行する必要があります。

  1. Web サービスから Java コントロールを作成します。
  2. ページ フローから Java コントロールを呼び出します。

これらのタスクの実行手順については、BEA Workshop for WebLogic のプログラマーズ ガイドを参照してください。

セットアップ タスクを実行した後、Web サービス ポートレットを以下の手順で作成できます。

  1. Workshop for WebLogic で、ポートレットの基礎として使用するページ フローに移動します。
  2. Java ページ フロー ポートレット」で説明されている Java ページ フロー ポートレットの作成手順に従って操作します。

 


デタッチされたポートレット

WebLogic Portal では、ポップアップ形式で表示されるデタッチされたポートレットを使用できます。技術上、デタッチされたポートレットは、呼び出し側のポータル コンテキストの外にあるものとして定義されます。WebLogic Portal でサポートされているどのポートレット タイプも、デタッチされたポートレットとして表示できます。

デタッチされたポートレットの使用に関する考慮事項

デタッチされたポートレットを実装する場合は、次の点に注意してください。

デタッチされたポートレットの構築

デタッチされたポートレットの URL を作成するには、standalonePortletUrl クラスか、関連する JSP タグを使用します。

JSP ページからデタッチされたポートレット URL を作成するには、render:standalonePortletUrl という JSP タグまたはクラスを使用します。以下の例にこの JSP タグの構文を示します。

<render:standalonePortletUrl portletUri="/absolute_path/detached_portlet_name.portlet" .../>

Java コードからデタッチされたポートレットの URL を作成するには、以下の例を参考にしてください。

StandalonePortletURL detachedURL = StandalonePortletURL.createStandalonePortletURL(request, response);
detachedURL.setPortletUri("/path/to/detached.portlet");

 


ポートレット プロパティ

ポートレットのプロパティは、ポートレットをユニークに識別し、ポートレットの特性を定義する名前付きのポートレットの属性です。タイトル、定義ラベル、コンテンツ URI などの一部のプロパティは必須です。省略可能なプロパティは数多く存在し、それらの省略可能プロパティを使用すると、スクロール、プレゼンテーション プロパティ、(認可などを目的とした) 前処理、マルチスレッド表示などの特定の機能をポートレットで有効にすることができます。ポートレットに使用するプロパティは、そのポートレットの使い方に応じて異なります。

ポータル ライフサイクルの開発段階では、一般に Workshop for WebLogic インタフェースを使用してポートレット プロパティを編集します。この節では、Workshop for WebLogic で編集できるプロパティについて説明します。

ステージング段階とプロダクション段階では、通常 WebLogic Portal Administration Console を使用してポートレット プロパティを編集します。この時点で編集できるプロパティは、一部のプロパティに限られます。WebLogic Portal Administration Console によるポートレット プロパティの編集手順については、「ライブラリ ポートレットのプロパティの変更」と「デスクトップ ポートレットのプロパティの変更」を参照してください。

すべてのポートレット プロパティの詳細については、「ポータルのプロパティ ビューのポートレット プロパティ」と「ポートレットのプロパティ ビューのポートレット プロパティ」を参照してください。

この節では、次のトピックについて説明します。

ポートレット プロパティの編集

ポートレット プロパティを編集するには、以下の手順を実行します。

  1. プロパティを編集するポートレットがある場所に移動し、[.portlet] ファイルをダブルクリックしてワークベンチ エディタで開きます。
  2. 目的のポートレット コンポーネントの境界線をクリックし、プロパティ ビューにそのコンポーネントのプロパティを表示します。
  3. 表示されるプロパティは、選択したアクティブ領域に応じて異なります。たとえば、外側の境界線をクリックするとポートレット全体のプロパティが表示され、内側の境界線をクリックするとポートレットのコンテンツのプロパティが表示されます。

  4. プロパティ ビューに移動してポートレット プロパティの現在の値を表示します。図 5-20 に JSP ポートレットのプロパティ ビューの一部を示します。
  5. 図 5-20 ポートレット プロパティの編集 - JSP ポートレットのプロパティ ビューの例


    ポートレット プロパティの編集 - JSP ポートレットのプロパティ ビューの例

  6. 変更するフィールドをダブルクリックします。
  7. プロパティ フィールドをクリックすると、ステータス バーにそのフィールドの説明が表示されます。

    一部のポートレット プロパティは、ポートレットを作成した後は値を編集できなくなります。

    プロパティ フィールドによっては、そのポートレット プロパティに関連する情報を表示できる場合があります。たとえば、Java ポートレットの [クラス名] プロパティには読み込み専用の値が格納され、[開く] ボタンを使用すると関連する Java ファイルが表示されます。プロパティ ビューで使用できるオプションの詳細については、「プロパティ ビューを使用する場合のヒント」を参照してください。

プロパティ ビューを使用する場合のヒント

プロパティ ビューの動作は、編集するフィールドの種類に応じて異なります。次に説明するヒントは、プロパティ ビューのデータ フィールドの内容を操作するときに役立つ場合があります。

ポータルのプロパティ ビューのポートレット プロパティ

この節で説明するプロパティは、[.portal] ファイルに含まれ、Workshop for WebLogic ワークベンチで編集できます。ここに入力する値は、[.portal] ファイルの対応する値をオーバーライドします (値が存在する場合)。

ポータルのプロパティ ビューに表示されるポートレット プロパティを表示するには、以下の手順を実行します。

注意 : 以下の手順は、ポートレットを含むポータルがあることを前提としています。
  1. ポートレット インスタンスのプロパティを表示するポータルの [.portal] ファイルをダブルクリックします。
  2. ポータルの WYSIWYG ビューがエディタに表示されます。

  3. ポートレットをクリックして強調表示します。
  4. ポートレットの外側にオレンジ色の境界線が表示されます。

プロパティ ビューにポートレット インスタンスのプロパティが表示されます。図 5-21 に例を示します。

図 5-21 ポータルのプロパティ ビューのポートレット インスタンス プロパティ

ポータルのプロパティ ビューのポートレット インスタンス プロパティ

表 5-6 でこれらのプロパティと値について説明します。

表 5-6 プロパティ ビューに表示されたポートレット インスタンス プロパティ 
プロパティ
[デフォルトで最小化]
省略可能。ポートレットを表示する際に最小化する場合は、「true」を選択する。デフォルト値は、false。[.portlet] ファイルで指定されているデフォルト値をオーバーライドする場合のみ、このプロパティの値を変更する。
[インスタンス ラベル]
必須。[.portlet] ファイルで表される単一のポートレットは、ポータル内で複数回使用できる。そのポートレットの毎回の使用が、ポートレット インスタンスであり、各ポートレット インスタンスには、ユニークな ID またはインスタンス ラベルが必要である。デフォルト値が自動的に入力されますが、その値を変更できます。インスタンス ラベルを使用することで、WebLogic Portal は、ポートレットの複数のインスタンスの実行時状態をサーバ上でそれぞれ独立して管理することができる。また、WebLogic Portal は、URL の書き換えや、フォーム名、ID 属性などの各種 HTML コントロールのスコープ設定でもインスタンス ラベルを使用する。
[方向]
省略可能。ポートレットの上下左右のいずれかの側にポートレット タイトルバーを位置付けるためのスケルトンへのヒント。このプロパティをサポートするには、独自のスケルトンを構築する必要がある。使用できる値は、default、0 (top)、1 (left)、2 (right)、3 (bottom) である。
[.portlet] ファイルで指定されている方向をオーバーライドする場合のみ、このプロパティの値を入力する。default を選択すると、ポートレット、ブック、ポートレット インスタンスから方向属性が削除される。この値は、この属性をフレームワークのデフォルト設定に戻す場合に使用する。
[ポートレット URI]
必須。親 [.portlet] ファイルのパス (プロジェクトを基準とした相対パス)。たとえば、ファイルが Project\myportlets\my.portlet に格納されている場合、ポートレット URI は /myportlets/my.portlet となる。
テーマ
省略可能。ポートレットに、デスクトップの他の部分と異なるルック アンド フィールを与えるためにテーマを選択する。
タイトル
[.portlet] ファイルで指定されているデフォルトのタイトルをオーバーライドする場合にタイトルを入力する。このタイトルが、ポートレットのタイトルバーで使用される。

ポートレットのプロパティ ビューのポートレット プロパティ

この節で説明するプロパティは、[.portlet] ファイルに含まれ、Workshop for WebLogic ワークベンチで編集できます。ここに入力する値は、[.portlet] ファイルの対応する値をオーバーライドします (値が存在する場合)。

エディタでポートレット インスタンスの外側の境界線を選択すると、関連するプロパティ セットがプロパティ ビューに表示されます。表示されるプロパティは、表示中のポートレット タイプによって異なります。図 5-22 にポートレットのプロパティ ビューの一部を示します。

図 5-22 ポートレット プロパティが表示されたプロパティ ビューの例

ポートレット プロパティが表示されたプロパティ ビューの例

表 5-7 でこれらのプロパティと値について説明します。

表 5-7 ポートレットのプロパティ ビューに表示されるプロパティ
プロパティ
バックアップ可能プロパティ
[ポートレット バッキング ファイル]
省略可能。ポートレット表示の前にクラスを使用して事前処理 (認証など) を行う場合は、そのクラスの完全修飾名を入力する。このクラスはインタフェース com.bea.netuix.servlets.controls.content.backing.JspBacking を実装するか、com.bea.netuix.servlets.controls.content.backing.AbstractJspBacking を拡張するものでなければならない。データ フィールドから、クラスを参照するか、現在表示されているクラスを開くかのいずれかを選択することができる。
コンテンツ
[コンテンツ パス]
必須。ポートレットのコンテンツに使用されるファイルまたはクラスへのパス (プロジェクトを基準とした相対パス)。データ フィールドから、ファイル (またはページ フロー ポートレットのクラス) を参照するか、現在表示されているファイルまたはクラスを開くかのいずれかを選択することができる。たとえば、コンテンツが Project/myportlets/my.jsp に格納されている場合、コンテンツ URI は /myportlets/my.jsp となる。
[エラー ページ パス]
省略可能。メイン コンテンツが表示できない場合に、ポートレットのエラー メッセージに使用される JSP または HTML ファイルへのパス (プロジェクトを基準とした相対パス)。たとえば、エラー メッセージが Project/myportlets/error.jsp に格納されている場合、コンテンツ URI は /myportlets/error.jsp となる。
一般的なポートレット プロパティ
[非同期コンテンツ表示] (バージョン 9.2 の新しいプロパティ)
特定のポートレットに非同期コンテンツを使用するかどうかを指定し、使用する場合は実装方法を指定する。編集可能なドロップダウン メニューから、noneajax、または iframe を選択します。asyncContent 属性のないポートレット ファイルが表示されるときには、初期値として [none] が表示される。
詳細については、「ポートレット コンテンツの非同期表示」を参照。
[キャッシュの期限 (秒)]
省略可能。[表示キャッシュ可能] プロパティが「true」に設定されている場合、ポートレット キャッシュの期限が切れるまでの秒数を入力する。
[キャッシュ表示依存関係] (バージョン 9.2 の新しいプロパティ)
ウィンドウ ポートレットまたはプロキシ ポートレットがロードされると、プロパティ ビューにこのインスタンス スコープのブール型プロパティが表示され、表示の依存関係をキャッシュすることができる。
属性が .portlet ファイルにまだ含まれていない場合、デフォルト値は true。この値は、プロキシ ポートレットについては読み込み専用であり、その他のポートレット タイプについては編集が可能である。プロキシ ポートレットの場合、この値は、ポートレット ウィザードでプロキシ ポートレットが生成されるたびにプロデューサから初期化される。
このプロパティは、ポートレットに対するポストには影響しない。
[クライアント分類]
省略可能。ポートレットを表示できるマルチチャネル デバイスを選択する。表示されるデバイス リストは、Project_Path\WEB-INF\client-classifications.xml から取得される。クライアントをポータル Web プロジェクトの分類に対応付けるには、このファイルを作成する必要がある。このタスクの詳細については、『ポータル開発ガイド』を参照。
[ポートレット分類の管理] ダイアログで、次の操作を実行する。
  1. ポートレットの分類を有効化するか無効化するかを選択する。
  2. 有効化および無効化するクライアント分類を [使用可能な分類] から [選択済みの分類] に移動する。
  3. [OK] をクリックします。
ポートレットの分類を無効化した場合、ポートレットは無効化を選択しなかった分類に対して自動的に有効化される。
[デフォルトで最小化]
必須。ポートレットを表示する際に最小化する場合は、「true」を選択する。デフォルト値は、false
[定義ラベル]
必須。各ポートレットには、Web プロジェクト内でユニークな値が必要である。Java ポートレットの場合、ポートレット作成時に必要な値を入力する。他のポートレット タイプの場合、値はポートレット作成時に自動的に生成される。定義ラベルは、ポートレットへの移動に使用できる。また、コンポーネントは、資格および委託管理のために定義ラベルを備えていることが必要である。
この値を Workshop for WebLogic で編集してわかりやすい値にすることが望ましい。特に、ポートレットをリモートで提供する場合は、そうすることでプロデューサ リストからの識別が容易になる。

注意 : WebLogic Portal Administration Console を使用してデスクトップにポートレット インスタンスを作成する場合、生成された定義ラベルは編集できない。

説明
省略可能。ポートレットの簡単な説明。この説明は、Administration Console と訪問者ツールの領域に表示され、該当する場合は WSRP プロデューサから送信される。
イベント ハンドラ
省略可能。この値は、ポートレット イベントを使用して、ポーレット間通信をコンフィグレーションするために使用する。デフォルトは [イベント ハンドラなし]。イベント ハンドラを選択または追加する場合は、[参照] をクリックする。
[フォーク可能]
省略可能。ポートレットのマルチスレッド表示を可能にするかどうかを指定する。「true」に設定すると、ポータル管理者は [フォーク表示] プロパティを使用して、ポートレットをマルチスレッド表示できる。デフォルトは、false です。
詳細については、「ポートレットの並列表示」を参照。
[フォーク事前表示]
ライフサイクルの事前表示段階でフォーク (マルチスレッド化) を有効にする。コントロール ツリーのライフサイクルの詳細については、「BEA WebLogic Portal の概要」の「コントロール ツリーのパフォーマンスへの影響」を参照。事前表示フォークは、以下のポートレット タイプによってサポートされる。
  • JSP
  • ページ フロー
  • JSR168
  • WSRP (コンシューマ ポートレットのみ)
[フォーク事前表示] を「true」に設定すると、ポートレットの事前表示段階がフォークされる。
[フォーク事前表示タイムアウト] (秒)
省略可能。[フォーク事前表示] が「true」に設定されている場合、整数のタイムアウト値 (秒単位) を設定することができる。ポータル フレームワークは、タイムアウト値で指定された時間に限り、フォークされた各事前表示段階を待つ。デフォルト値は -1 秒 (タイムアウトなし)。フォークされた事前表示段階の実行時間がタイムアウト値を超過すると、ポートレット自体がタイムアウトになり (つまり、このポートレットの残りのライフサイクルの段階は中止される)、表示されるページからポートレットが削除され、次のようなエラー レベル メッセージがログに記録される。
<May 26, 2005 2:04:05 PM MDT> <Error> <netuix>
<BEA-423350> <ID [t_portlet_1_1] のポートレットのフォーク表示がタイムアウトしました。
ポートレットは応答に含まれません。>
[フォーク表示]
省略可能。ポータルをコンフィグレーションまたはチューニングする際にポータル管理者が使用することを意図している。「true」に設定すると、ポートレットをマルチスレッド表示する試みを行うべきであることがフレームワークに通知される。このプロパティは、[フォーク可能] プロパティが「true」に設定されている場合のみ、true に設定できる。
[フォーク表示タイムアウト] (秒)
省略可能。[フォーク表示] が「true」に設定されている場合、整数のタイムアウト値 (秒単位) を設定することができる。ポータル フレームワークは、タイムアウト値で指定された時間に限り、フォークされたポートレット表示を待つ。デフォルト値は -1 秒 (タイムアウトなし)。ポートレット表示がタイムアウトした場合、エラーがログに記録される。ただし、タイムアウト ポートレットの応答にマークアップは挿入されない。
0 または -1 を選択すると、ポートレットからタイムアウト属性が削除される。この値は、この属性をフレームワークのデフォルト設定に戻す場合に使用する。
[方向]
省略可能。ポートレットの上下左右のいずれかの側にポートレット タイトルバーを位置付けるためのスケルトンへのヒント。このプロパティを [.portal] ファイル内でサポートするには、独自のスケルトンを構築する必要がある。次の値は、各方向値について [.portal] ファイルで使用されている数値である。上 = 0、左 = 1、右 = 2、下 = 3。
ポートレットの各インスタンスにおいてこの方向をオーバーライドできる (プロパティ ビューで)。
[圧縮]
省略可能。スケルトンに対して、ポートレットを展開モードで表示するか圧縮モードで表示するかを指定する。このプロパティをサポートするには、独自のスケルトンを構築する必要がある。
[圧縮] = 「false」 (デフォルト値) の場合、ポートレットが占める水平方向のスペースは可能な限り大きくなる。
[圧縮] = 「true」の場合、ポートレットが占める水平方向のスペースは可能な限り小さくなる。
HTML 側から見ると、このプロパティはウィンドウがテーブルを使用して表示される場合に最も有用である。[圧縮] =「false」の場合、テーブルの相対的な幅は通常「100%」に設定される。[圧縮] =「true」の場合、通常、テーブルの幅は設定されないままである。
[表示キャッシュ可能]
省略可能。パフォーマンスを強化するには、「true」に設定してポートレットをキャッシュする。たとえば、Web サービスを呼び出すポートレットは、コストのかかるプロセスを頻繁に実行する。Web サービス ポートレットをキャッシュすると、パフォーマンスが向上する。
独自のキャッシングを実行している場合は、これを「true」に設定してはならない。
詳細については、「ポートレットのキャッシュ」を参照。
[必要なユーザ プロパティ モード]
省略可能。指定可能な値は、[なし]、[すべて]、[指定済み] である。値が [指定済み] の場合、[必要なユーザ プロパティ名] フィールドにプロパティ名リストを入力する必要がある。
[必要なユーザ プロパティ名]
省略可能。[必要なユーザ プロパティ モード] フィールドで値 [指定済み] を指定した場合、このフィールドを使用する。カンマ区切りのプロパティ名リストを入力する。
タイトル
必須。ポートレットのタイトルバーに表示されるタイトルを入力する。「ポータルのプロパティ ビューのポートレット プロパティ」の説明に従って、ポータル エディタを使用して各ポートレット インスタンスのこのタイトルをオーバーライドすることができる。
ページ フロー コンテンツ
[リスン先]
(非推奨) 選択されたページ フロー ポートレットで呼び出さなければならないアクションを所有するポートレット。各ポートレットのインスタンス ラベルをカンマ区切りリストの形式で指定する。この機能は、さらに完成度の高いポートレット間通信メカニズムに置き換えられた。
[ページ フロー アクション]
省略可能。ページ フローで最初に実行するアクション。指定しない場合、begin アクションが使用される。
[ページ フロー更新アクション]
省略可能。ページを更新するが、ポートレットは対象にならない場合にページ フローで実行するアクション。これは、onRefresh ポータル イベントにコンフィグレーションされたポートレット イベント ハンドラを使用してページ フロー アクションを呼び出すことに相当する。
[リクエスト属性の永続性]
省略可能。指定可能な値は、nonesessiontransient-session である。この属性では、ページ フロー、JSF、および Struts の各ポートレットの属性の永続性を設定する。デフォルト値は session。この場合、アクションによって設定されたリクエスト属性はコレクション クラスに永続化され、このクラスがセッション属性に格納される。これにより、ポータル フレームワークは、アクションを再実行しなくても後続のリクエストで転送 JSP を安全に取り込むことができる。session 値を使用すると、スタンドアロンのページ フロー、JSF、または Struts アプリケーションでは起こらないセッション メモリの消費とレプリケーションにつながる。transient-session 値は、Hashmap の近くのシリアライズ可能なラッパー クラスをセッションに格納する。値 none は、永続化処理を実行しない。
transient-session 値が適用されている JPF または Struts ポートレットは、通常、既存のポートレットと同じように機能する。ただし、フェイルオーバの場合は例外である。永続化されたリクエスト属性は、サーバへのフェイルオーバが発生すると消失する。フェイルオーバの場合、転送 JSP を作成してこのような不測の事態を適切に処理する必要がある。そのためには、少なくとも、特定のリクエスト属性が設定されていることを前提とせず、自動的にリクエスト属性を再設定する機能を用意するか、最後のアクションを再実行してリクエスト属性を再設定するためのリンクをユーザに表示するのが理想的である。フェイルオーバがない場合、リクエスト属性は永続化され、非ポストバック ポートレットに対してデフォルトの session 永続性ポートレットに匹敵するパフォーマンスが実現される。
none 値が適用されているポートレットには、更新要求時に使用できるリクエスト属性がない。そのため、リクエスト属性が使用できないことを前提に転送 JSP を作成する必要がある。このオプションを使用すると、フレームワークによって発生する、永続化されたリクエスト属性のためのセッション メモリのロードを完全になくすことができる。
JavaServer Faces (JSF) コンテンツ
[リクエスト属性の永続性]
ページ フロー コンテンツ」の説明を参照。
ポートレット プロパティ
 
[コンテンツ プレゼンテーション クラス]
コンポーネントのスケルトンによって使用されるデフォルトの CSS クラスをオーバーライドする CSS クラス。
適切な表示を行うには、ルック アンド フィールで選択したスキンのカスケーディング スタイル シート (cascading style sheet : CSS) 内にそのクラスが存在し、スキンの [skin.xml] ファイルがその CSS ファイルを参照している必要がある。
サンプル : 「my-custom-class」と入力した場合、デフォルトのスケルトンから表示される HTML は、次のようになる。
<div class="my-custom-class">
入力するプロパティは、コンポーネントの親 <div> タグに追加される。このプロパティはブックとページにも適用される。詳細については、『ポータル開発ガイド』を参照。
[コンテンツ プレゼンテーション スタイル]
省略可能。主な用途は、コンテンツのスクロールおよびコンテンツの高さの設定である。
スクロールでは、以下の属性を入力する。
  • overflow:auto - 縦および横スクロールを可能にする。
高さの設定では、以下の属性を入力する。
  • height:200px
ここで、200px の部分には、HTML の有効な高さを設定する。
[プレゼンテーション スタイル] プロパティの場合と同様に、コンテンツに他のスタイル プロパティを設定することもできる。プロパティは、コンポーネントのコンテンツ/子 <div> タグに適用される。
[リモートとして提供]
省略可能。WSRP プロデューサの使用によるポートレットへのアクセスを許可するかどうかを定義する。デフォルト値 true は、ポートレットへのアクセスを許可する。リモート ポートレットの資格付与の詳細については、『連合ポータル ガイド』を参照。
JSP コンテンツ
[コンテンツ バッキング ファイル]
省略可能。ポートレット表示の前にコンテンツのバッキング ファイルを使用する場合は、該当するクラスの完全修飾名を入力する。このクラスはインタフェース com.bea.netuix.servlets.controls.content.backing.JspBacking を実装するか、com.bea.netuix.servlets.controls.content.backing.AbstractJspBacking を拡張するものでなければならない。
[スレッド セーフ]
省略可能。バッキング ファイルを使用するブック、ページ、およびポートレットのパフォーマンス設定。
[スレッド セーフ] が「true」に設定されている場合、バッキング ファイルのインスタンスはバッキング ファイルを要求するすべてのブック、ページ、およびポートレットで共有される。スレッド セーフでないインスタンス変数は同期する必要がある。
[スレッド セーフ] を「false」に設定すると、別のブック、ページ、またはポートレットによってバッキング ファイルが要求されるたびに、バッキング ファイルの新しいインスタンスが作成される。
ポートレット タイトルバー
[削除可能]
省略可能。「true」に設定すると、ポートレットをページから削除できる。
[フロート可能]
省略可能。「true」に設定すると、ポートレットを別のウィンドウに移動できる。フロート可能な Java ポートレットの作成では、[weblogic-portlet.xml] ファイルの編集が必要となる。フロート可能な Java ポートレットの作成手順については、「weblogic-portlet.xml による Java ポートレットのカスタマイズ」を参照。
[最大化可能]
省略可能。「true」に設定すると、ポートレットを最大化できる。
[最小化可能]
省略可能。「true」に設定すると、ポートレットを最小化できる。
[編集パス]
省略可能。ポートレットの編集ページへのパス (プロジェクトを基準とした相対パス)。
[ヘルプ パス]
省略可能。ポートレットのヘルプ ファイルへのパス (プロジェクトを基準とした相対パス)。
[アイコン パス]
省略可能。ポートレット タイトルバーで使用するグラフィックへのパス (プロジェクトを基準とした相対パス)。このプロパティをサポートするにはスケルトンを作成する必要がある。
モード プロパティ (ポートレットにモードを追加する場合に使用可能)
[コンテンツ パス]
必須。編集ページなど、ポートレットのモード コンテンツに使用される JSP、HTML、または [.jpf] ファイルへのパス (プロジェクトを基準とした相対パス)。たとえば、コンテンツが Project/myportlets/editPortlet.jsp に格納されている場合、コンテンツ URI は /myportlets/editPortlet.jsp となる。
このプロパティの [参照] ボタンが表示されていても、ページ フローを参照する場合は、.jpf へのパスを手動で入力する必要がある。
[エラー パス]
省略可能。ポートレットのモード ページが表示できない場合に、エラー メッセージに使用される JSP、HTML、または [.jpf] ファイルへのパス (プロジェクトを基準とした相対パス)。たとえば、エラー ページが Project/myportlets/errorPortletEdit.jsp に格納されている場合、コンテンツ URI は /myportlets/errorPortletEdit.jsp となる。
このプロパティの [参照] ボタンが表示されていても、ページ フローを参照する場合は、.jpf へのパスを手動で入力する必要がある。
[ポートレット バッキング ファイル]
省略可能。ポートレットのモード ページ (編集ページなど) の表示の前にクラスを使用して事前処理 (認証など) を行う場合は、そのクラスの完全修飾名を入力する。このクラスはインタフェース com.bea.netuix.servlets.controls.content.backing.JspBacking を実装するか、com.bea.netuix.servlets.controls.content.backing.AbstractJspBacking を拡張するものでなければならない。
[表示対象]
省略可能。タイトルバーやメニューのモード アイコン (編集アイコン) を非表示にするか (false)、表示する (true)。[表示対象] を「false」に設定するのは、たとえば、デスクトップ ヘッダに編集 URL を表示する場合である。
モード切り替えボタン プロパティ
省略可能。個別のモードを選択すると表示される。[編集] などの省略可能なモード名。
プレゼンテーション プロパティ
[プレゼンテーション クラス]
このプロパティについては、『ポータル開発ガイド』を参照。
[プレゼンテーション ID]
このプロパティについては、『ポータル開発ガイド』を参照。
[プレゼンテーション スタイル]
このプロパティについては、『ポータル開発ガイド』を参照。
[プロパティ]
省略可能。オブジェクトと関連付ける、名前と値のペアのカンマ区切りリスト。この情報をスケルトンで使用して表示に変更を加えることができる。
[スケルトン URI]
このプロパティについては、『ポータル開発ガイド』を参照。
プロキシ ポートレットのプロパティ
接続確立タイムアウト
省略可能。このポートレットがプロデューサと最初の接続を確立するときにタイムアウトするまでの時間 (ミリ秒)。
接続タイムアウト
省略可能。物理接続が確立した後、ポートレットがプロデューサとの通信中にタイムアウトするまでの時間 (ミリ秒)。値を指定しない場合は、[WEB-INF/wsrp-producer-registry.xml] ファイルに格納されているデフォルト値が使用される。
グループ ID
省略可能。この値は、プロデューサによって割り当てられ、編集できない。同じプロデューサによって割り当てられた同じグループ ID を持つポートレットはセッションを共有できる。[グループ ID] の値はプロデューサにとってのみ意味のある値であり、WebLogic Portal では操作しない。
[表示依存関係の呼び出し] (バージョン 9.2 の新しいプロパティ)
この boolean 型プロパティを使用すると、プロキシ ポートレットの事前表示ライフサイクルで、コンシューマがプロデューサから表示依存関係を取得できる。
プロデューサのポートレットに lafDependenciesUri 値がある場合、プロデューサはポートレットの記述の invokeRenderDependencies boolean を公開する。この属性の詳細については、「ポートレットの依存関係」を参照。

注意 : lafDependenciesUri 属性の相対パスではなく、絶対パスを供給する。

属性が [.portlet] ファイルに含まれていない場合、デフォルト値は false。この値は読み込み専用であり、ポートレット ウィザードでプロキシ ポートレットが生成されるたびにプロデューサから初期化される。
ポートレット ハンドル
必須。このプロキシが参照する、ポートレットのプロデューサのユニークな識別子。値は編集できない。
プロデューサ ハンドル
必須。プロデューサのユニークな識別子。
セッションに格納されたテンプレート
プロデューサ側でプロデューサがユーザのセッションに URL テンプレートを格納するかどうかを示す。この boolean が意味を持つのは、URL テンプレート処理の boolean が true に設定されている場合のみ。
URL テンプレート処理
プロデューサが URL テンプレートを使用して URL を作成するかどうかを示す。true の場合は、コンシューマが URL テンプレートを指定する。false の場合は、プロデューサが特殊な書き換えトークンを使用して URL を書き換える。
[セッションに格納されたユーザ コンテキスト] (バージョン 9.2 の新しいプロパティ)
必須。この値の目的は、ユーザのコンテキスト (プロファイルを含む) の送信をセッションにつき 1 回に限ることにより、ネットワーク トラフィックを削減することにある。WebLogic Portal プロデューサの場合、この値は常に true になる。サードパーティ プロデューサの場合、GetServiceDescription からの応答により、truefalse のどちらにもなりうる。false の場合、getMarkup リクエストおよび performBlockingInteraction リクエストのたびにユーザ コンテキスト全体が送信される。true の場合、送信はプロデューサ セッションにつき 1 回に限定される。
属性が [.portlet] ファイルに含まれていない場合、この boolean のデフォルト値は false
この値は読み込み専用であり、ポートレット ウィザードでプロキシ ポートレットが生成されるたびにプロデューサから初期化される。
Struts コンテンツ
[リスン先]
(非推奨) 別のポートレットがアクションを呼び出したときに、このポートレットが同じアクションを呼び出すことを許可する。この機能は、さらに完成度の高いポートレット間通信メカニズムに置き換えられた。ポートレット間通信の詳細については、「ローカル ポートレット間通信」を参照。
[リクエスト属性の永続性]
ページ フロー コンテンツ」の説明を参照。
[Struts アクション]
この Struts ポートレットが、ポートレットに対する最初のリクエストで呼び出す必要のある begin アクション。
[Struts モジュール]
この Struts ポートレットに関連付けられた Struts モジュール。
「Struts モジュール」とは、特定の Struts アクション セットのスコープをモジュールというグループに設定する手段である。モジュールは、一般に、Web リソースの単一のサブディレクトリおよび個別の [struts-config.xml] ファイルに対応する。
[Struts 更新アクション]

省略可能。ページを更新するが、ポートレット自体は対象にならない場合に Struts モジュールで実行するアクション。

URI コンテンツ (ブラウザ ポートレット プロパティ)
[コンテンツ URL]

必須。このコンテンツ コントロールは、スタンドアロン アプリケーションまたは Web ページの URL になると予期される URI を使用し、その URL をポートレット コンテンツとして組み込む。

 


ポートレット プリファレンス

ポートレット プリファレンスは、ポートレットにアプリケーション データを関連付ける主な手段です。この機能は、用途に基づいてポートレットをパーソナライズするうえで鍵となります。この節では、ポートレット プリファレンスについて詳しく説明します。

作成したポートレットは、何度もインスタンス化することができます。ポートレットのインスタンスを複数作成することができるため、当然ですが、各インスタンスで異なる動作を行いながらも、同じコードとユーザ インタフェースを使用したいと思うものです。たとえば、株価を表示する一般的なポートレットを考えてみましょう。このポートレットは、株式銘柄リストが指定されると、株価情報 Web サービスから定期的に株価を取得し、ポートレット ウィンドウに株価を表示します。各ユーザが株式銘柄リストと株価データの再ロード間隔を変更できるようにすることにより、各ユーザにこのポートレットをカスタマイズさせることができます。

このポートレットは、株式銘柄リストと取得間隔を永続的に格納できることと、ユーザがこれらの値をカスタマイズするときにこれらの値を更新できることが必要です。特に、以下のデータを永続的に管理する必要があります。

ポートレット プリファレンスは、技術上、名前付きの文字列データです。たとえば、株価情報ポートレットでは、以下のポートレット プリファレンスを設定できます。

こうした複数のプリファレンスを 1 つのポートレットに関連付けることができます。WebLogic Portal には、ポートレット プリファレンスを管理するために以下の手段が用意されています。

この節では、次のトピックについて説明します。

ポートレット プリファレンスの指定

プリファレンスをポートレットに関連付ける手順は、構築するポートレット タイプにより異なります。「プリファレンス API を使用した Java ポートレットのプリファレンスの取得と設定」で説明する Java ポートレット API を使用する場合、手順は Java ポートレット仕様で指定された手順に基づきます。Java ページ フロー、Struts、JSP などの他のポートレット タイプの場合は、Workshop for WebLogic ワークベンチを使用してポートレットにプリファレンスを追加します。

管理者に Administration Console で新しいプリファレンスを作成させることもできます。ただし、ポートレットの開発者のほうが、ポートレットによるポートレット プリファレンスの使用に敏感であるため、一般に開発段階でポートレット プリファレンスを作成するほうがよいと考えられます。

デプロイメント記述子での Java ポートレット プリファレンスの指定

Java ポートレット API を使用するポートレットでは、仕様に従ってポートレット デプロイメント記述子にプリファレンスを指定できます。Web プロジェクトのすべてのポートレットに対応するデプロイメント記述子は、Web プロジェクトの [WEB-INF] ディレクトリにある [portlet.xml] です。コード リスト 5-2 に例を示します。

コード リスト 5-2 単一の値を持つポートレット プリファレンスが指定された portlet.xml
<portlet>
   <description>This portlet displays a stock portfolio.</description>
   <portlet-name>portfolioPortlet</portlet-name>
   <portlet-class>portlets.stock.PortfolioPortlet </portlet-class>
      <supports>
         <mime-type>text/html</mime-type>
         <portlet-mode>edit</portlet-mode>
      </supports>
      <portlet-info>
         <title>My Portfolio</title>
      </portlet-info>
      <portlet-preferences>
         <preference>
            <name>stockSymbols</name>
               <value>BEAS, MSFT</value>
         </preference>
         <preference>
            <name>refreshInterval</name>
            <value>600</value>
         </preference>
   </portlet-preferences>
</portlet>

この断片は、2 つのプリファレンスを持つ株価情報ポートレットをデプロイします。名前が「stockSymbols」で値が「BEAS, MSFT」のプリファレンスと、名前が「refreshInterval」で値が「600」のプリファレンスです。

コード リスト 5-3 の太字の値要素に示すように、stockSymbols プリファレンスに単一の値を指定する代わりに、各銘柄を別々の値として宣言することができます。

コード リスト 5-3 値が別々に指定されたポートレット プリファレンス
<portlet>
   <description>
      This portlet displays a stock portfolio.
   </description>
   <portlet-name>portfolioPortlet</portlet-name>
   <portlet-class>portlets.stock.PortfolioPortlet </portlet-class>
   <supports>
      <mime-type>text/html</mime-type>
      <portlet-mode>edit</portlet-mode>
   </supports>
   <portlet-info>
      <title>My Portfolio</title>
   </portlet-info>
   <portlet-preferences>
      <preference>
         <name>stockSymbols</name>
         <value>BEAS</value>
         <value>MSFT</value>
         </preference>
      <preference>
         <name>refreshInterval</name>
         <value>600</value>
      </preference>
   /portlet-preferences>
</portlet>

ポートレットで特定のプリファレンスがプログラムによって更新されないようにする場合は、プリファレンスに読み込み専用のマークを付けることができます。コード リスト 5-4 に、refreshInterval の変更を防ぐポートレットの例を示します。

コード リスト 5-4 読み込み専用のポートレット プリファレンス値の指定
<portlet>
   <description>
      This portlet displays a stock portfolio.
   </description>
   <portlet-name>portfolioPortlet
   <portlet-class>portlets.stock.PortfolioPortlet
   <supports>
      <mime-type>text/html</mime-type>
      <portlet-mode>edit</portlet-mode>
   </supports>
   <portlet-info>
      <title>My Portfolio</title>
   </portlet-info>
   <portlet-preferences>
      <preference>
         <name>stockSymbols</name>
         <value>BEAS</value>
         <value>MSFT</value>
      /preference>
      <preference>
         <name>refreshInterval</name>
         <value>600</value>
         <read-only>true</read-only>
      </preference>
   </portlet-preferences>
</portlet>

プリファレンスに読み込み専用のマークを付けると、リクエスト時のみ現在の値の変更を防ぐことができます。ポータル管理者は、Administration Console を使用してプリファレンスの値を常に変更できます。

Workshop for WebLogic による他のポートレット タイプのプリファレンスの指定

Java ページ フロー、Struts、単純な JSP などの他のポートレット タイプを構築する場合は、Workshop for WebLogic を使用してプリファレンスを追加できます。

プリファレンスを追加するには、以下の手順を実行します。

  1. プリファレンスを追加するポートレットをクリックして選択します。
  2. ポートレットのアウトライン ビューで [プリファレンス] を右クリックし、コンテキスト メニューで [プリファレンスの追加] をクリックします。図 5-23 にプリファレンスのコンテキスト メニューの例を示します。
  3. 図 5-23 ポートレット プリファレンスのコンテキスト メニュー


    ポートレット プリファレンスのコンテキスト メニュー

    [新しいプリファレンス] という名前のプリファレンスがツリー階層に追加されます。

  4. 新しいプリファレンスをクリックして、プロパティ ビューにそのプロパティを表示します。
  5. プロパティ ビューの値を編集します。図 5-24 にプロパティ ビューのフィールドの例を示します。
  6. 図 5-24 ポートレット プリファレンスのプロパティ ビュー


    ポートレット プリファレンスのプロパティ ビュー

表 5-8 では、プロパティ ビューに表示されるポートレット プリファレンスの属性について説明します。

表 5-8 ポートレット プリファレンスのプロパティ
フィールド
[変更可]
プリファレンスが読み込み専用か、ユーザによる変更が可能かを示す。デフォルトは、true です。
[多値]
プリファレンスに複数の値を設定できるかどうかを示す。デフォルトは、true です。
プリファレンスに複数の値を指定するには、複数のプリファレンスを同じ名前で作成する。
説明
プリファレンスの簡単な説明。
プリファレンスの名前。
各プリファレンスには 1 つまたは複数の値を設定できる。各値のタイプは java.lang.String。

プリファレンス API によるプリファレンスのアクセスまたは変更

リクエスト時に特定のポートレットのポートレット プリファレンスが javax.portlet.PortletPreferences インタフェースのインスタンスとして表示されます。このインタフェースは、Java ポートレット API の一部です。このインタフェースは、ポートレット プリファレンスのアクセスと変更を行うメソッドを指定します。

プリファレンス API を使用したプリファレンスの取得

表 5-9 で、ポートレットからプリファレンスにアクセスするためのメソッドについて説明します。

表 5-9 ポートレットからプリファレンスの値にアクセスするためのメソッド 
メソッド
目的
String getValue(String name, String default)
このメソッドは、プリファレンスの最初の値を取得するために使用する。
String[] getValues(String name, String[] defaults) 
このメソッドは、プリファレンスのすべての値を取得するために使用する。
boolean isReadOnly(String name)
このメソッドは、特定のプリファレンスが読み込み専用かどうかを判別するために使用する。
Enumeration getNames()
このメソッドは、すべてのプリファレンス名の列挙値を取得するために使用する。
Map getMap()
このメソッドは、プリファレンスのマップを取得するために使用する。このマップのキーは、すべてのプリファレンスの名前であり、値は getValues(String name, String[] defaults) で返される値と同じ。

プリファレンス API を使用したプリファレンスの設定

表 5-10 で、ポートレットからプリファレンスの値を変更するためのメソッドについて説明します。

表 5-10 ポートレットからプリファレンスの値を変更するためのメソッド 
メソッド
目的
void setValue(String name, String value)
このメソッドは、プリファレンスの値を設定するために使用する。
void setValues(String name, String[] values)
このメソッドは、プリファレンスに複数の値を設定するために使用する。
void store()
このメソッドは、ポートレットのプリファレンスに加えた変更をコミットするために使用する。
void reset(String name)
このメソッドは、プリファレンスの値をデフォルトに戻すか、デフォルトがない場合はプリファレンスを削除するために使用する。

setValue()、setValues()、および reset() メソッドを呼び出してプリファレンスを変更した後は、変更内容を永続化するために store() を明示的に呼び出す必要があります。そうしない場合、変更内容は永続化されません。

プリファレンス API を使用した Java ポートレットのプリファレンスの取得と設定

Java ポートレット API を使用して作成するポートレットでは、受信したポートレット リクエスト、つまり processAction() メソッド内の javax.portlet.RenderRequest、または render() メソッド内の javax.portlet.ActionRequest オブジェクトから javax.portlet.PortletPreferences のインスタンスを取得できます。

コード リスト 5-5 のポートレットは、JSP ページのポートレット プリファレンスの現在値を編集するフォームを表示します。この値は、株価情報ポートレットの doEdit() メソッドから取り込まれます。

コード リスト 5-5
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
<%@ page import="javax.portlet.PortletPreferences" %>

<portlet:defineObjects/>

<%
   PortletPreferences prefs = renderRequest.getPreferences();
   String refreshInterval = prefs.getValue("refreshInterval", "600");
   String symbols = prefs.getValue("stockSymbols", "BEAS, MSFT");
%>

<form method="POST" action="">
   <table>
      <tr>
         <td>Symbols</td><td><input name="symbols"          value="<%=symbols>"/></td>
      </tr>
      <tr>
         <td>Refresh Interval</td><td><input name="refreshInterval"
         value="<%=refreshInterval>"/></td>
      </tr>
      <tr>
         <td></td>
         <td><input type="submit" value="Submit"/></td>
      </tr>
   </table>
</form>

コード リスト 5-6 に示すように、このポートレットは processAction() メソッドでプリファレンスを更新します。

コード リスト 5-6 processAction() メソッドでプリファレンスを更新するポートレット
public class PortfolioPortlet extends GenericPortlet 
{
   {
      public void doEdit(RenderRequest renderRequest, RenderResponse
      renderResponse)
      throws IOException, PortletException
      {
         ...
      }
      public void processAction(ActionRequest actionRequest, ActionResponse
      actionResponse)
      throws PortletException
      {
         String refreshInterval =
         actionRequest.getParameter("refreshInterval");
         String symbols = actionRequest.getParameter("stockSymbols");

         PortletPreferences prefs = actionRequest.getPreferences();
         prefs.setValue("refreshInterval", refreshInterval);
         prefs.setValue("stockSymbols", symbols);
         try
         {
            prefs.store();
         }
         catch(SecurityException se) {
         // ユーザがプリファレンスを格納するための十分な特権がない場合にスローされる。
         // ユーザがポータルにログインしていることを確認すること。
         ...
         }
      catch(catch(IOException ioe) {
      // プリファレンスの格納でエラーが発生した場合
      ...
      }
   }
}

processAction() の実行中、このポートレットは javax.portlet.ActionRequest オブジェクトを使用してプリファレンスを取得します。

API を使用した他のポートレット タイプのポートレット プリファレンスの取得と設定

他のポートレット タイプからも、ポートレット プリファレンスにアクセスし、更新することができます。主な相違は、ポートレットが javax.portlet.PortletPreferences オブジェクトのインスタンスを取得するときの方法です。

どちらのクラスにも、javax.servlet.HttpServletRequest を引数として取得し、タイプ javax.portlet.PortletPreferences のオブジェクトを返す getPreferences() メソッドが用意されています。

ポートレット プリファレンスを取得するための JSP タグ

WebLogic Portal には、ポートレット プリファレンスを設定するために JSP タグ ライブラリが用意されています。適用可能な JSP タグについて表 5-11 で説明します。

表 5-11 ポートレット プリファレンスを取得するための JSP タグ
メソッド
目的
getPreference
このタグは、ポートレット プリファレンスの値を取得するために使用する。
getPreferences
このタグは、ポートレット プリファレンスのすべての値を取得するために使用する。このタグは、セパレータで区切られた複数の値を出力に書き込むためにも使用できる。
forEachPreference
このタグは、ポートレットのすべてのプリファレンスで処理を反復するために使用する。このタグの中に他のタグ (getPreference、getPreferences、ifModifiable、Else) をネストすることができる。
ifModifible
このタグは、指定のポートレット プリファレンスが読み込み専用でない場合、タグの本体を組み込むために使用する。
else
このタグは、指定のポートレット プリファレンスが読み込み専用の場合、タグの本体を組み込むために ifModifiable タグと共に使用する。

これらのタグに関連付けられた Java クラスの詳細については、「コントロールの Javadoc」を参照してください。

ポートレット プリファレンス SPI

WebLogic Portal のフレームワークにはデフォルトの実装があり、組み込みのデータベース テーブル PF_PORTLET_PREFERENCE および PF_PORTLET_PREFERENCE_VALUE の中にあるポートレット プリファレンスを管理することができます。必要な場合、この実装を独自の実装に置き換えることができます。

ポートレット プリファレンス SPI を使用すると、ポータル アプリケーションは、フレームワークの管理対象データベース テーブル以外でポートレット プリファレンスを管理することができます。たとえば、プリファレンスを他のアプリケーション データと共に別のバックエンド システムまたは別のデータベース テーブル セットに格納できます。

ポータルを伝播するとき、プリファレンス SPI は伝播プロセスに関与します。伝播のためにデータをエクスポートするとき、プリファレンスを取得するために SPI が呼び出され、データをインポートするとき、プリファレンスを格納するために SPI が呼び出されます。

以下の節では、ポートレット プリファレンス SPI の使用方法について説明します。

SPI の実装

SPI は、com.bea.portlet.prefs.IPreferenceAppStore インタフェースを使用して指定します。このクラスの実装は、EJB の [jar] ファイルとしてデプロイする必要があります。

コード リスト 5-7 に例を示します。

コード リスト 5-7 IPreferencesAppStore インタフェースを使用した SPI の実装

public interface IPreferenceAppStore extends EJBObject
{
   /**
   * ポートレット エンティティのプリファレンスを指定の uniqueId と共に返す。
   *
   * 返される java.util.Map には、名前に基づいてキーが付けられた
   * com.bea.netuix.application.prefs.Preference
   * オブジェクトが格納される。</p>
   *
   * @param uniqueId unique ID
   * @return preferences
   */
   public Map getPreferences(PortletPreferencesId uniqueId) throws
   RemoteException, PreferenceAppStoreException;

   /**
   * ベースとなる永続性ストアにプリファレンスを書き込む。
   *
   * このメソッドは、原子性を持つように実装する必要がある。つまり、
   * 実装では、すべてのプリファレンス値が永続化されるか、まったく
   * 永続化されないかのどちらかでなければならない。
   *
   * java.util.Map の引数には、名前に基づいてキーが付けられた
   * com.bea.netuix.application.prefs.Preference
   * オブジェクトが必要。
   *
   * @param uniqueId unique ID
   * @param preferences preferences
   */
   public void storePreferences(PortletPreferencesId uniqueId,
   Map preferences) throws RemoteException, PreferenceAppStoreException;

   /**
   * 指定されたユニーク ID を持つすべてのプリファレンスを
   * ベースとなる永続性ストアからクリアする。
   *
   * @param uniqueIds unique IDs
   */
   public void removePreferences(PortletPreferencesId[] uniqueIds) throws
   RemoteException, PreferenceAppStoreException;
}

SPI の使用

フレームワークでデフォルト SPI の代わりに新しい SPI を使用するには、netuix.jar 内にある [ejb-jar.xml] ファイルの PreferencePersistenceManager という EJB を更新する必要があります。デプロイメント記述子 (ejb-jar.xml) の指定に従って、値 BEA_netuix.DefaultStore を SPI EJB の名前に変更します。また、値 com.bea.portlet.prefs.provider.DefaultStoreHome は、SPI 実装のホーム インタフェースに変更します。

注意 : [ejb-jar.xml] ファイルを編集するには、J2EE ライブラリ リソースをプロジェクトにコピーする必要があります。将来 WebLogic Portal 製品を更新するときに、これらのリソースに影響する製品の変更を手動で組み込まなければならない場合があります。

コード リスト 5-8 のコード セグメントに、SPI を使用するために変更が必要なデフォルト エントリを示します。

コード リスト 5-8 変更が必要なデフォルト エントリを示すサンプル コード

<session>
   <ejb-name>PreferencePersistenceManager</ejb-name>
   <home>com.bea.portlet.prefs.PreferencePersistenceManagerHome</home>
   <remote>com.bea.portlet.prefs.PreferencePersistenceManager</remote>
   <ejb-class>com.bea.portlet.prefs.PreferencePersistenceManagerImpl
   </ejb-class>
   <session-type>Stateless</session-type>
   <transaction-type>Container</transaction-type>
   <env-entry>
      <env-entry-name>prefs-spi-jndi-name</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>BEA_netuix.DefaultStore</env-entry-value>
   </env-entry>
   <env-entry>
      <env-entry-name>prefs-spi-home-class-name</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>com.bea.portlet.prefs.provider.DefaultStoreHome
      </env-entry-value>
   </env-entry>
<!-- Snip -->
</session>

ポートレット プリファレンス使用の際のベスト プラクティス

ポートレット プリファレンスのデスクトップ テスト

作成したプリファレンスを表示し、テストするには、Workshop for WebLogic の[サーバで開く] ビューからではなく、WebLogic Portal Administration Console からデスクトップ ビューを使用する必要があります。

[.portal] ファイルからアクセスされたポートレットは、プリファレンスを格納できません。[.portal] ファイルを使用してプリファレンスを更新する場合、ポートレットで java.lang.UnsupportedOperationException エラーが検出されます。

ユーザ認証の必要性

ユーザがプリファレンスを更新する前にユーザにログインさせる手段が必要です。ポートレット プリファレンスを更新しようとするユーザを最初に認証する必要があります。匿名ユーザがポートレットを更新しようとすると、java.lang.SecurityException エラーが発生します。

ユーザが匿名かどうかに関係なく、また、ポートレットへのアクセスが .portal ファイル経由かどうかに関係なく、ポートレットは常にポートレット プリファレンスを取得できます。

任意のデータをプリファレンスとして格納しない

任意のアプリケーション データをポートレット プリファレンスとして格納したいと思うことがあります。たとえば、ユーザがサーバにドキュメントをアップロードし、格納することができるポートレットでは、それらのドキュメントをポートレット プリファレンスとして格納することが妥当と思われるかもしれません。しかし、これはお勧めできません。ポートレット プリファレンスの目的は、実装固有のポートレット インスタンス ID を意識することなくポートレット インスタンスの一部のプロパティを関連付けることにあります。これらのプロパティにより、ポートレットの動作をカスタマイズすることができます。ポートレット プリファレンスのベースとなる実装は、任意のアプリケーション データを格納するようには設計されていません。

このポートレットのニーズを満たすことができる代わりの実装の概要を以下の手順に示します。

セットアップ手順の実行
  1. ポートレットにプリファレンスを追加します。このプリファレンスは、ポートレットのアプリケーション データの主キーとして機能します。このプリファレンスにデフォルト値を割り当てます。
  2. アプリケーション データを格納し、主キーとしてプリファレンスの値を使用するテーブルをデータベース内に作成します。
ポートレットでのプリファレンスの設定
  1. アプリケーション データを現在のポートレット インスタンスに関連付けるとき、プリファレンスの値をチェックします。値がデフォルトの場合、(たとえば、シーケンス番号ジェネレータを使用して) 新しい値を生成し、この値をプリファレンスの値としてプリファレンスを格納します。
  2. プリファレンスの値がデフォルトでない場合、新しい値を生成する必要はありません。
  3. プリファレンスの値を主キーとしてアプリケーション データを格納します。

この手順により、アプリケーション データのスコープは常にポートレット インスタンスに設定されます。

プリファレンスの代わりにインスタンス ID を使用しない

ポータル フレームワークは、内部で生成されたインスタンス ID を使用してインスタンス ID を管理します。ポートレットは、com.bea.netuix.servlets.controls.portlet.PortletPresentationContextcom.bea.netuix.servlets.controls.portlet.PortletBackingContextgetInstanceId() メソッドを使用してインスタンス ID にアクセスします。

以下の理由から、ポートレット インスタンス ID を使用してデータベースにデータを直接格納することはできません。

 


バッキング ファイル

コントロールのライフサイクル内のポートレットの動作を制御する最も一般的な方法は、ポートレット バッキング ファイルを使用することです。ポートレット バッキング ファイルは、init()、preRender() など、ポータル コントロールのライフサイクルの各段階に対応するメソッドを含むことができる Java クラスです。ポートレットのバッキング コンテキスト、つまり、ポートレット コンテキスト自身を抽象化したものを使用して、ポートレットの特性を問い合わせたり、変更したりすることができます。たとえば、init() ライフサイクル メソッドでは、要求パラメータが評価され、そのパラメータの値に応じて、ポートレットのバッキング コンテキストを使用してポートレットを表示するか非表示にするかを指定できます。バッキング コンテキストの詳細については、『ポータル開発ガイド』を参照してください。

バッキング ファイルは、Workshop for WebLogic を使用するか、または .portlet ファイルにコードを直接入力することによって、ポータルに追加できます。

バッキング ファイルは、com.bea.netuix.servlets.controls.content.backing.JspBacking インタフェースの実装、または com.bea.netuix.servlets.controls.content.backing.AbstractJspBacking インタフェース抽象クラスの拡張を行う単純な Java クラスです。インタフェースのメソッドは、コントロール ライフサイクル メソッド (「バッキング ファイルの実行方法」を参照) に類似しており、コントロール ライフサイクル メソッドの呼び出しと同時に呼び出されます。

以下のポータル コントロールがバッキング ファイルをサポートしています。

ローカル ポートレット間通信」のポートレット間通信の例では、バッキング ファイルが使用されています。

この節では、次のトピックについて説明します。

バッキング ファイルの実行方法

すべてのバッキング ファイルは、JSP 呼び出しの前後に実行されます。ライフサイクルの中で、各バッキング ファイルでは以下のメソッドが呼び出されます。

図 5-25 にバッキング ファイルのライフサイクルを示します。

図 5-25 バッキング ファイルのライフサイクル

バッキング ファイルのライフサイクル

要求が行われるたびに、以下の処理手順が行われます。

注意 : 以下の処理手順では、ツリーの最適化が有効で、非アクティブ ページの項目が「最適化により除外」されていない場合にメソッドが呼び出されます。たとえば、ツリーの最適化が有効で、生成される部分的なコントロール ツリーに非アクティブ ページの項目が含まれていない場合、メソッドは呼び出されません。
  1. すべてのバッキング ファイルで、すべての init() メソッドが深さ優先順 (つまり、ツリーに表示されている順) に呼び出されます。このメソッドは、コントロール (ポータル、ページ、ブック、デスクトップ) がアクティブなページ上にあるかないかにかかわらず、呼び出されます。
  2. _nfpb パラメータが true に設定されている場合、すべての handlePostbackData() メソッドが呼び出されます。
    • 呼び出された handlePostbackData() メソッドの要求パラメータで _nfpb パラメータが true に設定されている場合、raiseChangeEvents() が呼び出される。このメソッドにより、イベントが発生します。バッキング ファイルが状態またはモードの変更を行おうとする場合、イベントの発生が必要です。
ヒント : AbstractJspBacking.isRequestTargeted(request) メソッドを使用して、特定のポートレットに対する要求かどうかを判別できます。
  1. アクティブな (表示されている) ページ上にあるすべてのポータル フレームワーク コントロールに関して、すべての preRender() メソッドが呼び出されます。
  2. アクティブ ページで JSP が呼び出され、表示されます。
  3. 各バッキング ファイルで dispose() メソッドが呼び出されます。

スレッドの安全性とバッキング ファイル

バッキング ファイルの新しいインスタンスは要求ごとに作成されるため、スレッドの安全性の問題を心配する必要はありません。新しい Java VM は、有効期限が短いオブジェクト用に特別に調整されているため、以前のようなパフォーマンスの問題は発生しません。さらに、JspContent コントロールでサポートされる特殊なバッキング ファイルを使用すると、バッキング ファイルがスレッド セーフかどうかを指定できます。この値を true に設定すると、バッキング ファイルのインスタンスが 1 つだけ作成され、すべての要求で共有されます。

スコープ設定とバッキング ファイル

<netuix: portlet backingfile =some_value> 部分としてバッキング ファイルを持つことと <netuix: jspContent backingfile=some_value> 部分としてバッキング ファイルを持つことには、スコープ設定上の相違があります。

たとえば、ポートレット自体にバッキング ファイルがある場合、ポートレットの表示を実際に停止することができます。バッキング ファイルが jspContent レベルの場合、コントロール ツリーのポートレット部分はすでに実行されています。この実装は、ポートレット内の JSP 専用のプロセスを実行するために使用します。

バッキング ファイルのガイドライン

バッキング ファイルを作成する際は、以下のガイドラインに従う必要があります。

コード リスト 5-9 にバッキング ファイルのサンプルを示します。このサンプルでは、AbstractJspBacking クラスが拡張され、ポートレットで必要なバッキング機能が使用可能になります。HTTPRequest オブジェクトは変更されやすいため、このサンプルではセッション属性を使用しています。ライフサイクル メソッド間でデータを渡すときには、リクエスト オブジェクトでなくセッションを使用することをお勧めします。

コード リスト 5-9 バッキング ファイルのサンプル
package backing;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.bea.netuix.events.Event;
import com.bea.netuix.events.CustomEvent;
import com.bea.netuix.servlets.controls.content.backing.AbstractJspBacking;
public class ListenCustomerName extends AbstractJspBacking
{
   public void listenCustomerName(HttpServletRequest request,
   HttpServletResponse response, Event event)
   {
      CustomEvent customEvent = (CustomEvent) event;
      String message = (String) customEvent.getPayload();
      HttpSession mySession = request.getSession();
      mySession.setAttribute("customerName", message);
   }
}

Workshop for WebLogic を使用したバッキング ファイルの追加

バッキング ファイルをポートレットに追加するには、Workshop for WebLogic を使用するか、追加先のファイルにコードを直接入力します。図 5-26 に示すように、プロパティ ビューの [ポートレット バッキング ファイル] フィールドにバッキング ファイルを指定するだけです。バッキング ディレクトリを指定し、ドット区切り文字に続けてバッキング ファイルの名前だけを指定します。バッキング ファイルの拡張子は含めないでください。たとえば次のように入力します。

backing.ListenCustomerName

次の入力例は間違っています。

backing.ListenCustomerName.java

この例では、ファイル拡張子を含めた場合、ファイル拡張子がファイル名と解釈されます。これは、ドット区切り文字によってファイル パスが指定されるためです。その結果、アプリケーションは、存在しない [ListenCustomerName] という名前のディレクトリの、存在しない [java] という名前のファイルを検索します。

図 5-26 Workshop for WebLogic を使用したバッキング ファイルの追加

Workshop for WebLogic を使用したバッキング ファイルの追加

.portlet ファイルへのバッキング ファイルの直接的な追加

バッキング ファイルを .portlet ファイルにコード化して追加するには、コード リスト 5-10 に示すように、<netuix:jspContent> 要素の中で backingFile パラメータを使用します。

コード リスト 5-10 [.portlet] ファイルへのバッキング ファイルの追加
<netuix:content>
<netuix:jspContent
backingFile="portletToPortlet.pageFlowSelectionDisplayOnly.menu.
backing.MenuBacking"
contentUri="/portletToPortlet/pageFlowSelectionDisplayOnly/menu/
menu.jsp"/>
</netuix:content>

 


ポートレットの外観と機能

デフォルトでは、色、レイアウト、テーマなど、ポートレットの外観の一部は、ポータル レベルで管理されます。一方、外観または表示特性およびポートレット固有の機能は、タイトルバーおよび関連する状態 (最小化、最大化、フロート、削除) の使用、さらにポートレット コンテンツに影響するモード (編集モード、ヘルプ モード、カスタム モード) などです。

ポートレット固有の表示機能とコンテンツ機能、およびポートレット固有のモードについて、その使用方法を以下の節で説明します。

ポートレットの依存関係

表示される HTML ページでは、スクリプト ファイルやスタイル シート参照などの大部分のリソース タイプを配置する場所として、ドキュメントのヘッダが適しています。ポートレットによっては、ページ表示に必要なリソースを指定しなければならない場合があります。以前は、必要な要素をページ上に提供する方法として、スケルトンに要素を配置するという方法がありました。しかし、スケルトンとポートレットとの間で結合が行われるため、この方法はお勧めできません。また、ポートレット コンテンツに参照を直接配置する方法もありましたが、この方法も無効な HTML が作成されるおそれがあります。

結合 (WSRP) 環境では問題はさらに深刻でした。リモート ポートレットは複数の場所に取り込まれる可能性がありますが、たとえばこれらのポートレットのいずれかが外部ファイル内の CSS に依存している場合、そのポートレットにはそのことを示す方法がなかったためです。

最新の WebLogic Portal には、ポートレットの依存関係の機能を使用してこの要件を処理する明示的な方法が追加されています。

WebLogic Portal バージョン 9.2 では、ルック アンド フィールのコンフィグレーションが大幅に変更されています。スキンとスケルトンのリソース依存関係に関する概念には、表示依存関係およびスクリプト依存関係という正式な名称が与えられました。これらの依存関係の一般的な例が CSS ファイルと JavaScript ファイルです。

スキンとスケルトンのどちらでも、こうした依存関係を指定できるようになり、依存関係を解決するための関連する検索パスも指定できるようになりました。さらに、冗長性解消メカニズムと、スキン、スケルトン、テーマのスキンおよびスケルトンに関連する依存関係のための信頼性の高い順序指定メカニズムも用意されています。これらの機能は、ポータルだけでなく、ポートレットでも使用できるようになったため、ポートレットでは標準に準拠した方法で必要な依存関係を指定できます。これらの依存関係は、表示されるページの <head> セクションで該当する要素を使用して指定します。信頼性の高い順序指定や冗長性解消など、ルック アンド フィールの依存関係フレームワークに伴う他のメリットも、ポートレット レベルで実現されています。

この節では、次のトピックについて説明します。

ポートレットの依存関係の指定

ポートレットの依存関係のコンフィグレーションは、標準のルック アンド フィールと同じメカニズムを持ち、標準のルック アンド フィール スキーマに準拠した XML コンフィグレーション ドキュメントを使用します。この XML ドキュメントは、.portlet ファイルから、ポートレット要素の属性を使用して参照されます。

ルック アンド フィールの表示依存関係と同様に、ポートレットの表示依存関係はアプリケーションの検索パスを使用して解決できます。さらに、ポートレットの表示依存関係を解決するために、ポートレット自身の検索パスの前に、ルック アンド フィール スキンの検索パスまたは該当するテーマ スキンが使用されます。

ポートレットの依存関係コンフィグレーション ファイルは、Workshop for WebLogic のプロパティ ビューにある [LAF 依存関係パス] フィールドに値を入力して指定します。別の方法として、以下の例に示すように、[.portlet] ファイルのポートレット要素に lafDependenciesUri 属性を追加する方法もあります。

<netuix:portlet definitionLabel="myPortlet" title="My Portlet" lafDependenciesUri="/portlets/example/myPortlet.dependencies">

慣例により、ポートレットの依存関係コンフィグレーション ファイルを設定するときには、以下のガイドラインに従う必要があります。

ここに示したガイドラインは必須ではありませんが、外れると予測しない動作につながる場合があります。詳細については、「考慮事項と制限事項」を参照してください。

ポートレットの依存関係コンフィグレーション ファイルは、標準のルック アンド フィール スキーマから標準的なタイプを使用します。コード リスト 5-11 に例を示します。

コード リスト 5-11 ポートレットの依存関係コンフィグレーション ファイルの例
<?xml version="1.0" encoding="UTF-8"?>
<p:window
xmlns:p="http://www.bea.com/servers/portal/framework/laf/1.0.0";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://www.bea.com/servers/portal/framework/laf/1.0.0
laf-window-1_0_0.xsd ">
<p:render-dependencies>
<p:html>
<p:links>
<p:search-path>
<p:path-element>.</p:path-element>
</p:search-path>
<p:link rel="stylesheet" type="text/css" href="my.css"/>
</p:links>
</p:html>
</p:render-dependencies>
</p:window>

コード リスト 5-11 に示すコンフィグレーション ファイルを使用すると、表示されるページ出力に 1 つの CSS ファイルが (HTML の <head> セクションのリンク要素として) 取り込まれます。まず、リンク要素のルック アンド フィール スキンまたはテーマ スキンの検索パスを基準として CSS ファイルが検索されます。CSS ファイルが見つからない場合、コンフィグレーション ファイルの検索パスが使用されます。相対検索パスは、コンフィグレーション ファイルのディレクトリを基準とします。

デフォルトの動作では、最初に、ルック アンド フィールまたはテーマで指定された検索パスで検索が行われます。この動作により、ルック アンド フィールまたはテーマはポートレット リソースにスキンを正しく適用できます。ただし、ルック アンド フィールまたはテーマのディレクトリにポートレット レベルのリソースを配置しないでください。デフォルトの動作を望まない状況が発生した場合は、render-dependencies 要素の use-skin-paths 属性に値 false に指定してこの動作を無効にすることができます。

考慮事項と制限事項

現時点の Workshop for WebLogic には、ポートレットの表示依存関係コンフィグレーション ファイルの編集機能は用意されていません。この目的には、組み込まれている Eclipse ベースの XML ファイル エディタを使用できます。

1 つの [.dependencies] ファイルを複数のポートレット間で共有することはお勧めできません。WebLogic Portal ではこの使用方法を禁じているわけではありませんが、1 つのファイルを共有すると、後でファイルに対する更新内容を統合するときに混乱が生じるおそれがあります。

依存関係ファイルの作成

Workshop for WebLogic を使用して有効な依存関係ファイルを作成することができます。その後、Workshop の XML エディタを使ってファイルを完成できます。

  1. [ファイル|新規|その他] を選択します。
  2. [新規] ダイアログで、[XML] フォルダを開き、[XML] を選択します。[New XML File] ウィザードが開きます。
  3. [Create XML From XML Schema File] を選択し、[次へ] をクリックします。
  4. [XML File Name] ダイアログで XML ファイルの名前を入力し、[次へ] をクリックします。
  5. [Select XML Schema File] ダイアログで [Select XML Catalog Entry] を選択し、キーのカラムでスキーマとして laf-window-1_0_0.xsd を選択します。[次へ] をクリックします。
  6. [Select Root Element] ダイアログで、ルート要素 window を選択します。
  7. 必要に応じて、新しい XML ファイルにオプションの属性/要素を追加するためのチェックボックスを選択します。
  8. [終了] をクリックします。
  9. 生成されたファイルの拡張子を .xml から .dependencies に変更します。

ポートレット モード

WebLogic Portal で作成したポートレットは、モードの使用をサポートしています。モードを使用すると、エンド ユーザのポートレット編集機能やポートレット ヘルプ表示機能を変更できます。モードが使用できることを示すには、ポートレットのタイトルバーにアイコン ボタンを追加します。

WebLogic Portal に事前に定義されているモードは以下のとおりです。

WebLogic Portal を使用してカスタム ポートレット モードを独自に作成することもできます。

選択したモードのボタンがポートレットのタイトルバーに表示されます。図 5-27 に、エディタに表示されたポートレット モードのデフォルト ボタンの例を示します。図 5-28 は、ポートレットが実行中のときに表示されるモード アイコンの外観です。

図 5-27 エディタに表示されたポートレット モード ボタンと状態ボタン

エディタに表示されたポートレット モード ボタンと状態ボタン

図 5-28 ポートレットが実行中のときにポートレット モード ボタンと状態ボタン

ポートレットが実行中のときにポートレット モード ボタンと状態ボタン

ポートレット ウィザードでポートレットを作成するとき、[ポートレットの詳細] ダイアログでモード設定と状態設定を指定できます。これらの設定は、ポートレットのプロパティ ビューで編集することもできます。以下の節では、これらのタスクを行うために使用できる方法について説明します。

既存のポートレットのモードの追加と削除

タイトルバーに対してヘルプまたは編集モードの追加または削除を行うには、以下の手順を実行します。

  1. モードの追加または削除を行うポートレットを表示します。
  2. 表示されたポートレットのタイトルバーを右クリックしてコンテキスト メニューを表示します。図 5-29 にタイトルバーのコンテキスト メニューの例を示します。
  3. 図 5-29 使用できるポートレット モード - タイトルバーのコンテキスト メニュー


    使用できるポートレット モード - タイトルバーのコンテキスト メニュー

  4. [使用できるモード] をクリックします。
  5. サブメニューのチェックマークは、このポートレットで使用できるモードを示します。これらのモードは、ポートレット作成時に指定したものです。図 5-30 にサブメニューの例を示します。

    図 5-30 ポートレット モード - [使用できるモード] のサブメニュー


    ポートレット モード - [使用できるモード] のサブメニュー

  6. モードの使用可能状況を変更するために、該当するモードをクリックします。たとえば、図 5-30 では、[ヘルプ] モードがチェックされています (使用可能)。[ヘルプ] をクリックすると、[ヘルプ] ボタン ポートレット モード - [使用できるモード] のサブメニュー がタイトルバーから削除されます。
  7. [ファイル|保管] を選択し、変更を保存します。

ポートレット モードに関連するプロパティ

モードのプロパティの詳細をプロパティ ビューに表示し、編集できます。たとえば、ポートレットのモード ページ (編集ページなど) を表示する前に前処理を実行する場合は、[ポートレット バッキング ファイル] プロパティを編集できます。

ポートレットのモード プロパティを表示するには、ポートレットの [ポートレット モード] 領域にある展開/縮小切り替えボタン ポートレット モード - [使用できるモード] のサブメニュー をクリックします。プロパティ ビューに編集モードのプロパティとヘルプ モードのプロパティが表示されます。

モード プロパティの説明については、表 5-7 を参照してください。

ポートレットの状態

ポートレットの状態により、エンド ユーザが使用できるポートレット表示機能が決まります。WebLogic Portal では、以下のポートレット状態がサポートされています。

通常 - ポートレットの通常の外観

ポートレット ウィザードでポートレットを作成するとき、[ポートレットの詳細] ダイアログで状態設定とモード設定を指定できます。これらの設定は、ポートレットのプロパティ ビューで編集することもできます。以下の節では、これらのタスクを行うために使用できる方法について説明します。

Workshop for WebLogic でのポートレットの状態の変更

ポートレットに組み込む状態を選択するには、以下の手順を実行します。

  1. ポートレットのタイトルバーを右クリックします。
  2. 適用可能な状態を示すコンテキスト メニューが表示されます。図 5-31 に示すタイトルバーのコンテキスト メニューの例は、すべての状態が使用可能になっています。

    図 5-31 ポートレットの状態 - タイトルバーのコンテキスト メニュー


    ポートレットの状態 - タイトルバーのコンテキスト メニュー

  3. 変更する状態をクリックして選択します。
  4. 選択した状態はポートレットに追加され、選択を外した状態はポートレットから削除されます。たとえば、図 5-31 では、4 つの状態がすべて選択されており、タイトルバーに表示されています。[削除可能] をクリックして選択を外すと、ポートレットの [削除] ボタン ポートレットの状態 - タイトルバーのコンテキスト メニュー が削除されます。

  5. [ファイル|保管] を選択し、変更を保存します。

プログラムによるポートレットの最小化と最大化

ポートレットの最小化と最大化は、ポートレット ファイルとポートレットのバッキング ファイルのどちらでも行うことができます。実際のコードはどちらも同じです。(Java ページ フロー) ポートレットを最大化する例を示します。

PortletBackingContext context = PortletBackingContext.getPortletBackingContext(request);
context.setupStateChangeEvent(WindowCapabilities.MAXIMIZED.getName());

このコードを Java ページ フローの action メソッドか、バッキング ファイルの handlePostbackData メソッドに挿入できます。バッキング ファイルを使用する場合は、handlePostbackData メソッドを呼び出すために URL に _nfpb=true を含める必要があります。

ポートレットでコンテンツの非同期表示が有効な場合、これらのメカニズムは機能しません。

ポートレットのタイトルバーのアイコン

ポートレットのタイトルバーで使用される状態およびモードのデフォルト アイコンは、wlp-lookandfeel-web-lib ライブラリ モジュールに格納されています。これらのデフォルト アイコンは、マージ済みプロジェクト ビューの framework/skins の各サブディレクトリにあります。

ポートレットの高さとスクロール

WebLogic Portal で作成するポートレットには、高さとスクロールを指定できます。

ポートレットの高さと、ポートレットのコンテンツをスクロールするかどうかを指定できます。

ポートレットの高さとスクロールは、以下の CSS スタイル属性で指定します。

ポートレットをワークベンチ エディタで開き、これらの属性を設定できます。

これらのプロパティを設定するには、以下の手順を実行します。

  1. ポートレットをワークベンチ エディタで開きます。
  2. ポートレットの外側の境界線をクリックして、プロパティ ビューにポートレット プロパティを表示します。
  3. プロパティ ビューで以下のいずれかのプロパティを設定します。
    • [プレゼンテーション スタイル] - このプロパティには、前述の属性を入力します。オーバーフローと高さを使用できます。複数の値がある場合はセミコロンで区切ります。
    • [プレゼンテーション クラス] - 使用する高さ属性またはスクロール属性を含むスタイル シート クラスの名前を入力します。
    • [コンテンツ プレゼンテーション スタイル] - このプロパティには、前述の属性を入力します。オーバーフローと高さを使用できます。複数の値がある場合はセミコロンで区切ります。
    • [コンテンツ プレゼンテーション クラス] - 使用する高さ属性またはスクロール属性を含むスタイル シート クラスの名前を入力します。
    • 注意 : [プレゼンテーション スタイル] と [コンテンツ プレゼンテーション スタイル] の相違は、たとえば、スタイル指定が適用される場所の違い (ポートレットかコンテンツか) です。どちらを使用するかは、具体的なスタイル指定で実行する内容の詳細によります。

      図 5-32 に、[コンテンツ プレゼンテーション スタイル] を使用して設定された高さプロパティの例を示します。

      図 5-32 ポートレットの高さとスクロール - プレゼンテーション プロパティの例


      ポートレットの高さとスクロール - プレゼンテーション プロパティの例

      図 5-32 のエントリに基づく外観は、図 5-33 の例のようになります。

      図 5-33 ポートレットの高さとスクロール - ポートレットの外観の結果


      ポートレットの高さとスクロール - ポートレットの外観の結果

      [プレゼンテーション スタイル] プロパティでなく、[プレゼンテーション クラス] プロパティを使用する場合、対応するスタイルのクラスを CSS ファイルに定義する必要があります。

      たとえば、[コンテンツ プレゼンテーション クラス] フィールドで値 .portlet-scroll を使用する場合、以下のスタイル クラス定義が CSS ファイルに設定済みであることが必要です。

      .portlet-scroll
      {
         overflow:auto;
         height:250px;
      }

  4. [ファイル|保管] を選択し、変更を保存します。

すべてのポートレットのスクロール

ポートレットの高さとスクロールを自動的に指定するには、標準のポートレット コンテンツの CSS クラスにルールを追加指定します。たとえば、以下のいずれかを実行できます。

ポータルのスキン、テーマ、スケルトンの詳細については、『ポータル開発ガイド』を参照してください。

 


ページ フロー ポートレットの要求データの取得

ページ フローは、要求の中に情報を格納します。ポータル ページに複数のページ フロー ポートレットがある場合、各ページ フローが個別にその情報を格納し、取得するための方法を用意する必要があります。たとえば、あるページのリクエスト オブジェクトに変数 car_type とその値 x があるとします。ページ フローは、実行中にこの値を取得し、何らかの方法で使用します。ここで、別のページ フロー ポートレットで car_type 値に z が指定されていると仮定します。この場合、ページ全体で要求が 1 つしか存在しなければ、2 つのページ フロー ポートレットが互いに干渉する可能性があります。この問題を解消するために、WebLogic Portal は、基本的に、外部 (ポータル) の要求のコピーを作成し、スコープ指定された要求をポートレットごとに 1 つずつ作成します。これにより、各ページ フロー ポートレットは、その情報を格納するために独自のユニークな要求を持つことになります。

場合により、スコープ指定された要求の中でなく、外部要求に格納された情報を使用することもできます。

たとえば、Netui フォーム タグの中で通常の HTML タグを使用する場合は、以下のようになります。

<netui:form action="myAction">
   <input type="check box" name="test"/>
   <netui:button value="myAction"></netui:button>
</netui:form>

上記で使用されるタグでは、以下のような通常の getParameter 要求を使用するのが一般的です。

<%request.getParameter("test")%>

ただし、外部要求から HTML 入力値を取得するには、以下のコードを使用します。

<%@page import="org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils"%>
   <%
   HttpServletRequest outerRequest = ScopedServletUtils.getOuterRequest
   ( request );
   %>
   test: <%=outerReq.getParameter("test")%>

 


ポートレットでの JSP タグおよびコントロール

WebLogic Portal には、JSP 内で使用できる JSP タグが用意されています。Workshop for WebLogic で JSP デザイン パレット ビューを使用すると、使用可能な JSP タグを表示して、それらを JSP のソース ビューにドラッグしたり、プロパティ ビューを使用してコードの要素を編集したりできます。

また、WebLogic Portal には、ビルド済みモジュールをポータルに簡単に追加できるようにするためのカスタム Java コントロールがあります。カスタム Java コントロールは、イベント管理、訪問者ツール、コミュニティ管理などに使用されます。たとえば、ほとんどのユーザ管理機能は、ページ フローの User Manager コントロールを使用して簡単に公開できます。

注意 : デスクトップ、ブック、ページなどのポータル (netuix) フレームワーク コントロールの参照には、用語コントロールも使用されます。テキストでは、これらのコントロールはポータル フレームワーク コントロールとも呼ばれます。

使用可能な JSP タグの表示

Workshop for WebLogic で JSP を開くと、現在ロードされ、使用可能なすべての JSP タグを JSP デザイン パレット ([ウィンドウ|ビューの表示|JSP デザイン パレット]) に表示することができます。図 5-34 にその表示部分を示します。

図 5-34 使用可能な JSP タグが表示された JSP デザイン パレット

使用可能な JSP タグが表示された JSP デザイン パレット

タグを使用するには、タグをエディタにドラッグし、ソース ビューでコードを直接編集し、図 5-35 に示すようにプロパティ ビューでプロパティを設定します。

図 5-35 デザイン ビューへの JSP タグのドラッグ - Add User JSP タグのプロパティ

デザイン ビューへの JSP タグのドラッグ - Add User JSP タグのプロパティ

各 JSP タグに関連付けられた Java クラスについては、「コントロールの Javadoc」を参照してください。

使用可能なコントロールの表示

ページ フローの表示中に WebLogic Portal で使用可能なカスタム コントロールを表示するには、以下の手順を実行します。

  1. 既存のページ フロー (.jpf ファイル) を開くか、新しいページ フローを作成します。
  2. Workshop for WebLogic によるページ フローの作成の詳細については、『BEA Workshop for WebLogic Platform プログラマーズ ガイド』を参照してください。

  3. ページ フロー パースペクティブをまだ使用していない場合は、そのパースペクティブに切り替えるかどうかを Workshop for WebLogic から確認されます。メッセージに従って切り替えます。
  4. 図 5-36 に示すように、ページ フローのソース ビューを右クリックして、 [挿入|コントロール] を選択します。
  5. 図 5-36 [挿入|コントロール] メニューの選択


     [挿入|コントロール] メニューの選択

    図 5-37 のような [コントロールの選択] ダイアログが表示されます。

    図 5-37 [コントロールの選択] ダイアログ


    [コントロールの選択] ダイアログ

  6. 目的のフォルダを展開し、選択の対象となる WebLogic Portal のカスタムの Java コントロールを表示します。

WebLogic Portal のカスタム コントロールを追加した後で、コントロールのメソッドはすべてページ フローで使用可能になります。

WebLogic Portal に用意されているカスタム コントロールの詳細については、『ポータル開発ガイド』を参照してください。各コントロールの詳細については、「コントロールの Javadoc」を参照してください。

 


ポートレット状態の永続性

ポートレット状態の永続性を管理するには、デフォルトで WEB-INF ディレクトリに存在する netuix-config.xml ファイルの persistence-enabled 属性を使用します。この属性を使用すると、状態が WebLogic Portal データベースに保存されます。この属性は、デフォルトで false に設定されます。

以下のコード セグメントに属性の構文の例を示します。

<control-state-location>
<session persistence-enabled="true"/>
</control-state-location>

WebLogic Portal は PROPERTY_KEY テーブルにコントロール ツリーのエントリを以下の PROPERTY_SET_NAME 値と共に格納します。

 


ポータルへのポートレットの追加

ポータル ライフサイクルの開発段階では、Workshop for WebLogic ワークベンチを使用してポータルにポートレットを追加します。

注意 : ページにポートレットを追加する前に、ページのレイアウトを設定する必要があります。プレースホルダでのポートレットの縦位置と横位置は、ページに選択されたレイアウトによって決まります。

以下の手順を実行します。

  1. [パッケージ・エクスプローラ] ビューで、ポートレットを追加するポータル ([.portal] ファイル) をダブルクリックします。
  2. エディタにポータルが表示されます。

  3. ポータルに複数のページがある場合は、目的のページをクリックして選択します。
  4. パレット ビューから、ポートレット ([.portlet] ファイル) をポータル ページ上の目的の位置までドラッグします。
  5. 図 5-38 にこの手順の例を示します。

    図 5-38 [パレット] からエディタ ビューのポータル ページへのポートレットのドラッグ


    [パレット] からエディタ ビューのポータル ページへのポートレットのドラッグ

ポートレットを選択すると、プロパティ ビューを使用して目的のポートレット プロパティをカスタマイズできます。

ポートレット プロパティの詳細については、「ポートレット プロパティ」を参照してください。

ワークベンチ エディタ内のページにポートレットを追加すると、そのポートレットの参照が [.portal] ファイルに追加されます。WebLogic Portal Administration Console で、この [.portal] ファイルをデスクトップ作成のテンプレートとして使用できます。ポータル管理者がそのテンプレートに基づいてデスクトップを作成すると、ポートレットはポータル リソース ライブラリに追加され、このライブラリでストリーミング デスクトップのページにポートレットを追加することができます。ファイルベース ポータルとストリーミング ポータルの相違の概要については、『ポータル開発ガイド』を参照してください。

ポータル ライフサイクルのステージング段階では、WebLogic Portal Administration Console を使用してデスクトップ上のポートレットをコンフィグレーションします。ポートレットのインスタンスを作成して、単一のポートレット定義を 1 つまたは複数のポータル (デスクトップ) に関連付けることができます。これらの各ポートレット インスタンスに独自の「個性」を持たせ、各種のコンフィグレーション オプションの指定に従って動作させることができます。

WebLogic Portal Administration Console でポータル デスクトップにポートレットを追加する具体的な方法については、「ページのポートレットの管理」を参照してください。

 


ポートレットの削除

ポータル Web プロジェクトからポートレットを削除せずにポータルからポートレットを削除するには、Workshop for WebLogic ワークベンチのエディタでポートレットを右クリックし、[削除] をクリックします。

ポータル Web プロジェクトからポートレットを削除するには、[パッケージ・エクスプローラ] ビューでポートレットを右クリックし、[削除] をクリックします。

Administration Console を使用してポートレット インスタンスをポータル デスクトップに構築した後でポートレットを削除する方法については、「ポートレットの削除」を参照してください。

 


サードパーティのポートレット

ポータルに簡単に組み込むことができる特殊用途のポートレットが WebLogic Portal パートナ企業から提供されています。その企業は、Autonomy、Documentum、MobileAware などです。

以下の節で、サードパーティ ポートレットの詳細について説明します。

Autonomy ポートレット

WebLogic Portal には、Autonomy 製の検索機能のライセンスが付属しています。これらの機能を使用して、ポータルにエンタープライズクラスの検索を統合することができます。一般的な使用例として、コンテンツ管理システム、リレーショナル データベース、および外部 Web サイトとの統合があります。WebLogic Portal に付属する一部のポートレットを使用した検索では、これらの情報源を公開することができます。また、開発者は、ポータルに検索を統合するために新しいポートレットとビジネス ロジックを作成するとき、Autonomy API を使用することもできます。

WebLogic Portal 9.2 では、BEA 製の検索 API は非推奨になりました。検索機能を実装する場合は、Autonomy API を使用することをお勧めします。

Autonomy の詳細については、「Autonomy のドキュメント」を参照してください。

Documentum ポートレット

EMC Documentum は BEA との提携のもと、EMC Documentum Content Services for BEA Weblogic Portal を提供しています。この製品は、BEA WebLogic Portal インフラストラクチャを通じて公開される Documentum 機能パッケージであり、この製品を使用すると、ユーザは、Web ページ、ドキュメント、音声や動画などのリッチ メディアを含む、あらゆるタイプのエンタープライズ コンテンツにアクセスして操作することができます。

ポートレット開発の立場から見たこの製品の重要な特徴は、Documentum ポートレットが組み込まれていることです。Documentum ポートレットはアプリケーション コンポーネントであり、標準的かつ強力なコンテンツ管理機能をポータル インタフェース経由でユーザに公開します。

Documentum ポートレットは、以下の 4 つの重要なアプリケーションを公開します。

WebLogic Portal の Documentum ポーレットの詳細については、「Documentum の Web サイト」を参照してください。

MobileAware ポートレット

BEA WebLogic Mobility Server では、マルチチャネル モバイル サービスを非常に短い期間で提供するために、BEA WebLogic デプロイメントを拡張した標準ベースの非独占的環境を提供しています。企業は、従業員や顧客のために基幹システムの有効性を拡大でき、携帯電話会社は、データ中心の新しいサービスを迅速にデプロイできます。再トレーニングやツールの変更は不要です。

BEA WebLogic Mobility Server と WebLogic Portal での使用方法については、「e-docs Web サイト」の製品のドキュメントを参照してください。

 


タグ ライブラリによる高度なポーレット開発

開発段階では、GroupSpace コミュニティ、カスタム コミュニティ、またはポータル Web アプリケーションに他のリソースを追加できます。これらリソースは以下の 3 つのタグ ライブラリに含まれます。

その他の情報については、『コミュニティ ガイド』を参照してください。

ActiveMenus を追加する

GroupSpace コミュニティ、カスタム コミュニティ、またはポータル Web アプリケーションに ActiveMenus JSP タグ ライブラリを追加できます。

ActiveMenus JSP タグ ライブラリでは、マウスを特定のテキストの上に置いた時に表示されるポップアップ メニューを設定できます。[activemenus-config.xml] ファイルは、各メニューのコンテンツを制御します。[activemenus_taglib.jar] ファイルには、ActiveMenus タグ ライブラリが格納されます。

デフォルトでは、GroupSpace コミュニティで ActiveMenus が有効化されているため、ActiveMenus タグだけをコンフィグレーションする必要があります (「ActiveMenus タグのコンフィグレーション」を参照)。GroupSpace コミュニティの ActiveMenus タグのサンプルについては、図 5-39 を参照してください。

図 5-39 GS Issue ポートレット内の ActiveMenus

GS Issue ポートレット内の ActiveMenus

マウスを項目 (問題など) の上に移動し、表示される矢印の上に移動すると、ActiveMenu が表示されます。このアクティブ メニューとユーザの機能を関連付けることができます。この例では、項目の削除を含む機能を割り当てられた場合は、図 5-39 に示すように、[削除] 機能が表示されます。

ヒント : GroupSpace コミュニティがある場合は、以下の手順を実行する必要はありません。 GroupSpace コミュニティではデフォルトで ActiveMenus が有効になっています。

カスタム コミュニティの ActiveMenus を有効化するには、以下の手順を実行します。

  1. Workshop for WebLogic で、[activemenus_taglib.jar] ファイルをポータル Web プロジェクトで使用できるようにします。ポータル Web プロジェクトを作成する場合は、[WebLogic Portal コラボレーション] チェック ボックスを選択して GroupSpace ファセットを有効にする必要があります。
  2. [activemenus-config.xml] ファイルをポータル Web プロジェクトの [/WEB-INF] ディレクトリに追加します。[activemenus-config.xml] ファイルを右クリックして [プロジェクトにコピー] を選択し、ファイルを追加します。ActiveMenus タグのコンフィグレーションの説明に従ってファイルをコンフィグレーションし、[activemenus-config.xml] ファイルを編集します。
  3. サーブレットとサーブレット マッピングを、ポータル Web プロジェクトの [/WEB-INF] ディレクトリにある [web.xml] ファイルに追加して、GetActiveMenusResourceServlet を登録します。[web.xml] ファイルをダブルクリックすると、Workshop for WebLogic でファイルを編集できます。ファイルの web-app 行を右クリックして、[子の追加|message-destination - welcome-file-list|servlet] を選択します。GetActiveMenusResourceServlet を servlet-name 行に追加します。com.bea.apps.groupspace.servlets.GetActiveMenusResourceServlet を servlet-class 行に追加します。編集したファイルを Workshop for WebLogic で表示するには、図 5-40 を参照してください。
  4. 図 5-40 Workshop for WebLogic での [web.xml] ファイルの編集


    Workshop for WebLogic での [web.xml] ファイルの編集

    コード リスト 5-1 のコード サンプルに、追加した新しい情報を示します。

    コード リスト 5-1 GetActiveMenusResourceServlet のコード サンプル
    <!-- ActiveMenus サーブレット マッピング -->
    <servlet>
    <servlet-name>GetActiveMenusResourceServlet</servlet-name>
    <servlet-class>
    com.bea.apps.groupspace.servlets.GetActiveMenusResourceServlet
    </servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>GetActiveMenusResourceServlet</servlet-name>
    <url-pattern>GetActiveMenusResourceServlet</url-pattern>
    </servlet-mapping>
  5. この変更を有効にするには、アプリケーションを再デプロイします。

ActiveMenus を有効化したら、ActiveMenus タグをコンフィグレーションする必要があります。

ActiveMenus タグのコンフィグレーション

ActiveMenus タグを使用するには、[activemenus-config.xml] ファイル を設定する必要があります (このコンフィグ ファイルを定義する XSDactivemenus-config.xsd として [activemenus_taglib.jar] ファイル内にあります)。この [activemenus-config.xml] ファイル は、Web アプリケーションの [/WEB-INF] ディレクトリに存在している必要があります。全く異なる項目、スタイル、アイコンなどで構成された複数のメニューを設定できます。

[activemenus-config.xml] ファイル をコンフィグレーションするには、以下のセクションを参照してください。

TypeInclude タグの使用

コンフィグレーション ファイルをクリーンな状態に保つには、typeInclude タグを使用します。type タグ (Type タグの使用を参照) を追加する代わりに、このタグを追加して、href 属性が type 情報のすべてを格納した XML ファイル (Web アプリケーションの相対パス) を指すように設定します。typeInclude タグのサンプルは次のようになります: <typeInclude xhref="/WEB-INF/activemenuTypes/ username.xml"/>

また、type タグは typeInclude タグと共にコンフィグレーション ファイルで使用できます。コード リスト 5-2 のコード サンプルを参照してください。

コード リスト 5-2 typeInclude タグは Type タグと共に [activemenus-config.xml] ファイルで使用できる
<typeInclude xhref="/WEB-INF/activemenuTypes/username.xml"/>
<type>
<menuItem>
<param name="linkId"/>
<action action="editLink">
<i18nNamebundleName="com.bea.apps.groupspace.links.
LinksPopupMenu" key="edit.link"/>
</action>
<img xsrc="wlpAppsCollaborationCore/images/wlp-edit-16.gif"/>
</menuItem>
</type>

別の XML ファイルを指す場合は、コード リスト 5-3 に示すように、正しくネームスペースを行うようにする。

コード リスト 5-3 [username.xml] という名の別の XML ファイルを指す
<type name="username"
xmlns="http://www.bea.com/servers/apps/groupspace/ui/
activemenus-config/9.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.bea.com/servers/apps/groupspace/ui/
activemenus-config/9.0">
...
</type>
Type タグの使用

type タグは、個々のメニューを定義して Web アプリケーション内で使用します。name 属性は各メニューでユニークな名前でなければなりません。これは、ActiveMenus タグを使用する場合に名前によりメニューが参照されるためです。以下に type タグのサンプルを示します。

<type name="foo">
</type>
注意 : TypeDefault タグと MenuItem タグは、type タグ内に含まれている必要があります。
TypeDefault タグの使用

typeDefault タグは、ActiveMenus タグが使用されている場合にブラウザに表示する内容を定義します。表示するテキスト、テキストのスタイル、マウスのテキストへの配置により表示される画像 (これはメニュー自体を示す) などをコントロールできます。

以下の項目は、ActiveMenus タグを使用した場合にブラウザ内に表示されます。

注意 : TypeDefault タグと MenuItem タグは、type タグ内に含まれている必要があります。
menuItem タグの使用

menuItem タグはポップアップ メニュー内の個々の項目を定義します。 コード リスト 5-4 に、menuItem タグを使用したコード サンプルを示します。

コード リスト 5-4 menuItem タグ
<menuItem>
<param name="userId"/>
<xmlHttp url="GetFirstNameServlet"/>
<row class="menuRow" style="backround-color:red"/>
<text class="menuText" style="color:#000000"/>
<rowRollover class="menuRowRollover" style="background-color:green"/>
<textRollover class="menuTextRollover" style="color:#FFFFFF"/>
</menuItem>
<menuItem>
<javascript>
<name>Testing</name>
<script>testing(this);</script>
</javascript>
</menuItem>
<menuItem default="true" showMenuItem="false">
<param name="q" value="foo"/>
<link url="http://www.google.com">
<name>Google</name>
</link>
</menuItem>
<menuItem>
<showMenuItem className="com.foo.CheckUserRights" methodName=
"doesUserHaveRights">
<rights name="can_view"/>
<rights name="can_edit"/>
</showMenuItem>
<allParams/>
<action action="addEditLink" disableAsync="true">
<i18nName bundleName="com.foo.LinksPopupMenu" key="edit.link"/>
</action>
</menuItem>
<menuItem>
<allParams/>
<dcAction action="showFeedData" dcContainerId="feedDataContainer">
<i18nName bundleName="com.foo.LinksPopupMenu" key="show.
feedData"/>
</dcAction>
</menuItem>

menuItem タグは、次の 4 つのタイプを持ったポップアップ メニュー内の個々の項目を定義します。

注意 : TypeDefault タグと MenuItem タグは、type タグ内に含まれている必要があります。

ActiveMenus タグの使用

[taglib.tld] ファイルは [activemenus_taglib.jar] ファイルにあります。

以下の属性と要素を ActiveMenus タグで使用できます。

注意: タグでクラスが指定された場合は、[activemenus-config.xml] ファイルで指定されたデフォルトのクラスがオーバーライドされ、デフォルトのスタイルは activename に適用されません。タグでスタイルが指定された場合は、デフォルトのクラスが activename に適用されます。タグで class="" が指定された場合は、デフォルトのクラスが activename に適用されません。

ドラッグ アンド ドロップの有効化

DragDrop JSP タグ ライブラリを使用すると、ドラッグ アンド ドロップ機能を GroupSpace コミュニティ、カスタム コミュニティ、またはポータル Web アプリケーションで有効化できます。JSP に表示されるドラッグ可能なオブジェクトを特定し、ドロップされたドラッグ可能なオブジェクトに反応するようにコンフィグレーションされるドロップ ゾーンを特定します。ドロップ ゾーンは、ページ フロー アクションのトリガ、JavaScript 機能の呼び出し、またはサーブレットへのデータの送信によって反応します。

DragDrop タグ ライブラリを使用する前に、以下のアクションを実行します。

DragDrop タグの使用

DragDrop タグ ライブラリには 3 つのタグが定義されています。以下に、各タグの使用法と JSP コードのサンプルを示します。

dragDropScript タグの使用

ページで他の DragDrop タグを使用する前に、dragDropScript タグを含める必要があります。このタグは、適切な JavaScript ライブラリが含まれるようにします。dragDropScript タグは属性を取りません。

次の例は、dragDropScript タグ: <dragdrop:dragDropScript/> の使い方を示します。

draggableResource タグの使用

draggableResource タグはページ上でドラッグ可能なリソースを指定します。このタグは次の属性を取ります。

draggableResource タグは、dragdrop:image 属性を持った子 img タグの検索を行います。この画像は、ドラッグ操作中に表示される画像になります。画像には絶対高さと幅の属性がなければなりません。

resourceId 値は、値が resourceDropZone にドロップされたときに、JavaScript 関数の getSourceId() によりアクセスできます。また、resourceId 値も、POST アクションをトリガする resourceDropZone にドロップされると、sourceId というリクエストのパラメータとして入手できます。コード リスト 5-7 を参照してください。

コード リスト 5-7 resourceDropZone にドロップされた sourceId リクエスト
<dragdrop:draggableResource imageId="0" resourceId="${id}"resourceName=
"${name}">
<img src="/image.gif" width="16px" height="16px"dragdrop:image="true"/>
${name}
</dragdrop:draggableResource>
resourceDropZone タグの使用

resourceDropZone タグは、ドラッグ可能なリソースをドロップできる領域を識別します。

このタグは次の属性を取ります。

次の属性のいずれかが必要です: jsFunctionCallpageFlowAction、または formActionjsFunctionCall が最も優先度が高く、次に pageFlowAction、最後に formAction となります。

targetId 値は、ドラッグ可能なリソースがドロップされたときに、JavaScript 関数の getTargetId() によりアクセスできます。また、ドラッグ可能なリソースがドロップされたときに POST アクションをトリガする targetId リクエストのパラメータとしても入手できます。この動作方法については、次のコードを参照してください。

<dragdrop:resourceDropZone targetId="${id}" pageFlowAction="moveIssue">
<img src="/folder.gif"/>Issues Folder
</dragdrop:resourceDropZone>

コード リスト 5-8 に、moveIssue アクションを IssuesPageFlowController.java という名前のファイルにコーディングする方法を示します。

コード リスト 5-8 moveIssue アクションのコーディング
@Jpf.Action(forwards={ @Jpf.Forward(name = "success", path =
"displayIssuesTree.do")})
protected Forward moveIssue() {
Forward forward = new Forward("success");
String sourceId = getRequest().getParameter("sourceId");
String targetId = getRequest().getParameter("targetId");
move(sourceId, targetId);
return forward;
}

動的コンテンツの有効化

DynamicContent タグ ライブラリを使用すると、GroupSpace コミュニティ、カスタム コミュニティ、またはポータル Web アプリケーションで JSP ページの部分を素早く更新できます。

DynamicContent タグで、AJAX リクエストを使用して、ページ フロー ベースのポートレット内で JSP ページの一部を更新できます。タグを使用すると、ポータル リクエスト全体を実行せずにページの一部を更新できます。これらの AJAX リクエストは、ポータル リクエストより小さくて速いため、ポータル アプリケーションと対話する場合、より即応性のあるユーザ環境が提供されます。

これらのタグは標準的なページ フロー ベースのポートレット開発に簡単に組み込むことができ、ユーザのポータルの使用感を向上できる高度なユーザ インタフェースを作成するのに役立ちます。

注意 : DynamicContent タグはポートレット コンテンツの非同期表示とは関係がありません。ポートレットの非同期では、ポーレット全体のコンテンツをポータルから独立して表示できます。DynamicContent タグはポーレット内の JSP ページの小部分に影響を与えるように設計されています。

DynamicContent タグについて

このセクションでは、DynamicContent タグ ライブラリの主なタグについて説明します。

Container タグ

Container タグは、ページ フロー アクションの実行による HTML 出力を格納する JSP ページ上の場所を指定します。このタグに必要な唯一の属性はコンテナ id です。この id は、コンテナを識別するために他の DynamicContent タグにより参照されます。次のコードに、このタグの使用方法を示します: <dc:container dcContainerId="outputContainer"/>

Container Action Script タグ

このタグは Container タグの子で、実行可能なページ フロー アクションを識別し、その HTML 出力は親コンテナ内に配置されます。containerActionScript タグは次の属性を取ります。

action 属性だけが必須です。次のサンプル コードに、このタグを親 Container タグで使用する方法を示します。

<dc:container dcContainerId="outputContainer">
<dc:containerActionScript action="resetDynamicContentContainer"
initial="true"/>
<dc:containerActionScript action="showServerTime"/>
<dc:container/>
Execute Container Action タグ

Execute Container Action タグは、コンテナ内の特定のアクションの呼び出しを作成するために使用します。このタグは次の属性を取ります。

dcContainerId 属性および action 属性が必要です。次に、このタグの使用方法のサンプルを示します。

<dc:executeContainerAction action="showServerTime" dcContainerId=
"outputContainer"
var="showServerTimeVar"/>

前のサンプルでは、特例のアクションの呼び出しを変数 showServerTimeVar に格納しました。次に示す HTML コードにより、この変数を参照できます。

<form>
<input type="button" onclick="${showServerTimeVar}" value="Show Server
Time"/>
</form>

ユーザがボタンをクリックすると、showServerTime アクションを実行する AJAX リクエストが作成され、そのアクションにより生成された HTML 出力を outputContainer の id を持ったコンテナに配置します。

Parameter タグ

DynamicContent タグも、リクエストによりアクションに渡されるパラメータのタグを含みます。executeContainerAction タグまたは containerActionScript タグ内にパラメータを定義できます。これらのパラメータには、request.getParameter() method を呼び出すことにより、ページ フロー アクションでアクセスできます。

DynamicContent タグの使用

DynamicContent タグにはいくつかの重要な制限があります。ページ フロー アクションをトリガするために使用する AJAX リクエストは、メイン ポータル サーブレットにより処理されません。これらのリクエストは、一部の処理を実行する専用のサーブレットを調べて、適切なページ フローのインスタンスが使用されるようにします。通常はリクエストで入手できる多くの主要要素は、これらの AJAX リクエストからアクセスできません。たとえば、コミュニティ ベースのポータル アプリケーションでは、CommunityContext オブジェクトは AJAX リクエストからアクセスできません。これらのフレームワーク要素へのアクセスが足りないと、資格の付与やセキュリティなどに影響を与える可能性があります。

これらの制限のために、DynamicContent タグは、大規模なフレームワーク サービスに依存関係がほとんどなく、処理量が少ない場合の使用に適しています。次の使用例では、DynamicContent タグを最適化します。

[sample.zip] ファイルに含まれたサンプル コードやユーティリティについては、「dev2dev」を参照してください。


  ページの先頭       前  次