Oracle® Fusion Middleware Oracle JDeveloperによるWebCenter Portalアセットとカスタム・コンポーネントの開発 12c (12.2.1.2.0) E82735-01 |
|
![]() 前 |
![]() 次 |
この章のトピックは、次のとおりです:
コンポーザ・タグ・ライブラリには、Oracle JDeveloperでページに追加できる設計時コンポーネントが用意されており、実行時のページ編集が可能になります。設計時にコンポーザ・コンポーネントを使用してページを作成すると、実行時にコンポーザはページ編集モードに入り、要件に応じてページを変更するオプションを提供します。
Frameworkアプリケーションと非Frameworkアプリケーションでカスタマイズを有効にできます。アプリケーション内で、次のタイプのページのカスタマイズを有効にできます。
ページ・テンプレートに基づいていない通常のJSPXページ
JSPXテンプレート・ページ
ページ・テンプレートに基づくJSPXページ
コンポーザ・コンポーネントおよびその属性の詳細は、「コンポーザ・コンポーネント」を参照してください。
この項では、設計時にコンポーザ・コンポーネントをページに追加し、これを実行時に編集可能にする方法を説明します。次のサブセクションが含まれます:
Frameworkアプリケーションにカスタマイズ可能なJSPXアプリケーションを作成する方法の詳細について。
JDeveloperで新しいページを作成すると、そのページは、図25-1に示すように、「アプリケーション・ナビゲータ」の「Webコンテンツ」の下にリストされます。また、ページはエディタで開かれ、アクティブなエディタ・パネルになります。
セキュリティに関する考慮事項
デフォルトでは、FrameworkアプリケーションはADFセキュリティで構成されます。デフォルトのユーザー名およびパスワード(weblogic/weblogic1)は自動的に作成されます。
保護されたアプリケーションでユーザーがページを編集できるようにするには、ページの編集権限またはカスタマイズ権限を必要なユーザーまたはロールに付与する必要があります。権限付与の詳細は、『Oracle WebCenter Portalの管理』のユーザー・ロールとアプリケーション・ロールの管理に関する項を参照してください。
アプリケーションでADFセキュリティが有効になっていない場合、セキュリティを実装し、アプリケーションを構成してユーザーが個別のアイデンティティを持つようにユーザーを認証することによって、ユーザーの権限が実行時のカスタマイズ機能にどのように影響するかをテストできます。アプリケーションに基本的なセキュリティ・モデルを実装する手順は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のFusion WebアプリケーションでのADFセキュリティの有効化に関する項を参照してください。
Page Customizable
コンポーネントをページに追加することで、ユーザーがページの編集モードに切り替えたときにコンポーザが起動します。Page Customizable
コンポーネントを追加すると、一部の構成ファイルがデフォルトのコンポーザ固有の設定によって自動的に更新されます。詳細は、「コンポーザ・コンポーネントの追加時に行われる処理」を参照してください。
注意:
ページにPage Customizable
を追加する前の考慮事項については、「編集可能ページの設計時の必知事項」を参照してください。
ページにPage Customizableコンポーネントを追加するには:
例25-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>
ユーザーがページの編集モードに簡単に切り替えられるようにするには、ページにChange Mode Link
またはChange Mode Button
コンポーネントを追加する必要があります。
注意:
編集モードへの切替えを可能にする別の方法は、変更モードAPIを使用することです。このAPIの詳細は、Oracle WebCenter Portal Java APIリファレンスを参照してください。
ページにPage Customizable
コンポーネントを追加する前の考慮事項については、「編集可能ページの設計時の必知事項」を参照してください。
Change Mode LinkまたはChange Mode Buttonコンポーネントを追加するには:
Panel Customizable
コンポーネントは、ポートレットまたはリージョンの追加、配置、削除などのページ構成またはコンテンツ管理のタスクに必要です。デフォルトでは、1つのPanel Customizable
コンポーネントがPage Customizable
コンポーネントの直接の子として自動的に追加されます。要件に応じて、このPanel Customizable
コンポーネント内にさらにPanel Customizable
コンポーネントを追加できます。
実行時にコンポーネントをドラッグ・アンド・ドロップできるのはPanel Customizable
コンポーネント内のみです。
注意:
ページにPage Customizable
を追加する前の考慮事項については、「編集可能ページの設計時の必知事項」を参照してください。
ページにPanel Customizable
コンポーネントを追加するには:
Layout Customizable
コンポーネントを使用して、ページまたはページの領域にあるコンポーネントのレイアウトの実行時定義または変更を有効にします。実行時にユーザーがレイアウトをカスタマイズすることを許可する場合のみ、このコンポーネントを使用します。静的レイアウトでは、Panel Group Layout
またはPanel Stretch Layout
などの代替のコンポーネントを使用します。
Layout Customizable
コンポーネントを追加するには:
プロパティの編集、コンポーネントの移動、最小化、削除などのカスタマイズを有効にする場合、Show Detail Frame
コンポーネントをページのPanel Customizable
コンポーネント内にドロップできます。その後、このShow Detail Frame
内にコンポーネントを追加できます。
注意:
各Show Detail Frame
コンポーネントにある子コンポーネントは1つのみである必要があります。複数の子コンポーネントを追加した場合、最初の1つのみがレンダリングされます。その他の直接の子コンポーネントは、設計時または実行時にレンダリングされません。
複数のコンポーネントがShow Detail Frame
に囲まれる必要がある場合、Panel Group Layout
やPanel Customizable
などのグループ化コンポーネントをShow Detail Frame
コンポーネントに追加し、ADF Facesコンポーネントまたはその他のコンテンツをこのグループ化コンポーネントに含めます。
Show Detail Frame
コンポーネントを使用して、ページ表示モードおよび編集モードでのカスタマイズを有効にします。表示モードで行われた変更はそのユーザーのみが使用でき、編集モードで行われた変更はすべてのアプリケーション・ユーザーが使用できます。
ページにShow Detail Frameコンポーネントを追加するには:
このタイプのタスクをさらに理解するには、「コンポーザ・コンポーネントを使用した編集可能ページの設計: 例」を参照してください。
アプリケーションでカスタマイズ可能ページを多数作成することを計画している場合、カスタマイズを可能にしたADFページ・テンプレートのページに基づいて作成できます。コンポーザ・コンポーネントをテンプレート自体に追加することで、これらのコンポーネントをカスタマイズ可能ページごとに追加する作業が必要なくなります。
ページ・テンプレートを作成し、そのカスタマイズを有効にするには:
このテンプレートに基づいてカスタマイズ可能ページを作成できるようになりました。ページを作成したら、Panel Customizable
またはLayout Customizable
コンポーネントを新しいページに表示されるファセット内に追加できます。ページ・コンテンツをPanel Customizable
またはLayout Customizable
コンポーネントに追加できます。
コンテンツが移入されたJSPXページを持つ既存のADFアプリケーションがあり、カスタマイズを有効にする場合、Page Customizable
コンポーネント内のすべてのコンテンツを移動してこれを実行できます。
まずPage Customizable
、次にLayout Customizable
、さらにPanel Customizable
コンポーネントおよびShow Detail Frame
コンポーネントの必須の階層を追加する必要があります。既存のコンポーネントそれぞれをドラッグし、Page Customizable
内の適切な場所にドロップします。
注意:
Page Customizable
コンポーネントの直接の子コンポーネントは1つのみであることを確認します。
複数の直接の子コンポーネントを追加すると、最初の子コンポーネントのみが実行時にレンダリングされます。最初の子コンポーネントがページに合せてストレッチされます。その他の直接の子コンポーネントはすべて無視され、ページにレンダリングされません。
実行時にユーザーがレイアウトをカスタマイズすることを許可する場合のみ、Layout Customizable
コンポーネントを使用します。静的レイアウトでは、Panel Group Layout
、Panel Stretch Layout
コンポーネントなどの代替のコンポーネントを使用します。
最良の結果を得るためには、ソース・コードの編集によってではなく、「構造」ウィンドウを使用してコンポーネントを移動します。
ページにPage Customizable
コンポーネントを追加する際には、次の構成が自動的に実行されます。
デフォルトのリソース・カタログ定義ファイルdefault-catalog.xml
がアプリケーションで構成されます。default-catalog.xml
ファイルは、Application_Root
/Portal/src/portal
ディレクトリにあります。
Frameworkアプリケーションで、default-catalog.xml
ファイルはApplication_Root
/Portal/public_html/oracle/webcenter/p
ortalapp/catalogs
ディレクトリにあり、ページを作成してPage Customizable
コンポーネントを追加しなくてもすぐに使用できます。
アプリケーション用にリソース・カタログ・ビューアが構成されます。実行時、コンポーザは、このビューアからページにリソースを追加するオプションをユーザーに提供します。
Application_Root
/
Project_Name
/public_html/WEB-INF
ディレクトリで使用可能なweb.xml
ファイルは、更新されてMDS JSPプロバイダを構成します。
ComposerChangeManager
は、アプリケーションのweb.xml
ファイル内に構成されます。詳細は、「永続性変更マネージャの構成」を参照してください。
アプリケーションを作成すると、最小限のadf-config.xml
ファイルも作成されます。アプリケーション・ページにPage Customizable
コンポーネントを追加すると、必要な構成がadf-config.xml
ファイルに追加されます。たとえば、変更の永続性は、このファイルのadf-faces-config
セクションで構成されます。詳細は、「永続性変更マネージャの構成」を参照してください。
Application_Root
/Portal/adfmsrc/portal
ディレクトリのDataBindings.cpx
ファイルは更新され、ページにタスク・フローが存在できるようになります。
ページ定義ファイルは、Oracle WebCenter Portal拡張JARファイルの一部として入手可能なコンポーザ・タスク・フローに対するバインディングを使用して更新されます。例25-2は、Page Customizable
コンポーネントがアプリケーション・ページに追加された後のページ定義ファイルのコードを示しています。
関連項目:
コンポーザ・コンポーネントを追加するときに作成または変更されるファイルの詳細は、「コンポーザ固有のファイルと構成」を参照してください。
図25-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>
実行時、ユーザーは、「ページ表示モードでのカスタマイズ機能」および「ページ編集モードの「デザイン」ビューおよび「コンテンツの追加」ビューでの編集機能」で説明されているすべてのタスクを実行できます。
各コンポーザ・コンポーネントには、「コンポーザ・コンポーネント」で説明されている実行時機能が用意されています。
注意:
ページで実行する実行時カスタマイズは、アプリケーションをターゲット・サーバーにデプロイするときに引き継がれません。
カスタマイズ可能ページにコンポーザ・コンポーネントを追加する際には、次の事項に注意する必要があります。
保護されたアプリケーションでユーザーがページを編集できるようにするには、ページの編集権限またはカスタマイズ権限を必要なユーザーまたはロールに明示的に付与する必要があります。権限付与の詳細は、「ポータルのロールと権限の管理」を参照してください。
コンポーネントの実行時カスタマイズを有効にするには、ページに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 Layout
やPanel Customizable
などのグループ化コンポーネントをShow Detail Frame
コンポーネント内に配置し、ADF Facesコンポーネントまたはその他のコンテンツをこのグループ化コンポーネント内に配置します。
ポートレットをShow Detail Frame
コンポーネント内に配置する必要はありません。ポートレットは、Show Detail Frame
コンポーネントと類似のヘッダーおよび表示オプションに備えられます。
この例では、実行時にカスタマイズ可能なページを作成するとします。MyPage.jspx
という名前のページが、MyWebCenterApp
というFrameworkアプリケーションにあります。
カスタマイズ可能ページを作成するには:
MyWebCenterApp
という名前のFrameworkアプリケーションを作成します。
MyPage.jspx
という名前のJSPXページを作成します。
ADF Facesタグ・ライブラリからMyPage.jspx
にPanel Stretch Layout
を追加します。
注意:
Panel Stretch Layout
コンポーネントは、centerファセットの子をストレッチし、ブラウザの使用可能なスペースすべてを埋めます。これは、ブラウザ上でも同様です。したがって、コンポーネントをこの子コンポーネント内に配置することによって、確実にページのカスタマイズ可能部分がブラウザ領域全体を占めるようにできます。
「Page Customizableコンポーネントを使用した実行時カスタマイズの有効化方法」の手順に従って、Page Customizable
をコンポーザ・タグ・ライブラリから中央ファセットに追加します。
Page Customizable
の境界色をblue
に設定し、編集可能領域を他の編集できない領域から区別します。
Page Customizable
のプロパティ・インスペクタのスタイル・カテゴリの下で、「ボックス」タブをクリックし、Border Color
属性をBlue
に設定します。
子Panel Customizable
の境界色をred
に設定します。
Panel Customizable
のプロパティ・インスペクタのスタイル・カテゴリの下で、「ボックス」タブをクリックし、Border Color
属性をRed
に設定します。
「Change Mode LinkまたはChange Mode Buttonを使用したページ・モードの切替えを有効にする方法」の手順を実行して、Change Mode Link
コンポーネントをPanel Stretch Layout
の上部ファセットに追加します。
中央ファセット内で、「Layout Customizableコンポーネントを使用したページのレイアウトのカスタマイズの有効化方法」の手順を実行して、Page Customizable
の直接の子であるPanel Customizable
に、Layout Customizable
コンポーネントを追加します。
「Show Detail Frameコンポーネントを使用したコンポーネントのカスタマイズの有効化方法」の手順を実行して、Show Detail Frame
コンポーネントをページの各Panel Customizable
内に追加します。
図25-8は、Layout Customizable
の直接の子であるPanel Customizable
コンポーネントの内部、およびContentA
ファセットとContentB
ファセットの直接の子であるPanel Customizable
コンポーネントの内部にある、Show Detail Frame
コンポーネントを示しています。
この例のため、Rich Text Editor
およびImage
コンポーネントをLayout Customizable
でネストされた2つのShow Detail Frame
コンポーネント内に追加します。これらのコンポーネントそれぞれをADF Facesタグ・ライブラリからページの必要な場所にドラッグ・アンド・ドロップします。
ページのコンポーネントの階層を図25-8に示します。
ページの編集権限またはカスタマイズ権限を必要なユーザーまたはロールに付与します。権限付与の詳細は、「ポータルのロールと権限の管理」を参照してください。
MyPage.jspx
を実行します。
ページが表示モードで開きます。ページの「編集」リンクをクリックして編集モードに入ります。「コンポーザ」でページが開きます。「コンポーザ」では、「ページ編集モードの「デザイン」ビューおよび「コンテンツの追加」ビューでの編集機能」で説明されているすべての編集タスクを実行できます。
図25-9に実行時の編集モードでのページの外観を示します。
アプリケーションがADFセキュリティで構成されていない場合、このガイドのその他の例でサンプル・ページを使用するには、アプリケーションでADFセキュリティを構成します。
アプリケーションでセキュリティを構成するには:
フォーム・ベースの認証でADFセキュリティを構成し、デフォルトのログイン・ページを生成します。
詳細は、「ADFセキュリティの有効化」を参照してください
3人のユーザーahunold
、sking
およびjdoe
を作成します。
手順の詳細は、アプリケーションのロールと権限に関する項、およびアプリケーションのロールの作成方法に関する項を参照してください
MyPage.jspx
を実行すると、ログイン画面が表示されます。作成した3つのユーザー名のいずれかを使用してログインできます。
必須のコンポーザ・コンポーネントを備えた編集可能ページを作成すると、通常のJSPXページと同様にページにコンテンツを移入できます。ただし、コンポーザ対応のページにコンテンツを追加するときには、理解しておく必要がある制限および推奨事項があります。
設計時の編集可能ページの移入は、その他のADF Facesページの移入と似ています。コンポーネントをIDEの様々な領域からページにドラッグ・アンド・ドロップできます。ポートレット、タスク・フロー、ADF Facesコンポーネントなどのコンポーネントを追加できます。
Page Customizable
コンポーネント内の任意の場所にコンポーネントをドラッグ・アンド・ドロップすると、Id
属性が一意の値に設定されます。Id
属性は、コンポーネントの編集および変更された状態の維持に必要です。実行時にコンポーネントをページに追加すると、Id
属性が自動的に設定されます。
コンテンツを編集可能ページに追加するときには、次の点を考慮してください。
Page Customizable
コンポーネントでネストされているPanel Customizable
コンポーネント内にコンポーネントを追加します。こうすることによって、コンポーネントを実行時に編集できます。
Show Detail Frame
コンポーネントには、子コンポーネントとしてOracle ADF Facesコンポーネントまたはタスク・フローを含めることができます。ただし、ポートレットには、Show Detail Frame
コンポーネントに用意されているものと似ているヘッダーが含まれ、直接Panel Customizable
コンポーネントに追加できます。Show Detail Frame
コンポーネントにポートレットを含めることの利点はこれ以上ありません。
「コンポーザ」の「構造」ビューで選択可能にするコンポーネントの場合、そのコンポーネントがリッチ・クライアント・フレームワークに準拠し、クライアント側コンポーネントを生成することを確認します。
ページでADF FacesコンポーネントのOutput Text
とOutput Formatted
がPage Customizable
コンポーネント内でネストされている場合、clientComponent
属性値を設定していることを確認してください。この属性値が設定されていない場合、実行時にページでコンポーネントを移動または再配置しようとするとエラーが発生する場合があります。
編集可能ページでポートレットを消費するには、まずアプリケーションにポートレット・プロデューサを登録する必要があります。詳細は、「ポートレット・プロデューサの管理」を参照してください。
ユーザーは、カスタマイズ可能ページに追加されたタスク・フローをパーソナライズ、カスタマイズおよび編集できます。保護されたアプリケーションでは、タスク・フローのカスタマイズ権限を持つユーザーは、タスク・フローのページのコンポーネントも編集できます。
タスク・フローをカスタマイズ可能ページに追加するときには、次の点を考慮してください。
ルック・アンド・フィール、レイアウト設計および対話に関する一貫性をユーザーに提供し、問題(過剰な余白、過剰なスクロール・バー、大きいデータ・セットを表示するときの遅い応答、不安定な応答、予期できない応答など)を回避するために、Oracle ADFの再利用可能な構成要素としてタスク・フローが作成されていることを確認します。
保護されたアプリケーションで、ユーザーが「コンポーザ」でタスク・フローのコンテンツを表示できるようにするには、アプリケーションのjazn-data.xml
ファイルでタスク・フローにTaskFlowPermission
権限が付与されていて、少なくともView
アクションがプロビジョニングされていることを確認します。これはデフォルトでは有効になっていないため、明示的に設定する必要があります。
保護されたアプリケーションで、ユーザーがタスク・フローのページでコンポーネントを編集できるようにするには、タスク・フローがアプリケーションのjazn-data.xml
ファイルにTaskFlowPermission
権限を持ち、Customize
アクションがプロビジョニングされていることを確認します。これはデフォルトでは有効になっていないため、明示的に設定する必要があります。
タスク・フローですべての必須パラメータに有効な値を指定したことを確認します。
詳細は、「タスク・フローのセキュリティの実装」を参照してください。
この項では、コンポーザの使用中に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。
コンポーザのADFロギングの構成
JDeveloperでアプリケーションを作成しているときには、JDeveloperのデバッグ・ツールを使用して、Webページまたはページ定義ファイルのエラーを簡単に検出できます。Javaロガーを設定してJava診断メッセージを表示することも可能です。ロギングの構成の詳細は、『Oracle Fusion Middleware Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「ADFコンポーネントのテストおよびデバッグ」の章を参照してください。コンポーザのロギングを構成するには、そのガイドのタスクを実行し、logging.xml
ファイル内でoracle.adf.view.page.editor
パッケージおよびoracle.adfinternal.view.page.editor
パッケージが目的のロギング・レベルで構成されていることを確認します。
問題
ページを実行すると、次のエラーが表示されます。
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()); }