ヘッダーをスキップ
Oracle WebCenter Framework開発者ガイド
10g(10.1.3.4)
B50831-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

4 ページへの移入

この章では、WebCenterアプリケーションのページにコンポーネントを追加する方法を説明します。この章では、Oracle JDeveloperやOracle ADFページの作成の基礎については説明していませんので注意してください。WebCenterアプリケーション・ページに固有のページ作成局面についてのみ説明しています。このため、この章を読む前に、『Oracle Application Development Framework開発者ガイド』の内容をよく理解しておく必要があります。

4.1 ページ・コンテンツの概要

Oracle WebCenter Frameworkには、アプリケーション・ページに広範な種類のコンテンツを配置するための機能が備わっています。コンテンツ・タイプには、ポートレット、カスタマイズ可能コンポーネント、コンテンツ統合ツールなどがあります。オプションで、これらのコンポーネントのカスタマイズを可能にして、アプリケーションをよりフレキシブルにすることができます。また、Oracle WebCenter Frameworkでは、これらのコンポーネントを連携動作するようにリンクして、わかりやすく使いやすいアプリケーションにすることができます。

この項では、WebCenterアプリケーションのページに追加できるOracle WebCenter Frameworkコンポーネントについて説明します。この項の内容は、次のとおりです。


注意:

WebCenterアプリケーションに追加できるのは、これらのコンポーネントに限られていません。他のコンポーネントも同様に追加できます。このリストでは、Oracle WebCenter Frameworkに固有にコンポーネントのみを示しています。その他の使用可能なコンポーネントの詳細は、『Oracle Application Development Framework開発者ガイド』を参照してください。

4.1.1 ポートレットの概要

Oracle WebCenter Frameworkでは、ポートレット・プロデューサをアプリケーションに登録することにより、ポートレットを消費できます。プロデューサを登録した後は、Oracle JDeveloperのコンポーネント・パレットで、登録済プロデューサ名の下にそのポートレットが表示されます。他のコンポーネントと同様の方法で、コンポーネント・パレットからポートレットをドラッグしてページにドロップできます。

アプリケーションでは、(パッケージ・アプリケーションのベンダーなどの)サード・パーティから入手したポートレットと同様に、自分で構築したポートレットを消費できます。

ポートレット消費には多くのオプションが関連付けられています。たとえば、ポートレットをページに直接配置するか、カスタマイズ可能コンポーネント内にポートレットをネストするかを選択できます。また、ポートレット・タグ(adfp:portlet)の多くの属性は調整できます。複数のポートレットを連結することもできます。

この章では、ポートレット消費およびポートレット消費に関連するオプションについて説明します。この章の内容は、次のとおりです。

4.1.2 カスタマイズ可能コンポーネントの概要

カスタマイズ可能コンポーネントには、アプリケーションの「実行時に設計」動作を制御する機能が備わっています。カスタマイズ可能コンポーネントを使用すると、ユーザーは要件に応じてコンテンツのビューを操作できます。たとえば、あるユーザーが完全に非表示にするように選択したコンテンツの特定部分を、別のユーザーがページの一番上に移動することが可能です。カスタマイズ可能コンポーネントをページに追加すると、そのページはユーザーにカスタマイズ可能になります。

Oracle WebCenter Frameworkでは、次の2つのカスタマイズ可能コア・コンポーネントが提供されています。

  • ShowDetailFrame

  • PanelCustomizable

ShowDetailFrameは1つのOracle ADFコンポーネントを囲むもので、(たとえば、コンテンツを最小化するための)メニュー・アクションを備えた境界線およびクロム・バーを設定できます。ShowDetailFrameコンポーネントを使用すると、次のことが可能です。

  • 子コンポーネントの表示の最大化またはリストア

  • コンポーネントのクロムまたは境界線の設定

  • 子コンポーネントに対して特定のアクションを実行するためのアクション・メニューの設定

PanelCustomizableコンポーネントは、カスタマイズ可能コンポーネントを含むOracle ADFコンポーネントのグループに対して水平および垂直のレイアウト機能を提供します。ShowDetailFrameコンポーネントと同様に、PanelCustomizableコンポーネントでもクロムを表示してメニュー・アクションを設定できます。PanelCustomizableコンポーネントを使用すると、次のことが可能です。

  • 子コンポーネントの表示の最大化またはリストア

  • 子コンポーネントの表示/非表示の切替え

  • PanelCustomizableコンポーネント内の子コンポーネントの移動または並替え

カスタマイズ可能コンポーネントのすべての機能を活用するため、次の方法でShowDetailFrameコンポーネントとPanelCustomizableコンポーネントを追加できます。

  • ShowDetailFrameコンポーネントを使用して、その子コンポーネントの周りに境界線またはクロムをレンダリングすることによって、子コンポーネントの表示をカスタマイズするためのユーザー・インタフェース(UI)コントロールを設定します。たとえば、コンテンツの表示を移動、最小化または最大化するためのオプションを設定します。

    配置階層は次のとおりです。

    ShowDetailFrame
        ADF Faces component
    
  • PanelCustomizableコンポーネント内部でShowDetailFrameコンポーネントをラップして、子コンポーネントの表示/非表示を切り替える機能を設定します。

    配置階層は次のとおりです。

    PanelCustomizable
       ShowDetailFrame Child1
              ADF Faces component
       ShowDetailFrame Child2
              ADF Faces component
       Portlet
       Portlet
    

    注意:

    ポートレットには、ShowDetailFrameコンポーネントと同様の表示オプションを備えたポートレット・クロムが用意されています。このため、ShowDetailFrameコンポーネント内にポートレットを含める必要はありません。

4.1.2.1 外観およびカスタマイズの特性の定義

ページ上にShowDetailFrameコンポーネントを追加するには、ShowDetailFrameタグを使用します。オプションのリスト(図4-1に示すようなShowDetailFrameヘッダー上のリストとして使用可能)を使用すると、ユーザーは子コンポーネントの表示を制御できます。

図4-1に、次のコンポーネント配置階層を示します。

PanelCustomizable
   ShowDetailFrame Child1
          ADF Faces component
   Portlet

図4-1 ShowDetailFrameコンポーネントで選択可能なアクション

図4-1の説明が続きます
「図4-1 ShowDetailFrameコンポーネントで選択可能なアクション」の説明

ヘッダーの「処理」メニューから選択可能なオプションを使用することにより、コンテンツを最大化および最小化できます。cust:showDetailFrameタグのファセットを使用すると、独自のUIコントロールを追加して表示をさらにカスタマイズできます。

4.1.2.2 カスタマイズ可能コンポーネントのネスト

PanelCustomizableコンポーネント内部にShowDetailFrameコンポーネントを配置した場合、表示を最大化および最小化するだけでなく、子コンポーネントを上下または左右に移動できます。

図4-2に、子コンポーネントを備えたPanelCustomizableおよびShowDetailFrameコンポーネントのネストを示します。

図4-2 カスタマイズ可能コンポーネントのネスト

図4-2の説明が続きます
「図4-2 カスタマイズ可能コンポーネントのネスト」の説明

カスタマイズ可能コンポーネント内部でのコンテンツおよびポートレットの配置

PanelCustomizableおよびShowDetailFrameコンポーネントには、子コンポーネントとしてOracle ADF Facesコンポーネントを含めることができます。ただし、ポートレットはPanelCustomizableコンポーネントのみに含めれば十分です。ポートレットにはShowDetailFrameコンポーネントと同様の表示オプションを持つポートレット・クロムが備わっているため、ShowDetailFrameコンポーネントにポートレットを含める必要はありません。ShowDetailFrameコンポーネントにポートレットを含めても、メリットはありません。

PanelCustomizableおよびShowDetailFrameコンポーネントに子コンポーネントを追加する手順は、Oracle ADF Facesコンポーネントをページ上に追加する手順と同様です。子コンポーネントを追加する前に、Oracle JDeveloperの「構造」ペインで、PanelCustomizableまたはShowDetailFrameコンポーネントが選択されていることを確認してください。詳細は、4.3.2項「ページへのポートレットの追加」を参照してください。

4.1.3 JCRデータ・コントロールの概要

Java Content Repository(JCR)データ・コントロールは、ファイルおよびフォルダのコンテンツをページ上に公開するものです。このため、JCRデータ・コントロールを使用すると、コンテンツ・リポジトリからのコンテンツをWebCenterアプリケーション内に統合できます。特定のコンテンツ・リポジトリ(Oracle Content DBやファイル・システムなど)からコンテンツを選択するデータ・コントロールを作成します。作成したデータ・コントロールは、必要な書式(表など)のJSPドキュメントにドロップできます。JCRデータ・コントロールおよびコンテンツの統合の詳細は、第5章「コンテンツの統合」を参照してください。

4.2 Oracle ADFを使用したOracle JDeveloperでのWebCenterアプリケーション対応ページの構築

Oracle ADFを使用してOracle JDeveloperでページを作成する方法の詳細は、『Oracle Application Development Framework開発者ガイド』を参照してください。このガイドには、Oracle ADF Facesに関する必要な情報と、基本的および複雑なページを構築するために必要な情報がすべて記載されています。次の項では、WebCenterアプリケーション・ページの特殊な要件のいくつかを示します。

ページの要件

次のリストに、Oracle ADFを使用してOracle JDeveloperでWebCenterアプリケーション・ページを作成するときに適用される規則およびガイダンスを示します。

4.3 ポートレットの消費

この項では、アプリケーションに対してポートレットを使用可能にし(つまりポートレット・プロデューサを登録し)、ポートレットをページに追加し、ページからポートレットを削除するプロセスを、順を追って示します。この項の内容は、次のとおりです。

Oracleを介して事前構築済のポートレットを入手する方法の詳細は、3.2項「Preconfigured OC4Jの使用」を参照してください。Oracle JDeveloperのポートレット作成ウィザードの使用方法の詳細は、第18章「Javaポートレットの作成」を参照してください。ポートレットの詳細は、第14章「ポートレットの概要」を参照してください。

4.3.1 ポートレット・プロデューサの登録

ポートレットをWebCenterアプリケーションに追加する前に、ポートレットのプロデューサをアプリケーションに登録する必要があります。Oracle JDeveloperには、2つのプロデューサ登録ウィザード(WSRPプロデューサの登録ウィザードおよびPDK-Javaプロデューサの登録ウィザード)が用意されています。この項では、これらのウィザードの使用方法について説明します。この項の内容は、次のとおりです。


注意:

プロデューサの詳細は、15.4項「デプロイ・タイプ」を参照してください。

4.3.1.1 WSRPポートレット・プロデューサの登録

WSRPポートレット・プロデューサを登録する場合、プロデューサの操作パラメータを指定する基本情報を設定します。ポートレットを消費するアプリケーションは、プロデューサと通信したり、プロデューサを介してポートレットと通信するときに、この情報を使用します。

Oracle WebCenter Frameworkでは、WSRP 1.0プロデューサとWSRP 2.0プロデューサの両方がサポートされています。WSRP 2.0サポートは、WSRP 2.0の予備(試作)バージョンに対応するものです。予備サポートが提供されているのは、Oracle WebCenter Frameworkがリリースされた時点でWSRP 2.0標準が完成していなかったためです。

この新しい標準では特に、ポートレット間の通信およびポートレット・カスタマイズのエクスポートやインポートがサポートされます。つまり、標準ベースのJSR 168ポートレットを構築しながら、WSRP 2.0のメリットも活用できるということです。さらに拡張的なWSRP 2.0の機能を活用するには、Oracle固有のoracle-portlet.xmlメタデータ拡張機能を使用してください。

WSRP 2.0が提供するメリットを活用するには、WSRP 2.0を介して公開されたJSR 168ポートレットをOracle Container for J2EE(OC4J)にデプロイする必要があります。ポートレットのアプリケーション・プログラミング・インタフェース(API)の新しいバージョン(JSR 286)ではWSRP 2.0機能がサポートされる予定なので、JSR 286が入手可能になった時点でベンダー固有の拡張機能は不要になります。

WSRP 1.0プロデューサとWSRP 2.0プロデューサのどちらを登録する場合も、プロデューサ登録ウィザードが入口点となります。登録が正常に完了すると、新しく登録されたプロデューサがOracle JDeveloperのコンポーネント・パレットに表示されます。ここから、アプリケーション(jspx)ページに配置するポートレットを選択できます。また、プロデューサは、アプリケーション・ナビゲータで「ポートレット・プロデューサ」ノードの下にもリストされます。

