| Oracle® Fusion Middleware Oracle JDeveloperによるWebCenter Portalアセットとカスタム・コンポーネントの開発 12c (12.2.1.2.0) E82735-01 |
|
![]() 前 |
![]() 次 |
この章のトピックは、次のとおりです:
通常、ユーザーは、ページで「編集」リンクまたはボタンをクリックしてページ編集モードに入ります。アプリケーションを構成して、キーボード・ショートカットを使用してページ編集モードにユーザーが入ることができるようにできます。さらに、アプリケーションを構成して、ショートカット・キーを使用して他のイベントを実行できます。この項では、コンポーザに対するキーボード・ショートカットを有効にして、そのショートカット・キーのイベント・ハンドラを構成する方法を説明します。次のサブセクションが含まれます:
<pe:mode-switch-key>要素をアプリケーションのadf-config.xmlファイルに追加することによって、ページ編集モードへのリンクなしのエントリを構成できます。<pe:mode-switch-key>要素を設定するときに構成されたデフォルトのキーボード・ショートカットは[Ctrl]+[Shift]+[E]です。ユーザーはこのキー・シーケンスを使用して、ページの表示モードと編集モードを切り替えられます。ただし、<pe:key-sequence>プロパティを追加することによって選択したキーを構成できます。
<pe:mode-switch-key>プロパティを追加するには:
次の例に示すように、<pe:mode-switch-handler>要素を使用して、ショートカット・キーを使用したときにトリガーされる必要があるイベントを指定します。
<pe:mode-switch-key>
<pe:enabled>true</pe:enabled>
<pe:mode-switch-handler>#{PageEditorBean.handleModeSwitch}</pe:mode-switch-handler>
</pe:mode-switch-key>
ここで、次のサンプルで示すように、handleModeSwitchはModeChangeEventメソッドを使用し、2つのモード間を切り替えるロジックを提供します。
public void handleModeSwitch(ModeChangeEvent editMode)
{
// Your implementation to handle mode change goes here
}
コンポーザには、タスク・フローのイベントをコンテキストに沿って関連付ける方法が用意されています。コンテキスト・イベントをアクション・ハンドラと関連付け、プロデューサでイベントがトリガーされたときにプロデューサ・コンポーネントからコンシューマ・コンポーネントに値を渡すことができます。
実行時に使用可能なイベントの場合、設計時にイベント機能をタスク・フローに組み込む必要があります。イベント対応のタスク・フローをカスタマイズ可能ページに追加すると、各タスク・フローの「コンポーネント・プロパティ」ダイアログに「イベント」タブが組み込まれ、ここで関連付けアクティビティの多くが行われます。イベント機能を組み込む方法の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework FusionによるWebアプリケーションの開発』のコンテキスト・イベントの作成に関する項を参照してください。
ユーザーがページ上の「編集」ボタンまたはリンクをクリックしてコンポーザを起動すると、デフォルトでは、そのページは「コンテンツの追加」ビューまたは「デザイン」ビューで開きます。ビジネス要件で求められる場合は、デフォルトでコンポーザの「構造」ビューで表示するようにアプリケーション・ページを構成できます。
Page CustomizableコンポーネントのEdit Mode view属性を使用して、編集モードのデフォルトのページ・ビューを指定できます。
「構造」ビューにデフォルトでページを開くには:
「構造」ビューの位置とサイズの設定
デフォルトでは、「構造」ビューのコンポーネント・ナビゲータは、ページの右側に表示され、そのデフォルトの幅は200ピクセルです。Page CustomizableコンポーネントでsourceViewPosition属性およびsourceViewSize属性をそれぞれ使用して、コンポーネント・ナビゲータに対して別の位置またはサイズを指定できます。これらの属性の詳細は、「Page Customizableコンポーネント」を参照してください。
デフォルトでは、コンポーザ対応ページで「構造」ビューは有効になっています。タスク・フロー、ポートレットおよびレイアウトの各コンポーネントを除くページ・コンポーネントをユーザーが編集できないようにする場合、「構造」ビューを無効にできます。この項では方法について説明します。次のサブセクションが含まれます:
注意:
「構造」ビューの編集機能の詳細は、「ページ編集モードの「構造」ビューでの編集機能」を参照してください。
アプリケーションのadf-config.xmlファイルで<pe:enable-source-view>エントリをfalseに設定して「構造」ビューを無効にできます。
「構造」ビューを無効にするには:
ユーザーがページ編集モードに切り替えると、図27-1に示すように、ページは「コンテンツの追加」ビューまたは「デザイン」ビューにレンダリングされ、「構造」ビューはユーザーに表示されません。
アプリケーションのadf-config.xmlファイルで<pe:enable-zoom>プロパティをfalseに設定することによって、アプリケーションでタスク・フローにズーム・インする機能を無効にできます。
タスク・フローのズーム機能を無効にするには:
タスク・フローにズーム・インする機能はアプリケーション全体で無効になります。
次のいずれかの方法を使用して、コンポーネントのヘッダーおよびコンテンツに様々なスタイルを適用することで、コンポーザ・コンポーネントのルック・アンド・フィールを変更できます。
スタイル・セレクタを使用してスキンを構築して、Frameworkアプリケーションにスキンを適用します。スタイル・セレクタとスキンの詳細は、『Oracle Fusion Middleware Oracle ADF FacesによるWebユーザー・インタフェースの開発』の「スタイルおよびスキンを使用した外観のカスタマイズ」の章を参照してください。
プロパティ・インスペクタを介して、JDeveloperのスタイル・プロパティを使用して、スタイル情報を指定します。詳細は、「contentStyleプロパティおよびinlineStyleプロパティの理解」を参照してください。
注意:
JDeveloperのスタイル・プロパティを使用することで、スキンCSSからのスタイル情報をオーバーライドします。ただし、JDeveloperを使用してスタイル・プロパティを定義する場合、このスタイルは選択したコンポーネントのみのスタイルをオーバーライドし、子コンポーネントはスキンで指定されたスタイルを使用し続けます。
スタイル関連のプロパティinlineStyleおよびstyleClassを変更して、設計時にPage Customizable、Panel Customizable、Layout CustomizableおよびShow Detail Frameの各コンポーネントのルック・アンド・フィールを調整できます。
Show Detail Frameコンポーネントには、別の関連スタイル・プロパティ(contentStyle)があり、これはコンポーネント内のコンテンツのスタイルを定義します。styleClassプロパティでは、スキンから別のスタイルを選択でき、一方inlineStyleプロパティおよびcontentStyleプロパティは、コンポーネントのその特定のインスタンスのアプリケーション・スキンで指定された対応するスタイルをオーバーライドします。
inlineStyleプロパティはstyleClassをオーバーライドします。また、コンポーネント・インスタンスで設定されたプロパティは、コンポーネントのそのインスタンスのみに影響します。アプリケーション内のその他のコンポーネント・インスタンスは影響を受けません。
注意:
backgroundプロパティは、Show Detail Frameコンポーネントのルック・アンド・フィールを調整する際にも便利です。これは、コンポーネント・インスタンスにdark、mediumまたはlightの色のスキームを提供するために使用されます。inlineStyle、contentStyleおよびstyleClassの各プロパティとは異なり、backgroundプロパティはスキンで機能します。コンポーネント・インスタンスのbackgroundプロパティに指定された値に応じて、スキンは、関連するスタイルを適用します。
contentStyleプロパティおよびinlineStyleプロパティの理解
スタイル・プロパティのinlineStyleとcontentStyleは、サポートする属性のタイプが類似しています。これらのプロパティの違いは、影響の範囲です。inlineStyleがコンポーネント全体のスタイル情報を提供するのに対し、contentStyleはコンポーネント・コンテンツのスタイル情報のみを提供します。contentStyleプロパティはShow Detail Frameコンポーネントで使用できますがPanel Customizableコンポーネントでは使用できません。
inlineStyleプロパティは、CSSをコンポーネントのルート、つまり最上位のDOM要素に適用します。これは、スキンから色、フォントなどを選択する子要素のスタイルをオーバーライドしません。たとえば、コンポーネント・ヘッダーがスキニングされた場合、inlineStyleを設定してもコンポーネント・ヘッダーには影響しません。contentStyleは、コンポーネントのコンテンツ部分を囲むDOM要素にCSSを適用します。Show Detail Frameでは、コンテンツはヘッダーの下の領域のことです。
コンポーネント・コンテンツでは、contentStyleに指定した値が、inlineStyleに指定した値よりも優先されます。また、コンポーネント・インスタンスでは、contentStyleは、親コンポーネント(Panel Customizableコンポーネント内でネストされたポートレットなど)のinlineStyle値とcontentStyle値のいずれにも優先されます。
図27-2 プロパティ・インスペクタでのcontentStyleおよびinlineStyleのスタイルの定義

