ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebCenter PortalおよびOracle JDeveloperでのポータルの開発
11gリリース1 (11.1.1.8.3)
E49666-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

18 コンポーザを使用したページの実行時編集の有効化

この章では、Portal Frameworkアプリケーションのページにコンポーザ・コンポーネントを追加して、ページの実行時編集を可能にする方法を説明します。

この章の内容は、次のとおりです。

18.1 コンポーザ・コンポーネントを使用した編集可能ページの設計

コンポーザ・タグ・ライブラリには、Oracle JDeveloperでページに追加できる設計時コンポーネントが用意されており、実行時のページ編集が可能になります。設計時にコンポーザ・コンポーネントを使用してページを作成すると、実行時にコンポーザはページ編集モードに入り、要件に応じてページを変更するオプションを提供します。

Portal FrameworkアプリケーションとPortal Framework以外のアプリケーションでカスタマイズを有効にできます。アプリケーション内で、次のタイプのページのカスタマイズを有効にできます。

コンポーザ・コンポーネントおよびその属性の詳細は、第16.6項「コンポーザ・コンポーネント」を参照してください。

この項では、設計時にコンポーザ・コンポーネントをページに追加し、これを実行時に編集可能にする方法を説明します。次のサブセクションが含まれます:

18.1.1 カスタマイズ可能ページの作成方法

Portal Frameworkアプリケーションでのカスタマイズ可能JSPXページの作成については、第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」を参照してください。

JDeveloperで新しいページを作成するとき、これは、図18-1に示すように、Webコンテンツの下でアプリケーション・ナビゲータにリストされます。また、ページはエディタで開かれ、アクティブなエディタ・パネルになります。

図18-1 アプリケーション・ナビゲータのカスタマイズ可能JSPXページ

図18-1の説明が続きます
「図18-1 アプリケーション・ナビゲータのカスタマイズ可能JSPXページ」の説明

セキュリティに関する考慮事項

デフォルトでは、Portal Frameworkアプリケーションは、ADFセキュリティで構成されます。デフォルトのユーザー名およびパスワード(weblogic/weblogic1)は自動的に作成されます。

保護されたアプリケーションでユーザーがページを編集できるようにするには、ページの編集権限またはカスタマイズ権限を必要なユーザーまたはロールに付与する必要があります。権限の付与の詳細は、第74.4項「ロール・マネージャ・タスク・フローの使用」を参照してください。

アプリケーションでADFセキュリティが有効になっていない場合、セキュリティを実装し、アプリケーションを構成してユーザーが個別のアイデンティティを持つようにユーザーを認証することによって、ユーザーの権限が実行時のカスタマイズ機能にどのように影響するかをテストできます。アプリケーションで基本的なセキュリティ・モデルを実装する手順は、第74.3項「ADFセキュリティ設定の構成」を参照してください。

18.1.2 Page Customizableコンポーネントを使用した実行時カスタマイズの有効化方法

Page Customizableコンポーネントをページに追加すると、ユーザーがページの編集モードに切り替えたときにコンポーザが起動します。Page Customizableコンポーネントを追加すると、一部の構成ファイルがデフォルトのコンポーザ固有の設定によって自動的に更新されます。詳細は、第18.1.9項「コンポーザ・コンポーネントの追加時に行われる処理」を参照してください。


注意:

ページにPage Customizableを追加する前の考慮事項については、第18.1.11項「編集可能ページの設計時の必知事項」を参照してください。


ページにPage Customizableコンポーネントを追加するには:

  1. カスタマイズ可能なJSPXページを開きます。

  2. コンポーネント・パレットで、ドロップダウン・リストから「ADF Faces」を選択し、Panel Stretch Layoutコンポーネントをページにドラッグします。


    注意:

    Panel Stretch Layoutコンポーネントは、centerファセットの子をストレッチし、使用可能なスペースすべてを埋めます。これは、ユーザーがブラウザ上の場合にも当てはまります。


  3. コンポーネント・パレットで、ドロップダウン・リストから「コンポーザ」を選択します。

  4. Page CustomizableコンポーネントをPanel Stretch Layoutcenterファセットに追加します。

    Page Customizableaf:form要素内でネストされていることを確認する必要があります。Page Customizableはリッチ・クライアント・コンポーネントで、正常に機能するためにはリッチ・クライアント・フレームワークが必要です。

  5. Page Customizableコンポーネントの必須属性には、ページにコンポーネントを追加する際にデフォルト値が移入されます。

    属性値の定義または変更は、第B.1.1項「Page Customizableコンポーネント」を参照してください。

  6. ページを保存します。

    図18-2に示すように、Page Customizableコンポーネントの下にPanel Customizableコンポーネントが子コンポーネントとしてデフォルトで追加され、Page Editor Panelとその他の各種ファセットが追加されます。

    図18-2 Page Customizableコンポーネント

    図18-2の説明が続きます
    「図18-2 Page Customizableコンポーネント」の説明

    図18-1は、ページ・ソース・ビューのpe:pageCustomizableタグを示しています。

    例18-1 ページの「ソース」ビューのPage Customizableコンポーネント

    <pe:pageCustomizable id="pageCustomizable1"
      <cust:panelCustomizable id="panelcustomizable1" 
                              layout="scroll"/>
      <f:facet name="editor">
        <pe:pageEditor id="pep1"/>
      </f:facet>
    </pe:pageCustomizable>
    