WSRPポートレット・プロデューサを登録する手順は、次のとおりです。

  1. アプリケーション・ナビゲータで、プロデューサを作成するアプリケーションを右クリックし、ポップアップ・メニューから「新規」を選択します。

  2. 「新規ギャラリ」の「カテゴリ」で、「Web Tier」ノードを開き、「Portlets」を選択します。

  3. 「新規ギャラリ」の「項目」で、「WSRPプロデューサの登録」を選択します。

  4. 「OK」をクリックします。

  5. 「ようこそ」ページで、「次へ」をクリックします。

    オプションで、「次へ」をクリックする前に「次回にこのページを表示しない」を選択すると、次回からこのウィザードを使用するときに「ようこそ」ページは表示されません。ウィザードを以前に使用したときにこのオプションが選択されていた場合、「ようこそ」ページが表示されないことがあります。

  6. 「名前」フィールドに、プロデューサの名前を入力します。

    プロデューサに、プロデューサ間で一意の名前を付けます。


    注意:

    同じ名前が指定されたプロデューサは、コンポーネント・パレットに1回しか表示されません。したがって、2つのプロデューサを登録して、それぞれにMyProducerという名前を指定すると、MyProducerの名前は、コンポーネント・パレット上に1回しか表示されず、両方のプロデューサのポートレットが1つのインスタンスの下に表示されます。この場合、どのポートレットがどのプロデューサに属しているか判断することが難しくなります。

    このような状況になった場合は、いずれかのプロデューサを編集して一意の名前を指定することを考慮してください。4.3.1.3項「ポートレット・プロデューサ登録設定の編集」を参照してください。


  7. 「次へ」をクリックします。

  8. 「URLエンドポイント」フィールドに、プロデューサのURLを入力します。

    構文は、WSRP実装によって異なります。

    http://<host>:<port>/<context-root>/portlets/wsrp1?WSDL
    http://<host>:<port>/<context-root>/portlets/wsrp2?WSDL
    http://<host>:<port>/<context-root>/portlets?WSDL (WSRP 1.0 for backward compatibility)
    

    これらの意味は、次のとおりです。

    • hostは、プロデューザがデプロイされているサーバーです。

    • portは、HTTPリスナーのポート番号です。

    • context-rootはコンテキスト・ルートです。

    • portlets[/wsrp(1|2)]?WSDLは静的テキストです。ここに入力するテキストは、プロデューサがデプロイされている方法によって異なります。

    次に例を示します。

    http://myhost:7778/MyPortletApp/porlets/wsrp2?WSDL
    

    プロデューサ・テスト・ページには、次のURLを介してアクセスできます。

    http://host:port/context-root/info
    

    注意:

    「URLエンドポイント」は編集可能ですが、編集機能はホスト名、ポートまたはIPアドレスを更新する場合にのみ使用してください。新しいプロデューサを指定するために編集機能を使用しないでください。プロデューサを別のプロデューサに切り替えることは(ポートレットが同一であっても)、WSRP仕様ではサポートされていません。

  9. アプリケーションでプロデューサへの接続にHTTPプロキシを使用する場合は、次の手順を実行します。


    注意:

    このパネルのプロキシ・フィールドは、デフォルトでOracle JDeveloperの「プリファレンス」で設定されているプロキシ・プリファレンス・セット(「ツール」メニューから「プリファレンス」を選択し、「Webブラウザとプロキシ」を選択)に設定されます。

    1. 「WSRPポートレット・プロデューサへの連絡にプロキシを使用」を選択します。

      アプリケーションでプロデューサへの接続にHTTPプロキシを使用する場合は、このチェック・ボックスを選択します。コンシューマ・アプリケーションとリモート・ポートレット・プロデューサがファイアウォールで分断されていて、プロデューサとの通信にHTTPプロキシが必要な場合、プロキシが必要になります。

    2. 「プロキシ・ホスト」フィールドに、プロキシのURLを入力します。

    3. 「プロキシ・ポート」フィールドに、プロキシのポート番号を入力します。

  10. 「次へ」をクリックします。

  11. 「デフォルトの実行タイムアウト(秒)」フィールドで、WebCenterアプリケーションでポートレットがレンダリングされてからタイムアウトになるまでの秒数を入力します。

    プロデューサによっては、追加の登録プロパティを定義できるものもあります。このような場合は、ウィザードの「登録の詳細」パネルに、それらのプロパティが表として表示されます。ユーザーは、表のこれらの追加プロパティに対する値を入力できます。これらのプロパティはプロデューサに固有であり、登録時にのみ使用されます。つまり、コンシューマ・アプリケーションによりプロデューサに送信される情報を登録時に収集すると、プロデューサによってコンシューマに対してこの情報が格納され、以降は使用されます。

    この時点で、「終了」をクリックして登録を完了できます。プロデューサ(したがってそのポートレット)へのアクセスのたびに認証を必要とする場合、または、プロデューサのポートレットに定義されているユーザー・カテゴリをアプリケーションに定義されているJ2EEセキュリティ・ロールにマップする場合は、続行します。

  12. 「次へ」をクリックします。

  13. 「トークン・プロファイル」リストから、WSRPプロデューサでの認証に使用するトークン・プロファイルのタイプを選択します。

    次のうちから選択します。

    • ユーザー名トークン: Webサービス・コンシューマは、ユーザー名でリクエスタを識別する手段として「ユーザー名トークン」を指定して、Webサービス・プロデューサに対してそのアイデンティティを認証できます。

    • SAMLトークン: SAML(Security Assertion Markup Language)は、認証権限および認可権限を定義するセキュリティ・トークンを渡すためのXMLベースのアプローチです。(レシーバとの信頼関係をすでに持っている)証明エンティティは、送信者保証と呼ばれる方式によってサブジェクトの検証を保証します。

    • なし: トークンはありません。「なし」を選択した場合、SOAPメッセージにWS-Securityヘッダーは添付されません。この場合、プロデューサ登録を完了するための「終了」ボタンが有効になります。

  14. 「デフォルト・ユーザー」フィールドに、ユーザーがWebCenterアプリケーションに対して認証されていないときにリモート・プロデューサにアサートするユーザー名を入力します。

    認証されていない場合、anonymousというアイデンティティがアプリケーション・ユーザーに関連付けられます。anonymousの値がリモート・プロデューサに適していない場合は、ここに別のアイデンティティを指定する必要があります。ただし、この場合は、WebCenterアプリケーションがユーザーを認証していないため、指定したデフォルト・ユーザーはリモート・プロデューサで権限の低いユーザーになることに注意してください。ユーザーがアプリケーションで認証されている場合、デフォルト・ユーザーではなくそのユーザーのアイデンティティがアサートされます。

  15. 「発行者名」フィールドに、SAMLトークンの発行者名(www.oracle.comなど)を入力します。

    このフィールドは、「トークン・プロファイル」リストから「SAMLトークン」が選択されている場合にのみ表示されます。発行者名は、サブジェクトの検証用の証明エンティティ保証です。

  16. 「XML署名」で、WS-SecurityのKeyInfo内部で署名証明書が参照される手段を選択します。

    XML署名は、SOAPメッセージの真正性を提供するためにセキュリティ・トークンとSOAPメッセージ本体をデジタル署名する場合に使用されます。このパネルを使用して、WS-SecurityのKeyInfo内部で署名証明書が参照される手段を指定します。

    「バイナリ・セキュリティ・トークン」または「サブジェクト・キー識別子」を選択します。

  17. 「次へ」をクリックします。

  18. 「ストア・パス」フィールドに、SOAPメッセージの一部(セキュリティ・トークンとSOAPメッセージ本体)を署名するために使用される証明書および秘密鍵が含まれるキーストアのフルパスを入力します。

    オプションで、「参照」をクリックし、ファイルにナビゲートして選択します。選択するファイルは、Java keytoolを使用して作成したキーストアの場合や、Oracle Walletの場合があります。

  19. 「ストア・パスワード」フィールドで、キーストアの作成時に設定されたキーストアに対するパスワードを指定します。

    ストア・パスワードが正しくないと、「ストア・タイプ」フィールドと「署名キーの別名」リストは移入されません。

    間違ったパスワードを入力すると、パスワードは無効で修正する必要があるというエラー・メッセージが表示されます。パスワードを修正した後、[Tab]キーを押して別のアクティブ・フィールド(「ストア・パス」フィールドなど)に移動します。これにより、「ストア・タイプ」フィールドと「署名キーの別名」リストは適切に移入されます。

    「ストア・タイプ」の値はキーストアから読み取られ、常に編集不可能です。適用可能な値には、「JKS」(Javaキーストア)や「Oracleウォレット」などがあります。

  20. 「署名キーの別名」リストから、署名キーの別名を選択します。

    「ストア・パスワード」フィールドに正しいパスワードが入力されると、「署名キーの別名」リストに自動的に移入されます。「署名キーの別名」は、署名に使用される秘密鍵に関連付けられた証明書の識別子です。指定されたキーストアで見つかったキーの別名は、リストで選択可能になります。署名に使用するキーの別名を選択してください。

  21. 「署名キーのパスワード」フィールドで、「署名キーの別名」に指定されている別名で識別されるキーにアクセスするためのパスワードを指定します。

  22. 「終了」をクリックして、WSRPポートレット・プロデューサの登録を完了します。

この次の手順は、登録するプロデューサでユーザー・カテゴリを宣言するかどうかによって異なります。


注意:

ほとんどの登録設定は編集できます。たとえば、ここでプロデューサのユーザー・カテゴリをJ2EEセキュリティ・ロールとマップすることを拒否した場合、後でウィザードを再入力し、「ユーザー・カテゴリ」タブのマッピング情報を入力できます。詳細は、4.3.1.3項「ポートレット・プロデューサ登録設定の編集」を参照してください。

プロデューサ宣言のユーザー・カテゴリをアプリケーション定義のJ2EEセキュリティ・ロールにマッピング

プロデューサで宣言するユーザー・カテゴリは、プロデューサに含まれるポートレットから導出されます。たとえば、規格に基づいたJavaポートレット(JSR 168)ウィザードで作成された1つ以上のJSR 168ポートレットがプロデューサに含まれる場合、ポートレット作成中に追加されたセキュリティ・ロールはすべて、プロデューサで宣言するユーザー・カテゴリに含められます。J2EEセキュリティ・ロールは、WebCenterアプリケーションのweb.xmlファイルのプロパティを介して指定できます。

この手順は、前の手順からの続きです。

プロデューサで宣言されたユーザー・カテゴリをアプリケーションで定義されたJ2EEセキュリティ・ロールにマップする手順は、次のとおりです。

  1. 「マッピング」ダイアログ・ボックスで、アプリケーションJ2EEセキュリティ・ロール列をクリックします。

    このダイアログ・ボックスにアクセスするには、プロデューサ登録時に、登録を完了し、マッピングを続行するかどうか尋ねられたら「はい」をクリックします(4.3.1.1項を参照)。また、このダイアログ・ボックスには、プロデューサ登録設定の編集時にもアクセスできます(4.3.1.3項を参照)。

  2. 表示されるリストから、プロデューサのユーザー・カテゴリにマップするセキュリティ・ロールを選択します。

  3. ユーザー・カテゴリごとに手順1および2を繰り返します。

  4. すべてのユーザー・カテゴリがマップされたら、「OK」をクリックします。

4.3.1.2 PDK-Javaポートレット・プロデューサの登録

Oracle PDK-Javaポートレット・プロデューサを登録する場合、プロデューサの操作パラメータを指定する基本情報を設定します。この情報は、WebCenterアプリケーションがプロデューサと通信したり、プロデューサを介してポートレットと通信するときに消費されます。

登録が正常に完了すると、新しく登録されたプロデューサがOracle JDeveloperのコンポーネント・パレットに表示されます。ここから、アプリケーション(jspx)ページに配置するポートレットを選択できます。また、プロデューサは、アプリケーション・ナビゲータで「ポートレット・プロデューサ」ノードの下にもリストされます。

Oracle PDK-Javaポートレット・プロデューサを登録する手順は、次のとおりです。

  1. アプリケーション・ナビゲータで、プロデューサを作成するアプリケーションを右クリックし、ポップアップ・メニューから「新規」を選択します。

  2. 「新規ギャラリ」の「カテゴリ」で、「Web Tier」ノードを開き、「Portlets」を選択します。

  3. 「新規ギャラリ」の「項目」で、「Oracle PDK-Javaプロデューサ登録」を選択します。

  4. 「OK」をクリックします。

  5. 「ようこそ」ページで、「次へ」をクリックします。

    オプションで、「次へ」をクリックする前に「次回にこのページを表示しない」を選択すると、次回からこのウィザードを使用するときに「ようこそ」ページは表示されません。ウィザードを以前に使用したときにこのオプションが選択されていた場合、「ようこそ」ページが表示されないことがあります。

  6. 「名前」フィールドに、プロデューサの名前を入力します。

    プロデューサに、プロデューサ間で一意の名前を付けます。


    注意:

    同じ名前が指定されたプロデューサは、コンポーネント・パレットに1回しか表示されません。したがって、2つのプロデューサを登録して、それぞれにMyProducerという名前を指定すると、MyProducerの名前は、コンポーネント・パレット上に1回しか表示されず、両方のプロデューサのポートレットが1つのインスタンスの下に表示されます。この場合、どのポートレットがどのプロデューサに属しているか判断することが難しくなります。

    このような状況になった場合は、いずれかのプロデューサを編集して一意の名前を指定することを考慮してください。4.3.1.3項「ポートレット・プロデューサ登録設定の編集」を参照してください。


  7. 「次へ」をクリックします。

  8. 「URLエンドポイント」フィールドに、次の構文を使用してプロデューサのURLを入力します。

    http://<host>:<port>/<context-root>/providers
    

    これらの意味は、次のとおりです。

    • hostは、プロデューザがデプロイされているサーバーです。

    • portは、サーバーがHTTPリクエストをリスニングするポートです。

    • context-rootは、Webアプリケーションのコンテキスト・ルートです。

    • providersは静的テキストです。ここに入力するテキストは、プロデューサがデプロイされている方法によって異なります。

    次に例を示します。

    http://myHost:7778/myEnterprisePortlets/providers
    
  9. 「サービスID」フィールドに、このプロデューサの一意の識別子を入力します。

    PDK-Javaでは、1つのアダプタ・サーブレットの下に複数のプロデューサをデプロイできます。これらのプロデューサは、それぞれ一意のサービスIDによって識別されます。サービスIDが必要になるのは、URLエンドポイントにサービスIDまたはプロデューサ名が追加されていない場合のみです。たとえば、次のURLエンドポイントにはsampleというサービスIDが必要です。

    http://domain.us.company.com:<port_number>/axyz/providers
    

    しかし、次のURLエンドポイントにはサービスIDは不要です。

    http://domain.us.company.com:<port_number>/axyz/providers/sample
    
  10. アプリケーションでプロデューサへの接続にHTTPプロキシを使用する場合は、次の手順を実行します。


    注意:

    このパネルのプロキシ・フィールドは、デフォルトでOracle JDeveloperの「プリファレンス」で設定されているプロキシ・プリファレンス・セット(「ツール」メニューから「プリファレンス」を選択し、「Webブラウザとプロキシ」を選択)に設定されます。

    1. 「PDKポートレット・プロデューサへの連絡にプロキシを使用」を選択します。

      アプリケーションでプロデューサへの接続にHTTPプロキシを使用する場合は、このチェック・ボックスを選択します。コンシューマ・アプリケーションとリモート・ポートレット・プロデューサがファイアウォールで分断されていて、プロデューサとの通信にHTTPプロキシが必要な場合、プロキシが必要になります。

    2. 「プロキシ・ホスト」フィールドに、プロキシ・ホストのURLを入力します。

    3. 「プロキシ・ポート」フィールドに、プロキシ・ホストのポート番号を入力します。

  11. このプロデューサが外部アプリケーションに対する認証を提供する必要がある場合は、「プロデューサと外部アプリケーションとの関連付け」を選択し、アプリケーションを選択します。

    詳細は、10.7項「資格証明を必要とする外部アプリケーションへのアクセス」を参照してください。

  12. 「プロデューサ・セッションの有効化」を選択して、ポートレット・プロデューサのセッションを有効化します。

    このオプションは、プロデューサとOC4Jサーバーの間のセッションを有効化する場合に使用します。プロデューサとサーバー間の通信にセッションがない場合は、このオプションを選択しないでください。

    セッションが有効化されると、サーバーは、ユーザー名などのセッション固有の情報を保守します。メッセージ認証ではセッションが使用されるため、共有キーが設定されている場合は、このオプションも選択する必要があります。

  13. 「次へ」をクリックします。

  14. 「デフォルトの実行タイムアウト(秒)」フィールドで、WebCenterアプリケーションでポートレットがレンダリングされてからタイムアウトになるまでの秒数を入力します。

  15. 「サブスクライバID」フィールドに、登録するプロデューサのコンシューマを識別する文字列を入力します。

    プロデューサが登録されると、プロデューサのコールが送信されます。コール中、コンシューマは「サブスクライバID」の値をプロデューサに渡します。「サブスクライバID」がプロデューサの予測した値でない場合、プロデューサは登録コールを拒否することがあります。

  16. 「共有キー」フィールドに、暗号化を処理するために設定されているプロデューサに使用する共有キーを入力します。

    共有キーは、メッセージ認証用のメッセージ署名を生成するための暗号化アルゴリズムで使用されます。共有キーを使用してプロデューサが設定されている場合に、ここに間違った共有キーを入力すると、プロデューサ登録は失敗しますので注意してください。共有キーには、英数字10〜20文字を含めることができます。

  17. 「終了」をクリックして、PDK-Javaポートレット・プロデューサの登録を完了します。

  18. 「OK」をクリックして、成功メッセージを閉じます。

