ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebCenter Portal開発者ガイド
11g リリース1 (11.1.1.7.0)
B72084-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

21 コンポーザの拡張構成の実行

この章では、コンポーザの特定の拡張構成を実行し、エンド・ユーザーの操作性を向上する方法を説明します。次の項が含まれます:

21.1 ファセットを使用したShow Detail Frameコンポーネントでのカスタム・アクションの有効化

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ファセットを追加するには、次の手順を実行します:

  1. 「構造」ウィンドウでShow Detail Frameコンポーネントを右クリックし、「ファセット - 詳細フレームの表示」を選択します。

  2. このオプションの右にある矢印をクリックします。

  3. サポートされているファセットのリストから追加するファセットを選択します。


    注意:

    ファセット名の隣のチェック・マークは、ファセットがすでにShow Detail Frameコンポーネントに挿入されていることを意味します。そのファセット名を再度選択すると、このファセットはページから削除されます。


    そのファセットのf:facet要素はページに挿入されます。

  4. 設計要件に応じてファセットにコンポーネントを追加します。

    Show Detail Frameファセットを作成して使用するエンド・ツー・エンド例は、第21.2項「ファセットを使用した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コンポーネントのテキストをカスタマイズできます。この項では、この結果を得るための手順を説明します。次のサブセクションが含まれます:

21.2.1 ADFタスク・フローの作成方法

ADFタスク・フローを作成するには:

  1. 「ファイル」メニューから「新規」を選択します。

  2. 「新規」ダイアログで、「Web層」ノードの下の「JSF」を選択し、アイテムの下の「ADFタスク・フロー」を選択します。

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

  4. 「タスク・フローの作成」ダイアログで「OK」をクリックし、デフォルト値を受け入れてタスク・フロー定義ファイルを作成します。

  5. コンポーネント・パレットの「ADFタスク・フロー」タグ・ライブラリから、2つのビュー要素(view1view2)をタスク・フロー定義ファイルにドロップします。

  6. 「制御フロー・ケース」view1からview2にドロップします。

  7. 最初のビュー要素をクリックし、次に2番目のビュー要素をクリックして制御フロー・ラインを描きます。

    この制御フロー・ケースにnextという名前を付けます。

  8. 同様に、「制御フロー・ケース」view2からview1にドロップして戻し、これにprevという名前を付けます。

  9. BackingBean.javaというバッキングBeanを作成し、2つの変数view1view2の値を含めます。

    view1view2は、それぞれinitialValue1initialValue2を使用して初期化されます。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;
        }
    }
    
  10. タスク・フロー定義ファイルで、view1をダブルクリックし、その要素にページ・フラグメント(view1.jsff)を作成します。

  11. Panel Group Layoutおよび2つのOutput Textコンポーネントをview1.jsffに追加します。

  12. 最初のOutput TextコンポーネントのValue#{backingBean.view1}に指定し、2番目のOutput TextコンポーネントのValue#{backingBean.view2}に指定します。

  13. view1.jsffを保存して閉じます。

  14. タスク・フロー定義ファイルで、view2をダブルクリックし、その要素のページ・フラグメント(view2.jsff)を作成します。

  15. Output Textコンポーネントを1つだけview2.jsffに追加し、Value#{backingBean.view2}に指定します。

  16. view2.jsffを保存して閉じます。

21.2.2 追加のアクション・ファセットを組み込む方法

追加のアクション・ファセットを組み込むには:

  1. Panel CustomizableコンポーネントおよびネストされたShow Detail Frameコンポーネントを備えているJSPXページ(Page1.jspx)を作成します。

  2. さらに2つのShow Detail Frameコンポーネントを既存のShow Detail Frameコンポーネントの上下に追加します。

    3つのShow Detail Frameコンポーネントを追加する目的は、「上へ移動」アクションと「下へ移動」アクションを最初のShow Detail Frameコンポーネント(showDetailFrame1)の追加アクションとともに表示できるようにすることです。

  3. 前の手順で作成したタスク・フロー定義ファイルをshowDetailFrame1内に追加します。

  4. 「構造」ウィンドウで最初のShow Detail Frameを右クリックし、「ファセット - 詳細フレームの表示」を選択します。

  5. このオプションの右にある矢印をクリックし、サポートされているファセットのリストから「追加のアクション」を選択します。

    そのファセットのf:facet-additionalActions要素はページに挿入されます。

  6. Panel Group Layout「追加のアクション」ファセット内に追加し、ButtonコンポーネントをPanel Group Layoutコンポーネント内に追加します。

  7. ButtonText属性をCustomizeに設定し、customizeAction値として指定します。

    構造ナビゲータでのページは、図21-1のように表示されます。

    図21-1 構造ナビゲータでのPage1.jspx

    図21-1の説明が続きます
    「図21-1 構造ナビゲータでのPage1.jspx」の説明

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

21.2.3 リダイレクト・ページの作成方法