18.1.3 Change Mode LinkまたはChange Mode Buttonを使用したページ・モードの切替えを有効にする方法

ユーザーがページの編集モードに簡単に切り替えられるようにするには、ページにChange Mode LinkまたはChange Mode Buttonコンポーネントを追加する必要があります。


注意:

編集モードへの切替えを可能にする別の方法は、変更モードAPIを使用することです。このAPIの詳細は、Oracle Fusion Middleware Oracle WebCenter Portal Java APIリファレンスを参照してください。

ページにPage Customizableコンポーネントを追加する前の考慮事項については、第18.1.11項「編集可能ページの設計時の必知事項」を参照してください。


Change Mode LinkまたはChange Mode Buttonコンポーネントを追加するには:

  1. コンポーネント・パレットで、「コンポーザ」を選択します。

  2. 「構造」ウィンドウの、前の項で追加したPanel Stretch Layouttopファセット内で、コンポーネント・パレットからChange Mode LinkまたはChange Mode Buttonコンポーネントをドラッグします。

    Change Mode LinkまたはChange Mode Buttonaf:form要素内でネストされていることを確認する必要があります。Change Mode LinkまたはChange Mode Buttonコンポーネントはリッチ・クライアント・コンポーネントで、正常に機能するためにはリッチ・クライアント・フレームワークが必要です。


    注意:

    • ページでPanel Stretch Layoutを使用していない場合は、Change Mode LinkまたはChange Mode Buttonコンポーネントを「構造」ウィンドウのPage Customizableコンポーネントの上に追加します。こうすることによって、Change Mode LinkまたはChange Mode Buttonが実行時に正しく表示されます。

    • ページにPage Customizableがある場合のみChange Mode LinkまたはChange Mode Buttonを使用します。Change Mode LinkまたはChange Mode Buttonが含まれているがPage Customizableコンポーネントが含まれていないページを実行すると問題が発生する場合があります。


  3. Change Mode LinkまたはChange Mode Buttonコンポーネントの必須属性は、ページにコンポーネントを追加する際にデフォルトで設定されます。

    第B.1項「コンポーザ・コンポーネントのプロパティ」表B-2を参照して、オプションで、その他の属性を設定できます。


    注意:

    保護されたアプリケーションでは、すべてのユーザーの権限を確認し、権限のあるユーザーに対してのみページ上で「編集」リンクまたはボタンを有効にすることをお薦めします。認証されていないユーザーが偶然ページ編集モードに入った場合、コンポーネント・プロパティを変更することはできますが、その変更は保存されません。

    選択したユーザーの「編集」リンクまたはボタンを有効にするには、Change Mode LinkまたはChange Mode Buttonコンポーネントのrendered属性のEL値を指定します。詳細は、第B.1.2項「Change Mode LinkおよびChange Mode Button」を参照してください。


    図18-3に示すように、「構造」ウィンドウのaf:formタグ内に、pe:changeModeLinkまたはpe:changeModeButtonタグが表示されます。

    図18-3 Change Mode Link

    図18-3の説明が続きます
    「図18-3 Change Mode Link」の説明

    図18-4に、JDeveloperのページの「設計」ビューのChange Mode Linkを示します。

    図18-4 「設計」ビューのChange Mode Link

    図18-4の説明が続きます
    「図18-4 「設計」ビューのChange Mode Link」の説明

18.1.4 Panel Customizableコンポーネントを使用したページの編集可能領域の定義方法

Panel Customizableコンポーネントは、ポートレットまたはリージョンの追加、配置、削除などのページ構成またはコンテンツ管理のタスクに必要です。デフォルトでは、1つのPanel CustomizableコンポーネントがPage Customizableコンポーネントの直接の子として自動的に追加されます。要件に応じて、このPanel Customizableコンポーネント内にさらにPanel Customizableコンポーネントを追加できます。

実行時にコンポーネントをドラッグ・アンド・ドロップできるのはPanel Customizableコンポーネント内のみです。


注意:

ページにPage Customizableを追加する前の考慮事項については、第18.1.11項「編集可能ページの設計時の必知事項」を参照してください。


ページにPanel Customizableコンポーネントを追加するには:

  1. コンポーネント・パレットで、ドロップダウン・リストから「コンポーザ」を選択します。

  2. コンポーネント・パレットから「構造」ウィンドウにPanel Customizableコンポーネントをドラッグして、フォーム内の適切な場所にドロップします。

    Panel Customizableaf:form要素内でネストされていることを確認する必要があります。Panel Customizableコンポーネントはリッチ・クライアント・コンポーネントで、正常に機能するためにはリッチ・クライアント・フレームワークが必要です。


    注意:

    • Page Customizableコンポーネントには、デフォルトで1つの直接の子のPanel Customizableコンポーネントが含まれています。別のPanel CustomizablePage Customizableの直接の子コンポーネントとして追加しないでください。Page Customizableに複数の子コンポーネントがある場合、最初の子コンポーネントのみはページの実行中に選択されます。

    • 実行時にコンポーネントをドロップできるのはPanel Customizableコンポーネント内のみであるため、ページのルートのPanel Customizableコンポーネントは削除しないでください。


  3. Panel Customizableコンポーネントの必須属性は、ページにコンポーネントを追加する際にデフォルトで設定されます。

    第B.1項「コンポーザ・コンポーネントのプロパティ」表B-6を参照して、オプションで、その他の属性を設定できます。


    注意:

    ストレッチ・レイアウトをPanel Customizableに選択した場合、最初の子コンポーネントがストレッチされ、Panel Customizableコンポーネントの使用可能なスペースを埋めます。その他の子コンポーネントは、ページから削除されていなくても無視されます。


18.1.5 Layout Customizableコンポーネントを使用したページのレイアウトのカスタマイズの有効化方法

Layout Customizableコンポーネントを使用して、ページまたはページの領域にあるコンポーネントのレイアウトの実行時定義または変更を有効にします。実行時にユーザーがレイアウトをカスタマイズすることを許可する場合のみ、このコンポーネントを使用します。静的レイアウトでは、Panel Group LayoutまたはPanel Stretch Layoutなどの代替のコンポーネントを使用します。

Layout Customizableコンポーネントを追加するには:

  1. コンポーネント・パレットで、ドロップダウン・リストから「コンポーザ」を選択します。

  2. Layout Customizableコンポーネントを「構造」ウィンドウにドラッグして、Panel Customizableコンポーネント内にドロップします。

    ターゲットのPanel Customizableコンポーネントは、Page Customizableコンポーネントの子である必要があります。

    Layout Customizableaf:form要素内でネストされていることを確認します。Layout Customizableコンポーネントはリッチ・クライアント・コンポーネントで、正常に機能するためにはリッチ・クライアント・フレームワークが必要です。


    注意:

    Page Customizableの直接の子のPanel Customizableを削除し、Layout CustomizablePage Customizableの直接の子として追加できます。ただし、Page Customizableに直接の子コンポーネントが1つしかないことを確認する必要があります。


  3. Layout Customizableコンポーネントの必須属性は、ページにコンポーネントを追加する際にデフォルトで設定されます。

    第B.1項「コンポーザ・コンポーネントのプロパティ」表B-3を参照して、オプションで、その他の属性を設定できます。


    注意:

    Layout Customizableコンポーネントが実行時にページにはっきりと表示されることを確認するには、Text属性を使用してコンポーネントに説明ラベルを提供します。


    図18-5に示すように、pe:layoutCustomizableタグは、「構造」ウィンドウのcust:panelCustomizableタグ内にあります。子のPanel Customizableコンポーネントは、デフォルトでLayout Customizableコンポーネント内に追加されます。また、Panel Customizableコンポーネントは、Layout Customizableコンポーネントの各ファセット内に追加されます。これらのPanel Customizableコンポーネントにより、実行時にLayout Customizableコンポーネント内にコンテンツを追加できるようになります。

    直接の子として追加されたPanel Customizableは、メイン領域(実行時のレイアウトの中央領域)になります。デフォルトの2つのLayout Customizableファセット内に追加されたPanel Customizableコンポーネントは、AおよびBという2つのコンテンツ領域になります。実行時に事前定義済のレイアウトを選択すると、選択したパターンでコンテンツが表示されるように、これら3つの領域が配置されます。各レイアウト・タイプでコンテンツがどのようにレイアウトされるかに関する詳細は、「事前定義されたレイアウト・タイプ」を参照してください。


    注意:

    oneColumnレイアウトでは、AおよびBは、Panel Customizableコンポーネントに子コンポーネントが含まれている場合のみレンダリングされます。


    図18-5 Layout Customizableコンポーネント

    図18-5の説明が続きます
    「図18-5 Layout Customizableコンポーネント」の説明