4.3.1.3 ポートレット・プロデューサ登録設定の編集

WSRPポートレット・プロデューサの登録ウィザードとPDK-Javaポートレット・プロデューサの登録ウィザードではいずれも、プロデューサを登録したとき入力した値の多くをアクセスおよび修正できます。


注意:

編集を完了した後は、プロデューサ接続をテストして、接続情報が有効であるか確認することを考慮してください。詳細は、4.3.1.4項「ポートレット・プロデューサ接続のテスト」を参照してください。

WSRPポートレット・プロデューサまたはOracle PDK-Javaポートレット・プロデューサを編集する手順は、次のとおりです。

  1. アプリケーション・ナビゲータで、プロデューサにナビゲートします。

    Applications
      <ApplicationName>
        Portlet Producers
    
  2. 編集するプロデューサを右クリックし、ポップアップ・メニューから「編集」を選択します。


    注意:

    アプリケーション・ナビゲータでプロデューサをダブルクリックして、編集モードでプロデューサを開くこともできます。

  3. ウィザードの一番上にあるタブをクリックすると、別の設定パネルが前面表示されます。

4.3.1.4 ポートレット・プロデューサ接続のテスト

接続テスト機能には、ポートレット・プロデューサ接続の有効性をテストする手段が備わっています。

ポートレット・プロデューサ接続をテストする手順は、次のとおりです。

  1. アプリケーション・ナビゲータで、プロデューサにナビゲートします。

    Applications
      <ApplicationName>
        Portlet Producers
          <ProducerName>
    
  2. 編集するプロデューサを右クリックし、ポップアップ・メニューから「プロデューサ接続のテスト」を選択します。

    テストの実行中は、プログレス・バーが表示されます。テストが完了すると、成功または失敗のダイアログ・ボックスが表示されます。「OK」をクリックして、このダイアログ・ボックスを閉じます。

    失敗のダイアログ・ボックスが表示されたら、プロデューサ登録の詳細を再編集し、プロデューサ接続を再テストすることを考慮してください。さらに、プロデューサが使用可能であることを確認してください。たとえば、プロデューサがPreconfigured Oracle Containers for J2EE(OC4J)を介して提供されている場合は、Preconfigured OC4Jが稼働中であることを確認してから、接続を再テストします。

4.3.1.5 ポートレット・プロデューサのリフレッシュ

ポートレット・プロデューサをリフレッシュすると、そのプロデューサに属するポートレットもリフレッシュされます。つまり、新しく追加されたポートレットや、既存のポートレットに対する更新内容が、このプロデューサに属するポートレットを消費しているアプリケーションに対して使用可能になります。


注意:

ポートレットがプロデューサから削除された場合は、必ず、ポートレットが配置されているすべてのアプリケーション・ページからそのポートレットを手動で削除してください。詳細は、4.3.5項「アプリケーション・ページからのポートレットの削除」を参照してください。

WSRPポートレット・プロデューサまたはOracle PDK-Javaポートレット・プロデューサをリフレッシュする手順は、次のとおりです。

  1. アプリケーション・ナビゲータで、プロデューサにナビゲートします。

    Applications
      <ApplicationName>
        Portlet Producers
    
  2. 編集するプロデューサを右クリックし、ポップアップ・メニューから「リフレッシュ」を選択します。

  3. ポートレット・プロデューサのリフレッシュ・ダイアログ・ボックスで、「はい」をクリックします。

  4. 「OK」をクリックして、「成功」ダイアログ・ボックスを閉じます。

4.3.1.6 ポートレット・プロデューサの登録解除

プロデューサを登録解除すると、WebCenterアプリケーション・エンドとリモート・プロデューサ・エンドの両方から登録データが削除されます。アプリケーション・エンドでは、プロデューサ接続が削除されます。プロデューサ・エンドでは、ポートレット・インスタンスが削除されます(ただし、ポートレットそのものは削除されません)。

ポートレット・インスタンスはリモート・プロデューサ・エンドでは削除されますが、アプリケーション・エンドでは削除されません。このため、ポートレット・プロデューサを登録解除する場合は、プロデューサにより提供されているポートレットすべてをアプリケーション・ページから削除する必要もあります。さらに、ポートレットにパラメータが組み込まれている場合は、影響を受けるアプリケーション・ページのページ定義ファイルから、関連付けられたページ変数を削除する必要があります。


注意:

ポートレットおよび関連するページ変数を削除する方法の詳細は、4.3.5項「アプリケーション・ページからのポートレットの削除」を参照してください。

ポートレット・プロデューサを登録解除する手順は、次のとおりです。

  1. アプリケーション・ナビゲータで、プロデューサにナビゲートします。

    Applications
      <ApplicationName>
        Portlet Producers
          <producer_name>
    
  2. 登録解除するプロデューサを右クリックし、ポップアップ・メニューから「登録解除」を選択します。

  3. 「ポートレット・プロデューサの登録解除」ダイアログ・ボックスで、「はい」をクリックします。

    「ポートレット・プロデューサの登録解除」ダイアログ・ボックスではなく、「接続エラー」ダイアログ・ボックスが表示されることがあります。このダイアログは、プロデューサへの接続が確立できない場合に表示されます。

    プロデューサが使用可能でない場合や、WebCenterアプリケーション内にプロデューサの接続詳細が適切に指定されていない場合、接続が失敗する可能性があります。「はい」または「いいえ」をクリックします。

    • 登録解除を続行する場合は、「はい」をクリックします。「はい」をクリックすると、登録データがWebCenterアプリケーション・エンドでは削除されます。ただし、リモート・プロデューサ・エンドでは変更されません。

    • 登録解除を取り消す場合は、「いいえ」をクリックします。取り消す場合は、プロデューサが使用可能であり、プロデューサ登録ウィザードでの接続詳細が有効であることを確認した後で、再試行できます(4.3.1.3項「ポートレット・プロデューサ登録設定の編集」を参照)。

  4. 「OK」をクリックして、表示される成功メッセージを閉じます。

4.3.2 ページへのポートレットの追加

WebCenterアプリケーション・ページへのポートレットの配置は、ドラッグ・アンド・ドロップの簡単な操作で実行できますが、この簡単な操作の前に、いくつかの準備的な手順を実行する必要があります。これには、WebCenterアプリケーションの作成(3.1項「WebCenterアプリケーションの作成」を参照)、アプリケーション・ページの作成(4.2項「Oracle ADFを使用したOracle JDeveloperでのWebCenterアプリケーション対応ページの構築」を参照)、およびポートレットのプロデューサのアプリケーションへの登録(4.3.1項「ポートレット・プロデューサの登録」を参照)が含まれます。


注意:

ポートレット・パラメータの詳細は、4.5項「コンテキストに即したコンポーネントのリンク」を参照してください。

ポートレットを配置したアプリケーション・ページのソースを調べると、adfp:portletタグが存在しています。これは、ポートレットをページにバインドするタグです。このタグに付随する属性の文字列を修正すると、ポートレットの動作および外観をさらに制御できます。詳細は、4.3.3項「adfp:portletタグの属性値の設定」を参照してください。


注意:

消費しようとするポートレットの一部が、独自の認証を処理するアプリケーションに属していることがあります。このような場合は、アプリケーションを外部アプリケーションとして登録し、その提供元のポートレット・プロデューサに対して識別する必要があります。詳細は、第10章「WebCenterアプリケーションの保護」を参照してください。

消費しようとするポートレットの一部が、Secure Socket Layer(SSL)対応のプロデューサに属していることもあります。SSL対応プロデューサにアクセスしようとすると、セキュリティ・アラート・ダイアログ・ボックスが表示され、プロデューサのセキュリティ証明書を表示して信頼できる証明書リストに追加するように要求されることがあります。セキュリティ・アラート・ダイアログ・ボックスが表示されるのは、プロデューサが、広く受け入れられていない認証局によって発行されたセキュリティ証明書を使用する場合のみです。このようなプロデューサからのポートレットを消費するには、まず、プロデューサのセキュリティ証明書をキーストアに追加する必要があります。実行する手順は、10.8項「キーストアへのカスタム証明書の登録」を参照してください。


ポートレットをページに追加する手順は、次のとおりです。

  1. アプリケーション・ナビゲータで、ポートレットを追加するアプリケーション・ページ(jspxファイル)を右クリックし、ポップアップ・メニューから「開く」を選択します。

    jspxファイルは、アプリケーション・ナビゲータで次の場所にあります。

    Applications
      <ApplicationName>
        <ProjectName>
          Web Content
           <ApplicationPage>.jspx
    
  2. コンポーネント・パレットで、アプリケーション・ページに追加するポートレットが含まれるポートレット・プロデューサを選択します。

    コンポーネント・パレットでは、選択したプロデューサの下に、そのプロデューサに含まれているすべてのポートレットが表示されます。

  3. ポートレットを選択し、Oracle JDeveloperの「構造」ペインの「h:form」要素の上にドラッグします。

    あるいは、コンポーネント・パレットからエディタ内のページに直接ポートレットをドラッグします。

    ポートレットが、h:form要素内にネストされます。必ずしも、このポートレットが直接h:formタグに囲まれている必要はありません。コンポーネントをh:form要素の外に追加した場合、Oracle JDeveloperによって、form要素でコンポーネントを囲むかどうか尋ねられます。このオプションを選択してください。

    アプリケーション・ページに1つ以上のカスタマイズ可能コア・コンポーネントが含まれている場合は、これがポートレットの配置場所に影響を与えることがあります。たとえば、「構造」ペインで、cust:panelCustomizableタグを含むページに配置されているポートレットは、例4-1のように配置されます。

    例4-1 adfp:portletタグの階層配置

    h:form
      cust:panelCustomizable
        adfp:portlet
    

    カスタマイズ可能なコア・タグ(cust:panelCustomizableおよびcust:showDetailFrame)の詳細は、4.4項「カスタマイズ可能コンポーネントの使用」を参照してください。

ポートレットをページに追加すると、adfp:portletタグがページ・ソースに追加されます。adfp:portletタグには、Oracle JDeveloperのプロパティ・インスペクタを介してアクセス可能な多数の属性が含まれます。adfp:portletタグの属性については、4.3.3項「adfp:portletタグの属性値の設定」を参照してください。


注意:

OmniPortletのインスタンスをページ上にドロップする場合、プロパティ・インスペクタを開き、「表示モード」カテゴリの下のAllModesSharedScreenfalse(デフォルト値)に設定されていることを確認します。このプロパティをtrueを設定すると、OmniPortletウィザードでOmniPortletの特定のセクションを編集できなくなることがあります。

ポートレットをページに配置した後は、ページを右クリックし、ポップアップ・メニューから「実行」を選択します。これにより、ページが表示され、デフォルト・ブラウザでOracle JDeveloperの埋込みOC4Jを使用してポートレットが実行されます。ポートレットによっては、追加の実行時構成が必要になることもあります。特に、OmniPortletポートレットまたはWebクリッピング・ポートレットのインスタンスの内容は実行時に定義されます。OmniPortletの詳細は、第16章「OmniPortletを使用したポートレットの作成」を参照してください。Webクリッピング・ポートレットの詳細は、第17章「Webクリッピングを使用したコンテンツ・ベースのポートレットの作成」を参照してください。ポートレット一般の詳細は、第14章「ポートレットの概要」および第15章「ポートレット・テクノロジのマトリックス」を参照してください。

「編集」モード(WebCenterアプリケーションでは、ポートレットの「処理」メニューの「パーソナライズ」コマンドとしてレンダリングされる)を備えたポートレットを実行する場合、認証されたユーザー(つまり、ログインしているユーザー)にのみ、ポートレットの「処理」メニューに「パーソナライズ」オプションが表示されます。匿名ユーザーまたはパブリック・ユーザーには、ポートレットをパーソナライズするためのオプションは表示されません。ポートレットを消費するアプリケーションで、ユーザーがポートレットのビューをパーソナライズできるようにするには、あらかじめなんらかの形態のセキュリティを実装しておく必要があります。ポートレットおよびページを作成する開発者は、アプリケーションに完全なセキュリティ・モデルを作成せずに、ポートレットの「編集」モードをテストする必要があることがあります。セキュリティを追加してポートレット・パーソナライズのテストを有効化する(つまり、ポートレットの「編集」モードをテストする)方法の詳細は、10.6項「ポートレット・パーソナライズをテストするための基本認証の構成」を参照してください。

