Oracle® Fusion Middleware Oracle WebCenter Portal開発者ガイド 11g リリース1 (11.1.1.7.0) B72084-02 |
|
前 |
次 |
この章では、コンポーザの特定の拡張構成を実行し、エンド・ユーザーの操作性を向上する方法を説明します。次の項が含まれます:
Show Detail Frame
コンポーネントのファセットを使用して、Show Detail Frame
コンポーネントのカスタム・アクションを定義して表示できます。たとえば、アプリケーションが提供するサービスのリストがShow Detail Frame
に含まれている場合、様々なサービスの詳細を含むタスク・フローを開くカスタム・アクション(Show Detailed Information
)を追加できます。
Show Detail Frame
コンポーネントがサポートしているファセットの詳細は、第B.1.5項「Show Detail Frameコンポーネント」を参照してください。
Oracle JDeveloperは、「構造」ウィンドウにShow Detail Frame
コンポーネントで使用可能なすべてのファセットを表示しますが、UIコンポーネントを含むもののみがアクティブで表示されます。
Show Detail Frameファセットを追加するには、次の手順を実行します:
「構造」ウィンドウでShow Detail Frame
コンポーネントを右クリックし、「ファセット - 詳細フレームの表示」を選択します。
このオプションの右にある矢印をクリックします。
サポートされているファセットのリストから追加するファセットを選択します。
注意: ファセット名の隣のチェック・マークは、ファセットがすでに |
そのファセットのf:facet
要素はページに挿入されます。
設計要件に応じてファセットにコンポーネントを追加します。
Show Detail Frame
ファセットを作成して使用するエンド・ツー・エンド例は、第21.2項「ファセットを使用したShow Detail Frameコンポーネントでのカスタム・アクションの有効化: 例」を参照してください。
Panel Customizable
コンポーネントを備えたJSPXページ(Page1
)があるとします。Panel Customizable
内にShow Detail Frame
コンポーネント(showDetailFrame1
)があります。Show Detail Frame
内にADFタスク・フローがあります。Panel Customizable
には、他に2つのShow Detail Frame
コンポーネントがあり、一方はshowDetailFrame1
の上、他方は下にあります。タスク・フローは、2つのOutput Text
コンポーネントをページに表示します。
Additional Actions
ファセットをShow Detail Frame
コンポーネントで構成して、「処理」メニューに「上へ移動」アクションと「下へ移動」アクションとともに「カスタマイズ」アクションを表示できます。実行時、「カスタマイズ」アクションを使用すると、ユーザーはOutput Text
コンポーネントのテキストをカスタマイズできます。この項では、この結果を得るための手順を説明します。次のサブセクションが含まれます:
ADFタスク・フローを作成するには:
「ファイル」メニューから「新規」を選択します。
「新規」ダイアログで、「Web層」ノードの下の「JSF」を選択し、アイテムの下の「ADFタスク・フロー」を選択します。
「OK」をクリックします。
「タスク・フローの作成」ダイアログで「OK」をクリックし、デフォルト値を受け入れてタスク・フロー定義ファイルを作成します。
コンポーネント・パレットの「ADFタスク・フロー」タグ・ライブラリから、2つのビュー要素(view1とview2)をタスク・フロー定義ファイルにドロップします。
「制御フロー・ケース」をview1
からview2
にドロップします。
最初のビュー要素をクリックし、次に2番目のビュー要素をクリックして制御フロー・ラインを描きます。
この制御フロー・ケースにnext
という名前を付けます。
同様に、「制御フロー・ケース」をview2
からview1
にドロップして戻し、これにprev
という名前を付けます。
BackingBean.java
というバッキングBeanを作成し、2つの変数view1
とview2
の値を含めます。
view1
とview2
は、それぞれinitialValue1
とinitialValue2
を使用して初期化されます。Beanのコードが次の例に示すようになっていることを確認します。
package view; public class BackingBean { public BackingBean() { } private String view2 ="initial Value1"; private String view1 = "initial Value2"; public void setView2(String view2) { this.view2 = view2; } public String getView2() { return view2; } public void setView1(String view1) { this.view1 = view1; } public String getView1() { return view1; } }
タスク・フロー定義ファイルで、view1をダブルクリックし、その要素にページ・フラグメント(view1.jsff
)を作成します。
Panel Group Layoutおよび2つのOutput Textコンポーネントをview1.jsff
に追加します。
最初のOutput Text
コンポーネントのValue
を#{backingBean.view1}
に指定し、2番目のOutput Text
コンポーネントのValue
を#{backingBean.view2}
に指定します。
view1.jsff
を保存して閉じます。
タスク・フロー定義ファイルで、view2をダブルクリックし、その要素のページ・フラグメント(view2.jsff
)を作成します。
Output Textコンポーネントを1つだけview2.jsff
に追加し、Value
を#{backingBean.view2}
に指定します。
view2.jsff
を保存して閉じます。
追加のアクション・ファセットを組み込むには:
Panel Customizable
コンポーネントおよびネストされたShow Detail Frame
コンポーネントを備えているJSPXページ(Page1.jspx
)を作成します。
さらに2つのShow Detail Frame
コンポーネントを既存のShow Detail Frame
コンポーネントの上下に追加します。
3つのShow Detail Frame
コンポーネントを追加する目的は、「上へ移動」
アクションと「下へ移動」
アクションを最初のShow Detail Frame
コンポーネント(showDetailFrame1
)の追加アクションとともに表示できるようにすることです。
前の手順で作成したタスク・フロー定義ファイルをshowDetailFrame1
内に追加します。
「構造」ウィンドウで最初のShow Detail Frame
を右クリックし、「ファセット - 詳細フレームの表示」を選択します。
このオプションの右にある矢印をクリックし、サポートされているファセットのリストから「追加のアクション」を選択します。
そのファセットのf:facet-additionalActions
要素はページに挿入されます。
Panel Group Layoutを「追加のアクション」
ファセット内に追加し、ButtonコンポーネントをPanel Group Layout
コンポーネント内に追加します。
Button
のText
属性をCustomize
に設定し、customize
をAction
値として指定します。
構造ナビゲータでのページは、図21-1のように表示されます。
ページを保存します。
リダイレクト・ページを作成するには:
Page2.jspx
というJSPXページを作成し、2つのInput Textコンポーネントおよび1つのButtonコンポーネントを追加します。
最初のInput Text
コンポーネントのValue
を#{backingBean.view2}
に指定し、2番目のInput Text
コンポーネントのValue
属性を#{backingBean.view1}
に設定します。
バッキングBeanに関してInput Text
コンポーネントを追加する目的は、ユーザーの入力をBeanに渡し、これがPage1.jspx
のOutput Text
コンポーネントで反映できるようにすることです。
Button
コンポーネントで、Text
属性をOK
に設定し、back
をAction
値として指定します。
ページを保存します。
ナビゲーション・ルールを定義することによって2つのページ間を切り替えることができます。
ページ間のナビゲーション・ルールを定義するには:
アプリケーション・ナビゲータのプロジェクトのWEB-INFフォルダの下で、faces-config.xmlファイルをダブルクリックしてこれを開きます。
「概要」タブをクリックして、概要モードでファイルを表示します。
「マネージドBean」セクションで「追加」ボタンをクリックします。
「マネージドBeanの作成」ダイアログで、backingBean
を名前として指定します。
「クラス名」フィールドで、その隣の「参照」ボタンをクリックし、前に作成したBackingBean
Javaクラスを参照します。「OK」をクリックします。
「OK」をクリックします。
「有効範囲」リストで、「セッション」を選択し「OK」をクリックします。
ページ上の「ナビゲーション・ルール」タブを選択します。
「ビュー(自)」表で、Page1.jspxを選択します。
「ナビゲーション・ケース」の下で、「ビューID(至)」列でPage2.jspx、「結果(自)」列で「カスタマイズ」、「リダイレクト」列で「true」を選択します。
「ビュー(自)」表で、Page2.jspxを選択します。
「ナビゲーション・ケース」の下で、「ビューID(至)」列でPage1.jspx、「結果(自)」列で「戻る」、「リダイレクト」列で「true」を選択します。
「ソース」ビューで、これらのエントリが次のように表示されます。
<managed-bean> <managed-bean-name>backingBean</managed-bean-name> <managed-bean-class>view.BackingBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <navigation-rule> <from-view-id>/Page1.jspx</from-view-id> <navigation-case> <from-outcome>customize</from-outcome> <to-view-id>/Page2.jspx</to-view-id> <redirect/> </navigation-case> </navigation-rule> <navigation-rule> <from-view-id>/Page2.jspx</from-view-id> <navigation-case> <from-outcome>back</from-outcome> <to-view-id>/Page1.jspx</to-view-id> <redirect/> </navigation-case> </navigation-rule>
ファイルを保存します。
タスク・フローをShow Detail Frame
コンポーネントに含めることによって、これをカスタマイズできます。Show Detail Frame
コンポーネントには、コンポーネントを再配置、表示または非表示にする特定のデフォルトのアクションが用意されています。さらに、カスタム・アクションを定義して、実行時にタスク・フロー内で目的のナビゲーション・フローをトリガーできます。タスク・フローでカスタム・アクションを有効にできる方法は2つあります。
カスタム・アクションがShow Detail Frame
コンポーネントの「処理」メニューに表示されるように、タスク・フローでカスタム・アクションを直接有効にします。
カスタム・アクションがShow Detail Frame
コンポーネントの「処理」メニューに表示されるように、タスク・フローを囲んでいるShow Detail Frame
コンポーネントでカスタム・アクションを有効にします。
この項では、両方のアプローチについて説明します。次のサブセクションが含まれます:
タスク・フローを自己完結にし、アプリケーション・レベルで定義されたグローバル・カスタム・アクションを継承する必要がない場合、この項の手順を実行します。ネストされた<customActions>
要素を持つ<customComps-config>
セクションをadf-settings.xml
ファイルで構成することによって、タスク・フローでカスタム・アクションを定義できます。adf-settings.xml
ファイルで指定された追加カスタム・アクションは、このタスク・フローを囲むShow Detail Frame
コンポーネントに表示されます。
通常、タスク・フローはパッケージ化されADFライブラリとしてデプロイされます。タスク・フローのカスタム・アクションを含むadf-settings.xml
ファイルを作成すると、このファイルもADFライブラリでパッケージ化されます。
タスク・フローでカスタム・アクションを有効にするには:
adf-settings.xml
ファイルが存在していない場合、このファイルをプロジェクトのWebコンテキスト・ルート(たとえば、APPLICATION_ROOT
/Portal/src/META-INF
ディレクトリ)の下のMETA-INF
ディレクトリに作成します。
「ファイル」メニューから「新規」を選択します。
「新規ギャラリ」ダイアログで、「一般」を展開し、「XML」、「XML文書」の順に選択します。
「OK」をクリックします。
ファイルにadf-settings.xml
という名前を付けます。
ファイルで<custComps-config>
セクションをネストされた<customActions>
要素とともに追加します。
Show Detail Frame
の「処理」メニューにカスタム・アクションとして表示する内部タスク・フローのアクションそれぞれに<customAction>
要素を1つ追加します。
<customActions>
要素の下に任意の数のカスタム・アクションを追加できます。
例21-1に、<customAction>
エントリを含むadf-settings.xml
ファイルのコードを示します。
例21-1 adf-settings.xmlファイルのcustComps-configセクション
<cust:custComps-config xmlns="http://xmlns.oracle.com/adf/faces/customizable/config"> <customActions> <customAction action="next" location="chrome" rendered="true" icon="/adf/webcenter/editheader_ena.png" text="Next" taskFlowId="/WEB-INF/task-flow-definition.xml#task-flow-definition" shortDesc="next"/> <customAction action="prev" location="chrome" rendered="true" icon="/adf/webcenter/editheader_ena.png" text="Previous" taskFlowId="/WEB-INF/task-flow-definition.xml#task-flow-definition" shortDesc="prev"/> </customActions> </cust:custComps-config>
カスタム・アクションの定義は、タスク・フロー・レベルの設定で使用するtaskFlowId
属性を除いて、タスク・フロー・レベルとアプリケーション・レベルで似ています。この属性は、カスタム・アクションを定義する必要があるタスク・フローを識別するために使用されます。ADFライブラリには複数のタスク・フローが存在する場合があるため、カスタム・アクションをレンダリングする必要があるタスク・フローを識別する際にこの属性は役に立ちます。
注意:
|
adf-settings.xml
ファイルを保存します。
囲んでいるShow Detail Frame
コンポーネントでタスク・フローのカスタム・アクションを定義できます。これらのアクションが実行時に起動されると、タスク・フローで目的のナビゲーション・フローがトリガーされます。たとえば、ターゲットのタスク・フロー・フラグメントがShow Detail Frame
内ではなく別個のブラウザ・ウィンドウで開くことを指定するShow Detail Frame
でカスタム・アクションを定義できます。
Custom Action
コンポーネントをページのShow Detail Frame
コンポーネントの子として追加することによって、Show Detail Frame
コンポーネントでカスタム・アクションを指定できます。この方法で定義されたカスタム・アクションは、このカスタム・アクションを子として持っているShow Detail Frame
インスタンスでのみ使用できます。または、アプリケーションのadf-config.xmlファイル
でカスタム・アクションを指定できます。この方法で定義されたカスタム・アクションは、アプリケーションのすべてのShow Detail Frame
インスタンスで使用できます。
この項では、Show Detail Frame
でのカスタム・アクションの定義について説明します。次のサブセクションが含まれます:
Custom Action
コンポーネントを使用して特定のShow Detail Frame
コンポーネントのインスタンスでカスタム・アクションを定義します。Custom Action
コンポーネントはコンポーザ・タグ・ライブラリにあります。カスタム・アクションは、Show Detail Frame
を含むページのJSPXページ定義ファイルに格納されます。
インスタンス・レベルでカスタム・アクションを定義するには:
コンポーネント・パレットで、「コンポーザ」を選択します。
Custom Actionをドラッグし、これをShow Detail Frame
コンポーネント内のページ上でaf:region
要素の下にドロップします。
Show Detail Frame
の「処理」メニューにカスタム・アクションとして表示する内部タスク・フローのアクションそれぞれにCustom Action
コンポーネントを1つ追加します。
注意:
|
第B.1項「コンポーザ・コンポーネントのプロパティ」の表B-9を参照してCustom Action
の属性を定義します。
各Custom Action
のaction
属性には、関連するタスク・フローの適切なADFcの結果を移入してください。コードは、例21-2のようになります。
例21-2 カスタム・アクション・コード
<cust:showDetailFrame text="showDetailFrame 1" id="sdf1"> <af:region value="#{bindings.taskflowdefinition1.regionModel}" id="r1"/> <cust:customAction action="navigatefromview1" id="ca1" location="both" icon="/Logo1.JPG" text="View1 Action" shortDesc="Custom View1 Action"/> <cust:customAction action="navigatefromview2" location="both" id="ca2" icon="/Logo2.JPG" text="View2 Action" shortDesc="Custom View2 Action"/> </cust:showDetailFrame>
注意: タスク・フローのADFc結果のすべてに対してカスタム・アクションを追加できますが、表示するタスク・フローのビューに応じて、いくつかのカスタム・アクションを実行時に使用できるか、どのカスタム・アクションも使用できません。 対応するタスク・フローのアクションなしでカスタム・アクションを定義すると、そのカスタム・アクションは実行時に |
関連項目: 『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のタスク・フローの作成に関する項 |
保存してページを実行します。
実行時、Show Detail Frame
の「処理」メニューから処理を選択すると、関連する制御フロー・ルールがトリガーされ、ターゲットのタスク・フロー・フラグメントがレンダリングされます。
グローバル・レベルでカスタム・アクションを定義することは、そのカスタム・アクションをアプリケーションのすべてのShow Detail Frame
インスタンスで使用可能にすることを意味します。グローバル・レベルのカスタム・アクションはアプリケーションのすべてのShow Detail Frame
コンポーネントで使用可能ですが、実行時にShow Detail Frame
のヘッダーにはタスク・フローの現在のビューのADFc結果に対応するカスタム・アクションのみが表示されます。
グローバル・レベルのカスタム・アクションは、アプリケーションのadf-config.xml
ファイルで定義します。
グローバル・レベルでカスタム・アクションを定義するには:
アプリケーションのadf-config.xml
ファイルを開きます。これは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INF
フォルダにあります。
例21-3に示すように、各アクションに対してネストされた<customAction>
タグを備えた<customActions>
要素を使用してカスタム・アクションを定義します。
ヒント: ページ編集モードにのみカスタム・アクションをレンダリングするために、 |
例21-3 adf-config.xmlファイルのカスタム・アクション定義
<cust:adf-config-child xmlns="http://xmlns.oracle.com/adf/faces/customizable/config"> <enableSecurity value="true" /> <customActions> <cust:customAction action="forward" displayName="Move Forward" location="menu" rendered="true" icon="/move_forward.png"/> <cust:customAction action="backward" tooltip="Move Backward" location="chrome" rendered="true" icon="/move_backward.png"/> </customActions> </cust:adf-config-child>
注意:
|
adf-config.xml
ファイルを保存します。
カスタム・アクションの定義の詳細は、第21.3.4項「タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法: 例」を参照してください。
グローバル・レベルのカスタム・アクションとインスタンス・レベルのカスタム・アクションの間の競合の解決
各カスタム・アクションは、そのaction
属性の値によって一意に識別されます。グローバル・レベルとインスタンス・レベルで同じaction
属性値を持つカスタム・アクションを定義した場合、他の属性値に応じて実行時にこれらのカスタム・アクションがどのように起動されるか関して競合が発生する場合があります。このような場合、Show Detail Frame
のinheritGlobalActions
属性が他のカスタム・アクション属性(action
属性以外)の動作を次のように定義します。
注意:
|
inheritGlobalActions=true
またはinheritGlobalActions
(デフォルトはfalse
)の値を指定しなかった場合、カスタム・アクション属性の動作は次のようになります。
グローバル・レベルとインスタンス・レベルでカスタム・アクション属性を定義した場合、インスタンス・レベルで指定した属性値が使用されます。
カスタム・アクション属性をインスタンス・レベルでのみ定義した場合、その属性値が使用されます。
カスタム・アクション属性をグローバル・レベルでのみ定義した場合、その値は無視され、デフォルト値が使用されます。
inheritGlobalActions=true
の場合、カスタム・アクション属性の動作は次のようになります。
カスタム・アクション属性をインスタンス・レベルで定義した場合、同じ属性がグローバル・レベルで指定されているかどうかにかかわらず、その値が使用されます。
カスタム・アクション属性をグローバル・レベルでのみ定義した場合、その値が使用されます。
カスタム・アクション属性をグローバル・レベルでもインスタンス・レベルでも定義しなかった場合、属性のデフォルト値が使用されます。
アプリケーション・ページを設計した後、アプリケーションを本番環境にデプロイする必要があります。詳細は、第69章「WebCenter Portal: Frameworkアプリケーションのデプロイおよびテスト」を参照してください。
注意: 開発環境のページで実行する実行時カスタマイズは、アプリケーションをターゲット・サーバーにデプロイするときに引き継がれません。 |
カスタム・アクションは通常、ターゲットのタスク・フロー・ビューをShow Detail Frame
コンポーネント内の所定の場所に表示します。ただし、カスタム・アクションを定義して、別個のブラウザ・ウィンドウにタスク・フロー・ビューを表示できます。
別個のブラウザ・ウィンドウにタスク・フロー・ビューを表示するには、そのビューに対応するカスタム・アクションのタスク・フロー定義ファイルおよびaction
属性において、そのビューの制御フロー・ルールに接頭辞dialog:
を付ける必要があります。次の例にaction
属性の定義を示します。
<cust:customAction action="dialog:Next" id="ca1" location="both" icon="/move_forward.png" text="Next Action" shortDesc="Next Action"/>
ポップアップ・ウィンドウでのプロパティの設定
タスク・フロー・リージョン内のコマンド・コンポーネントに対して、useWindow
、windowEmbedStyle
、windowHeight
、windowWidth
およびreturnListener
の各属性を使用して、デフォルトの動作を指定できます。コマンド・コンポーネントは、使用できるこのような属性が他にも存在する場合があります。戻りリスナーを指定した場合、ダイアログを閉じるときに特定アクション・イベントがコールされ、次のナビゲーションの結果が決定されます。デフォルトでは、この設定がないと、ダミーのRich Command Link
コンポーネントが作成され、タスク・フロー・アクションをトリガーします。
コマンド・コンポーネントでリスナーを定義する場合、カスタム・アクションを構成してこのコンポーネントのアクション・イベントをコールする必要もあります。カスタム・アクション定義(グローバル・レベルとインスタンス・レベル)のactionComponent
属性では、アクション・イベントのキューに入る必要があるコマンド・コンポーネントのIDを指定できます。actionComponent
属性が指定された場合、Show Detail Frame
コンポーネントは、このコンポーネントのアクション・イベントをキューに入れます。このコマンド・コンポーネントはタスク・フロー内部にあるため、いつでもその属性値を変更できます。
例
タスク・フローをShow Detail Frame
コンポーネント内に含め、このタスク・フローのナビゲーションの結果に対応するSimple Edit
カスタム・アクションを定義した例について考えてみます。タスク・フロー内のCommand Button
コンポーネントは、Simple Edit
カスタム・アクションをクリックすると300x200
のサイズのモード付きインライン・ポップアップを起動するように構成されています。戻りリスナーは、ポップアップが閉じると必ずコールされるようにコマンド・コンポーネントで構成されています。
リージョン内のCommand Buttonコンポーネントのソース・コードは次のとおりです。
<af:commandButton text="dialog:simpleEditPoup" id="SDFCustomActionCmd_simpleEditPoup" action="dialog:simpleEditPoup" useWindow="true" windowEmbedStyle="inlineDocument" windowWidth="300" windowHeight="200" windowModalityType="applicationModal" returnListener="#{pageFlowScope.recentPagesBean.refreshMainView}" visible="false"/>
例21-4に、adf-config.xml
ファイルでカスタム・アクションを定義して、タスク・フローの結果に対応するグローバル・カスタム・アクションを指定する方法を示します。Command Button
コンポーネントのIDは、カスタム・アクションのactionComponent
属性に対して指定されます。
例21-4 adf-config.xmlファイルで定義されたグローバル・カスタム・アクション
<customizableComponentsSecurity xmlns="http://xmlns.oracle.com/adf/faces/customizable/config"> <enableSecurity value="true"/> <customActions> <customAction action="dialog:simpleEditPoup" text="Simple Edit" shortDesc="Simple Edit" location="menu" rendered="#{!changeModeBean.inEditMode}" icon="/adf/pe/images/editproperties_ena.png" actionComponent="SDFCustomActionCmd_simpleEditPoup"/> </customActions> </customizableComponentsSecurity>
例21-5に、コンポーザ・タグ・ライブラリからJSPXページにCustom Action
コンポーネントを追加して、タスク・フローの結果に対応するインスタンス・レベルのカスタム・アクションを指定する方法を示します。Command Button
コンポーネントのIDは、カスタム・アクションのactionComponent
属性に対して指定されます。
例21-5 JSPXページで定義されたインスタンス・レベルのカスタム・アクション
<cust:showDetailFrame id="sdf_for_RecentPagesTF1" text="Recent Pages" stretchContent="false" showResizer="never"> <af:region id="RecentPagesTF1" value="#{bindings.regionBinding1.regionModel}"/> <cust:customAction action="dialog:simpleEditPoup" text="My Simple Edit" shortDesc="Simple Edit" location="menu" rendered="#{!changeModeBean.inEditMode}" icon="/adf/pe/images/editproperties_ena.png" actionComponent="SDFCustomActionCmd_simpleEditPoup"/> </cust:showDetailFrame>
注意: ポップアップ・ダイアログで起動されるカスタム・アクションは、新しいリクエストとしてサーバーに送信されます。コンポーザのサンドボックスを使用していて、ページ編集モードで操作している場合、このリクエストはコードをサーブレット・フィルタに追加することによって表示モードで起動され、新しいサンドボックスはこのページで作成されません。 |
adf-settings.xml
ファイルで構成したカスタム・アクションは、adf-config.xml
ファイルで構成したカスタム・アクションとマージされ、選択したタスク・フローの現在のビューと関係のあるすべてのアクションが親のShow Detail Frame
コンポーネントの「処理」メニューに表示されます。
グローバル・レベルでカスタム・アクションを有効にした場合、これらのカスタム・アクションが子のタスク・フローの現在のビューのナビゲーション結果に対応する場合、Show Detail Frame
のヘッダーにこれらのカスタム・アクションが表示されます。
action
属性値に接頭辞dialog:
を付けると、タスク・フローのターゲット・ビューが別個のブラウザ・ウィンドウに開きます。
この例では、アプリケーションにタスク・フロー(customactions
)が含まれていて、Show Detail Frame
内にあるものとします。このタスク・フローには、3つのビュー要素(view_gadget
、edit_settings
およびabout_gadget
)と3つの関連制御フロー・ルール(ViewGadget
、EditSettings
およびAboutGadget
)が含まれています。目的は、カスタム・アクションを定義して、制御フロー・ルールをShow Detail Frame
コンポーネントの「処理」メニューのアクションとして使用できるようにすることです。
この例では、制御フロー・ルールは、ユーザーが3つのビュー間をナビゲートして行き来できるように追加されています。各ビュー要素には、同じ名前の関連ページ・フラグメントがあります。
view_gadget.jsff
フラグメントには、Panel Stretch Layout
コンポーネントがあります。このコンポーネントのcenterファセットには、Value
属性がView Gadget
に設定されているActive Output Text
コンポーネントが移入されます。
edit_settings.jsff
フラグメントには、Panel Stretch Layout
コンポーネントがあります。このコンポーネントのcenterファセットには、Value
属性がEdit Gadget Settings
に設定されているActive Output Text
コンポーネントが移入されます。
about_gadget.jsff
フラグメントには、Panel Stretch Layout
コンポーネントがあります。このコンポーネントのcenterファセットには、Value
属性がAbout This Gadget
に設定されているActive Output Text
コンポーネントが移入されます。
タスク・フローでカスタム・アクションを有効にするには:
customactions
タスク・フローをカスタマイズ可能ページ(MyPage.jspx
)のShow Detail Frame
コンポーネント内に配置します。
カスタマイズ可能ページの作成の詳細は、第19.1.1項「カスタマイズ可能ページの作成方法」を参照してください。
Custom Action
コンポーネントをコンポーザ・タグ・ライブラリからShow Detail Frame
コンポーネントの子として追加し、Action
属性およびText
属性をそれぞれViewGadget
およびView Gadget
に設定します。
さらに2つのCustom Action
コンポーネントをShow Detail Frame
に追加します。
最初のコンポーネントのAction
属性およびText
属性をそれぞれEditSettings
およびEdit Settings
に設定します。
2番目のコンポーネントのAction
属性およびText
属性をそれぞれAboutGadget
およびAbout Gadget
に設定します。
MyPage.jspx
を保存して実行します。
view_gadget
ページ・フラグメントは、ページの(My Gadgetという名前の)Show Detail Frame
コンポーネントにレンダリングされます。「処理」メニューには、「About Gadget」オプションおよび「Edit Settings」オプションが表示されます。「About Gadget」をクリックして、about_gadget
フラグメントにナビゲートします。「処理」メニューには他の2つのフラグメントのナビゲーション・ルールが表示されることに注意してください(図21-5)。
図21-5 タスク・フローを囲んでいるShow Detail Frameのカスタム・アクション
アクションでこれを表示するには、サンプル・アプリケーション(CustomActions.jws
)をOracle Technology Network (OTN)のOracle WebCenter Portal 11gのデモとサンプルのページで探してください。
コンポーザの「ソース」ビューのコンポーネント・ナビゲータには、図21-6に示すように、タスク・フローにズーム・インし、そのページまたはフラグメントのコンポーネントを表示するオプションが用意されています。
ユーザーは、ズーム・インし、ページまたはフラグメントを編集し、タスク・フローからズーム・アウトしてそのタスク・フローを含むページにナビゲートして戻ることができます。タスク・フロー名の隣に表示される「タスク・フローの編集」リンクおよび「閉じる」リンクに加えて、図21-7に示すように、タスク・フロー名の隣にカスタム・アクションも表示するようにアプリケーションを構成できます。
この項では、コンポーネント・ナビゲータでタスク・フローのカスタム・アクションを有効にする手順を説明します。次の項が含まれます:
コンポーネント・ナビゲータでタスク・フローに対するカスタム・アクションを表示するには、カスタム・アクションの動作を定義するJava Beanを作成し、このBeanをタスク・フローを含むアプリケーション・ページからコールする必要があります。この項では、これを行う手順を詳細に説明します。次のサブセクションが含まれます:
まず、ユーザーに提供するカスタム・アクションを決定し、ユーザーがそのカスタム・アクションを選択したときに実装されるロジックを含むJava Beanを作成する必要があります。この項では、カスタム・アクションをクリックするとユーザーにメッセージを表示する単純なロジックを実装する手順を説明します。サンプルのBeanには、カスタム・リンクとともに「閉じる」リンクと「タスク・フローの編集」リンクを表示するコードも含まれています。
Java Beanを作成するには:
「ファイル」メニューから「新規」を選択します。
「新規ギャラリ」ダイアログで、「一般」を開き、「Java」、「Javaクラス」の順に選択して、「OK」をクリックします。
「Javaクラスの作成」ダイアログで、「名前」フィールドにBackingBean
と入力し、「OK」をクリックします。
「ソース」ビューにBackingBean.java
ファイルが表示されます。
次のように必要なライブラリをインポートします。
import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.faces.event.ActionEvent; import oracle.adf.view.page.editor.sourceview.ComponentInfo;
次のコードを追加します。
public class BackingBean { public BackingBean() { } public void action(ActionEvent actionEvent) { FacesContext context = FacesContext.getCurrentInstance(); context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sample message to test whether the custom action works.", null)); } public boolean isRendered() { return ComponentInfo.isRegion(); } public String getZoomText() { return ComponentInfo.isRootNode() ? "Close" : "Edit Task Flow"; } }
このロジックでは、ユーザーがタスク・フロー・リージョンに対するカスタム・アクション・リンクをクリックすると、定義したサンプル・メッセージが表示されます。
isRegion()
APIを使用して、カスタム・アクション・リンクがページのタスク・フロー・リージョンに対してのみ表示されていることを確認します。isRootNode()
APIを使用して、「タスク・フローの編集」リンクまたは「閉じる」リンクがタスク・フローのルート・コンポーネントに対して表示されていることを確認します。
Beanを保存します。
この項では、コンポーザでユーザーに表示するカスタム・アクションを含むJSPXページを作成する手順を説明します。
JSPXページを作成するには:
アプリケーション・プロジェクトで、customList.jspx
というJSPXファイルを作成します。
「ファイル」メニューから「新規」を選択します。
「新規ギャラリ」ダイアログで、「Web層」を展開し、「JSF」、「JSFページ」の順に選択します。
ページの名前を入力し、「OK」をクリックします。
次のサンプル・ページに示すように、Output Text
、Command Link
などのコンポーネントを使用してカスタム・アクションUIを設計します。
<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<jsp:directive.page contentType="text/html;charset=UTF-8"/>
<af:componentDef var="attrs" componentVar="component">
<af:panelGroupLayout id="dc_pgl1" rendered="#{backingBean.rendered}">
<af:outputText value="[" id="dc_ot1"/>
<af:commandLink text="Test" id="dc_cl1"
actionListener="#{backingBean.action}"
binding="#{backingBean.customLink}"/>
<af:outputText value="]" id="dc_ot2"/>
</af:panelGroupLayout>
</af:componentDef>
</jsp:root>
このサンプルでは、Test
というカスタム・アクションを作成します。このアクションのactionListener
属性およびbinding
属性は、前に作成したBackingBean
にバインドされます。
デフォルトの「タスク・フローの編集」オプションおよび「閉じる」オプションもタスク・フローの隣に表示するには、次の例に示すように、zoom
というファセットを定義する必要があります。
<af:xmlContent> <component xmlns="http://xmlns.oracle.com/adf/faces/rich/component"> <facet> <facet-name>zoom</facet-name> </facet> </component> </af:xmlContent>
次の例に示すように、ページ・コンテンツにzoom
ファセットを含めます。
<af:outputText value="[" id="dc_ot3"/> <af:facetRef facetName="zoom"/> <af:outputText value="]" id="dc_ot4"/>
customLink.jspx
ページのソースは次のとおりです。
<?xml version='1.0' encoding='UTF-8'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:af="http://xmlns.oracle.com/adf/faces/rich"> <jsp:directive.page contentType="text/html;charset=UTF-8"/> <af:componentDef var="attrs" componentVar="component"> <af:panelGroupLayout id="dc_pgl1" rendered="#{backingBean.rendered}"> <af:outputText value="[" id="dc_ot1"/> <af:commandLink text="Test" id="dc_cl1" actionListener="#{backingBean.action}" binding="#{backingBean.customLink}"/> <af:outputText value="]" id="dc_ot2"/> <af:outputText value="[" id="dc_ot3"/> <af:facetRef facetName="zoom"/> <af:outputText value="]" id="dc_ot4"/> </af:panelGroupLayout> <af:xmlContent> <component xmlns="http://xmlns.oracle.com/adf/faces/rich/component"> <facet> <facet-name>zoom</facet-name> </facet> </component> </af:xmlContent> </af:componentDef> </jsp:root>
JSPXページを保存します。
タスク・フローを含む単純なJSPXページ(MyPage
.jspx
)があるとします。ページのソースを次の例に示します。
<?xml version='1.0' encoding='UTF-8'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:pe="http://xmlns.oracle.com/adf/pageeditor" xmlns:cust="http://xmlns.oracle.com/adf/faces/customizable"> <jsp:directive.page contentType="text/html;charset=UTF-8"/> <f:view> <af:document id="d1"> <af:form id="f1"> <af:panelStretchLayout topHeight="50px" id="psl1"> <f:facet name="top"> <pe:changeModeLink id="cml1"/> </f:facet> <f:facet name="center"> <!-- id="af_one_column_header_stretched" --> <pe:pageCustomizable id="pageCustomizable1"> <cust:panelCustomizable id="panelCustomizable1" layout="scroll"> <af:region value="#{bindings.taskflowdefinition1.regionModel}" id="r1"/> </cust:panelCustomizable> <f:facet name="editor"> <pe:pageEditorPanel id="pep1"/> </f:facet> </pe:pageCustomizable> </f:facet> </af:panelStretchLayout> </af:form> </af:document> </f:view> </jsp:root>
タスク・フロー(taskflowdefinition1
)には、次のview.jsff
フラグメントが含まれています。
<?xml version='1.0' encoding='UTF-8'?> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:af="http://xmlns.oracle.com/adf/faces/rich"> <af:panelGroupLayout layout="scroll" id="pgl1"> <af:commandButton text="commandButton 1" id="cb1"/> <af:commandButton text="commandButton 2" id="cb2"/> </af:panelGroupLayout> </jsp:root>
作成したカスタム・アクションを表示するには、コンポーザ内からcustomLink.jspx
ページがコールされるようにする必要があります。Page Customizable
コンポーネントのsourceViewNodeAction
属性を使用して、このカスタム・アクションを含むJSPXページを参照します。
Page Customizable
タグが、ページ・ソースに次のように表示されます。
<pe:pageCustomizable id="pageCustomizable1" sourceViewNodeAction="/customLink.jspx">
sourceViewNodeAction
属性は、JSPXファイルの名前、またはJSPXファイル名として評価されるEL値を取ることができます。
ブラウザに対してMyPage.jspx
を実行し、コンポーザの「ソース」ビューを開くと、コンポーネント・ナビゲータは、ページの各タスク・フロー・インスタンスの隣に「テスト」リンクおよび「タスク・フローの編集」リンクを表示します。図21-8に、「テスト」リンクを強調表示して、コンポーネント・ナビゲータのMyPage.jspx
を示します。「テスト」リンクをクリックすると、ユーザーにサンプル・メッセージが表示されます。
通常、ユーザーは、ページで「編集」リンクまたはボタンをクリックしてページ編集モードに入ります。アプリケーションを構成して、キーボード・ショートカットを使用してページ編集モードにユーザーが入ることができるようにできます。さらに、アプリケーションを構成して、ショートカット・キーを使用して他のイベントを実行できます。この項では、コンポーザに対してキーボード・ショートカットを有効にして、そのショートカット・キーのイベント・ハンドラを構成する方法を説明します。次のサブセクションが含まれます:
<pe:mode-switch-key>
要素をアプリケーションのadf-config.xml
ファイルに追加することによって、ページ編集モードへのリンクなしのエントリを構成できます。<pe:mode-switch-key>
要素を設定するときに構成されたデフォルトのキーボード・ショートカットは[Ctrl]+[Shift]+[E]です。ユーザーはこのキー・シーケンスを使用して、ページの表示モードと編集モードを切り替えられます。ただし、
<pe:key-sequence>
プロパティを追加することによって選択したキーを構成できます。
<pe:mode-switch-key>
プロパティを追加するには:
アプリケーションのadf-config.xml
ファイルを開きます。これは、「アプリケーション・リソース」パネルの「ディスクリプタ」
の下のADF META-INF
フォルダにあります。
例21-6に示すように、<pe:mode-switch-key>
プロパティを追加し、その値をtrue
に設定します。この例は、ショートカット値がCtrl+E
である<pe:key-sequence>
プロパティを示します。
ファイルを保存します。
次の例に示すように、<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開発者ガイド』のコンテキスト・イベントの作成に関する項を参照してください。
ページで「編集」ボタンまたはリンクをクリックしてユーザーがコンポーザを起動すると、ページはデフォルトでは「設計」ビューで開きます。ビジネスで必要な場合、デフォルトでコンポーザの「ソース」ビューで表示するようにアプリケーション・ページを構成できます。
Page Customizable
コンポーネントのEdit Mode view
属性を使用して、編集モードのデフォルトのページ・ビューとして「設計」ビューまたは「ソース」ビューのいずれかを選択できます。
デフォルトで「ソース」ビューでページを開くには:
JDeveloperでJSPXページを開きます。
構造ナビゲータでPage Customizableコンポーネントを選択します。
プロパティ・インスペクタで、Edit Mode view属性のドロップダウン・リストをクリックして、「ソース」を選択します。
注意: 選択したユーザーのみ「ソース」ビューでページを開くために、 |
ページを保存します。
「ソース」ビューの位置とサイズの設定
デフォルトでは、「ソース」ビューのコンポーネント・ナビゲータは、ページの上部に表示され、そのデフォルトの高さは200
ピクセルです。Page Customizable
コンポーネントでsourceViewPosition
属性およびsourceViewSize
属性をそれぞれ使用して、コンポーネント・ナビゲータに対して別の位置またはサイズを指定できます。これらの属性の詳細は、第B.1.1項「Page Customizable」を参照してください。
すべてのユーザーが「ソース」ビューにアクセスできるように、デフォルトで、ビュー・メニューはコンポーザ対応のページで有効になっています。タスク・フロー、ポートレットおよびレイアウト・コンポーネント以外のページ・コンポーネントをユーザーが編集できないようにする場合は、ビュー・メニューを無効にできます。この項には次のサブセクションが含まれます:
アプリケーションのadf-config.xml
ファイルで<pe:enable-source-view>
エントリをfalse
に設定して「ソース」ビューを無効にできます。
「ソース」ビューを無効にするには:
アプリケーションのadf-config.xml
ファイルを開きます。これは、「アプリケーション・リソース」パネルの「ディスクリプタ」
の下のADF META-INF
フォルダにあります。
例21-7に示すように、enable-source-view
プロパティを追加し、その値をfalse
に設定します。
ファイルを保存します。
ユーザーがページ編集モードに切り替えると、図21-9に示すように、ページは「設計」ビューでレンダリングされ、「表示」メニューはユーザーに表示されません。
アプリケーションのadf-config.xml
ファイルで<pe:enable-zoom>
プロパティをfalse
に設定することによって、アプリケーションでタスク・フローにズーム・インする機能を無効にできます。
タスク・フローのズーム機能を無効にするには:
「アプリケーション・リソース」パネルの「ディスクリプタ」
の下のADF META-INF
フォルダにあるadf-config.xml
ファイルを開きます。
例21-8に示すように、<pe:enable-zoom>
プロパティを追加し、その値をfalse
に設定します。
ファイルを保存します。
タスク・フローにズーム・インする機能はアプリケーション全体で無効になります。
次のいずれかの方法を使用して、コンポーネントのヘッダーおよびコンテンツに様々なスタイルを適用することによって、コンポーザ・コンポーネントのルック・アンド・フィールを変更できます。
スタイル・セレクタを使用してスキンを構築し、スキンをFrameworkアプリケーションに適用します。スタイル・セレクタおよびスキンの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework 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
を上書きします。また、コンポーネント・インスタンスで設定されたプロパティは、コンポーネントのそのインスタンスのみに影響します。アプリケーション内のその他のコンポーネント・インスタンスは影響を受けません。
注意:
|
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
値のいずれにも優先されます。
図21-10 プロパティ・インスペクタでのcontentStyleおよびinlineStyleのスタイルの定義
セッション間でユーザー・カスタマイズおよびアプリケーション・カスタマイズを永続するには、アプリケーションを構成して変更の永続性フレームワークを使用する必要があります。コンポーザ・コンポーネントをカスタマイズ可能ページに追加すると、コンポーザは、アプリケーションを構成してComposerChangeManager
を使用し、実行時にページに対して行われた変更が適切に永続されます。
リリース11.1.1.1のアプリケーションのデフォルトの変更の永続性の動作では、編集モードの変更をMDSに保存します。表示モードの変更は永続されず、そのセッションでのみ使用できます。表示モードの変更もセッション間で使用できるようにMDSに永続するために、11.1.1.1のアプリケーションを構成してComposerChangeManager
を使用できます。
この項では、コンポーザ対応ページを含む新しいFrameworkアプリケーションのデフォルトの変更マネージャ構成について説明し、既存のリリース11.1.1.1のアプリケーションを構成してComposerChangeManager
を使用する方法を説明します。次の項が含まれます:
コンポーザ・コンポーネントをアプリケーション・ページに初めて追加するとき、コンポーザは次のことを行い、変更の永続性を有効にします。
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
セクションは、デフォルトで永続化されるコンポーネント・タグと属性をリストしています。これは、コンポーザの外側(すなわち、表示モードで)使用される場合に、showDetailFrame
、panelCustomizable
およびlayoutCustomizable
に関係するセッション全体で永続化される内容を定義します。たとえば、次の例に示すように、表示モード(showDetailFrame
)でサイズ変更が永続化されるかどうかを定義できます。
<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config"> ... <taglib-config> <taglib uri="http://xmlns.oracle.com/adf/faces/portlet"> <tag name="portlet"> <attribute name="expansionMode"> <persist-changes> true </persist-changes> </attribute> </tag> </taglib> <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
に設定することによって、そのタグおよび属性の変更の永続性を有効にできます。詳細は、第23.4.1項「コンポーネント・レベルでの変更の永続性の定義方法」を参照してください。
操作と属性への変更を永続化する場合は、persist-operations
属性を含めて、値をall
に設定します。persist-operations
属性がタグに含まれる場合、タグが子の追加、移動、並べ替えおよび削除、ファセットの追加および削除などの変更を永続化します。
暗黙的に永続されるADF Facesコンポーネントおよび属性のリストは、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のユーザーによる実行時カスタマイズの許可に関する項を参照してください。
ComposerChangeManager
ChangeManager
クラスは、エンド・ユーザーによって実行されたアプリケーション・カスタマイズを永続するために必要です。ComposerChangeManager
は、セッション内およびセッション間(MDSへ)の両方の変更の永続性を処理します。これは、次のようにユーザーの変更を適切な変更マネージャに委譲します。
表示モードの変更は、FilteredPersistenceChangeManager
にルーティングされ、暗黙的カスタマイズ(列のサイズ変更やヘッダーの折りたたみなど)がアプリケーションのadf-config.xml
ファイルで構成されたフィルタ・ルールに応じて動作するようにします。
編集モードの変更は、MDSDocumentChangeManager
にルーティングされ、暗黙的カスタマイズと明示的カスタマイズの両方が常に永続され、セッション間で使用できるようにします。
注意: コンポーザ・コンポーネントをアプリケーション・ページに追加するとき、(「プロジェクト・プロパティ」ダイアログの)セッションの期間のカスタマイズを有効にするオプションは無効になっています。これは、コンポーザ対応のアプリケーション・ページがセッション間で(MDSへ)永続される必要があるためです。 |
コンポーザ対応ページを含むリリース11.1.1.1のFrameworkアプリケーションは、デフォルトで編集モードの変更を永続するMDSDocumentChangeManager
を使用します。現在コンポーザには、ユーザー・カスタマイズおよびアプリケーション・カスタマイズを永続するためにComposerChangeManager
が用意されているため、(表示モードでの)ユーザー・カスタマイズもMDSに永続するために、既存のアプリケーションを構成してComposerChangeManager
を使用できます。
この項には、次の項が含まれています。
CHANGE_PERSISTENCE
コンテキスト・パラメータをComposerChangeManager
に更新する必要があります。
CHANGE_PERSISTENCE
パラメータを変更するには:
アプリケーションのweb.xmlファイルをApplication_Root
\
Project_Name
\
public_html\WEB-INF
ディレクトリから開きます。
org.apache.myfaces.trinidad.CHANGE_PERSISTENCE
を探し、これを次のように更新します。
<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>
web.xml
ファイルを保存します。
アプリケーションのadf-config.xml
ファイルのadf-faces-config
セクションで変更の永続性を構成する必要があります。
adf-config.xml
ファイルの変更の永続性を構成するには:
adf-config.xml
ファイルを開きます。
adf-config.xml
ファイルは、「アプリケーション・リソース」パネルの「ディスクリプタ」
の下のADF META-INF
フォルダにあります。
次のコードをadf-confi
gセクションの下に追加します。
<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> <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>
こうすることによって、MDSDocumentChangeManager
が使用され、taglib-config
セクションにリストされたコンポーネントのタグおよび属性に対する表示モードの変更が永続されます。デフォルトでは、次の表示モードの変更が永続されます。
Panel Customizable
コンポーネント: コンテナ内またはコンテナ間でのコンポーネントの再配置。
Show Detail Frame
コンポーネント: コンポーネントの展開、折りたたみおよびサイズ変更。
このセクションでその他のタグおよび属性を定義してpersist-changes
属性をtrue
に設定することによって、そのタグおよび属性の変更の永続性を有効にできます。詳細は、第23.4.1項「コンポーネント・レベルでの変更の永続性の定義方法」を参照してください。
adf-config.xml
ファイルを保存します。
注意:
|
コンポーザで編集されたコンポーネント・プロパティは、現在の言語でのみ使用できます。たとえばタスク・フローをページに追加する場合、コンポーザで入力するタスク・フロー・タイトルは現在の言語でのみ使用可能です。そのため、別のロケールのユーザーには、そのようなプロパティの翻訳された値が表示されません。実行時に編集されたコンポーネント・プロパティの言語サポートを提供するために、現在コンポーザは、文字列値を取ることができるコンポーネント表示オプションのリソース文字列を編集するオプションをユーザーに提供しています。これは、JDeveloperのADF Facesが提供するリソース文字列エディタ機能に似ています。コンポーザでリソース文字列に行われた変更は、アプリケーションで他のリソース・バンドルとともに翻訳される、上書きバンドルに保存されます。翻訳されたものは、アプリケーションにインポートされて戻されます。こうして、ユーザーは自身の言語でプロパティ値を表示できます。
注意: コンポーザは、実行時に約500のリソース文字列の作成をサポートします。この数を超えると、アプリケーションのパフォーマンスは低下します。 |
コンポーザ対応ページを含むリリース11.1.1.1のFrameworkアプリケーションは、実行時にリソース文字列の編集をサポートしません。いくつかの簡単な構成を実行することによって、既存のアプリケーションでリソース文字列の編集を有効にできます。この項では、既存のリリース11.1.1.1のアプリケーションでリソース文字列の編集を有効にする手順を説明します。次の項が含まれます:
実行時、文字列値を取ることができるコンポーネント表示オプションでは、プロパティ・フィールドの隣の「編集」メニューは、「テキスト・リソースの選択」オプションを提供します。このオプションをクリックするとリソース文字列エディタが開き、既存のリソースの検索、リソース・キーの編集または削除および新しいリソース・キー/値のペアの追加を行うオプションが提供されます。実行時のリソース文字列の編集の詳細は、第17.4.5項「リソース文字列の編集」を参照してください。
コンポーザでリソース文字列に対して行った変更は、アプリケーション・オーバーライド・バンドルに保存されます。バンドルは翻訳に送られ、翻訳されたバージョンがアプリケーションに戻されます。こうして、ユーザーは自身の言語でプロパティ値を表示できます。
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値を使用できます。
アプリケーションでリソース文字列の編集を有効にする場合、アプリケーションを構成して、pageeditor.jar
ファイルにある上書きバンドルoracle.adf.view.page.editor.resource.ComposerOverrideBundle.xlf
を使用する必要があります。この上書きバンドルは、実行時にユーザーがリソース文字列を作成または編集するときにアプリケーションの上書きバンドルからの読取りおよびこれへの書込みに使用されます。
上書きバンドルを構成するには:
JDeveloperでアプリケーションを開きます。
「アプリケーション」メニューから「アプリケーションのプロパティ」を選択します。
「アプリケーションのプロパティ」ダイアログの左パネルの「リソース・バンドル」を選択します(図21-11)。
「追加」ボタンをクリックします。
「リソース・バンドルの選択」ダイアログの「ファイル名」フィールドで、図21-12に示すようにoracle.adf.view.page.editor.resource.ComposerOverrideBundle.xlf
と入力し、「開く」をクリックします。
「アプリケーションのプロパティ」ダイアログで、「オーバーライド」チェック・ボックスを選択します。
こうすることによって、実行時にユーザーがファイルを使用できます。
「OK」をクリックします。
この項の手順を繰り返し、アプリケーションの任意のリソース・バンドルを実行時にユーザーに表示します。
注意: 実行時の読取りおよび書込みの操作に関してリソース・バンドルにアクセスできるようにするには、「アプリケーションのプロパティ」ダイアログでそのバンドルの「オーバーライド」オプションを選択している必要があります。 実行時に、プロパティ・バンドル、リスト・リソース・バンドルおよびXLIFFリソース・バンドルにアクセスできるようにすることができます。 |
文字列を取るプロパティの隣の「編集」アイコンをユーザーがクリックすると、「テキスト・リソースの選択」オプションが使用可能になります。このオプションをクリックすると、リソース文字列エディタが開き、そこでユーザーはリソース文字列を作成、変更または削除できます。詳細は、第17.4.5項「リソース文字列の編集」を参照してください。
この項では、コンポーザの拡張構成の実行時に発生する可能性のある問題のトラブルシューティングに役立つ情報を提供します。
ロギングの構成の詳細は、「コンポーザのADFロギングの構成」を参照してください。
問題
グローバルまたはインスタンス・レベルのCustom Action
を追加しました。ただし、これはchromeまたはShow Detail Frame
の「アクション」メニューのいずれにも表示されません。
解決方法
次の点を確認してください。
Show Detail Frame
の最初の子は、af:region
である必要があります。
タスク・フローに現在表示されているビューは、カスタム
・アクション
の処理と一致するそのタスク・フロー定義ファイルの結果を含む必要があります。
この処理に接頭辞dialog:
がある場合、タスク・フロー定義の結果にも同じ接頭辞がある必要があります。
詳細は、第21.3.2項「タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法」を参照してください。
問題
コンポーザがADFアプリケーション・ページで動作しません。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
に変更されます。