18.1.6 Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法

プロパティの編集、コンポーネントの移動、最小化、削除などのカスタマイズを有効にする場合、Show Detail FrameコンポーネントをページのPanel Customizableコンポーネント内にドロップできます。その後、このShow Detail Frame内にコンポーネントを追加できます。


注意:

Show Detail Frameコンポーネントにある子コンポーネントは1つのみである必要があります。複数の子コンポーネントを追加した場合、最初の1つのみがレンダリングされます。その他の直接の子コンポーネントは、設計時または実行時にレンダリングされません。

複数のコンポーネントがShow Detail Frameに囲まれる必要がある場合、Panel Group LayoutPanel Customizableなどのグループ化コンポーネントをShow Detail Frameコンポーネントに追加し、ADF Facesコンポーネントまたはその他のコンテンツをこのグループ化コンポーネントに含めます。


Show Detail Frameコンポーネントを使用して、ページ表示モードおよび編集モードでのカスタマイズを有効にします。表示モードで行われた変更はそのユーザーのみが使用でき、編集モードで行われた変更はすべてのアプリケーション・ユーザーが使用できます。

ページにShow Detail Frameコンポーネントを追加するには:

  1. コンポーネント・パレットで、「コンポーザ」を選択します。

  2. 「構造」ウィンドウにShow Detail Frameコンポーネントをドラッグして、Panel Customizableコンポーネント内にドロップします。

    Show Detail Frameコンポーネントは、ページのPanel Customizableコンポーネントにネストさせる必要があります。

  3. Show Detail Frameコンポーネントの必須属性は、ページにコンポーネントを追加する際にデフォルトで設定されます。

    第B.1項「コンポーザ・コンポーネントのプロパティ」表B-7を参照して、オプションで、その他の属性を設定できます。

    図18-6に示すように、cust:showDetailFrameタグがcust:panelCustomizableタグ内に追加されます。

    図18-6 Show Detail Frameコンポーネント

    図18-6の説明が続きます
    「図18-6 Show Detail Frameコンポーネント」の説明

このタイプのタスクをさらに理解するには、第18.2項「コンポーザ・コンポーネントを使用した編集可能ページの設計: 例」を参照してください。

18.1.7 カスタマイズ可能ページを作成するページ・テンプレートの作成方法

アプリケーションでカスタマイズ可能ページを多数作成することを計画している場合、カスタマイズを可能にしたADFページ・テンプレートのページに基づいて作成できます。コンポーザ・コンポーネントをテンプレート自体に追加することによって、これらのコンポーネントをカスタマイズ可能ページそれぞれに追加する必要をなくすことができます。

ページ・テンプレートを作成し、そのカスタマイズを有効にするには:

  1. JDeveloperのアプリケーション・ナビゲータで、テンプレートを作成するアプリケーションのポータル・プロジェクトに移動し、そのポータル・プロジェクトを右クリックし、「新規」を選択します。

  2. 「新規ギャラリ」で、「Web層」を開き、「JSF」「JSFページ・テンプレート」の順に選択し、「OK」をクリックします。

  3. 「JSFページ・テンプレートの作成」ダイアログで、テンプレートのファイル名を入力し、レイアウトを選択し、新規ファセットを宣言します。

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

  5. テンプレートで、コンポーザのタグ・ライブラリから、Change Mode LinkまたはChange Mode ButtonコンポーネントをPanel Stretch Layoutコンポーネントの上に追加します。

  6. Page CustomizableコンポーネントをPanel Stretch Layoutコンポーネントのcenterファセット内に追加します。

  7. 子のPanel CustomizableコンポーネントをPage Customizableから削除し、Panel Group Layoutコンポーネントをその場所に追加します。

  8. Panel Group Layoutlayout属性をscrollに設定します。

  9. Facet RefコンポーネントをPanel Group Layout内に追加し、手順3でファセットを宣言する際に使用した同じ名前を指定します。テンプレートは、図18-7に示すようにファセットを表示します。

    図18-7 新しいページ・テンプレート・ファイル

    図18-7の説明が続きます
    「図18-7 新しいページ・テンプレート・ファイル」の説明

  10. テンプレート・ファイルを保存します。

このテンプレートに基づいてカスタマイズ可能ページを作成できるようになりました。ページを作成したら、Panel CustomizableまたはLayout Customizableコンポーネントを新しいページに表示されるファセット内に追加できます。ページ・コンテンツをPanel CustomizableまたはLayout Customizableコンポーネントに追加できます。

18.1.8 移入されたページでカスタマイズを有効にする方法

