| Oracle® Fusion Middleware Oracle JDeveloperによるWebCenter Portalアセットとカスタム・コンポーネントの開発 12c (12.2.1) E72546-01 |
|
![]() 前 |
![]() 次 |
この章には次のトピックが含まれます:
ポータルのコンポーネントを編集する際にユーザーが使用できる組込みアクションを増やすために、カスタム・アクションをコンポーネントに追加できます。
コンポーネントに追加できるカスタム・アクションには3つのタイプがあります。
Javaべースのカスタム・アクション: どのコンポーネントに対しても機能するため、最も柔軟性のある選択肢であり、ビジネス・ロジックを実装できます。次を参照してください。
IDドリブンのカスタム・アクション。次を参照してください。
タスク・フロー・アクション・ドリブンのカスタム・アクション: タスク・フロー・コンポーネント専用で、アクションはタスク・フローのナビゲーションです。次を参照してください。
コンポーザのデザイン・ビューで、Show Detail Frameコンポーネントのクロームに、「アクション」メニューに表示されるカスタム・アクションを追加できます。このカスタム・アクションは、インタフェースCustomActionListenerを実装するJavaクラスです。アクションがメニューから選択されると、メソッドprocessActionにより、(ダイアログを開くなど)指示された操作がコンポーネントに対して実行されます。
コンポーザのデザイン・ビューでShow Detail Frameコンポーネントにカスタム・アクションを追加するには:
コンポーザの選択ビューでコンポーネントを選択すると、ポップアップ・メニューに表示される直接選択カスタム・アクションをコンポーネントに追加できます。このカスタム・アクションは、インタフェースSelectActionListenerを実装するJavaクラスです。アクションがメニューから選択されると、メソッドprocessActionにより、(ダイアログを開くなど)指示された操作がコンポーネントに対して実行されます。
コンポーザの選択ビューでコンポーネントに直接選択カスタム・アクションを追加するには:
Show Detail Frameコンポーネントのファセットを使用して、Show Detail Frameコンポーネントのカスタム・アクションを定義して表示できます。たとえば、アプリケーションが提供するサービスのリストがShow Detail Frameに含まれている場合、様々なサービスの詳細を含むタスク・フローを開くカスタム・アクション(Show Detailed Information)を追加できます。
Oracle JDeveloperでは、「構造」ウィンドウにShow Detail Frameコンポーネントで使用可能なファセットがすべて表示されますが、UIコンポーネントを含むファセットのみがアクティブで表示されます。
Show Detail Frameファセットを追加するには:
Panel Customizableコンポーネントを指定したJSFページ(Page1.jspx)を前提とします。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コンポーネントのテキストをカスタマイズできます。この項では、この結果を得るための手順を説明します。次のサブセクションが含まれます:
タスク・フローを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ディレクトリに作成します。
「file」メニューから、「新」を選択します。
「新規ギャラリ」ダイアログで、「一般」を展開し、「XML」、「XML文書」の順に選択します。
「OK」をクリックします。
ファイルにadf-settings.xmlという名前を付けます。
ファイルで<custComps-config>セクションをネストされた<customActions>要素とともに追加します。
Show Detail Frameの「処理」メニューにカスタム・アクションとして表示する内部タスク・フローのアクションそれぞれに<customAction>要素を1つ追加します。
<customActions>要素の下に任意の数のカスタム・アクションを追加できます。
次の例に、<customAction>エントリが指定されたadf-settings.xmlファイルのコードを示します。
<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ライブラリには複数のタスク・フローが存在する場合があるため、カスタム・アクションをレンダリングする必要があるタスク・フローを識別する際にこの属性は役に立ちます。
注意:
カスタム・アクションのアイコンを定義する場合、指定するイメージがプロジェクト・ルート・フォルダで利用できることを確認する必要があります。
ページのすべてのタスク・フローで定義された内部アクションのカスタム・アクションを定義できますが、実行時、Show Detail Frameは、タスク・フローの現在のビューのADFc結果に対応するカスタム・アクションのみを表示します。
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を含むページのJSFページ定義ファイルに格納されます。
インスタンス・レベルでカスタム・アクションを定義するには:
実行時、Show Detail Frameの「処理」メニューから処理を選択すると、関連する制御フロー・ルールがトリガーされ、ターゲットのタスク・フロー・フラグメントがレンダリングされます。
グローバル・レベルでカスタム・アクションを定義することは、そのカスタム・アクションをアプリケーションのすべてのShow Detail Frameインスタンスで使用可能にすることを意味します。グローバル・レベルのカスタム・アクションはアプリケーションのすべてのShow Detail Frameコンポーネントで使用可能ですが、実行時にShow Detail Frameのヘッダーにはタスク・フローの現在のビューのADFc結果に対応するカスタム・アクションのみが表示されます。
グローバル・レベルのカスタム・アクションは、アプリケーションのadf-config.xmlファイルで定義します。
グローバル・レベルでカスタム・アクションを定義するには:
カスタム・アクションの定義の詳細は、「例: タスク・フローを囲んでいるShow Detail Frameへのカスタム・アクションの追加」を参照してください。
各カスタム・アクションは、そのaction属性の値によって一意に識別されます。グローバル・レベルとインスタンス・レベルで同じaction属性値を持つカスタム・アクションを定義した場合、他の属性値に応じて実行時にこれらのカスタム・アクションがどのように起動されるか関して競合が発生する場合があります。このような場合、Show Detail FrameのinheritGlobalActions属性が他のカスタム・アクション属性(action属性以外)の動作を次のように定義します。
注意:
Show Detail FrameコンポーネントのinheritGlobalActions設定(trueまたはfalse)に関係なく次のようになります。
rendered属性は、インスタンス・レベルで指定されていなくても継承されません。
グローバル・レベルまたはインスタンス・レベルのlocation属性は、グローバル・レベルとインスタンス・レベルの両方で同じ値に設定する必要があります。
inheritGlobalActions=trueまたはinheritGlobalActions(デフォルトはfalse)の値を指定しなかった場合、カスタム・アクション属性の動作は次のようになります。
グローバル・レベルとインスタンス・レベルでカスタム・アクション属性を定義した場合、インスタンス・レベルで指定した属性値が使用されます。
カスタム・アクション属性をインスタンス・レベルでのみ定義した場合、その属性値が使用されます。
カスタム・アクション属性をグローバル・レベルでのみ定義した場合、その値は無視され、デフォルト値が使用されます。
inheritGlobalActions=trueの場合、カスタム・アクション属性の動作は次のようになります。
カスタム・アクション属性をインスタンス・レベルで定義した場合、同じ属性がグローバル・レベルで指定されているかどうかにかかわらず、その値が使用されます。
カスタム・アクション属性をグローバル・レベルでのみ定義した場合、その値が使用されます。
カスタム・アクション属性をグローバル・レベルでもインスタンス・レベルでも定義しなかった場合、属性のデフォルト値が使用されます。
アプリケーション・ページを設計した後、アプリケーションを本番環境にデプロイする必要があります。詳細は、???を参照してください。
注意:
開発環境のページで実行する実行時カスタマイズは、アプリケーションをターゲット・サーバーにデプロイするときに引き継がれません。
カスタム・アクションは通常、ターゲットのタスク・フロー・ビューを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"/>
次の例では、adf-config.xmlファイルでカスタム・アクションを定義して、タスク・フローの結果に対応するグローバル・カスタム・アクションを指定する方法を示します。Command ButtonコンポーネントのIDは、カスタム・アクションのactionComponent属性に対して指定されます。
<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>
次の例では、コンポーザ・タグ・ライブラリからJSFページにCustom Actionコンポーネントを追加して、タスク・フローの結果に対応するインスタンス・レベルのカスタム・アクションを指定する方法を示します。Command ButtonコンポーネントのIDは、カスタム・アクションのactionComponent属性に対して指定されます。
<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コンポーネント内に配置します。
カスタマイズ可能ページの作成の詳細は、???を参照してください。
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つのフラグメントのナビゲーション・ルールが表示されていることに注意してください(図22-5)。
この実際の動作を確認するには、Oracle Technology Network (OTN)のOracle WebCenter Suite 11gのデモとサンプルのページにある、Composer Custom Actionsサンプル・アプリケーションComposerCustomActions.jwsをご覧ください。
コンポーザの「構造」ビューのコンポーネント・ナビゲータには、図22-6に示すように、タスク・フローにズーム・インし、そのページまたはフラグメント上のコンポーネントを表示するオプションが用意されています。
ユーザーは、ズーム・インし、ページまたはフラグメントを編集し、タスク・フローからズーム・アウトしてそのタスク・フローを含むページにナビゲートして戻ることができます。タスク・フロー名の隣に表示される「タスク・フローの編集」リンクおよび「閉じる」リンクに加えて、図22-7 に示すように、タスク・フロー名の隣にカスタム・アクションも表示するようにアプリケーションを構成できます。
この項では、コンポーネント・ナビゲータでタスク・フローのカスタム・アクションを有効にする手順を説明します。内容は次のとおりです。
コンポーネント・ナビゲータでタスク・フローに対するカスタム・アクションを表示するには、カスタム・アクションの動作を定義するJava Beanを作成し、このBeanをタスク・フローを含むアプリケーション・ページからコールする必要があります。この項では、これを行う手順を詳細に説明します。次のサブセクションが含まれます:
まず、ユーザーに提供するカスタム・アクションを決定し、ユーザーがそのカスタム・アクションを選択したときに実装されるロジックを含むJava Beanを作成する必要があります。この項では、カスタム・アクションをクリックするとユーザーにメッセージを表示する単純なロジックを実装する手順を説明します。サンプルのBeanには、カスタム・リンクとともに「閉じる」リンクと「タスク・フローの編集」リンクを表示するコードも含まれています。
Java Beanを作成するには:
この項では、コンポーザでユーザーに表示するカスタム・アクションを含むJSFページを作成する手順を説明します。
JSFページを作成するには:
アプリケーション・プロジェクトで、customList.jspxというJSFファイルを作成します。
「file」メニューから、「新」を選択します。
「新規ギャラリ」ダイアログで、「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>
JSFページを保存します。
タスク・フローを含む単純なJSFページ(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属性を使用して、このカスタム・アクションを含むJSFページを参照します。
Page Customizableタグが、ページ・ソースに次のように表示されます。
<pe:pageCustomizable id="pageCustomizable1"
sourceViewNodeAction="/customLink.jspx">
sourceViewNodeAction属性は、JSF (.jspx)ファイルの名前、またはJSF (.jspx)ファイル名として評価されるEL値を取ることができます。