4.3.3 adfp:portletタグの属性値の設定

アプリケーションのソース・ページでは、各ポートレットはadfp:portletタグで表され、その中に必須属性とオプション属性のセットが含まれています。必須属性であるvalueおよびportletTypeはOracle WebCenter Frameworkによって自動的に設定され、変更できません。オプション属性値は、ポートレットにその属性のサポートが組み込まれている場合に適用されます。たとえば、isAboutModeAvailabletrueに設定できますが、ポートレットに情報モードが定義されていない場合、この属性設定はポートレットに影響を与えません。

また、ポートレットでは、スタイル関連属性のセットがサポートされています。これらの属性については、9.4項「プロパティ・インスペクタを介したスタイルの定義」で詳しく説明しています。

属性値は、Oracle JDeveloperのプロパティ・インスペクタを使用するか、例4-2に示すようにソースでadfp:portletタグの属性として、設計時に設定します。

例4-2 adfp:portletタグ

<adfp:portlet value="#{bindings.portlet1}"
  portletType="/oracle/adf/portlet/WsrpPortletProducer1/applicationPortlets/
    E0default_b452f828_010a_1000_8002_82235f57eaa8"
  allModesSharedScreen="true"
  isMaximizable="true"
  isMinimizable="true"/>

adfp:portletタグでは、この項でリストして説明する4種類の属性が使用されます。この項の内容は、次のとおりです。

4.3.3.1 adfp:portletタグの一般的な属性

表4-1に、adfp:portletタグの一般的な属性を示します。

表4-1 adfp:portletタグの一般的な属性

属性 説明

height

使用可能な領域をピクセルまたはパーセンテージで表した数値。

  • ピクセルの場合は、npx(300pxなど)を入力します。

  • パーセンテージの場合は、n%(50%など)を入力します。

ポートレット表示で許可される領域の高さ。

displayScrollBarautoまたはtrueに設定した場合、ポートレットの実際の高さがここに入力したheight値を超えると、スクロールバーが表示されます。displayScrollBarfalseに設定した場合、ポートレットの実際の高さがheight属性に指定されている値を超えると、height属性の値が適用され、ポートレットのコンテンツは切り捨てられます。

icon

イメージのURI。次に例を示します。

icon="coffee.png"

Oracle JDeveloperでは、値列の「編集」アイコンをクリックして、必要なイメージを見つけて選択します。この例に示したURIはドキュメント・ルートに格納されているため、フルパスは必要ありません。ドキュメント・ルートに格納されていないイメージには、たとえば次のようなフルパスが必要です。

icon="C:\portal\images\box_b.gif"

または

icon="http://source-pc/imgs/art.gif"

ポートレット・ヘッダーのポートレット・タイトルの左側に表示されるアイコンの位置を指定するURI。

id

ポートレットの一意の識別子として使用するテキスト文字列。次に例を示します。

id="newsBrief"

コンポーネントの一意の識別子。

text

ポートレットのヘッダー・タイトルとして使用するテキスト文字列。次に例を示します。

text="Announcements …"

ポートレットのヘッダー・タイトル。これを使用して、ポートレットの表示タイトルを設定します。<adfp:portlet>タグ内に指定した属性値は、他のどの場所(たとえば、ポートレット・マークアップ内)に指定されているタイトルにも優先されます。

値を指定しない場合、ポートレットはポートレット・マークアップ(レスポンス)からそのタイトルを抽出します。

text属性もポートレット・マークアップも使用可能でない場合、タイトルはポートレット定義から抽出されます。

注意: 設計時にtext属性に値を指定すると、実行時にポートレット・タイトルのカスタマイズおよびパーソナライズが不可能になります。

width

使用可能な領域をピクセルまたはパーセンテージで表した数値。

  • ピクセルの場合は、npx(300pxなど)を入力します。

  • パーセンテージの場合は、n%(50%など)を入力します。

ポートレットの幅。

displayScrollBarautoまたはtrueに設定した場合、ポートレットの実際の幅がここに入力したwidth値を超えると、スクロールバーが表示されます。displayScrollBarfalseに設定した場合、ポートレットの実際の幅がwidth属性に指定されている値を超えると、width属性の値が適用され、ポートレットのコンテンツは切り捨てられます。

binding

マネージドBeanの名前。次に例を示します。

binding="#{frameActionsBean.Binding}"

Oracle JDeveloperでは、値列の「編集」アイコンをクリックして、マネージドBeanを選択し、関連するマネージドBeanプロパティを指定します。

コンポーネント・インスタンスを格納するためのバインディング参照。バインディング参照によって、ポートレットのインスタンスがマネージドBeanプロパティにバインドされます。マネージドBeanは、JSF faces-config.xmlファイル内に登録されているアプリケーションで使用されるJavaBeansです。

partialTriggers

部分的な更新をトリガーする1つ以上のコンポーネントのID。次に例を示します。

partialTriggers="_id1 componentID5"

部分的な更新をトリガーするコンポーネントのID。ポートレットは、指定されたトリガー・コンポーネントをリスニングします。トリガー・コンポーネントの1つが更新のためのトリガー・イベントを受け取ると、ポートレットも自身の更新をリクエストします。

partialTriggersタグ内では、各コンポーネントの間は空白で区切られます。

portletType

この必須属性値は、デフォルトでフレームワークによって設定されます。

portletTypeは、設計時環境で異なるポートレットを区別するために使用します。値はフレームワークによってプログラムで設定され、修正も削除もできません。

shortDesc

ポートレットの簡単な説明として使用するテキスト文字列。次に例を示します。

shortDesc="Portlet for entering display text in place."

ポートレットの短い説明。

value

この必須属性値は、デフォルトで設定されます。

ポートレットは、ポートレット・コンテナ(プロデューサ)のサポートを、ページ定義内のポートレット・バインディングの参照から取得します。この属性値はプログラムで設定され、修正も削除もできません。

submitUrlParamters

false

ポートレットが配置されているページを指すポートレット・リンクは、単にリンクURLを使用してリロードするのではなく、ページそのものを強制的に送信します。デフォルトでは、このURL内のパラメータはページに対して使用可能になっていません。これらのパラメータは、リクエストを開始したポートレット内部でのみ使用可能です。

submitUrlParameterstrueに設定すると、これらのURLパラメータがコンテナ・ページでも使用可能になります。


4.3.3.2 adfp:portletタグのアクション属性

アクション属性は、編集モードへの切替えなど、モード切替えUIアクションのレンダリングを制御します。特定のモードでポートレットをレンダリングできるかどうかは、ポートレットでサポートされているモードおよびユーザー認可によって決まります。たとえば、isCustomizeModeAvailable属性がtrueに設定されていても、そのアクションがポートレットでサポートされていなければ、この属性設定はポートレットに影響を与えません。

表4-2に示すアクション属性は、trueまたはfalseに評価される値バインディング式です。

  • trueは、その名前のモードでポートレットをレンダリングできることを意味します。

  • falseは、その名前のモードでポートレットをレンダリングできないことを意味します。

表4-2 adfp:portletタグのアクション属性

属性 デフォルト 説明

isAboutModeAvailable

true

WebCenterアプリケーションで、ポートレットの「処理」メニューに情報コマンドをレンダリングします。ユーザーが情報を選択すると、ポートレットの情報モードが起動されます。

isConfigModeAvailable

true

WebCenterアプリケーションで、JSR 168ポートレットの「処理」メニューに「構成」コマンドをレンダリングします。ユーザーが「構成」を選択すると、ポートレットの「構成」設定が開きます。

isCustomizeModeAvailable

true

WebCenterアプリケーションで、ポートレットの「処理」メニューに「カスタマイズ」コマンドをレンダリングします。「カスタマイズ」モードでは、サイト管理者はポートレットのデフォルトのパーソナライズ・データを編集できます。

isDetailModeAvailable

true

WebCenterアプリケーションで、ポートレットの「処理」メニューに「詳細」コマンドをレンダリングします。ユーザーが「詳細」を選択すると、ポートレットの「詳細」ページが開きます。

この属性は、Oracle PDK-Javaポートレットの「詳細ページを表示」モードにマップされます。標準ベースの(JSR 168)Javaポートレットでは、この属性は適用されません。

isHelpModeAvailable

true

WebCenterアプリケーションで、ポートレットの「処理」メニューに「ヘルプ」コマンドをレンダリングします。ユーザーが「ヘルプ」を選択すると、ポートレットの「ヘルプ」ページが開きます。

isMaximizable

true

WebCenterアプリケーションで、ポートレットの「処理」メニューに「最大化」コマンドをレンダリングします。ユーザーが「最大化」を選択すると、ポートレットが拡大されます。コンポーネントが最大化された場合、「処理」メニューの「リストア」コマンドを選択すると、ポートレットはデフォルト表示モードに戻ります。

「最大化」オプションは、PanelCustomizableコンポーネント内に配置されたポートレットにのみ適用されます。ユーザーが「最大化」を選択すると、ポートレットは親のPanelCustomizableの幅に拡大されて、PanelCustomizable内に配置されている他のコンポーネントはすべて移動します。

「最大化」アクションおよび「リストア」アクションの動作は、設計時と実行時では違いがあります。詳細は、4.3.3.3項「最大化、最小化、リストアおよび移動に関する必要な知識」を参照してください。

isMinimizable

true

WebCenterアプリケーションで、ポートレット・ヘッダーに「最小化」コマンドをレンダリングします。ユーザーがアイコンをクリックすると、ポートレットがウィンドウの陰影のように閉じます。ユーザーがアイコンを再度クリックすると、ポートレットがリストアされます。

「最小化」アクションの動作は、設計時と実行時では違いがあります。詳細は、4.3.3.3項「最大化、最小化、リストアおよび移動に関する必要な知識」を参照してください。

isMovable

true

WebCenterアプリケーションで、ポートレットの「処理」メニューに「移動」コマンドをレンダリングします。ユーザーは、このコマンドを選択してから、ページでの他のポートレットに対するポートレットの現在位置に応じて、サブコマンド「上へ移動」「下へ移動」「左へ移動」または「右へ移動」を選択します。

「移動」アクションの動作は、設計時と実行時では違いがあります。詳細は、4.3.3.3項「最大化、最小化、リストアおよび移動に関する必要な知識」を参照してください。

isNormalModeAvailable

true

WebCenterアプリケーションで、ポートレットの「UI」メニューに「リフレッシュ」コマンドをレンダリングします。ユーザーが「リフレッシュ」コマンドを選択すると、ページ上の他のコンテンツに関係なくポートレットはリフレッシュ(つまり再描画)されます(これは、部分ページ・リフレッシュとも呼ばれます)。

isPersonalizeModeAvailable

true

WebCenterアプリケーションで、ポートレットの「処理」メニューに「パーソナライズ」コマンドをレンダリングします。ユーザーは「パーソナライズ」を選択して、ポートレットの個人ビューを変更します。このモードは、規格に基づいたJavaポートレット(JSR 168)ウィザードで「編集」を選択する操作に相当します。

「処理」メニューの「パーソナライズ」コマンドは、認証されたユーザー(つまり、ログインしているユーザー)にのみ表示されます。パブリック・ユーザーまたは認証されていないユーザーには表示されません。ユーザーがポートレット・ビューをパーソナライズできるようにするには、なんらかの形のアプリケーション・セキュリティを実装する必要があります。

ポートレットを作成する開発者が、アプリケーション用の完全なセキュリティ・モデルを作成せずに「パーソナライズ」モードをテストする場合は、10.6項「ポートレット・パーソナライズをテストするための基本認証の構成」を参照してください。

注意: パーソナライズ設定が一般的に行われるのは、ポートレット・タイトルです。設計時にポートレット・タイトルを設定するには、adfp:portletタグのtext属性に値を指定します。ただし、設計時にtext属性に値を指定すると、実行時にポートレット・タイトルのパーソナライズおよびカスタマイズができなくなることを考慮してください。

isPreviewModeAvailable

false

ポートレット・コンテンツをプレビューする手段を提供します。このモードはWebCenterアプリケーション内での特定の用途はありませんが、Oracle Application Server Portal(OracleAS Portal)のポートレット・リポジトリ内で使用され、拡大鏡アイコンとしてレンダリングされます。ユーザーはこのアイコンをクリックして、ポートレットをプレビューします。

isPrintModeAvailable

true

WebCenterアプリケーション内で、JSR 168ポートレットの「処理」メニューに「印刷」コマンドをレンダリングします。このコマンドを使用すると、ポートレットのプリンタ・フレンドリー・バージョンが表示されます。

isSeededInteractionAvailable

true

ポートレットの生成済相互作用(「最大化」、「移動」および「最小化」)を、ユーザーに公開するために選択可能にします。この属性がtrueに設定されている場合、生成済相互作用は表示用に選択可能です(ただし、各生成済相互作用の表示はそれぞれの属性設定により制御されることに注意してください)。属性がfalseに設定されている場合、生成済相互作用は表示用に選択できません。

カスタム相互作用は、この属性設定の影響を受けません。


4.3.3.3 最大化、最小化、リストアおよび移動に関する必要な知識

開発環境のニーズに対応するため、ShowDetailFrameコンポーネントとportletコンポーネントの「最小化」、「最大化」、「リストア」および「移動」のアクションの動作は設計時と実行時では異なります。設計時には、これらのアクションは1つのOC4Jセッション内では永続しますが、セッションを越えて永続することはありません(セッションとは、OC4Jの開始から停止までの時間を表します)。実行時には、これらのアクションは、1つのOC4Jセッション内でも、セッションを越えても永続します。

この違いは、設計時におけるアプリケーション・ページの自動リセットを可能にするために取り入れられたものです。

実行時にセッションを越えて永続する必要がない場合は、アプリケーションのweb.xmlファイルを変更するだけで、この永続性を無効化できます。アプリケーションのweb.xmlファイル内で、次のパラメータ設定を見つけます(例4-3)。

例4-3 アプリケーションのweb.xmlファイル内の永続性設定