コンテンツが移入されたJSPXページを持つ既存のADFアプリケーションがあり、カスタマイズを有効にする場合、Page Customizableコンポーネント内のすべてのコンテンツを移動してこれを実行できます。

まずPage Customizable、次にLayout Customizable、さらにPanel CustomizableコンポーネントおよびShow Detail Frameコンポーネントの必須の階層を追加する必要があります。既存のコンポーネントそれぞれをドラッグし、Page Customizable内の適切な場所にドロップします。


注意:

  • Page Customizableコンポーネントの直接の子コンポーネントは1つのみであることを確認します。

    複数の直接の子コンポーネントを追加すると、最初の子コンポーネントのみが実行時にレンダリングされます。最初の子コンポーネントがページに合せてストレッチされます。その他の直接の子コンポーネントはすべて無視され、ページにレンダリングされません。

  • 実行時にユーザーがレイアウトをカスタマイズすることを許可する場合のみ、Layout Customizableコンポーネントを使用します。静的レイアウトでは、Panel Group LayoutPanel Stretch Layoutコンポーネントなどの代替のコンポーネントを使用します。

  • 最良の結果を得るためには、ソース・コードの編集によってではなく、「構造」ウィンドウを使用してコンポーネントを移動します。


18.1.9 コンポーザ・コンポーネントの追加時に行われる処理

ページにPage Customizableコンポーネントを追加する際には、次の構成が自動的に実行されます。

  • デフォルトのリソース・カタログの定義ファイルdefault-catalog.xmlがアプリケーションで構成されます。default-catalog.xmlファイルは、Application_Root/Portal/src/portalディレクトリにあります。アプリケーションのエンド・ユーザーが使用できるデフォルト・リソース・カタログにコンポーネントを追加するには、第14章「リソース・カタログの開発」を参照してください。

    Portal Frameworkアプリケーションで、default-catalog.xmlファイルはApplication_Root/Portal/public_html/oracle/webcenter/portalapp/catalogsディレクトリにあり、ページを作成しPage Customizableコンポーネントを追加しなくてもすぐに使用できます。

  • アプリケーションにリソース・カタログ・ビューアが構成されます。実行時、コンポーザは、このビューアからページにリソースを追加するオプションをユーザーに提供します。

  • Application_Root/Project_Name/public_html/WEB-INFディレクトリで使用可能なweb.xmlファイルは、更新されてMDS JSPプロバイダを構成します。

  • ComposerChangeManagerは、アプリケーションのweb.xmlファイル内に構成されます。詳細は、第20.11項「永続性変更マネージャの構成」を参照してください。

  • アプリケーションを作成すると、最小限のadf-config.xmlファイルも作成されます。アプリケーション・ページにPage Customizableコンポーネントを追加すると、必要な構成がadf-config.xmlファイルに追加されます。たとえば、変更の永続性は、このファイルのadf-faces-configセクションで構成されます。詳細は、第20.11項「永続性変更マネージャの構成」を参照してください。

  • Application_Root/Portal/adfmsrc/portalディレクトリのDataBindings.cpxファイルは更新され、ページにタスク・フローが存在できるようになります。

  • ページ定義ファイルは、Oracle WebCenter Portal拡張JARファイルの一部として入手可能なコンポーザ・タスク・フローに対するバインディングを使用して更新されます。例18-2は、Page Customizableコンポーネントがアプリケーション・ページに追加された後のページ定義ファイルのコードを示しています。

    図18-2 Page Customizableコンポーネントを追加した後のページ定義ファイル

    <?xml version="1.0" encoding="UTF-8" ?>
    <pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel"
                    version="11.1.1.57.95" id="rcpagePageDef"
                    Package="portal.pageDefs">
      <parameters/>
      <executables>
        <variableIterator id="variables"/>
        <taskFlow id="pageeditorpanel"
                  taskFlowId="#{pageEditorBean.pageEditorPanel}"
                  xmlns="http://xmlns.oracle.com/adf/controller/binding"/>
      </executables>
      <bindings/>
    </pageDefinition>
    

関連項目:

コンポーザ・コンポーネントを追加するときに作成または変更されるファイルの詳細は、第B.2項「コンポーザ固有のファイルと構成」を参照してください。


18.1.10 実行時の処理

実行時、ユーザーは、第16.4項「ページ表示モードでのカスタマイズ機能」および第16.5項「ページの編集」で説明されているすべてのタスクを実行できます。

各コンポーザ・コンポーネントには、第16.6項「コンポーザ・コンポーネント」で説明されている実行時機能が用意されています。


注意:

ページで実行する実行時カスタマイズは、アプリケーションをターゲット・サーバーにデプロイするときに引き継がれません。


18.1.11 編集可能ページの設計時の必知事項