リダイレクト・ページを作成するには:

  1. Page2.jspxというJSPXページを作成し、2つのInput Textコンポーネントおよび1つのButtonコンポーネントを追加します。

  2. 最初のInput TextコンポーネントのValue#{backingBean.view2}に指定し、2番目のInput TextコンポーネントのValue属性を#{backingBean.view1}に設定します。

    バッキングBeanに関してInput Textコンポーネントを追加する目的は、ユーザーの入力をBeanに渡し、これがPage1.jspxOutput Textコンポーネントで反映できるようにすることです。

  3. Buttonコンポーネントで、Text属性をOKに設定し、backAction値として指定します。

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

    ナビゲーション・ルールを定義することによって2つのページ間を切り替えることができます。

21.2.4 ページ間のナビゲーション・ルールの作成方法

ページ間のナビゲーション・ルールを定義するには:

  1. アプリケーション・ナビゲータのプロジェクトのWEB-INFフォルダの下で、faces-config.xmlファイルをダブルクリックしてこれを開きます。

  2. 「概要」タブをクリックして、概要モードでファイルを表示します。

  3. 「マネージドBean」セクションで「追加」ボタンをクリックします。

  4. 「マネージドBeanの作成」ダイアログで、backingBeanを名前として指定します。

  5. 「クラス名」フィールドで、その隣の「参照」ボタンをクリックし、前に作成したBackingBean Javaクラスを参照します。「OK」をクリックします。

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

  7. 「有効範囲」リストで、「セッション」を選択し「OK」をクリックします。

  8. ページ上の「ナビゲーション・ルール」タブを選択します。

  9. 「ビュー(自)」表で、Page1.jspxを選択します。

  10. 「ナビゲーション・ケース」の下で、「ビューID(至)」列でPage2.jspx、「結果(自)」列で「カスタマイズ」、「リダイレクト」列で「true」を選択します。

  11. 「ビュー(自)」表で、Page2.jspxを選択します。

  12. 「ナビゲーション・ケース」の下で、「ビュー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>
    
  13. ファイルを保存します。

21.2.5 実行時の処理

JDeveloperでPage1.jspxを実行します。showDetailFrame1コンポーネントの「アクション」メニューに、図21-2に示すように「カスタマイズ」アクションが表示されます。

図21-2 「アクション」メニューの「カスタマイズ」アクション

図21-2の説明が続きます
「図21-2 「アクション」メニューの「カスタマイズ」アクション」の説明

「カスタマイズ」をクリックすると、Page2.jspx (図21-4)が表示され、ここでLabel1およびLabel2の値を更新できます。

図21-3 テキストを編集するオプションを備えたページ

図21-3の説明が続きます
「図21-3 テキストを編集するオプションを備えたページ」の説明

「OK」をクリックするとPage1.jspxに戻り、ここで図21-4に示すように最近のテキスト変更が反映されます。

図21-4 更新されたテキストを含むPage1

図21-4の説明が続きます
「図21-4 更新されたテキストを含むPage1」の説明

21.3 タスク・フローでのカスタム・アクションの有効化

タスク・フローをShow Detail Frameコンポーネントに含めることによって、これをカスタマイズできます。Show Detail Frameコンポーネントには、コンポーネントを再配置、表示または非表示にする特定のデフォルトのアクションが用意されています。さらに、カスタム・アクションを定義して、実行時にタスク・フロー内で目的のナビゲーション・フローをトリガーできます。タスク・フローでカスタム・アクションを有効にできる方法は2つあります。

この項では、両方のアプローチについて説明します。次のサブセクションが含まれます:

21.3.1 タスク・フローでカスタム・アクションを直接有効にする方法

タスク・フローを自己完結にし、アプリケーション・レベルで定義されたグローバル・カスタム・アクションを継承する必要がない場合、この項の手順を実行します。ネストされた<customActions>要素を持つ<customComps-config>セクションをadf-settings.xmlファイルで構成することによって、タスク・フローでカスタム・アクションを定義できます。adf-settings.xmlファイルで指定された追加カスタム・アクションは、このタスク・フローを囲むShow Detail Frameコンポーネントに表示されます。

通常、タスク・フローはパッケージ化されADFライブラリとしてデプロイされます。タスク・フローのカスタム・アクションを含むadf-settings.xmlファイルを作成すると、このファイルもADFライブラリでパッケージ化されます。

タスク・フローでカスタム・アクションを有効にするには:

  1. adf-settings.xmlファイルが存在していない場合、このファイルをプロジェクトのWebコンテキスト・ルート(たとえば、APPLICATION_ROOT/Portal/src/META-INFディレクトリ)の下のMETA-INFディレクトリに作成します。

    1. 「ファイル」メニューから「新規」を選択します。

    2. 「新規ギャラリ」ダイアログで、「一般」を展開し、「XML」「XML文書」の順に選択します。

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

    ファイルにadf-settings.xmlという名前を付けます。

  2. ファイルで<custComps-config>セクションをネストされた<customActions>要素とともに追加します。

  3. 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ライブラリには複数のタスク・フローが存在する場合があるため、カスタム・アクションをレンダリングする必要があるタスク・フローを識別する際にこの属性は役に立ちます。


    注意:

    • カスタム・アクションのアイコンを定義する場合、指定するイメージがプロジェクト・ルート・フォルダで利用できることを確認する必要があります。

    • ページのすべてのタスク・フローで定義された内部アクションのカスタム・アクションを定義できますが、実行時、Show Detail Frameは、タスク・フローの現在のビューのADFc結果に対応するカスタム・アクションのみを表示します。


  4. adf-settings.xmlファイルを保存します。