<context-param>
  <param-name>oracle.adf.view.faces.CHANGE_PERSISTENCE</param-name>
  <param-value>oracle.adfinternal.view.faces.change.HybridChangeManager</param-value>
</context-param>

これを次のコードで置き換えます(例4-4)。

例4-4 アプリケーションのweb.xmlファイルでの実行時永続性の無効化

<context-param>
  <param-name>oracle.adf.view.faces.CHANGE_PERSISTENCE</param-name>
  <param-value>oracle.adf.view.faces.change.SessionChangeManager</param-value>
</context-param>

アプリケーションにセキュリティが実装されている場合、「最小化」、「最大化」、「リストア」および「移動」のアクションは、カスタマイズ権限を持つユーザーのみに表示されます。これらのアクションは、パーソナライズ権限を持つユーザーには表示されません。カスタマイズ権限を持つユーザーは、設計時に次の手順を実行することにより、これらのアクションの効果をテストできます。

  • Oracle JDeveloperの埋込みOC4Jを使用して、アプリケーション・ページを実行します。

  • 管理者としてログインします。

  • ポートレットを最大化します。ポートレットを各所に移動します。関連するアクション・コマンドを使用して、自由に変更を行います。

  • いったんログアウトしてからユーザーとしてログインし、アクションの効果を確認します。

4.3.3.4 adfp:portletタグのコア属性

表4-3に、adfp:portletタグのコア属性を示します。

表4-3 adfp:portletタグのコア属性

属性 説明

contentInlineStyle

CSSスタイルの名前。

たとえば、ポートレット境界線を無効にするには、次のコードをadfp:portletタグに追加します。

contentInlineStyle="border-style:none;"

ポートレットに適用するCSSスタイル。このノードを開いて、特定のポートレット・インスタンスの特定のスタイル要素にスタイルを指定します。ここに入力した値は、特定のポートレット・インスタンスのCSSまたはスキンで指定されているスタイルより優先されます。詳細は、9.4項「プロパティ・インスペクタを介したスタイルの定義」を参照してください。

inlineStyle

CSSスタイルの名前。

ポートレットに適用するCSSスタイル。このノードを開いて、特定のポートレット・インスタンスの特定のスタイル要素にスタイルを指定します。ここに入力した値は、特定のポートレット・インスタンスのCSSまたはスキンで指定されているスタイルより優先されます。詳細は、9.4項「プロパティ・インスペクタを介したスタイルの定義」を参照してください。

rendered

true/false

ポートレットがレンダリングされるかどうかを指定します。falseに設定した場合、出力はレンダリングされません。

デフォルト値はtrueです。


4.3.3.5 adfp:portletタグの表示モード属性

表4-4に、adfp:portletタグの表示モード属性を示します。

表4-4 adfp:portletタグの表示モード属性

属性 説明

allModesSharedScreen

true/false

ポートレット・モードが変更されると、ポートレットが配置されているページではない新しいページに新しいモードがレンダリングされる(false)かどうかを指定します。

  • trueは、すべてのポートレット・モードがインラインで表示されることを意味します。モードは同じページ上で切り替わります。つまり、この属性を指定すると、1つのページのコンテキスト内ですべてのポートレット・モードを表示できます。

  • falseは、表示モード(JSR 168)または「表示」モード(PDK-Java)を除くすべてのポートレット・モードが別々のページにレンダリングされることを意味します。デフォルト・モードは、OmniPortletやWebクリッピング・ポートレットなどのポートレットに役立ちます。これらのポートレットでは、「表示」モード以外のモードは、ポートレットが配置されているページ以外のページに表示される必要があるためです。

デフォルト値はfalseです。

background

light/medium/dark

アプリケーション・ページ上の各ポートレットに異なるルック・アンド・フィールを適用する手段を提供します。デフォルト・スキン(Oracle、MinimalおよびSimple)とカスタム・スキンには、3つのバージョンのスタイル・セレクタ(light、mediumおよびdark)が含まれます。backgroundプロパティに指定された値に応じて、スキンは関連するスタイルまたはアイコンのセレクタ・バージョンを適用します。

詳細は、9.3.6項「ポートレットおよびカスタマイズ可能コア・コンポーネントへのカラー・スキームの適用」を参照してください。

displayHeader

true/false

ポートレット・ヘッダーが表示されるかどうかを指定します。

  • trueは、ヘッダーが表示されることを意味します。したがって、ヘッダーをベースにしたアイコンおよびリンクが表示されます。

  • falseは、ヘッダーが表示されず、通常ヘッダーに表示されるアイコンおよびリンクも表示されません。isSeededInteractionAvailabletrueに設定した場合、ユーザーは、ポートレット上にマウスを置くことで、ポートレットのメニューおよびアイコンにアクセスできます。フェードインおよびフェードアウトのツールバーが表示され、ここからユーザーは「処理」メニュー・オプションを選択できます。

デフォルト値はtrueです。

expansionMode

maximized/minimized/normal

ポートレットのデフォルトの状態。次のうちから選択します。

  • minimized: ポートレットのデフォルト表示モードは閉じた状態(最小化)です。

  • maximized: このオプションは、PanelCustomizableコンポーネント内に配置されたポートレットにのみ適用されます。ポートレットのデフォルト表示モードは、親のPanelCustomizableの幅に拡大されて、PanelCustomizable内に配置されている他のコンポーネントはすべて移動します。

  • normal: これは、expansionMode属性のデフォルト値です。ポートレットのデフォルト表示モードは標準です。つまり、閉じた状態になることも、ページの幅に拡大されることもありません。

displayScrollBar

true/false/auto

指定された幅と高さにコンテンツが収まりきらない場合、スクロールバーが表示されます(auto)。

trueの値を設定すると、常にスクロールバーがレンダリングされます。falseの値を設定すると、スクロールバーはレンダリングされません。ポートレットがwidthまたはheightに指定された値を超えると、これらの値は無視され、ポートレットは実際のサイズでレンダリングされます。

デフォルトはautoです。

renderPortletInIFrame

true/false/auto

true/false/autoに評価される値バインディング式。

  • trueは、ポートレットがiframe内にレンダリングされることを意味します。

  • autoは、portletタグでポートレット・レスポンスを確認し、iframeが必要かどうかを判断することを意味します。この判断は、ポートレット・レスポンス内にFORMまたはリンクが存在するかどうかに基づいて行われます。

  • falseは選択可能になっていますが、サポートされていません。iframe内にレンダリングされないポートレットからのHTMLマークアップは、Oracle ADFページ上の他のコンポーネントを妨害することがあります。

デフォルトはautoです。

詳細は、4.3.3.6項「iframesタグおよびformタグ」を参照してください。


4.3.3.6 iframesタグおよびformタグ

JavaServer Facesページによって生成されたHTMLソースには、formタグが含まれます。HTMLではネストされたformタグは許可されないため、ポートレットは同じページ上に新しいフォームを開くことができません。

この問題を回避する最善の方法は、ポートレットをiframeの内部にレンダリングすることです。このためには、renderPortletInIFrame属性をtrueまたはautoに設定します。trueの値を設定すると、常にiframeが使用されます。autoの値を設定すると、Oracle WebCenter Frameworkによって、ポートレットにform要素が含まれているかどうかが検出され、含まれている場合は、ポートレットがiframe内にレンダリングされます。

たとえば、Preconfigured OC4JのWSRPサンプル・プロデューサに付属のアップロード・ポートレットが正常に稼働するためには、iframeが必要です。renderPortletInIFrametrueまたはautoに設定することによってこのポートレットをiframe内に配置しない場合、ポートレットは機能しません。


注意:

ポートレットをiframe内にレンダリングした場合、window.locationを操作すると予期しない結果が発生することがあります。ポートレットでwindow.locationを使用する場合は、ポートレットがiframe内部にレンダリングされる場合に対応できるだけの堅牢性がJavaScriptに備わっていることを確認してください。

別の方法として、ポートレットのマークアップ内にform要素が含まれないようにポートレットを作成しなおすこともできますが、このアプローチは面倒なうえ、どの場合にでも適用できるものではありません。

4.3.4 ポートレットのコピー

ポートレットをコピーする場合、ポートレットとそのコピーは同じアプリケーション内に置く必要があります。たとえば、同じアプリケーション内の異なるページ間で、同じページ上の異なる場所間で、または同じアプリケーション内の異なるプロジェクト間で、ポートレットをコピーできます。コピーは、同じポートレット・インスタンスへの参照です。つまり、ポートレット(オリジナルまたはコピー)のインスタンスに行ったカスタマイズまたはパーソナライズは、他のすべてのインスタンスに影響を与えます。

ポートレットをコピーするには、ポートレットのviewタグをコピーして貼り付けるだけでは不十分です。アプリケーション・ページのソースからポートレット関連のエントリをコピーする必要があります。また、ページ定義ファイルからポートレット関連のエントリをコピーし、重複するポートレット・バインディング情報を削除するか、コピーしたポートレットのバインディングBean内に新しいメソッドを作成する必要があります。

ポートレットをコピーする場合、ターゲット・ページはOracle ADF Facesページにする必要があります。ターゲット・ページ上に前から存在しているコードはすべて、それを反映する必要があります。このための操作は、非常に簡単です。Oracle JDeveloperによって新しいJSFページが作成されると、そのページには純粋なJSFタグが含まれます。Oracle ADF Facesコンポーネントを初めてページ上にドロップすると、自動的にタグがOracle ADF Facesタグに更新されます。たとえば、<html>タグは<afh:html>になり、<head>タグと<title="title">タグは<afh:head title="title">になります。このように、ターゲット・ページをOracle ADF Facesページに確実に変換する簡単な方法は、ターゲット・ページ上にOracle ADF Facesコンポーネントを配置することです。これによって、必要なコード変換が自動的に実行されます。

この項では、異なるアプリケーション・ページ間でポートレットをコピーする方法と、同じページ上の異なるパーツ間でポートレットをコピーする方法を説明します。この項の内容は、次のとおりです。

4.3.4.1 同じページ上でのポートレットのコピーおよび貼付け

同じページ上にポートレットをコピーする場合、ページのリソース全部が両方のポートレット・インスタンスに対して使用可能であるため、ページのページ定義ファイルからポートレット関連情報をコピーする必要はありません。ポートレットのviewタグをコピーして貼り付け、一意の識別子をコピーに割り当てるだけです。

ポートレットを同じページ上にコピーして配置する手順は、次のとおりです。

  1. Oracle JDeveloperで、コピー元のポートレットが配置されているページの「ソース」ビューに移動します。

  2. ポートレット・タグをコピーします(例4-5)。

    例4-5 ポートレットをコピーする際にコピーするコード部分

    <f:view>
      <afh:html binding="#{backing_portlet_page.html1}" id="html1">
        <afh:head title="portlet_page" binding="#{backing_portlet_page.head1}"
          id="head1">
          <meta http-equiv="Content-Type"
            content="text/html;charset=windows-1252"/>
        </afh:head>
        <afh:body binding="#{backing_portlet_page.body1}" id="body1">
          <h:form binding="#{backing_portlet_page.form1}" id="form1">
            <adfp:portlet value="#{bindings.portlet1}"
              portletType="/oracle/adf/portlet/
              pdksampleproducer_1153245807295/applicationPortlets/
              Portlet2_82d49b79_010c_1000_8006_82235ffc4e2b"
              binding="#{backing_portlet_page.portlet1}"
              id="portlet1"
              isCustomModesAvailable="true"/>
          </h:form>
        </afh:body>
      </afh:html>
    </f:view>
    
  3. コピーしたコード部分をページの「ソース」ビューに貼り付けます。

  4. コピーのID属性に一意の値を指定します(例4-6)。

    例4-6 ポートレットIDの変更

    <adfp:portlet value="#{bindings.portlet1}"
      portletType="/oracle/adf/portlet/
      pdksampleproducer_1153245807295/applicationPortlets/
      Portlet2_82d49b79_010c_1000_8006_82235ffc4e2b"
      binding="#{backing_portlet_page.portlet1}"
      id="portlet2"
      isCustomModesAvailable="true"/>
    

    注意:

    1つのページ上で、各ポートレットは一意のIDを持つ必要があります。

  5. ページ・ソースで、たとえば次のように、コピーしたポートレットのadfp:portletタグにバインディング属性が含まれるとします。

    binding="#{backing_untitled2.portlet1}"
    

    この場合は、このバインディングを削除するか、このマネージドBeanのマネージドBeanクラスを開いてfaces-config.xmlファイル内に新しいメソッドを定義することによって、バインディングBean内に新しいメソッドを作成します。

    たとえば、portlet1をコピーし、貼り付けられたコピーがportet2になった場合は、faces-config.xmlファイル内で例4-7のように指定します。

    例4-7 faces-config.xmlでのマネージドBeanの新しいメソッドの作成

    .
    private PortletBase portlet2;
    public void setPortlet2(PortletBase portet2) {
       this.portlet2 = portlet2;
    }
    .
    public PortletBase getPortlet2() {
       return portlet2;
    }
    

4.3.4.2 異なるアプリケーション・ページ間でのポートレットのコピー

アプリケーション内の異なるページ間でポートレットをコピーする場合は、ソース・ページのページ定義ファイルからポートレット関連のコードをコピーする必要もあります。この項では、異なるアプリケーション・ページ間でのコピーと、異なるアプリケーション・プロジェクト間でのコピーに関連する手順を示します。