カスタマイズ可能ページにコンポーザ・コンポーネントを追加する際には、次の事項に注意する必要があります。

  • 保護されたアプリケーションでユーザーがページを編集できるようにするには、ページの編集権限またはカスタマイズ権限を必要なユーザーまたはロールに明示的に付与する必要があります。権限の付与の詳細は、第74.4項「ロール・マネージャ・タスク・フローの使用」を参照してください。

  • コンポーネントの実行時カスタマイズを有効にするには、ページにPage Customizableコンポーネントを1つだけ追加します。


    注意:

    ページに2つ目のPage Customizableコンポーネントを追加しないでください。ページを実行すると、最初のPage Customizableコンポーネントのみが選択されます。


  • Page Customizableコンポーネントの直接の子コンポーネントは1つのみであることを確認します。

    複数の直接の子コンポーネントを追加すると、最初の子コンポーネントのみが実行時にレンダリングされます。最初の子コンポーネントがページに合せてストレッチされます。その他の直接の子コンポーネントはすべて無視されます。

  • カスタマイズ可能にするすべてのコンポーネントをPage Customizableコンポーネント内に配置します。

  • 実行時の編集を有効にするには、ID属性がページのすべてのコンポーネントで定義されていることを確認する必要がありますID値がないコンポーネントの実行時編集は、コンポーザではサポートされていません。

    ID値のないコンポーネントがページに含まれている場合、コンポーザでページを編集中に問題が発生する場合があります。

  • 表示モードのユーザー・カスタマイズを有効にするには、Show Detail FrameコンポーネントをPanel Customizableコンポーネント内に配置します。

  • 単一の子のみを含める場合にはShow Detail Frameを使用します。Show Detail Frameで複数のコンポーネントを囲む必要がある場合、Panel Group LayoutPanel Customizableなどのグループ化コンポーネントをShow Detail Frameコンポーネント内に配置し、ADF Facesコンポーネントまたはその他のコンテンツをこのグループ化コンポーネント内に配置します。

  • ポートレットをShow Detail Frameコンポーネント内に配置する必要はありません。ポートレットは、Show Detail Frameコンポーネントと類似のヘッダーおよび表示オプションに備えられます。

18.2 コンポーザ・コンポーネントを使用した編集可能ページの設計: 例

この例では、実行時にカスタマイズ可能なページを作成するとします。このページの名前はMyPage.jspxで、MyWebCenterAppという名前のPortal Frameworkアプリケーションに含まれています。

カスタマイズ可能ページを作成するには:

  1. 第6章「WebCenter Portal Frameworkアプリケーションの作成」で説明している手順を実行して、MyWebCenterAppという名前のPortal Frameworkアプリケーションを作成します。

  2. 第15.2項「WebCenter Portal Frameworkアプリケーションでのページの作成」で説明している手順を実行して、MyPage.jspxという名前のJSPXページを作成します。

  3. ADF Facesタグ・ライブラリからMyPage.jspxPanel Stretch Layoutを追加します。


    注意:

    Panel Stretch Layoutコンポーネントは、centerファセットの子をストレッチし、ブラウザの使用可能なスペースすべてを埋めます。これは、ブラウザ上でも同様です。したがって、コンポーネントをこの子コンポーネント内に配置することによって、確実にページのカスタマイズ可能部分がブラウザ領域全体を占めるようにできます。


  4. 第18.1.2項「Page Customizableコンポーネントを使用した実行時カスタマイズの有効化方法」の手順に従って、Page Customizableをコンポーザ・タグ・ライブラリからcenterファセットに追加します。

  5. Page Customizableの境界色をblueに設定し、編集可能領域を他の編集できない領域から区別します。

    Page Customizableのプロパティ・インスペクタのスタイル・カテゴリの下で、「ボックス」タブをクリックし、Border Color属性をBlueに設定します。

  6. Panel Customizableの境界色をredに設定します。

    Panel Customizableのプロパティ・インスペクタのスタイル・カテゴリの下で、「ボックス」タブをクリックし、Border Color属性をRedに設定します。

  7. 第18.1.3項「Change Mode LinkまたはChange Mode Buttonを使用したページ・モードの切替えを有効にする方法」の手順を実行して、Change Mode LinkコンポーネントをPanel Stretch Layoutの上部ファセットに追加します。

  8. centerファセット内で、第18.1.5項「Layout Customizableコンポーネントを使用したページのレイアウトのカスタマイズの有効化方法」の手順を実行して、Page Customizableの直接の子であるPanel Customizableに、Layout Customizableコンポーネントを追加します。

  9. 第18.1.6項「Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法」の手順を実行して、Show Detail Frameコンポーネントをページの各Panel Customizable内に追加します。

    図18-8は、Layout Customizableの直接の子であるPanel Customizableコンポーネントの内部、およびContentAContentBのファセットの直接の子であるPanel Customizableコンポーネントの内部にある、Show Detail Frameコンポーネントを示しています。

  10. この例のため、Rich Text EditorおよびImageコンポーネントをLayout Customizableでネストされた2つのShow Detail Frameコンポーネント内に追加します。これらのコンポーネントそれぞれをADF Facesタグ・ライブラリからページの必要な場所にドラッグ・アンド・ドロップします。

    ページのコンポーネントの階層を図18-8に示します。

    図18-8 MyPage.JSPXのコンポーネント階層

    図18-8の説明が続きます
    「図18-8 MyPage.JSPXのコンポーネント階層」の説明

  11. ページの編集権限またはカスタマイズ権限を必要なユーザーまたはロールに付与します。権限の付与の詳細は、第74.4項「ロール・マネージャ・タスク・フローの使用」を参照してください。

  12. MyPage.jspxを実行します。

    ページが表示モードで開きます。ページの「編集」リンクをクリックして編集モードに入ります。ページがコンポーザで開きます。コンポーザでは、第16.5項「ページの編集」で説明されているすべての編集タスクを実行できます。

    図18-9に実行時の編集モードでのページの外観を示します。

    図18-9 コンポーザで開いたMyPage

    図18-9の説明が続きます
    「図18-9 コンポーザで開いたMyPage」の説明