21.3.2 タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法

囲んでいる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でのカスタム・アクションの定義について説明します。次のサブセクションが含まれます:

21.3.2.1 インスタンス・レベルでのカスタム・アクションの定義

Custom Actionコンポーネントを使用して特定のShow Detail Frameコンポーネントのインスタンスでカスタム・アクションを定義します。Custom Actionコンポーネントはコンポーザ・タグ・ライブラリにあります。カスタム・アクションは、Show Detail Frameを含むページのJSPXページ定義ファイルに格納されます。

インスタンス・レベルでカスタム・アクションを定義するには:

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

  2. Custom Actionをドラッグし、これをShow Detail Frameコンポーネント内のページ上でaf:region要素の下にドロップします。

    Show Detail Frameの「処理」メニューにカスタム・アクションとして表示する内部タスク・フローのアクションそれぞれにCustom Actionコンポーネントを1つ追加します。


    注意:

    Custom Actionコンポーネントをaf:region要素の下に追加します。リージョンがShow Detail Frameの最初の子コンポーネントでない場合、問題が発生する場合があります。


  3. 第B.1項「コンポーザ・コンポーネントのプロパティ」表B-9を参照してCustom Actionの属性を定義します。

    Custom Actionaction属性には、関連するタスク・フローの適切な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結果のすべてに対してカスタム・アクションを追加できますが、表示するタスク・フローのビューに応じて、いくつかのカスタム・アクションを実行時に使用できるか、どのカスタム・アクションも使用できません。

    対応するタスク・フローのアクションなしでカスタム・アクションを定義すると、そのカスタム・アクションは実行時にShow Detail Frameヘッダーにレンダリングされません。



    関連項目:

    『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のタスク・フローの作成に関する項


  4. 保存してページを実行します。

実行時、Show Detail Frameの「処理」メニューから処理を選択すると、関連する制御フロー・ルールがトリガーされ、ターゲットのタスク・フロー・フラグメントがレンダリングされます。

21.3.2.2 グローバル・レベルでのカスタム・アクションの定義

グローバル・レベルでカスタム・アクションを定義することは、そのカスタム・アクションをアプリケーションのすべてのShow Detail Frameインスタンスで使用可能にすることを意味します。グローバル・レベルのカスタム・アクションはアプリケーションのすべてのShow Detail Frameコンポーネントで使用可能ですが、実行時にShow Detail Frameのヘッダーにはタスク・フローの現在のビューのADFc結果に対応するカスタム・アクションのみが表示されます。

グローバル・レベルのカスタム・アクションは、アプリケーションのadf-config.xmlファイルで定義します。

グローバル・レベルでカスタム・アクションを定義するには:

  1. アプリケーションのadf-config.xmlファイルを開きます。これは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあります。

  2. 例21-3に示すように、各アクションに対してネストされた<customAction>タグを備えた<customActions>要素を使用してカスタム・アクションを定義します。


    ヒント:

    ページ編集モードにのみカスタム・アクションをレンダリングするために、<customAction>タグのrendered属性を#{composerContext.inEditMode}に設定できます。こうすると、ページが編集モードの場合にtrueの値が返されます。


    例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>
    

    注意:

    • 第23.5項「Panel CustomizableおよびShow Detailコンポーネント・アクションでのアクション・レベルの制限の適用」の手順を実行してShow Detail Frameコンポーネントのアクションに制限を実装した場合、cust:customizableComponentsSecurityセクションはすでにadf-config.xmlファイルにあります。例21-3に示すcust:adf-config-childセクションではなく前述のセクション自体でカスタム・アクションを定義できます。

    • カスタム・アクションのアイコンを定義する場合、指定するイメージがプロジェクト・ルート・フォルダで利用できることを確認する必要があります。

    • ページのすべてのタスク・フローで定義された内部アクションのカスタム・アクションを定義できますが、実行時、Show Detail Frameのヘッダーは、タスク・フローの現在のビューのADFc結果に対応するカスタム・アクションのみを表示します。


  3. adf-config.xmlファイルを保存します。

カスタム・アクションの定義の詳細は、第21.3.4項「タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法: 例」を参照してください。

グローバル・レベルのカスタム・アクションとインスタンス・レベルのカスタム・アクションの間の競合の解決

各カスタム・アクションは、そのaction属性の値によって一意に識別されます。グローバル・レベルとインスタンス・レベルで同じaction属性値を持つカスタム・アクションを定義した場合、他の属性値に応じて実行時にこれらのカスタム・アクションがどのように起動されるか関して競合が発生する場合があります。このような場合、Show Detail FrameinheritGlobalActions属性が他のカスタム・アクション属性(action属性以外)の動作を次のように定義します。


注意:

Show Detail FrameコンポーネントのinheritGlobalActions設定(trueまたはfalse)に関係なく次のようになります。

  • rendered属性は、インスタンス・レベルで指定されていなくても継承されません。

  • グローバル・レベルまたはインスタンス・レベルのlocation属性は、グローバル・レベルとインスタンス・レベルの両方で同じ値に設定する必要があります。


  • inheritGlobalActions=trueまたはinheritGlobalActions(デフォルトはfalse)の値を指定しなかった場合、カスタム・アクション属性の動作は次のようになります。

    • グローバル・レベルとインスタンス・レベルでカスタム・アクション属性を定義した場合、インスタンス・レベルで指定した属性値が使用されます。

    • カスタム・アクション属性をインスタンス・レベルでのみ定義した場合、その属性値が使用されます。

    • カスタム・アクション属性をグローバル・レベルでのみ定義した場合、その値は無視され、デフォルト値が使用されます。

  • inheritGlobalActions=trueの場合、カスタム・アクション属性の動作は次のようになります。

    • カスタム・アクション属性をインスタンス・レベルで定義した場合、同じ属性がグローバル・レベルで指定されているかどうかにかかわらず、その値が使用されます。

    • カスタム・アクション属性をグローバル・レベルでのみ定義した場合、その値が使用されます。

    • カスタム・アクション属性をグローバル・レベルでもインスタンス・レベルでも定義しなかった場合、属性のデフォルト値が使用されます。

アプリケーション・ページを設計した後、アプリケーションを本番環境にデプロイする必要があります。詳細は、第69章「WebCenter Portal: Frameworkアプリケーションのデプロイおよびテスト」を参照してください。


注意:

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


21.3.2.3 別個のブラウザ・ウィンドウにタスク・フロー・ビューを表示するカスタム・アクションの構成

カスタム・アクションは通常、ターゲットのタスク・フロー・ビューを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"/>

ポップアップ・ウィンドウでのプロパティの設定

タスク・フロー・リージョン内のコマンド・コンポーネントに対して、useWindowwindowEmbedStylewindowHeightwindowWidthおよび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> 

注意:

ポップアップ・ダイアログで起動されるカスタム・アクションは、新しいリクエストとしてサーバーに送信されます。コンポーザのサンドボックスを使用していて、ページ編集モードで操作している場合、このリクエストはコードをサーブレット・フィルタに追加することによって表示モードで起動され、新しいサンドボックスはこのページで作成されません。


21.3.3 実行時の処理

adf-settings.xmlファイルで構成したカスタム・アクションは、adf-config.xmlファイルで構成したカスタム・アクションとマージされ、選択したタスク・フローの現在のビューと関係のあるすべてのアクションが親のShow Detail Frameコンポーネントの「処理」メニューに表示されます。

グローバル・レベルでカスタム・アクションを有効にした場合、これらのカスタム・アクションが子のタスク・フローの現在のビューのナビゲーション結果に対応する場合、Show Detail Frameのヘッダーにこれらのカスタム・アクションが表示されます。

action属性値に接頭辞dialog:を付けると、タスク・フローのターゲット・ビューが別個のブラウザ・ウィンドウに開きます。

21.3.4 タスク・フローを囲んでいるShow Detail Frameでカスタム・アクションを有効にする方法: 例