異なるアプリケーション・ページ間または異なるプロジェクト間でポートレットをコピーする手順は、次のとおりです。

  1. Oracle JDeveloperで、コピー元のポートレットが配置されているページの「ソース」ビューに移動します。

  2. ポートレット・タグをコピーします(例4-8)。

    ターゲット・ページにOracle ADF Facesコンポーネントが含まれていない場合は、コンテナ・オブジェクト(つまり、ネストされたポートレット・タグを囲んでいるタグ)でOracle ADFタグが使用されていることを確認します。

    例4-8 ポートレットをコピーする際にコピーするソース・ページのコード部分

    <f:view>
      <afh:html binding="#{backing_portlet_page.html1}" id="html1">
        <afh:head title="portlet_page" binding="#{backing_portlet_page.head1}"
          id="head1">
          <meta http-equiv="Content-Type"
            content="text/html;charset=windows-1252"/>
        </afh:head>
        <afh:body binding="#{backing_portlet_page.body1}" id="body1">
          <h:form binding="#{backing_portlet_page.form1}" id="form1">
            <adfp:portlet value="#{bindings.portlet1}"
              portletType="/oracle/adf/portlet/
              pdksampleproducer_1153245807295/applicationPortlets/
              Portlet2_82d49b79_010c_1000_8006_82235ffc4e2b"
              binding="#{backing_portlet_page.portlet1}"
              id="portlet1"
              isCustomModesAvailable="true"/>
          </h:form>
        </afh:body>
      </afh:html>
    </f:view>
    

    注意:

    ポートレットは、Oracle ADF Facesページにしか配置できません。詳細は、この手順の前置き説明の段落を参照してください。

  3. ポートレットのコピー先のアプリケーション・ページ(ターゲット・ページ)に移動します。

  4. コピーしたコードをターゲット・ページの「ソース」ビューに貼り付けます。

  5. ポートレットのコピー元のページ(ソース・ページ)のページ定義ファイルに移動します。

    ソース・ページを右クリックし、ポップアップ・メニューから「ページ定義に移動」を選択します。

  6. ソース・ページのページ定義ファイルからポートレット・バインディングをコピーします(例4-9)。

    例4-9 ページ定義ファイルからコピーするコード部分

    <portlet id="portlet1"
        portletInstance="/oracle/adf/portlet/
        pdksampleproducer_1153245807295/applicationPortlets/Portlet2_82d49b79_    010c_1000_8006_82235ffc4e2b"
        class="oracle.adf.model.portlet.binding.PortletBinding"
        xmlns="http://xmlns.oracle.com/portlet/bindings"/>
    

    注意:

    コピーするポートレットにパラメータが含まれる場合は、必ず、コピーしたポートレットのポートレット・パラメータと、ポートレット・パラメータに関連付けられているページ変数もコピーに含めてください。

  7. ターゲット・ページのページ定義ファイルに移動します。

    必要な場合、ページ定義ファイルを作成します。このためには、ターゲット・ページを右クリックし、「ページ定義に移動」を選択します。ページ定義ファイルが存在しない場合は、作成するよう要求されます。

  8. ソースからコピーしたポートレット・バインディングを(関連するポートレット・パラメータ、およびこれらのパラメータに関連付けられたページ変数とともに)貼り付けます。

4.3.5 アプリケーション・ページからのポートレットの削除

アプリケーション・ページからポートレットを削除する場合、そのポートレットにパラメータが含まれていれば、アプリケーション・ページのページ定義ファイルから、これらのパラメータに関連付けられたページ変数も削除する必要があります。

ページからポートレットを削除し、ページ定義ファイルから関連するページ変数を削除する手順は、次のとおりです。

  1. アプリケーション・ナビゲータで、関連するアプリケーション・ページ(jspxファイル)にナビゲートし、このページを開きます。

    Applications
      <ApplicationName>
        <ProjectName>
          WEB Content
           <ApplicationPage>.jspx
    
  2. 「設計」ビューで、削除するポートレットを右クリックし、ポップアップ・メニューから「削除」を選択します。

    これによって、ページからポートレットが削除され、ページのページ定義ファイルからポートレット・バインディングが削除されます。

  3. ポートレットに変数が含まれている場合は、エディタでjspxファイルを右クリックし、ポップアップ・メニューから「ページ定義に移動」を選択します。

    ページ定義ファイルが「エディタ」ペイン内に開きます。

  4. 削除したポートレットに関連付けられているページ変数を見つけて、ページ定義ファイルから削除します。

    たとえば、portlet1を削除した場合は、例4-10で強調表示された変数を削除します。

    例4-10 ページ定義ファイルからのポートレット関連ページ変数の削除

    <?xml version="1.0" encoding="UTF-8" ?>
    <pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel"
        version="10.1.3.38.97" id="untitled1PageDef"
        Package="project1.pageDefs">
      <parameters/>
      <executables>
        <variableIterator id="variables">
            <variable Name="portlet1_param1" Type="java.lang.Object"/>
            <variable Name="portlet1_param2" Type="java.lang.Object"/>
            <variable Name="portlet2_param1" Type="java.lang.Object"/>
            <variable Name="portlet2_param2" Type="java.lang.Object"/>
        </variableIterator>
        <portlet id="portlet2" portletInstance="/oracle/adf/portlet/
            PdkPortletProducer2_1154100666247/applicationPortlets/
            Portlet1_b5e49696_010c_1000_8008_8c5707ef9c4f"
            class="oracle.adf.model.portlet.binding.PortletBinding"
            xmlns="http://xmlns.oracle.com/portlet/bindings">
          <parameters>
             <parameter name="param1" pageVariable="portlet2_param1"/>
             <parameter name="param2" pageVariable="portlet2_param2"/>
          </parameters>
        </portlet>
      </executables>
      <bindings/>
    </pageDefinition>
    
  5. 「ファイル」メニューから、「すべて保存」を選択します。

4.4 カスタマイズ可能コンポーネントの使用

カスタマイズ可能コンポーネントは、JSFページのカスタマイズを可能にするJSFコンポーネントです。これらのコンポーネントを使用することにより、ページ上のコンポーネントの最小化/最大化、表示/非表示の切替え、または移動を行うことができます。Oracle JDeveloperでは、コンポーネント・パレットおよびプロパティ・インスペクタを介してカスタマイズ可能コンポーネントを追加および変更します。

4.4.1 カスタマイズ可能コンポーネントの追加

この項では、カスタマイズ可能コンポーネントをページに追加し、PanelCustomizableまたはShowDetailFrameコンポーネント内にポートレットおよびコンテンツを含めるための手順を示します。

4.4.1.1 PanelCustomizableコンポーネントの追加

PanelCustomizableコンポーネントをJSF JSP(*.jspxファイル)に追加する手順は、次のとおりです。

  1. Oracle JDeveloperのアプリケーション・ナビゲータで、*.jspxファイルを右クリックし、ポップアップ・メニューから「開く」を選択します。

    *.jspxファイルは、アプリケーション・ナビゲータで次のプロジェクトの下にあります。

    Applications
      <ApplicationName>
        <ProjectName>
          Web Content
    
  2. 「構造」ペインで、PanelCustomizableコンポーネントを追加するコンポーネントを選択します。

  3. コンポーネント・パレットで、「カスタマイズ可能コンポーネント・コア」を選択します。

  4. 「PanelCustomizable」をクリックします。PanelCustomizableコンポーネントが、ページ・エディタに表示されます。「構造」ペインでは、このコンポーネントは、手順2で選択したコンポーネントの下に表示されます。

  5. プロパティ・インスペクタで、このコンポーネントの属性を適宜設定します。

    表4-5に、PanelCustomizableコンポーネントの属性を示します。

    表4-5 PanelCustomizableコンポーネントの属性

    属性 説明

    一般的な属性:



    Background

    light/medium/dark

    デフォルト: light

    スキンCSSとともに使用され、このPanelCustomizableインスタンスに対して別のルック・アンド・フィールを適用する手段を提供します。

    DisplayHeader

    true/false

    デフォルト: false

    PanelCustomizableのヘッダーが表示されるかどうかを指定します。

    注意: ヘッダーの機能の1つは、PanelCustomizableにより「処理」メニューを介して有効になるカスタマイズ・オプションとユーザーが対話するための場所を提供することです。DisplayHeaderFalseに設定されている場合でも、isSeededInteractionAvailableプロパティをTrueに設定すれば、これらの対話を有効にできます。「処理」メニューは通常はヘッダーに表示されますが、この場合はマウスをコンポーネントの上に置くと表示されます。

    ExpansionMode

    maximized/minimized/normal

    デフォルト: normal

    PanelCustomizableのデフォルトの状態。

    最小化モードでは、ヘッダーのみが表示されます。

    最大化モードでは、コンポーネントが、親ルート(階層内の最上位に表示されているコンポーネント)に割り当てられた領域いっぱいに表示されます。親ルートは、ShowDetailFrameコンポーネントかPanelCustomizableコンポーネントのいずれかです。

    Height

    使用可能な領域をピクセル(px)またはパーセンテージ(%)で表した数値。

    次に例を示します。

    • 500px

    • 50%

    PanelCustomizableの高さを指定します。

    この属性設定はオプションです。この属性に値を指定しない場合、レイアウトでは子コンポーネントの高さで折り返されます。

    注意: DisplayHeaderfalseに指定した場合は、コンポーネントに固定の高さ(500pxなど)を指定することをお薦めします。Height属性を設定しない場合、すべての子コンポーネントが非表示になっているときに、「処理」メニューが含まれるツールバーにアクセスできないことがあります。

    Icon

    イメージのURIを入力します。次に例を示します。

    icon="coffee.png"
    

    この例に示したURIはドキュメント・ルートに格納されているため、フルパスは必要ありません。ドキュメント・ルートに格納されていないイメージには、たとえば次のようなフルパスが必要です。

    icon="c:\portal\images\box_b.gif"
    

    または

    icon="http://source-pc/images/accessability.gif"
    

    PanelCustomizableコンポーネントのヘッダーにアイコンを追加することにした場合は、この属性によって、アイコンのイメージを格納するパスを指定します。

    Id

    PanelCustomizableの一意の識別子として使用するテキスト文字列を入力します。次に例を示します。

    id="weather"
    

    ページ上のコンポーネントの一意の識別子。

    Layout

    horizontal/vertical

    デフォルト: vertical

    PanelCustomizableの子を垂直または水平のいずれの方向にレイアウトするかを指定します。

    verticalを指定した場合、子コンポーネントは縦並びに表示され、レイアウト内で上下に移動できます。

    horizontalを選択した場合、子コンポーネントは横並びに表示され、レイアウト内で左右に移動できます。

    Text

    PanelCustomizableのヘッダー・タイトルとして使用するテキスト文字列を入力します。次に例を示します。

    text="Forecast for the Day"
    

    PanelCustomizableコンポーネントのタイトル。

    Width

    使用可能な領域をピクセル(px)またはパーセンテージ(%)で表した数値。

    次に例を示します。

    • 500px

    • 50%

    PanelCustomizableの幅を指定します。

    注意: DisplayHeaderfalseに指定した場合は、コンポーネントに固定の幅(500pxなど)を指定することをお薦めします。Width属性を設定しない場合、すべての子コンポーネントが非表示になっているときに、「処理」メニューが含まれるツールバーにアクセスできないことがあります。

    DisclosureListener

    タイプjavax.faces.el.MethodBindingのメソッド参照を指定します。

    開示リスナーへのメソッド参照。

    DisplayScrollbar

    true/false/auto

    デフォルト: auto

    PanelCustomizableコンテンツ領域にスクロールバーを常にレンダリング(true)、レンダリングしない(false)、または指定された幅と高さよりもPanelCustomizableコンテンツが大きい場合にのみレンダリングする(auto)ことを指定します。

    ShortDesc

    テキスト文字列を入力します。

    このコンポーネントの短い説明。

    コア属性:



    ContentInlineStyle

    CSSスタイルの名前。

    PanelCustomizableコンテンツ領域に適用するCSSスタイル。CSSリリース2.0以上に準拠するスタイルを手動で入力します。

    InlineStyle

    CSSスタイルの名前。

    PanelCustomizable全体に適用するCSSスタイル。CSSリリース2.0以上に準拠するスタイルを手動で入力するか、このノードを開いてスタイル要素を指定します。

    Rendered

    true/false

    デフォルト: true

    コンポーネントがレンダリングされるかどうかを指定します。

    StyleClass

    CSSスタイル・クラスの名前。

    このコンポーネントのCSSスタイル・クラス。

    アクション属性:



    IsEditable

    true/false

    デフォルト: false

    「処理」メニューに、子コンポーネントを編集するための「編集」コマンドがレンダリングされるかどうかを指定します。

    注意: trueを指定した場合は、対応するeditActionファセットも指定する必要があります。

    IsHelpAvailable

    true/false

    デフォルト: false

    「処理」メニューに、子コンポーネントに関するヘルプにアクセスするための「ヘルプ」コマンドがレンダリングされるかどうかを指定します。

    注意: trueを指定した場合は、対応するhelpActionファセットも指定する必要があります。

    IsMaximizable

    true/false

    デフォルト: true

    PanelCustomizableの「処理」メニューに、子コンポーネントの表示にPanelCustomizable領域全部を使用できるように「最大化」コマンドをレンダリングします。

    IsMinimizable

    true/false

    デフォルト: true

    PanelCustomizableヘッダーに、PanelCustomizableを閉じたり元に戻すための「最小化」アイコンをレンダリングします。

    IsMovable

    true/false

    デフォルト: true

    PanelCustomizableの「処理」メニューに「移動」コマンドをレンダリングします。

    IsSeededInteractionAvailable

    true/false

    デフォルト: false

    PanelCustomizableの生成済相互作用(「最大化」、「最小化」および「移動」)を、ユーザーに公開するために選択可能にします。

    注意: 各生成済相互作用の表示は、それぞれの属性設定により制御されます。

    IsShowContentEnabled

    true/false

    デフォルト: true

    「処理」メニューで、ユーザーがPanelCustomizableの子の表示/非表示を切り替えることのできるコントロールを使用可能にします。


    これらの属性を設定するときに選択可能な「バインド」オプションを使用すると、PanelCustomizableインスタンスをマネージドBeanプロパティにバインドできます。

  6. 作業を保存します。


注意:

PanelCustomizableコンポーネント内の既存のコンポーネントを折り返すには、Oracle JDeveloperの構造ウィンドウでコンポーネントを右クリックし、ポップアップ・メニューから「囲む」を選択します。「囲む」ダイアログ・ボックスで、リストから「カスタマイズ可能コンポーネント・コア」を選択します。コンポーネントのリストから「PanelCustomizable」を選択します。

4.4.1.2 ShowDetailFrameコンポーネントの追加