セッション間でユーザー・カスタマイズおよびアプリケーション・カスタマイズを永続するには、アプリケーションを構成して変更の永続性フレームワークを使用する必要があります。コンポーザ・コンポーネントをカスタマイズ可能ページに追加すると、コンポーザは、ComposerChangeManagerを使用するようにアプリケーションを構成して、実行時にページに対して行われた変更が適切に永続されるようになります。この項では、コンポーザ対応ページが含まれている新しいFrameworkアプリケーションのデフォルト変更マネージャ構成について説明します。
コンポーザ・コンポーネントをアプリケーション・ページに初めて追加するときに、コンポーザは、次の操作を実行して変更の永続性を有効にします。
CHANGE_PERSISTENCEコンテキスト・パラメータをweb.xmlファイルに追加し、その値をComposerChangeManagerに設定します。このコンテキスト・パラメータは、次の例に示すように、永続性を処理するために使用されるChangeManagerクラスを登録します。
<context-param> <param-name>org.apache.myfaces.trinidad.CHANGE_PERSISTENCE</param-name> <param-value>oracle.adf.view.page.editor.change.ComposerChangeManager</param-value> </context-param>
adf-config.xmlファイルのpersistent-change-manager要素をMDSDocumentChangeManagerに設定します。コンポーザは、adf-faces-configセクション内のMDSDocumentChangeManagerを次のように構成します。
<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">
<persistent-change-manager>
<persistent-change-manager-class>
oracle.adf.view.rich.change.MDSDocumentChangeManager
</persistent-change-manager-class>
</persistent-change-manager>
. . .
</adf-faces-config>
ファイルのtaglib-configセクションは、次の例に示すように、デフォルトで永続されるコンポーネントのタグおよび属性をリストします。
<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">
...
<taglib-config>
<taglib uri="http://xmlns.oracle.com/adf/faces/customizable">
<tag name="showDetailFrame">
<persist-operations>all</persist-operations>
<attribute name="expansionMode">
<persist-changes>true</persist-changes>
</attribute>
<attribute name="contentStyle">
<persist-changes>true</persist-changes>
</attribute>
</tag>
<tag name="panelCustomizable">
<persist-operations>all</persist-operations>
</tag>
</taglib>
<taglib uri="http://xmlns.oracle.com/adf/pageeditor">
<tag name="layoutCustomizable">
<persist-operations>all</persist-operations>
<attribute name="type">
<persist-changes>true</persist-changes>
</attribute>
</tag>
</taglib>
</taglib-config>
</adf-faces-config>
さらに、このセクションでその他のタグおよび属性を定義してpersist-changes属性をtrueに設定することによって、そのタグおよび属性の変更の永続性を有効にできます。詳細は、「コンポーネント・レベルでの変更の永続性の定義方法」を参照してください。
操作と属性への変更を永続化する場合は、persist-operations属性を含めて、値をallに設定します。persist-operations属性がタグに含まれる場合、タグが子の追加、移動、並べ替えおよび削除、ファセットの追加および削除などの変更を永続化します。
暗黙的に永続化されるADF Facesコンポーネントと属性のリストは、『Oracle Fusion Middleware Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「実行時のユーザー・カスタマイズの許可」の章を参照してください。
ComposerChangeManager
ChangeManagerクラスは、エンド・ユーザーによって実行されたアプリケーション・カスタマイズを永続するために必要です。ComposerChangeManagerは、セッション内およびセッション間(MDSへ)の両方の変更の永続性を処理します。これは、次のようにユーザーの変更を適切な変更マネージャに委任します。
表示モードの変更は、FilteredPersistenceChangeManagerにルーティングされ、暗黙的カスタマイズ(列のサイズ変更やヘッダーの折りたたみなど)がアプリケーションのadf-config.xmlファイルで構成されたフィルタ・ルールに応じて動作するようにします。
編集モードの変更は、MDSDocumentChangeManagerにルーティングされ、暗黙的カスタマイズと明示的カスタマイズの両方が常に永続され、セッション間で使用できるようにします。
注意:
コンポーザ・コンポーネントをアプリケーション・ページに追加するときには、セッションの期間のカスタマイズを有効にするオプション(「プロジェクト・プロパティ」ダイアログ内のオプション)は無効になっています。これは、コンポーザ対応のアプリケーション・ページがセッション間で(MDSへ)永続される必要があるためです。
コンポーザで編集されたコンポーネント・プロパティは、現在の言語でのみ使用できます。たとえば、タスク・フローをページに追加する場合、コンポーザで入力したタスク・フロー・タイトルは現在の言語でのみ使用可能です。そのため、別のロケールのユーザーには、そのようなプロパティの翻訳された値が表示されません。実行時に編集されるコンポーネント・プロパティの言語サポートを提供するために、コンポーザは、文字列値を取ることができるコンポーネント表示オプションのリソース文字列を編集するオプションをユーザーに提供するようになりました。これは、JDeveloperのADF Facesが提供するリソース文字列エディタ機能に似ています。コンポーザでリソース文字列に行われた変更は、アプリケーションのその他のリソース・バンドルとともに翻訳される、オーバーライドバンドルに保存されます。翻訳されたものは、アプリケーションにインポートされて戻されます。こうして、ユーザーは自身の言語でプロパティ値を表示できます。
注意:
コンポーザは、実行時に約500のリソース文字列の作成をサポートします。この数を超えると、アプリケーションのパフォーマンスは低下します。
この項では、リソース文字列の編集を可能にするための手順について説明します。内容は次のとおりです。
実行時、文字列値を取ることができるコンポーネント表示オプションでは、プロパティ・フィールドの隣の「編集」メニューは、「テキスト・リソースの選択」オプションを提供します。このオプションをクリックするとリソース文字列エディタが開き、既存のリソースの検索、リソース・キーの編集または削除および新しいリソース・キー/値のペアの追加を行うオプションが提供されます。実行時のリソース文字列の編集の詳細は、「リソース文字列の編集」を参照してください。
コンポーザでリソース文字列に加えた変更は、アプリケーション・オーバーライド・バンドルに保存されます。バンドルは翻訳に送られ、翻訳されたバージョンがアプリケーションに戻されます。こうして、ユーザーは自身の言語でプロパティ値を表示できます。
ComposerOverrideBundle.xlfは、コンポーザ・ライブラリにパッケージされている空のXLIFFファイルです。このバンドルは、設計時にコンポーザ・コンポーネントをページに追加するとアプリケーションで使用できるようになります。実行時に、コンポーザは、このバンドルを内部的に使用して、リソース文字列の編集時にアプリケーションのオーバーライド・バンドルの読取りと書込みを実行します。
新しいプロパティ値および更新されたプロパティ値は、オーバーライドバンドルに保存されます。ユーザーは、作成または変更される各文字列のキー、値および説明を指定する必要があります。アプリケーションで行われるすべてのリソース文字列の変更は、単一のオーバーライドバンドルに保存されます。様々なレイヤーで行われた実行時の変更を区別するために、キー値にはMDSレイヤー名および値が接頭辞として付けられ、RT_<MDSレイヤー名><MDSレイヤー値>_キー名のフォーマットである必要があります。たとえば、RT_sitewebcenter_WELCOME_MESSAGEとなります。選択したプロパティに対して、ユーザーは、任意のMDSレイヤーで作成したリソース文字列を検索および使用できます。ただし、編集できるのは、同じMDSレイヤーで作成されたリソース文字列のみです。オーバーライドバンドルの検索に加えて、ユーザーは、設計時にJSPXページで作成されて使用された文字列も検索できます。内部的に、コンポーザは、JSPXファイルのc:setタグを使用して定義したすべてのリソース・バンドルを検索します。
英語でのリソース文字列の実行時の変更は、デフォルトのアプリケーションオーバーライドバンドルに保存されます。ユーザーは、言語を変更し、その言語でリソース文字列を作成または編集できます。ユーザーがリソース文字列を書き込む言語それぞれに対して個別のオーバーライドバンドルが作成され、ファイル名にはその言語のイニシャルが接尾辞として付けられます。たとえば、Application1でフランス語で編集されたリソース文字列は、Application1OverrideBundle_fr.xlfという名前のバンドルに保存されます。
リソース文字列エディタの現在の制限
コンポーザは、実行時に約500のリソース文字列の作成をサポートします。この数値を超えると、アプリケーションのパフォーマンスが低下します
リソース文字列エディタの検索条件では、大文字と小文字が区別されます。
検索文字列の説明を検索するには、ユーザーは検索条件に完全な文字列値を指定する必要があります。
JDeveloperの「プロパティ・バンドル」形式または「リスト・リソース・バンドル」形式で作成されたエントリの文字列の説明は、リソース文字列エディタには表示されません。
リソース文字列を編集するオプションは、「パラメータ」タブと「イベント」タブのプロパティには無効です。
ADFリソースのEL値がページ・パラメータ、タスク・フロー パラメータ、ポートレット・パラメータなどのページ定義パラメータで参照される場合、バインドしているELは空の値を返します。ユーザーは、ページ定義パラメータでADFリソースのEL値を参照しないようにする必要があります。
アプリケーションでリソース文字列の編集を有効にするには、アプリケーションのadf-config.xmlファイルの<pe:page-editor-config>セクションに<pe:resource-string-editor>要素を次のように追加する必要があります。
<pe:page-editor-config>
<pe:resource-string-editor>
<pe:enabled>true</pe:enabled>
</pe:resource-string-editor>
</pe:page-editor-config>
編集するページ、ユーザー、ロールなどの特定の条件に基づいてリソース文字列を選択的に有効にする場合、enabled属性にEL値を使用できます。
アプリケーションでリソース文字列の編集を有効にする場合、オーバーライド・バンドルoracle.adf.view.page.editor.resource.ComposerOverrideBundle.xlfを使用するようにアプリケーションを構成する必要があります(まだ使用されていない場合)。このオーバーライド・バンドルは、pageeditor.jarファイルに含まれており、実行時にユーザーがリソース文字列を作成または編集するときに、アプリケーションのオーバーライド・バンドルに対する読取りおよび書込みに使用されます。
オーバーライドバンドルを構成するには:
この項の手順を繰り返し、アプリケーションの任意のリソース・バンドルを実行時にユーザーに表示します。
注意:
実行時の読取りおよび書込みの操作に関してリソース・バンドルにアクセスできるようにするには、「アプリケーションのプロパティ」ダイアログでそのバンドルの「オーバーライド」オプションを選択している必要があります。
実行時に、プロパティ・バンドル、リスト・リソース・バンドルおよびXLIFFリソース・バンドルにアクセスできるようにすることができます。
文字列を取るプロパティの隣の「編集」アイコンをユーザーがクリックすると、「テキスト・リソースの選択」オプションが使用可能になります。このオプションをクリックすると、リソース文字列エディタが開き、そこでユーザーはリソース文字列を作成、変更または削除できます。詳細は、「リソース文字列の編集」を参照してください。
この項では、コンポーザの拡張構成の実行時に発生する可能性のある問題をトラブルシューティングする際に役立つ情報を提供します。
ロギングの構成の詳細は、「コンポーザのADFロギングの構成」を参照してください。
問題
グローバルまたはインスタンス・レベルのCustom Actionを追加しました。ただし、これはchromeまたはShow Detail Frameの「アクション」メニューのいずれにも表示されません。
解決策
次の点を確認してください。
Show Detail Frameの最初の子は、af:regionである必要があります。
タスク・フローに現在表示されているビューは、Custom Actionの処理と一致するそのタスク・フロー定義ファイルの結果を含む必要があります。
この処理に接頭辞dialog:がある場合、タスク・フロー定義の結果にも同じ接頭辞がある必要があります。
詳細は、「タスク・フローを囲んでいるShow Detail Frameでのカスタム・アクションの追加」を参照してください。
問題
コンポーザがADFアプリケーション・ページで動作しません。Oracle WebCenter Portalのリソース・カタログまたは「コンポーネント・プロパティ」ダイアログを使用すると、エラーがログに報告されます。カスタマイズは、まったく保存されません。オブジェクトはカタログから追加されません。
解決策
コンポーザは、MDSDocumentChangeManagerおよびComposerChangeManagerと互換性があります。web.xmlファイルのCHANGE_PERSISTENCEコンテキスト・パラメータをこれらのいずれかに設定する必要があります。次の例に、CHANGE_PERSISTENCEをMDSDocumentChangeManagerに設定する方法を示します。
<context-param> <param-name>org.apache.myfaces.trinidad.CHANGE_PERSISTENCE</param-name> <param-value>oracle.adf.view.rich.change.MDSDocumentChangeManager</param-value> </context-param>
コンポーザを構成すると、CHANGE_PERSISTENCEの値がoracle.adf.view.page.editor.change.ComposerChangeManagerに変更されます。