この例では、アプリケーションにタスク・フロー(customactions)が含まれていて、Show Detail Frame内にあるものとします。このタスク・フローには、3つのビュー要素(view_gadgetedit_settingsおよびabout_gadget)と3つの関連制御フロー・ルール(ViewGadgetEditSettingsおよび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コンポーネントが移入されます。

タスク・フローでカスタム・アクションを有効にするには:

  1. customactionsタスク・フローをカスタマイズ可能ページ(MyPage.jspx)のShow Detail Frameコンポーネント内に配置します。

    カスタマイズ可能ページの作成の詳細は、第19.1.1項「カスタマイズ可能ページの作成方法」を参照してください。

  2. Custom Actionコンポーネントをコンポーザ・タグ・ライブラリからShow Detail Frameコンポーネントの子として追加し、Action属性およびText属性をそれぞれViewGadgetおよびView Gadgetに設定します。

  3. さらに2つのCustom ActionコンポーネントをShow Detail Frameに追加します。

    • 最初のコンポーネントのAction属性およびText属性をそれぞれEditSettingsおよびEdit Settingsに設定します。

    • 2番目のコンポーネントのAction属性およびText属性をそれぞれAboutGadgetおよびAbout Gadgetに設定します。

  4. 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のカスタム・アクション

    図21-5の説明が続きます
    「図21-5 タスク・フローを囲んでいるShow Detail Frameのカスタム・アクション」の説明

アクションでこれを表示するには、サンプル・アプリケーション(CustomActions.jws)をOracle Technology Network (OTN)のOracle WebCenter Portal 11gのデモとサンプルのページで探してください。

http://webcenter.oracle.com

21.4 コンポーネント・ナビゲータ内のタスク・フローに表示されるカスタム・アクションの有効化

コンポーザの「ソース」ビューのコンポーネント・ナビゲータには、図21-6に示すように、タスク・フローにズーム・インし、そのページまたはフラグメントのコンポーネントを表示するオプションが用意されています。

図21-6 タスク・フロー・インスタンスの編集処理

図21-6の説明が続きます
「図21-6 タスク・フロー・インスタンスの編集処理」の説明

ユーザーは、ズーム・インし、ページまたはフラグメントを編集し、タスク・フローからズーム・アウトしてそのタスク・フローを含むページにナビゲートして戻ることができます。タスク・フロー名の隣に表示される「タスク・フローの編集」リンクおよび「閉じる」リンクに加えて、図21-7に示すように、タスク・フロー名の隣にカスタム・アクションも表示するようにアプリケーションを構成できます。

図21-7 タスク・フロー・インスタンスのカスタム・アクション

図21-7の説明が続きます
「図21-7 タスク・フロー・インスタンスのカスタム・アクション」の説明

この項では、コンポーネント・ナビゲータでタスク・フローのカスタム・アクションを有効にする手順を説明します。次の項が含まれます:

21.4.1 コンポーネント・ナビゲータでカスタム・アクションを構成する方法

コンポーネント・ナビゲータでタスク・フローに対するカスタム・アクションを表示するには、カスタム・アクションの動作を定義するJava Beanを作成し、このBeanをタスク・フローを含むアプリケーション・ページからコールする必要があります。この項では、これを行う手順を詳細に説明します。次のサブセクションが含まれます:

21.4.1.1 カスタム・アクションのロジックの定義

まず、ユーザーに提供するカスタム・アクションを決定し、ユーザーがそのカスタム・アクションを選択したときに実装されるロジックを含むJava Beanを作成する必要があります。この項では、カスタム・アクションをクリックするとユーザーにメッセージを表示する単純なロジックを実装する手順を説明します。サンプルのBeanには、カスタム・リンクとともに「閉じる」リンクと「タスク・フローの編集」リンクを表示するコードも含まれています。

Java Beanを作成するには:

  1. 「ファイル」メニューから「新規」を選択します。

  2. 「新規ギャラリ」ダイアログで、「一般」を開き、「Java」「Javaクラス」の順に選択して、「OK」をクリックします。

  3. 「Javaクラスの作成」ダイアログで、「名前」フィールドにBackingBeanと入力し、「OK」をクリックします。

    「ソース」ビューにBackingBean.javaファイルが表示されます。

  4. 次のように必要なライブラリをインポートします。

    import javax.faces.application.FacesMessage;
    import javax.faces.context.FacesContext;
    import javax.faces.event.ActionEvent;
    import oracle.adf.view.page.editor.sourceview.ComponentInfo;
    
  5. 次のコードを追加します。

    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を使用して、「タスク・フローの編集」リンクまたは「閉じる」リンクがタスク・フローのルート・コンポーネントに対して表示されていることを確認します。

  6. Beanを保存します。

21.4.1.2 カスタム・アクションを含むJSPXページの作成

この項では、コンポーザでユーザーに表示するカスタム・アクションを含むJSPXページを作成する手順を説明します。

JSPXページを作成するには:

  1. アプリケーション・プロジェクトで、customList.jspxというJSPXファイルを作成します。

    1. 「ファイル」メニューから「新規」を選択します。

    2. 「新規ギャラリ」ダイアログで、「Web層」を展開し、「JSF」「JSFページ」の順に選択します。

    3. ページの名前を入力し、「OK」をクリックします。

  2. 次のサンプル・ページに示すように、Output TextCommand 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にバインドされます。

  3. デフォルトの「タスク・フローの編集」オプションおよび「閉じる」オプションもタスク・フローの隣に表示するには、次の例に示すように、zoomというファセットを定義する必要があります。

    <af:xmlContent>
      <component xmlns="http://xmlns.oracle.com/adf/faces/rich/component">
        <facet>
          <facet-name>zoom</facet-name>
        </facet>
      </component>
    </af:xmlContent>
    
  4. 次の例に示すように、ページ・コンテンツに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>
    
  5. JSPXページを保存します。

21.4.1.3 タスク・フローを含むアプリケーション・ページからの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値を取ることができます。

21.4.2 実行時の処理

ブラウザに対してMyPage.jspxを実行し、コンポーザの「ソース」ビューを開くと、コンポーネント・ナビゲータは、ページの各タスク・フロー・インスタンスの隣に「テスト」リンクおよび「タスク・フローの編集」リンクを表示します。図21-8に、「テスト」リンクを強調表示して、コンポーネント・ナビゲータのMyPage.jspxを示します。「テスト」リンクをクリックすると、ユーザーにサンプル・メッセージが表示されます。

図21-8 コンポーネント・ナビゲータでタスク・フローに対して表示されたカスタム・アクション

図21-8の説明が続きます
「図21-8 コンポーネント・ナビゲータでタスク・フローに対して表示されたカスタム・アクション」の説明

21.5 コンポーザにアクセスするためのキーボード・ショートカットの構成

通常、ユーザーは、ページで「編集」リンクまたはボタンをクリックしてページ編集モードに入ります。アプリケーションを構成して、キーボード・ショートカットを使用してページ編集モードにユーザーが入ることができるようにできます。さらに、アプリケーションを構成して、ショートカット・キーを使用して他のイベントを実行できます。この項では、コンポーザに対してキーボード・ショートカットを有効にして、そのショートカット・キーのイベント・ハンドラを構成する方法を説明します。次のサブセクションが含まれます:

21.5.1 編集モードへのリンクなしのエントリを有効にする方法

<pe:mode-switch-key>要素をアプリケーションのadf-config.xmlファイルに追加することによって、ページ編集モードへのリンクなしのエントリを構成できます。<pe:mode-switch-key>要素を設定するときに構成されたデフォルトのキーボード・ショートカットは[Ctrl]+[Shift]+[E]です。ユーザーはこのキー・シーケンスを使用して、ページの表示モードと編集モードを切り替えられます。ただし、<pe:key-sequence>プロパティを追加することによって選択したキーを構成できます。

<pe:mode-switch-key>プロパティを追加するには:

  1. アプリケーションのadf-config.xmlファイルを開きます。これは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあります。

  2. 例21-6に示すように、<pe:mode-switch-key>プロパティを追加し、その値をtrueに設定します。この例は、ショートカット値がCtrl+Eである<pe:key-sequence>プロパティを示します。

    例21-6 リンクなしの編集モード・エントリの有効化

    <pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
      <pe:mode-switch-key>
        <pe:enabled>true</pe:enabled>
        <pe:key-sequence>ctrl E</pe:key-sequence>
      </pe:mode-switch-key>
    . . . 
    </pe:page-editor-config>
    
  3. ファイルを保存します。

21.5.2 ショートカット・キーのイベント・ハンドラの構成方法

次の例に示すように、<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>

ここで、次のサンプルで示すように、handleModeSwitchModeChangeEventメソッドを使用し、2つのモード間を切り替えるロジックを提供します。

public void handleModeSwitch(ModeChangeEvent editMode)
  {
    // Your implementation to handle mode change goes here
  }

21.5.3 実行時の処理

ユーザーは、構成したショートカットを使用してアプリケーション・ページにアクセスし、編集モードに入れます。

21.6 イベント対応のタスク・フローの作成

コンポーザには、タスク・フローのイベントをコンテキストに即して関連付ける方法が用意されています。コンテキスト・イベントをアクション・ハンドラと関連付け、プロデューサでイベントがトリガーされたときにプロデューサ・コンポーネントからコンシューマ・コンポーネントに値を渡すことができます。

実行時に使用可能なイベントの場合、設計時にイベント機能をタスク・フローに組み込む必要があります。イベント対応のタスク・フローをカスタマイズ可能ページに追加すると、各タスク・フローの「コンポーネント・プロパティ」ダイアログに「イベント」タブが組み込まれ、ここで関連付けアクティビティの多くが行われます。イベント機能の組込みの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のコンテキスト・イベントの作成に関する項を参照してください。

21.7 デフォルトで「ソース」ビューに表示するアプリケーション・ページの構成

ページで「編集」ボタンまたはリンクをクリックしてユーザーがコンポーザを起動すると、ページはデフォルトでは「設計」ビューで開きます。ビジネスで必要な場合、デフォルトでコンポーザの「ソース」ビューで表示するようにアプリケーション・ページを構成できます。

21.7.1 デフォルトで「ソース」ビューで表示するアプリケーション・ページを構成する方法

Page CustomizableコンポーネントのEdit Mode view属性を使用して、編集モードのデフォルトのページ・ビューとして「設計」ビューまたは「ソース」ビューのいずれかを選択できます。

デフォルトで「ソース」ビューでページを開くには:

  1. JDeveloperでJSPXページを開きます。

  2. 構造ナビゲータでPage Customizableコンポーネントを選択します。

  3. プロパティ・インスペクタで、Edit Mode view属性のドロップダウン・リストをクリックして、「ソース」を選択します。


    注意:

    選択したユーザーのみ「ソース」ビューでページを開くために、Edit Mode view属性にEL値を指定できます。


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

「ソース」ビューの位置とサイズの設定

デフォルトでは、「ソース」ビューのコンポーネント・ナビゲータは、ページの上部に表示され、そのデフォルトの高さは200ピクセルです。Page CustomizableコンポーネントでsourceViewPosition属性およびsourceViewSize属性をそれぞれ使用して、コンポーネント・ナビゲータに対して別の位置またはサイズを指定できます。これらの属性の詳細は、第B.1.1項「Page Customizable」を参照してください。

21.7.2 実行時の処理

ユーザーが「編集」リンクまたはボタンをクリックすると、コンポーザは「ソース」ビューでページを開きます。

21.8 アプリケーションの「ソース」ビュー・メニューの無効化

すべてのユーザーが「ソース」ビューにアクセスできるように、デフォルトで、ビュー・メニューはコンポーザ対応のページで有効になっています。タスク・フロー、ポートレットおよびレイアウト・コンポーネント以外のページ・コンポーネントをユーザーが編集できないようにする場合は、ビュー・メニューを無効にできます。この項には次のサブセクションが含まれます:


注意:

「ソース」ビューの編集機能の詳細は、第17.5項「ページ編集モードのソース・ビューでの編集機能」を参照してください。


21.8.1 「ソース」ビューを無効にする方法

アプリケーションのadf-config.xmlファイルで<pe:enable-source-view>エントリをfalseに設定して「ソース」ビューを無効にできます。


注意:

adf-config.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。


「ソース」ビューを無効にするには:

  1. アプリケーションのadf-config.xmlファイルを開きます。これは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあります。

  2. 例21-7に示すように、enable-source-viewプロパティを追加し、その値をfalseに設定します。

    例21-7 adf-config.xmlでの「ソース」ビューの無効化

    <pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
      <pe:enable-source-view>false</pe:enable-source-view>
    </pe:page-editor-config>
    
  3. ファイルを保存します。

21.8.2 実行時の処理

ユーザーがページ編集モードに切り替えると、図21-9に示すように、ページは「設計」ビューでレンダリングされ、「表示」メニューはユーザーに表示されません。

図21-9 「表示」メニューが表示されないページの「設計」ビュー

図21-9の説明が続きます
「図21-9 「表示」メニューが表示されないページの「設計」ビュー」の説明

21.9 タスク・フローのズーム機能の無効化

アプリケーションのadf-config.xmlファイルで<pe:enable-zoom>プロパティをfalseに設定することによって、アプリケーションでタスク・フローにズーム・インする機能を無効にできます。


注意:

adf-config.xmlで作成できるコンポーザ固有構成の詳細は、第B.2.2項「adf-config.xml」を参照してください。


タスク・フローのズーム機能を無効にするには:

  1. 「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあるadf-config.xmlファイルを開きます。

  2. 例21-8に示すように、<pe:enable-zoom>プロパティを追加し、その値をfalseに設定します。

    例21-8 adf-config.xmlでのタスク・フローのズーム機能の無効化

    <pe:page-editor-config xmlns="http://xmlns.oracle.com/adf/pageeditor/config">
      <pe:source-view>
        <pe:enable-zoom>false</pe:enable-zoom>
      </pe:source-view>
    </pe:page-editor-config>
    
  3. ファイルを保存します。

タスク・フローにズーム・インする機能はアプリケーション全体で無効になります。

21.10 コンポーネントへのスタイルの適用

次のいずれかの方法を使用して、コンポーネントのヘッダーおよびコンテンツに様々なスタイルを適用することによって、コンポーザ・コンポーネントのルック・アンド・フィールを変更できます。

contentStyleプロパティおよびinlineStyleプロパティの理解

スタイル・プロパティのinlineStylecontentStyleは、サポートする属性のタイプが類似しています。これらのプロパティの違いは、影響の範囲です。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のスタイルの定義

ContentInlineStyleおよびInlineStyleのスタイルの定義
「図21-10 プロパティ・インスペクタでのcontentStyleおよびinlineStyleのスタイルの定義」の説明

21.11 永続性変更マネージャの構成

セッション間でユーザー・カスタマイズおよびアプリケーション・カスタマイズを永続するには、アプリケーションを構成して変更の永続性フレームワークを使用する必要があります。コンポーザ・コンポーネントをカスタマイズ可能ページに追加すると、コンポーザは、アプリケーションを構成してComposerChangeManagerを使用し、実行時にページに対して行われた変更が適切に永続されます。

リリース11.1.1.1のアプリケーションのデフォルトの変更の永続性の動作では、編集モードの変更をMDSに保存します。表示モードの変更は永続されず、そのセッションでのみ使用できます。表示モードの変更もセッション間で使用できるようにMDSに永続するために、11.1.1.1のアプリケーションを構成してComposerChangeManagerを使用できます。

この項では、コンポーザ対応ページを含む新しいFrameworkアプリケーションのデフォルトの変更マネージャ構成について説明し、既存のリリース11.1.1.1のアプリケーションを構成してComposerChangeManagerを使用する方法を説明します。次の項が含まれます:

21.11.1 デフォルトの変更マネージャ構成の概要

コンポーザ・コンポーネントをアプリケーション・ページに初めて追加するとき、コンポーザは次のことを行い、変更の永続性を有効にします。

  • 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セクションは、デフォルトで永続化されるコンポーネント・タグと属性をリストしています。これは、コンポーザの外側(すなわち、表示モードで)使用される場合に、showDetailFramepanelCustomizableおよび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へ)永続される必要があるためです。