ShowDetailFrameコンポーネントをJSF JSP(*.jspxファイル)に追加する手順は、次のとおりです。

  1. Oracle JDeveloperのアプリケーション・ナビゲータで、*.jspxファイルを右クリックし、ポップアップ・メニューから「開く」を選択します。

    *.jspxファイルは、アプリケーション・ナビゲータで次のプロジェクトの下にあります。

    Applications
      <ApplicationName>
        <ProjectName>
          Web Content
    
  2. 「構造」ペインで、ShowDetailFrameコンポーネントを追加するコンポーネントを選択します。

  3. コンポーネント・パレットで、「カスタマイズ可能コンポーネント・コア」を選択します。

  4. 「ShowDetailFrame」をクリックします。ShowDetailFrameコンポーネントが、ページ・エディタに表示されます。「構造」ペインでは、このコンポーネントは、手順2で選択したコンポーネントの下に表示されます。

  5. プロパティ・インスペクタで、このコンポーネントの属性値を適宜設定します。

    表4-6に、ShowDetailFrameコンポーネントの属性を示します。

    表4-6 ShowDetailFrameコンポーネントの属性

    属性 タイプ 説明

    一般的な属性:



    Background

    light/medium/dark

    デフォルト: light

    スキンCSSとともに使用され、このShowDetailFrameインスタンスに対して別のルック・アンド・フィールを適用する手段を提供します。

    DisplayHeader

    true/false

    デフォルト: true

    ShowDetailFrameのヘッダーが表示されるかどうかを指定します。

    注意: コンポーネント上にいくつかのアクションを公開した場合、ヘッダー表示が無効になっていれば、コンポーネント領域の上にマウスを置くとツールバーが表示されます。ツールバーには、選択可能なオプションのメニューを表示するドロップダウン・アイコンが含まれます。このツールバーは、コンポーネント上に選択可能なアクションがある場合にのみ表示されます。

    また、ツールバー表示はisSeededInteractionAvailable属性の影響も受けます。isSeededInteractionAvailableのデフォルト値はfalseなので、ツールバーは表示されません。ツールバーを表示するには、isSeededInteractionAvailabletrueに設定します。

    ExpansionMode

    maximized/minimized/normal

    デフォルト: normal

    ShowDetailFrameのデフォルトの状態。

    最小化モードでは、ヘッダーのみが表示されます。

    最大化モードでは、コンポーネントが、親ルート(階層内の最上位に表示されているコンポーネント)に割り当てられた領域いっぱいに表示されます。親ルートは、ShowDetailFrameコンポーネントかPanelCustomizableコンポーネントのいずれかです。

    Icon

    イメージのURIを入力します。次に例を示します。

    icon="coffee.png"
    

    この例に示したURIはドキュメント・ルートに格納されているため、フルパスは必要ありません。ドキュメント・ルートに格納されていないイメージには、たとえば次のようなフルパスが必要です。

    icon="c:\portal\images\box_b.gif"
    

    または

    icon="http://source-pc/images/accessability.gif"
    

    ShowDetailFrameコンポーネントのヘッダーにアイコンを追加することにした場合は、この属性によって、アイコンのイメージを格納するパスを指定します。

    Id

    ShowDetailFrameの一意の識別子として使用するテキスト文字列を入力します。次に例を示します。

    id="weather"
    

    ページ上のコンポーネントの一意の識別子。

    Text

    ShowDetailFrameのヘッダー・タイトルとして使用するテキスト文字列を入力します。次に例を示します。

    text="Forecast for the Day"
    

    ShowDetailFrameコンポーネントのタイトル。

    AttributeChangeListener

    タイプjavax.faces.el.MethodBindingのメソッド参照を指定します。

    属性変更リスナーへのメソッド参照。

    属性値が変更されると、イベントが起動されます。

    DisclosureListener

    タイプjavax.faces.el.MethodBindingのメソッド参照を指定します。

    開示リスナーへのメソッド参照。

    開示状態が変更されると、開示イベントが起動されます。

    ShortDesc

    テキスト文字列を入力します。

    このコンポーネントの短い説明。

    コア属性:



    ContentInlineStyle

    CSSスタイルの名前。

    ShowDetailFrameコンテンツ領域に適用するCSSスタイル。CSSリリース2.0以上に準拠するスタイルを手動で入力します。

    InlineStyle

    CSSスタイルの名前。

    ShowDetailFrame全体に適用するCSSスタイル。CSSリリース2.0以上に準拠するスタイルを手動で入力するか、このノードを開いてスタイル要素を指定します。

    この属性内のCCCスタイルを使用して、ShowDetailFrameの幅と高さを設定するか、ShowDetailFrame上のスクロールバーを有効化します。

    Rendered

    true/false

    デフォルト: true

    コンポーネントがレンダリングされるかどうかを指定します。

    StyleClass

    CSSスタイル・クラスの名前。

    このコンポーネントのCSSスタイル・クラス。

    アクション属性:



    IsEditable

    true/false

    デフォルト: false

    子コンポーネントを編集するための「編集」コマンドがメニューにレンダリングされるかどうかを指定します。

    注意: trueを指定した場合は、対応するeditActionファセットも指定する必要があります。

    IsHelpAvailable

    true/false

    デフォルト: false

    子コンポーネントに関するヘルプにアクセスするための「ヘルプ」コマンドがメニューにレンダリングされるかどうかを指定します。

    注意: trueを指定した場合は、対応するhelpActionファセットも指定する必要があります。

    IsMaximizable

    true/false

    デフォルト: true

    ShowDetailFrameコンポーネントがPanelCustomizableコンポーネント内に配置されている場合、ShowDetailFrameの「処理」メニューに、子コンポーネントの表示にPanelCustomizable領域全部を使用できるように「最大化」コマンドをレンダリングします。

    IsMinimizable

    true/false

    デフォルト: true

    ShowDetailFrameヘッダーに、ShowDetailFrameを閉じたり元に戻すための「最小化」アイコンをレンダリングします。

    IsMovable

    true/false

    デフォルト: true

    ShowDetailFrameコンポーネントがPanelCustomizableコンポーネント内に配置されている場合、ShowDetailFrameの「処理」メニューに「移動」コマンドをレンダリングします。

    IsSeededInteractionAvailable

    true/false

    デフォルト: true

    ShowDetailFrameの生成済相互作用(「最大化」、「最小化」および「移動」)を、ユーザーに公開するために選択可能にします。

    注意: 各生成済相互作用の表示は、それぞれの属性設定により制御されます。


    これらの属性を設定するときに選択可能な「バインド」オプションを使用すると、ShowDetailFrameインスタンスをマネージドBeanプロパティにバインドできます。

  6. 作業を保存します。


注意:

ShowDetailFrameコンポーネント内の既存のコンポーネントを折り返すには、Oracle JDeveloperの構造ウィンドウでコンポーネントを右クリックし、ポップアップ・メニューから「囲む」を選択します。「囲む」ダイアログ・ボックスで、リストから「カスタマイズ可能コンポーネント・コア」を選択します。コンポーネントのリストから「ShowDetailFrame」を選択します。

4.4.1.3 ShowDetailFrameファセットの追加

ShowDetailFrameコンポーネントにカスタム・アクションを定義して表示するには、ShowDetailFrameファセットを使用します。表4-7に、ShowDetailFrameコンポーネントでサポートされるカスタム・アクションを表示するための追加のフックを提供するファセットを示します。

表4-7 ShowDetailFrameファセット

ファセット 説明

editAction

カスタム編集アクション・ファセット。

helpAction

カスタム・ヘルプ・アクション・ファセット。

titleBarAction

アクションをShowDetailFrameコンポーネントのタイトルと関連付ける場合に使用します。

additionalActions

ShowDetailFrameコンポーネント内で選択可能なアクションのリストに、さらにアクションを追加する場合に使用します。


Oracle JDeveloperでは、構造ウィンドウに、ShowDetailFrameコンポーネントに使用可能なすべてのファセットが表示されます。ただし、アクティブになるのは、UIコンポーネントが含まれるファセットのみです。

ShowDetailFrameファセットを追加する手順は、次のとおりです。

  1. 構造ウィンドウで「ShowDetailFrame」コンポーネントを右クリックし、「ファセット - 詳細フレームを表示」を選択します。

  2. このオプションの右側にある矢印をクリックします。

  3. サポートされているファセットのリストから、追加するファセットを選択します。

    そのファセットのf:facet要素がページに挿入されます。


注意:

ファセット名の隣のチェックマークは、そのファセットのf:facet要素がすでにページに挿入されていることを示しますが、その中に子コンポーネントは含まれる場合も含まれない場合もあります。

4.4.2 ページへのコンポーネントのドラッグ・アンド・ドロップ

Oracle JDeveloperユーザー・インタフェース内のコンポーネント・パレットには、使用可能なすべてのコンポーネント・タグ・ライブラリがリストされます。ライブラリを選択し、そのライブラリ内のコンポーネントを*.jspxページにドラッグ・アンド・ドロップします。

コンポーネントをページにドラッグ・アンド・ドロップする方法の詳細は、『Oracle Application Development Framework開発者ガイド』を参照してください。

4.4.3 カスタマイズ可能コンポーネントのルック・アンド・フィールの変更

すべてのカスタマイズ可能コンポーネントのルック・アンド・フィールドは、スキンCSSファイル内のカスタマイズ可能コンポーネント・セレクタCSS定義を変更することによって変更できます。様々なスタイル・セレクタおよびアイコン・セレクタが、カスタマイズ可能コンポーネントのスキンを設定するために使用可能です。使用可能なセレクタのリスト、Oracle ADF Facesスキンの概要、カスタム・スキンの作成方法、およびスキンを使用するためのアプリケーションの構成方法の詳細は、第9章「カスタマイズ可能コア・コンポーネントのスタイルの定義および適用」を参照してください。

4.4.4 カスタマイズ可能コンポーネントのセキュリティの実装

PanelCustomizableおよびShowDetailFrameコンポーネントを使用すると、最小化、最大化、移動などの様々なアクションを子コンポーネントに対して実行できます。カスタマイズ可能コンポーネントに対するアクションは、デフォルトでは保護されていません。あらゆるタイプのユーザーにすべてのアクションを公開することは望ましくないので、これらのコンポーネントに対して適宜セキュリティを定義することをお薦めします。

カスタマイズ可能コンポーネントに対するアクションに様々なレベルでセキュリティを実装するには、10.9.2項「カスタマイズ可能コンポーネントのセキュリティ」を参照してください。

4.5 コンテキストに即したコンポーネントのリンク

WebCenterアプリケーションのインタラクティブ性を高める1つの方法として、関連するコンポーネントをリンクして、これらのコンテンツをコンテキストに即して同期させる方法があります。たとえば、1つのページに2つの株式ポートレットがあり、一方は株価のデータを提供し、もう一方は株式のヘッドライン・ニュース・アイテムを提供するとします。どちらのポートレットも株式ティッカー・シンボルに基づいているため、株価ポートレット内のティッカー・シンボルが変更されると、株式ヘッドライン・ポートレットはその変更を取り込んで、同じティッカー・シンボルに関連するヘッドラインを使用して自動的にリフレッシュする、という動作は筋が通っています。

このような種類の同期は、パラメータを介して実装できます。表4-8に、このタイプのコンテキストに基づく動作と関連付けることのできるコンポーネントのタイプをまとめます。

表4-8 同期可能なコンポーネント

コンポーネント開始パラメータ コンポーネント読取りパラメータの値 コメント

Oracle ADF Facesコンポーネント

Oracle ADF Facesコンポーネント

Facesコンポーネントをリンクする方法の詳細は、『Oracle Application Development Framework開発者ガイド』を参照してください。


WSRPポートレット

オプションやリストなどのFacesコンポーネントを使用して、ポートレットの表示コンテンツを変更できます。


PDK-Javaポートレット

オプションやリストなどのFacesコンポーネントを使用して、ポートレットの表示コンテンツを変更できます。

WSRP 2.0ポートレット脚注1

Oracle ADF Facesコンポーネント

標準ベースのポートレットは、Facesコンポーネントにパラメータを渡すことができます。


WSRP 2.0ポートレット

標準ベースのポートレットから標準ベースのポートレットにパラメータを渡すことができます。


PDK-Javaポートレット

標準ベースのポートレットからPDK-Javaベースのポートレットにパラメータを渡すことができます。

PDK-Javaポートレット

Oracle ADF Facesコンポーネント

PDK-Javaポートレットは、Facesコンポーネントにパラメータを渡すことができます。


WSRPポートレット

PDK-Javaポートレットから標準ベースのポートレットにパラメータを渡すことができます。


PDK-Javaポートレット

PDK-JavaベースのポートレットからPDK-Javaベースのポートレットにパラメータを渡すことができます。

Oracle ADF Facesページ変数/パラメータ

Oracle ADF Facesコンポーネント

ページ上のFacesコンポーネントによってパラメータが取り込まれるように、ページ・レベルでパラメータを設定できます。


WSRPポートレット

標準ベースのポートレットは、ページ・パラメータを取り込むことができます。


PDK-Javaポートレット

PDK-Javaポートレットは、ページ・パラメータを取り込むことができます。


脚注1 ナビゲーション・パラメータはWSRP 2.0でのみサポートされることに注意してください。WSRP 1.0には、ナビゲーション・パラメータのサポートはありません。

4.5.1 ページへのポートレットのリンク

ページ変数を定義すると、そのページ上のポートレットは実行時にページ変数を読み取って、それに応じて動作を変更できます。ポートレット・パラメータにリンク可能なページ変数を設定することで、ページ上のポートレットをコンテキストに順応させることができます。たとえば、ページに顧客識別子変数を含めるとします。この場合、ページ上の関連するポートレットは、この値を使用して、表示する内容を決定します。顧客詳細ポートレットは、この値を使用して、表示する顧客情報を決定します。

図4-3に、ページ・パラメータから顧客識別子番号(320)を取得するポートレットを示します。

図4-3 ページ・パラメータが設定されたポートレットの例

図4-3の説明が続きます
「図4-3 ページ・パラメータが設定されたポートレットの例」の説明

ポートレットをページにリンクする方法

ポートレットの作成時にパブリック・パラメータを定義した場合、ポートレットをページ上にドロップすると、ページ変数がパラメータに対して作成されます。