アプリケーションがADFセキュリティで構成されていない場合、このガイドのその他の例でサンプル・ページを使用するには、アプリケーションでADFセキュリティを構成します。

アプリケーションでセキュリティを構成するには:

  1. フォーム・ベースの認証でADFセキュリティを構成し、デフォルトのログイン・ページを生成します。

    詳細は、第74.3項「ADFセキュリティの構成」を参照してください。

  2. 3人のユーザーahunoldskingおよびjdoeを作成します。

    詳細手順は、第74.2項「アプリケーション・ロールの作成」を参照してください。

MyPage.jspxを実行すると、ログイン画面が表示されます。作成した3つのユーザー名のいずれかを使用してログインできます。

18.3 ページへのコンテンツの移入

必要なコンポーザ・コンポーネントを備えた編集可能ページを作成した後、通常のJSPXページと同様にページにコンテンツを移入できます。ただし、コンポーザ対応のページにコンテンツを追加するときに理解しておく必要がある、制限および推奨事項があります。

設計時の編集可能ページの移入は、その他のADF Facesページの移入と似ています。コンポーネントをIDEの様々な領域からページにドラッグ・アンド・ドロップできます。ポートレット、タスク・フロー、ADF Facesコンポーネントなどのコンポーネントを追加できます。

Page Customizableコンポーネント内の任意の場所にコンポーネントをドラッグ・アンド・ドロップすると、Id属性が一意の値に設定されます。Id属性は、コンポーネントの編集および変更された状態の維持に必要です。実行時にコンポーネントをページに追加すると、Id属性が自動的に設定されます。

18.3.1 コンテンツをページに追加するときの必知事項

コンテンツを編集可能ページに追加するときには、次の点を考慮してください。

  • Page CustomizableコンポーネントでネストされているPanel Customizableコンポーネント内にコンポーネントを追加します。こうすることによって、コンポーネントを実行時に編集できます。

  • Show Detail Frameコンポーネントには、子コンポーネントとしてOracle ADF Facesコンポーネントまたはタスク・フローを含めることができます。ただし、ポートレットには、Show Detail Frameコンポーネントに用意されているものと似ているヘッダーが含まれ、直接Panel Customizableコンポーネントに追加できます。Show Detail Frameコンポーネントにポートレットを含めることの利点はこれ以上ありません。

  • コンポーザの「構造」ビューで選択可能にするコンポーネントの場合、そのコンポーネントがリッチ・クライアント・フレームワークに準拠し、クライアント側コンポーネントを生成することを確認します。

  • ページでADF FacesコンポーネントのOutput TextOutput FormattedPage Customizableコンポーネント内でネストされている場合、clientComponent属性値を設定していることを確認してください。この属性値が設定されていない場合、実行時にページでコンポーネントを移動または再配置しようとするとエラーが発生する場合があります。

  • 編集可能ページでポートレットを消費するには、まずアプリケーションにポートレット・プロデューサを登録する必要があります。詳細は、第63章「ポートレットの消費」を参照してください。

18.3.1.1 タスク・フローの追加に関する考慮事項

ユーザーは、カスタマイズ可能ページに追加されたタスク・フローをパーソナライズ、カスタマイズおよび編集できます。保護されたアプリケーションでは、タスク・フローのカスタマイズ権限を持つユーザーは、タスク・フローのページのコンポーネントも編集できます。