21.11.2 既存の11.1.1.1のアプリケーションでのComposerChangeManagerの構成方法

コンポーザ対応ページを含むリリース11.1.1.1のFrameworkアプリケーションは、デフォルトで編集モードの変更を永続するMDSDocumentChangeManagerを使用します。現在コンポーザには、ユーザー・カスタマイズおよびアプリケーション・カスタマイズを永続するためにComposerChangeManagerが用意されているため、(表示モードでの)ユーザー・カスタマイズもMDSに永続するために、既存のアプリケーションを構成してComposerChangeManagerを使用できます。

この項には、次の項が含まれています。

21.11.2.1 web.xmlファイルのCHANGE_PERSISTENCEコンテキスト・パラメータの更新

CHANGE_PERSISTENCEコンテキスト・パラメータをComposerChangeManagerに更新する必要があります。

CHANGE_PERSISTENCEパラメータを変更するには:

  1. アプリケーションのweb.xmlファイルをApplication_Root\Project_Name\public_html\WEB-INFディレクトリから開きます。

  2. 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>
    
  3. web.xmlファイルを保存します。

21.11.2.2 adf-config.xmlファイルへの関連エントリの追加

アプリケーションのadf-config.xmlファイルのadf-faces-configセクションで変更の永続性を構成する必要があります。