ポートレットをページ上にドロップしたときにパラメータが実装されることを確認する手順は、次のとおりです。


注意:

以降のシナリオではOmniPortletを使用していますが、パラメータおよびページ変数に関連する基本原則は、どのポートレットでも同じです。

  1. アプリケーション・ナビゲータで、ページをダブルクリックして開きます。ページが編集用に開き、「構造」ペインにページ構造が表示されます。

  2. OmniPortletポートレットをページに追加します。4.3.2項「ページへのポートレットの追加」を参照してください。OmniPortletでPDK-Javaプロデューサを使用するため、プロデューサをアプリケーションに登録する必要があることに注意してください。PDK-Javaプロデューサの登録の詳細は、4.3.1.2項「PDK-Javaポートレット・プロデューサの登録」を参照してください。

  3. 「構造」ペインに表示されたツリー内の任意の場所を右クリックし、ポップアップ・メニューで「ページ定義に移動」を選択します。「構造」ペインにページ定義ツリーが表示され、ページ定義XMLが編集用に開きます。

  4. ページ定義XMLでは、<variableIterator>タグ内に5つのデフォルトのOmniPortletページ変数があります。また、<portlet>タグの内部からページ変数への参照があります。例4-11に、OmniPortletが最初にページにドロップされた後のサンプル・ページ定義を示します。

    例4-11 OmniPortletが含まれるPageDef.xmlファイル

    <?xml version="1.0" encoding="UTF-8" ?>
    <pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel"
                    version="10.1.3.39.0" id="SRDemoDashboardPageDef"
                    Package="view.pageDefs">
      <parameters/>
      <executables>
        <variableIterator id="variables">
          <variable Name="portlet1_Param1" Type="java.lang.Object"/>
          <variable Name="portlet1_Param2" Type="java.lang.Object"/>
          <variable Name="portlet1_Param3" Type="java.lang.Object"/>
          <variable Name="portlet1_Param4" Type="java.lang.Object"/>
          <variable Name="portlet1_Param5" Type="java.lang.Object"/>
        </variableIterator>
        <portlet id="portlet1"
          portletInstance="/oracle/adf/portlet/OmniPortletProducer_1154018261057/
            ap/Portlet100_b0da57c9_010c_1000_8003_82235f50a408"
          class="oracle.adf.model.portlet.binding.PortletBinding"
                 xmlns="http://xmlns.oracle.com/portlet/bindings">
          <parameters>
            <parameter name="Param1" pageVariable="portlet1_Param1"/>
            <parameter name="Param2" pageVariable="portlet1_Param2"/>
            <parameter name="Param3" pageVariable="portlet1_Param3"/>
            <parameter name="Param4" pageVariable="portlet1_Param4"/>
            <parameter name="Param5" pageVariable="portlet1_Param5"/>
          </parameters>
        </portlet>
      </executables>
    </pageDefinition>
    
  5. ページがURLを介してパラメータ値を取得するためには、ページ・レベル・パラメータを追加する必要があります。「構造」ペインで、「parameters」ノードを右クリックし、ポップアップ・メニューから「parametersの中に挿入」「パラメータ」の順に選択します。パラメータの挿入・ダイアログ・ボックスが表示されます。

  6. custIDIDを入力し、${param.customerID}を入力します。「OK」をクリックします。ページ定義のXMLは、次のようになります。

    <parameters>
        <parameter id="custID" value="${param.customerID}"/>
    </parameters>
    
  7. アプリケーション・ナビゲータで、ページを右クリックし、ポップアップ・メニューから「実行」を選択します。

  8. ページが表示されたら、OmniPortletで「定義」をクリックします。

  9. 「SQL」を選択し、「次へ」をクリックします。

  10. 「文」領域で、次のSELECT文を入力します。WHERE句内のParam1への参照に注意してください。

    select * from USERS
    where USER_ID = ##Param1##
    
  11. 「接続」セクションで、SRDemoスキーマを含むデータベースへの接続を選択または作成します。

  12. 「ポートレット・パラメータ」で、Param1「デフォルト値」として320を入力し、「パーソナライズ可能」を選択します。

  13. 「次へ」をクリックします。

  14. この場合はフィルタは必要ないので、「次へ」をクリックします。

  15. 「ヘッダー・テキスト」で、次のように入力します。

    Select a customer from the Most Active Customers List to view the customer details.
    
  16. 「レイアウト・スタイル」「HTML」を選択し、「次へ」をクリックします。

  17. 「非繰返しヘッダー・セクション」で、デフォルトのHTMLを削除します。

  18. 「繰返しセクション」内のHTMLを次のコードで置き換えます。

    <TABLE BORDER='0' WIDTH="100%">
    <TR CLASS='PortletText1'>
      <TD CLASS='PortletHeading1'>ID</TD>
      <TD>##USER_ID##</TD>
    </TR>
    <TR CLASS='PortletText1'>
      <TD CLASS='PortletHeading1'>Email</TD>
      <TD>##EMAIL##</TD>
    </TR>
    <TR CLASS='PortletText1'>
      <TD CLASS='PortletHeading1'>First Name</TD>
      <TD>##FIRST_NAME##</TD>
    </TR>
    <TR CLASS='PortletText1'>
      <TD CLASS='PortletHeading1'>Last Name</TD>
      <TD>##LAST_NAME##</TD>
    </TR>
    <TR CLASS='PortletText1'>
      <TD CLASS='PortletHeading1'>Street</TD>
      <TD>##STREET_ADDRESS##</TD>
    </TR>
    <TR CLASS='PortletText1'>
      <TD CLASS='PortletHeading1'>City</TD>
      <TD>##CITY##</TD>
    </TR>
    <TR CLASS='PortletText1'>
      <TD CLASS='PortletHeading1'>State</TD>
      <TD>##STATE_PROVINCE##</TD>
    </TR>
    
  19. デフォルトの「非繰返しフッター・セクション」をそのままにして、「終了」をクリックします。

  20. Oracle JDeveloperに戻り、「構造」ペインでページ変数「portlet1_Param1」をクリックします。プロパティ・インスペクタで、このページ変数のプロパティが表示されるようになります。

  21. プロパティ・インスペクタで、DefaultValueプロパティの隣をクリックします。プロパティの値を編集するためのボタンが表示されます。この「編集」ボタンをクリックします。

  22. 「DefaultValue」ダイアログ・ボックスで、「ADFバインディング」ノードを開き、その下の「バインディング」ノードを開きます。portlet1_Param1のバインディングが表示されます。

  23. 右矢印(>)を使用して変数を「式」に移動し、ボタンを使用して演算子を適用できます。作成した式は、次のようになります。

    ${(bindings.custID == null || bindings.custID == '') ? 320 : bindings.custID }
    
  24. 「OK」をクリックします。ページ定義XMLは、例4-12のようになります。

    例4-12 <variable>

    <executables>
      <variableIterator id="variables">
        <variable Name="portlet1_Param1" Type="java.lang.Object"
            DefaultValue="${(bindings.custID == null || 
            bindings.custID == '') ? 320 : bindings.custID }"/>
      </variableIterator>
    ...
    
  25. 今度は、パラメータの値を設定して、ページ上のポートレットをテストする必要があります。値はページURLを介して設定できます。次に例を示します。

    http://pc1.com:8988/SRDemo/faces/app/management/SRDashboard.jspx?customerID=321
    

    このURLを渡すことで、ページはcustomerIDの値321でリフレッシュされます。ページ上のOmniPortletは、変更後の値を反映するデータでリフレッシュされるはずです。

4.5.2 ポートレットのリンク

多くの場合、一方のポートレット内のパラメータが変更されると他方のポートレットも新しい値でリフレッシュされるように、複数のポートレットを関連付けると便利です。たとえば、図4-4は2つのポートレットを示しています。ユーザーが左側の「Most Active Customer」ポートレットから「Last Name」をクリックすると、その顧客のIDが右側の「Customer Details」ポートレットに取り込まれ、「Customer Details」ポートレットはその顧客の詳細データでリフレッシュされます。

図4-4 ポートレット間通信の例

図4-4の説明が続きます
「図4-4 ポートレット間通信の例」の説明

ポートレットをリンクする方法

ポートレットどうしをリンクする方法は、ポートレットをページにリンクする方法とほとんど同じです。「ポートレットをページにリンクする方法」に示した例では、URL内のページ・パラメータからページ変数に値が渡され、ページ変数の値がポートレットのパラメータに渡されています。この方法で簡単に、ページ変数の値を読み取る複数のポートレットをページ上に設定できます。さらに、ページ・パラメータはページURLから変更できるため、1つのポートレットでページ・パラメータの値を設定し、ページ変数の値を設定すると、ページ上の他のポートレットがその影響を受けます。

4.5.3 ポートレットへのFacesコンポーネントのリンク

Facesコンポーネントとポートレットを組み合せると、非常に強力になります。リストやオプションなどのインタラクティブなFacesコンポーネントをページ上の1つ以上のポートレットに関連付けようとする場合は、このような種類の同期が便利です。たとえば、ダッシュボードのようなページで、ユーザーが事前定義済の選択項目セットから選択して、ページに表示するポートレットを決定できるようにするとします。この場合、Facesコンポーネント(リストまたはオプションの選択)がページ上の1つ以上のポートレットに値を渡します。ポートレットはこの値を使用して、表示するコンテンツを決定します。

図4-5では、「Volume for last」という名前のリストがFacesコンポーネントであり、OmniPortletによって円グラフが生成されます。リストからの値がOmniPortletに渡されると、OmniPortletは新しい値を使用して、更新済のグラフで自動的にリフレッシュします。

図4-5 Facesコンポーネントからポートレットへの通信の例

図4-5の説明が続きます
「図4-5 Facesコンポーネントからポートレットへの通信の例」の説明

Facesコンポーネントをポートレットにリンクする方法

Facesコンポーネントをポートレットにリンクする手順は、次のとおりです。

  1. アプリケーション・ナビゲータで、ページをダブルクリックして開きます。ページが編集用に開き、「構造」ペインにページ構造が表示されます。

  2. Oracle JDeveloperのユーザー・インタフェースのジェスチャを使用して、必要なFacesコンポーネントをページに追加します。例4-13に、ユーザー・インタフェースを介してPanelCustomizable内のShowDetailFrameの中に作成されたselectOneChoiceを示します。selectOneChoiceは、dayPickerという名前のリストを提供します。このリストから、ユーザーは、OmniPortlet(portlet1)の円グラフでデータを表示する期間(日数)を選択できます。この例では、日付ピッカーのgetおよびset機能がバッキング・クラス内に自動的に作成されていることに注意してください。autoSubmittrueに設定すると、リストから項目が選択されるたびに、変数の値が強制的に変更されます。また、dayPickerのすぐ下にあるOmniPortlet指定でdayPickerを参照していることにも注意してください。

    例4-13 selectOneChoice

    <cust:panelCustomizable text="Service Requests Volume"
                            displayHeader="false"
                            expansionMode="normal" isMovable="true"
                            isSeededInteractionAvailable="true"
                            id="panelCustomizable2" layout="horizontal">
      <cust:showDetailFrame id="showDetailFrame1"
                            text="Service Volume Distribution"
                            displayHeader="true"
                            isSeededInteractionAvailable="true">
        <af:selectOneChoice id="dayPicker" label="Volume for last"
          value="360"
          binding="#{backing_app_management_SRDashboard.SelectOneChoice}"
           autoSubmit="true">
           <af:selectItem label="1 day" value="1"/>
           <af:selectItem label="2 days" value="2"/>
           <af:selectItem label="3 days" value="3"/>
           <af:selectItem label="5 days" value="5"/>
           <af:selectItem label="10 days" value="10"/>
           <af:selectItem label="30 days" value="30"/>
           <af:selectItem label="60 days" value="60"/>
           <af:selectItem label="90 days" value="90"/>
           <af:selectItem label="180 days" value="180"/>
           <af:selectItem label="360 days" value="360"/>
        </af:selectOneChoice>
        <adfp:portlet value="#{bindings.portlet1}"
           portletType="/oracle/adf/portlet/OmniPortlet_Producer/applicationPortlets/
             Portlet100_f20eef2c_010a_1000_8003_a9fe020295ca"
           partialTriggers="dayPicker"
           displayScrollBar="False" displayHeader="False"
           isMinimizable="True"
           renderPortletInIFrame="False"/>
      </cust:showDetailFrame>
      <adfp:portlet value="#{bindings.portlet3}"
         portletType="/oracle/adf/portlet/OmniPortlet_Producer/applicationPortlets/
           Portlet100_f20f676b_010a_1000_8005_a9fe020295ca"
         renderPortletInIFrame="False"/>
      <adfp:portlet value="#{bindings.portlet2}"
         portletType="/oracle/adf/portlet/OmniPortlet_Producer/applicationPortlets/
           Portlet100_f20f50cc_010a_1000_8004_a9fe020295ca"
         renderPortletInIFrame="False"/>
    </cust:panelCustomizable>
    
  3. Facesコンポーネントを設定し、ページ上の必要なポートレットからそのコンポーネントを参照した後は、パラメータをページ定義に追加する必要があります。「構造」ペインでJSPルートを右クリックし、ポップアップ・メニューから「ページ定義に移動」を選択します。ページ定義XMLが編集用に開きます。

  4. <executables>セクションで、dayPickerからportlet1に渡されるパラメータを指定する必要があります。例4-14に、ページ定義内のデフォルト・コードを示します。

    例4-14 portlet1のパラメータ

    <executables>
    <variableIterator id="variables">
       <variable Name="OmniPortlet2_1_Param1" Type="java.lang.Object"
       DefaultValue="<parameter name="Param1" value="${(backing_app_management_
       SRDashboard.dayPicker.value == null) ? 360 : backing_app_management_
       SRDashboard.dayPicker.value}"/>
       <variable Name="OmniPortlet2_1_Param2" Type="java.lang.Object"/>
       <variable Name="OmniPortlet2_1_Param3" Type="java.lang.Object"/>
       <variable Name="OmniPortlet2_1_Param4" Type="java.lang.Object"/>
       <variable Name="OmniPortlet2_1_Param5" Type="java.lang.Object"/>
    </variableIterator>