タスク・フローをカスタマイズ可能ページに追加するときには、次の点を考慮してください。

  • ルック・アンド・フィール、レイアウト設計および対話に関する一貫性をユーザーに提供し、問題(過剰な余白、過剰なスクロール・バー、大きいデータ・セットを表示するときの遅い応答、不安定な応答、予期できない応答など)を回避するために、付録D「コンポーザ対応のページで使用するタスク・フローの作成のガイドライン」のガイドラインに従ってタスク・フローが作成されていることを確認します。

  • 保護されたアプリケーションで、ユーザーがコンポーザでタスク・フローのコンテンツを表示できるようにするには、タスク・フローがアプリケーションのjazn-data.xmlファイルにTaskFlowPermission権限を持ち、少なくともViewアクションがプロビジョニングされていることを確認します。これはデフォルトでは有効になっていないため、明示的に設定する必要があります。

  • 保護されたアプリケーションで、ユーザーがタスク・フローのページでコンポーネントを編集できるようにするには、タスク・フローがアプリケーションのjazn-data.xmlファイルにTaskFlowPermission権限を持ち、Customizeアクションがプロビジョニングされていることを確認します。これはデフォルトでは有効になっていないため、明示的に設定する必要があります。

  • タスク・フローですべての必須パラメータに有効な値を指定したことを確認します。

詳細は、第22章の「タスク・フロー・セキュリティの実装」を参照してください。

18.4 コンポーザの問題のトラブルシューティング

この項では、コンポーザの使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。

コンポーザのADFロギングの構成

JDeveloperでアプリケーションを作成する際は、JDeveloperのデバッグ・ツールを使用して、Webページまたはページ定義ファイルのエラーを簡単に検出できます。Javaロガーを設定してJava診断メッセージを表示することも可能です。ロギングの構成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「ADFコンポーネントのテストおよびデバッグ」の章を参照してください。コンポーザのロギングを構成するには、そのガイドのタスクを実行し、oracle.adf.view.page.editorパッケージおよびoracle.adfinternal.view.page.editorパッケージが目的のロギング・レベルでlogging.xmlファイルに構成されていることを確認します。

問題

ページを実行すると、次のエラーが表示されます。

java.lang.IllegalStateException: The expression "#{bindings.pageeditorpanel.regionModel}" 
(that was specified for the RegionModel "value" attribute of the region component with id "pePanel") 
evaluated to null. This is typically due to an error in the configuration of the 
objects referenced by this expression. If it helps, the expression 
"#{bindings.pageeditorpanel}" evaluates to "null". If it helps, the expression 
"#{bindings}" evaluates to "view_untitled1PageDef". Now using an empty RegionModel instead.

解決方法

このエラーは、Page Customizableコンポーネントを含むページに、そのページ定義ファイルでバインドしている必須のタスク・フローがない場合に発生します。ページ定義ファイルの<executables>ノードの下に次の有効なエントリが含まれていることを確認します。

<taskFlow id="pageeditorpanel" taskFlowId="#{pageEditorBean.pageEditorPanel}"xmlns="http://xmlns.oracle.com/adf/controller/binding"/>

このエラーは、ページがページ・テンプレートに基づいていて、そのページ・テンプレートにPage Customizableコンポーネントが含まれている場合にも発生します。この場合は、af:pageTemplateタグにvalue="#{bindings.pageTemplateBinding}"属性が含まれていません。

ページ定義ファイルの<executables>ノードの下に次のエントリが含まれていることを確認します。

<page path="view.pageDefs.templateDef1PageDef" id="pageTemplateBinding" Refresh="ifNeeded"/>

問題

ユーザーが編集モードに切り替えられません。編集リンク(Change Mode LinkまたはChange Mode Button)が無効のように見えます。

解決方法

そのページに関するユーザーの権限が表示権限のみである可能性があります。ユーザーがそのページの編集権限を持っていることを確認してください。ページの基になるページ・テンプレートでは、表示権限のみを持っていれば十分です。

問題

コンポーザの「コンポーネント・プロパティ」ダイアログの書込みイベント中に例外が発生します。

解決方法

このエラーは、アプリケーション・ページにADFデータ視覚化コンポーネントとコンポーザ・コンポーネントの両方が含まれる場合に発生します。

最も容易にロードされるアプリケーション・クラスに次のコードを追加して、DvtElementObjectFactoryクラスをOracle ADF FactoryManagerオブジェクトとともに登録します。

...
import oracle.adfdt.model.dvt.objects.DvtElementObjectFactory;
import oracle.adfdt.model.managers.FactoryManager;
...
static
{
FactoryManager.getInstance().registerFactory(new DvtElementObjectFactory());
}