adf-config.xmlファイルの変更の永続性を構成するには:

  1. adf-config.xmlファイルを開きます。

    adf-config.xmlファイルは、「アプリケーション・リソース」パネルの「ディスクリプタ」の下のADF META-INFフォルダにあります。

  2. 次のコードをadf-configセクションの下に追加します。

    <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項「コンポーネント・レベルでの変更の永続性の定義方法」を参照してください。

  3. adf-config.xmlファイルを保存します。


注意:

ComposerChangeManagerを構成すると、FilteredPersistenceChangeManagerが選択するadf-config.xmlに多くのコンポーネントが追加されない場合があるため、そのようなコンポーネントの暗黙的カスタマイズが表示モードで動作しなくなる場合があります。


21.12 実行時リソース文字列編集の構成

コンポーザで編集されたコンポーネント・プロパティは、現在の言語でのみ使用できます。たとえばタスク・フローをページに追加する場合、コンポーザで入力するタスク・フロー・タイトルは現在の言語でのみ使用可能です。そのため、別のロケールのユーザーには、そのようなプロパティの翻訳された値が表示されません。実行時に編集されたコンポーネント・プロパティの言語サポートを提供するために、現在コンポーザは、文字列値を取ることができるコンポーネント表示オプションのリソース文字列を編集するオプションをユーザーに提供しています。これは、JDeveloperのADF Facesが提供するリソース文字列エディタ機能に似ています。コンポーザでリソース文字列に行われた変更は、アプリケーションで他のリソース・バンドルとともに翻訳される、上書きバンドルに保存されます。翻訳されたものは、アプリケーションにインポートされて戻されます。こうして、ユーザーは自身の言語でプロパティ値を表示できます。


注意:

コンポーザは、実行時に約500のリソース文字列の作成をサポートします。この数を超えると、アプリケーションのパフォーマンスは低下します。


コンポーザ対応ページを含むリリース11.1.1.1のFrameworkアプリケーションは、実行時にリソース文字列の編集をサポートしません。いくつかの簡単な構成を実行することによって、既存のアプリケーションでリソース文字列の編集を有効にできます。この項では、既存のリリース11.1.1.1のアプリケーションでリソース文字列の編集を有効にする手順を説明します。次の項が含まれます:

21.12.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値を参照しないようにする必要があります。

21.12.2 アプリケーションでリソース文字列エディタを有効にする方法

アプリケーションでリソース文字列の編集を有効にするには、アプリケーションの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値を使用できます。

21.12.3 上書きバンドルの構成方法

アプリケーションでリソース文字列の編集を有効にする場合、アプリケーションを構成して、pageeditor.jarファイルにある上書きバンドルoracle.adf.view.page.editor.resource.ComposerOverrideBundle.xlfを使用する必要があります。この上書きバンドルは、実行時にユーザーがリソース文字列を作成または編集するときにアプリケーションの上書きバンドルからの読取りおよびこれへの書込みに使用されます。

上書きバンドルを構成するには:

  1. JDeveloperでアプリケーションを開きます。

  2. 「アプリケーション」メニューから「アプリケーションのプロパティ」を選択します。

  3. 「アプリケーションのプロパティ」ダイアログの左パネルの「リソース・バンドル」を選択します(図21-11)。

    図21-11 「アプリケーションのプロパティ」ダイアログ

    図21-11の説明が続きます
    「図21-11 「アプリケーションのプロパティ」ダイアログ」の説明

  4. 「追加」ボタンをクリックします。

  5. 「リソース・バンドルの選択」ダイアログの「ファイル名」フィールドで、図21-12に示すようにoracle.adf.view.page.editor.resource.ComposerOverrideBundle.xlfと入力し、「開く」をクリックします。

    図21-12 「リソース・バンドルの選択」ダイアログ

    図21-12の説明が続きます
    「図21-12 「リソース・バンドルの選択」ダイアログ」の説明

  6. 「アプリケーションのプロパティ」ダイアログで、「オーバーライド」チェック・ボックスを選択します。

    こうすることによって、実行時にユーザーがファイルを使用できます。

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

この項の手順を繰り返し、アプリケーションの任意のリソース・バンドルを実行時にユーザーに表示します。


注意:

実行時の読取りおよび書込みの操作に関してリソース・バンドルにアクセスできるようにするには、「アプリケーションのプロパティ」ダイアログでそのバンドルの「オーバーライド」オプションを選択している必要があります。

実行時に、プロパティ・バンドル、リスト・リソース・バンドルおよびXLIFFリソース・バンドルにアクセスできるようにすることができます。


21.12.4 実行時の処理

文字列を取るプロパティの隣の「編集」アイコンをユーザーがクリックすると、「テキスト・リソースの選択」オプションが使用可能になります。このオプションをクリックすると、リソース文字列エディタが開き、そこでユーザーはリソース文字列を作成、変更または削除できます。詳細は、第17.4.5項「リソース文字列の編集」を参照してください。

21.13 コンポーザの拡張構成の問題のトラブルシューティング

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

ロギングの構成の詳細は、「コンポーザのADFロギングの構成」を参照してください。

問題

グローバルまたはインスタンス・レベルのCustom Actionを追加しました。ただし、これはchromeまたはShow Detail Frame「アクション」メニューのいずれにも表示されません。

解決方法

次の点を確認してください。

詳細は、第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に変更されます。