Oracle® Fusion Middleware Oracle Application Development Frameworkデスクトップ統合開発者ガイド 11gリリース1(11.1.1.6.0) B66694-01 |
|
前 |
次 |
この章では、統合Excelワークブックへの対話性の追加方法、リボン・タブの構成方法、データ・バインドされた検索フォームおよび従属値リストの作成、Excel式でのEL式の使用方法について説明します。
この章の内容は次のとおりです。
統合Excelワークブックに対話性を追加すると、エンド・ユーザーがワークブックでOracle ADFの機能を起動するアクション・セットを実行できるようになります。また、これらのアクション・セットの実行時に統合Excelワークブックでステータス・メッセージやアラート・メッセージ、エラー処理も提供されます。アクション・セットを起動するADFデスクトップ統合コンポーネントでのエンド・ユーザーの動作(ダブルクリック、クリック、選択)の他に、エンド・ユーザーが実行時にアクション・セットを起動するために使用する、ワークブックおよびワークシート・リボン・ボタンを構成できます。
エンド・ユーザーが起動するアクション・セットは、ExcelワークブックおよびExcelワークブックと統合するFusion Webアプリケーションのページで定義される機能を利用できます。たとえば、Master Price ListモジュールのEditPriceList-DT.xlsx
ワークブックは、ADFボタン・コンポーネントをレンダリングしますが、これは実行時にFusion Webアプリケーションからページを起動します。起動されたページによって、エンド・ユーザーは、ADFボタン、ADF入力テキスト、ADFラベル・コンポーネントを使用してレンダリングされるワークブックの検索フォームでの指定内容に対して、追加の検索条件を指定できます。
アクション・セットに加えて、マクロやExcel式などのExcel機能を構成して、Fusion Webアプリケーションからダウンロードするデータ、またはアップロードするデータを管理できます。
アクション・セットは、特定の順序で実行される次のアクションの1つ以上からなる、順序付けされたリストです。
アクション・セットは、エンド・ユーザーの動作(クリックやADFボタンなど)またはExcelワークシート・イベントによって起動できます。エンド・ユーザーの動作によってアクション・セットが起動される場合、ADFコンポーネントのプロパティ・インスペクタのアクション・セットのプロパティ名には、必要な動作の名前が先頭に付きます。次のリストは、ADFデスクトップ統合がプロパティ・インスペクタで表示するプロパティ名と、アクション・セットを起動するユーザーの動作を示します。
ClickActionSet
はADFボタン・コンポーネント用で、エンド・ユーザーが関連するアクション・セットを起動するためにボタンをクリックするときに使用します。
DoubleClickActionSet
はADF InputTextまたはADF出力テキスト・コンポーネント用で、エンド・ユーザーが関連のアクション・セットを起動するためにこれらのコンポーネントをダブルクリックするときに使用されます。
SelectActionSet
はワークシート・リボン・ボタン用で、エンド・ユーザーが関連のアクション・セットを起動するためにボタンを選択したときに使用されます。
ActionSet
はワークシート・イベント用で、アクション・セットを起動するときに明示的なエンド・ユーザーの動作は必要ありません。
ADFコンポーネントやワークシート・リボン・ボタン、またはワークシート・イベントからアクション・コレクション・エディタを起動して、アクション・セットを定義あるいは構成します。アクション・セットが起動するアクションを定義する他に、アクション・セットのAlert
プロパティを構成して、アクション・セットの起動の結果に対するフィードバックを提供できます。アクション・セットのStatus
プロパティを構成して、アクション・セットが定義されたアクションを実行する際に、エンド・ユーザーにステータス・メッセージを表示します。アクション・コレクション・エディタの詳細は、5.12項「コレクション・エディタの使用」を参照してください。
Master Price Listモジュールには、使用されるアクション・セットの例が数多く用意されています。1つの例は、EditPriceList-DT.xlsx
ワークブックで実行時にUpload Dataというラベルの付くADFボタン・コンポーネントです。このADFボタン・コンポーネントには、ADF表コンポーネントのUpload
アクションを起動するアクション・セットが構成されています。図8-1は、設計モードのアクション・コレクション・エディタを示します。
ヒント: アクション・コレクション・エディタに追加する各アクションの「注釈」フィールドに説明を記述してください。記述する説明はMembersリスト・ビューに表示されます。記述内容によっては、ADFデスクトップ統合が生成するデフォルトのエントリよりも意味をなす場合があります。 |
注意: ADFデスクトップ統合は、 Membersリスト・ビューで指定した順にアクション・セット内のアクションを起動します。 |
1つのアクション・セットで複数のADFモデル・アクションを起動できます。ADFモデル・アクションは、Fusion Webアプリケーションを開発するJDeveloperプロジェクトでアクション・バインディングとしても知られています。ページ定義ファイルは、Fusion Webアプリケーションと統合するワークシートで起動可能なアクション・バインディングを定義します。統合Excelワークブックのページ定義ファイルとアクション・バインディングの詳細は、4.3項「統合Excelワークブックのページ定義ファイルの使用」を参照してください。
アクション・コレクション・エディタを使用して、起動するADFモデル・アクションを指定します。
アクション・セットでADFモデル・アクションを起動する手順:
統合Excelワークブックを開きます。
アクション・コレクション・エディタを開いて、ここに示す「追加」ボタンからドロップダウン・リストを起動します。
ADFmActionを選択して、次のリストにあるようにプロパティを構成します。
ActionID
ActionID
の入力フィールドの横にある省略記号ボタン(...)をクリックして、バインディングIDピッカーを起動し、アクション・セットが実行時に起動するADFモデル・アクションを選択します。
Annotation
オプションで、構成するアクションの目的に関するコメントを入力します。このプロパティに設定する値には、機能的な影響はありません。
「OK」をクリックします。
ADFデスクトップ統合のADF表コンポーネントおよびADF読取り専用表コンポーネントは、Fusion Webアプリケーションと統合するExcelワークシート間のデータ送信の管理に使用できるアクションを公開します。ADF読取り専用表コンポーネントは、1つのコンポーネント・アクションDownload
を公開しますが、ADF表コンポーネントは他の多くのアクションを公開します。両方のコンポーネントのアクションの詳細は、付録A「ADFデスクトップ統合コンポーネントのプロパティとアクション」を参照してください。
アクションの配列にあるコンポーネント・アクションを参照することで、1つ以上のコンポーネント・アクションを起動するアクション・セットを構成できます。たとえば、図8-2は、ワークシートのADF表コンポーネントとADF読取り専用表コンポーネントがSelectActionSet
アクション・セットから起動できる、コンポーネント・アクションの選択ダイアログを示します。
注意: アクション・セットによってADF表コンポーネントまたはADF読取り専用表コンポーネントを起動する前に、これらのコンポーネントをExcelワークシートに含める必要があります。 |
アクション・セットからコンポーネント・アクションを起動する手順:
統合Excelワークブックを開きます。
アクション・コレクション・エディタを開いて、ここに示す「追加」ボタンからドロップダウン・リストを起動します。
ComponentActionを選択して、次のリストにあるようにプロパティを構成します。
「OK」をクリックします。
統合Excelワークブックでのアクション・セットの動作に関する次の情報に注意してください。
アクション・セットの検証による正しいコンポーネント・アクションの起動
アクション・セットを作成する際は、ワークシートに複数のインスタンスのADF読取り専用表コンポーネントまたはADF表コンポーネントが含まれる場合、正しいコンポーネントのインスタンスからコンポーネント・アクションを起動するようにしてください。図8-3は、2つのインスタンスのADF読取り専用表コンポーネントを持つコンポーネント・アクションの選択ダイアログを示します。表A-1に示すComponentID
プロパティの値を使用して、コンポーネント・アクションを起動するコンポーネントのインスタンスを正しく識別してください。
切断されたワークブックでのアクション・セットの起動
エンド・ユーザーはFusion Webアプリケーションから切断されている間、第15章「切断されたモードでの複数のWebセッションにおける統合Excelワークブックの使用」の説明に従って、統合Excelワークブックを使用できます。ADF表コンポーネントのDownload
アクションのような一部のコンポーネント・アクションを正常に完了するには、Fusion Webアプリケーションへの接続が必要です。このようなコンポーネント・アクションが含まれるアクション・セットをエンド・ユーザーが起動する場合、統合ExcelワークブックはFusion Webアプリケーションに接続しようと試み、必要があれば11.2項「Excelワークブック・ユーザーの認証」にあるように認証プロセスを起動します。
ADFデスクトップ統合には、ワークシート・イベントがいくつか用意されており、これはトリガーされるとアクション・セットを起動できます。次のワークシート・イベントはアクション・セットを起動できます。
Dialog
アクションのTarget
プロパティがTaskPane
に設定されている場合、このイベントからDialog
アクションを起動しないでください。
Events
ワークシート・プロパティによって参照されるイベントの配列(WorksheetEvent[] Array
)に要素を追加します。イベントと、追加する要素の中でそれによって起動されるアクション・セットを指定します。Events
ワークシート・プロパティおよびアクション・セットを起動できるワークシート・イベントの詳細は、表A-19を参照してください。アクション・セットの詳細は、表A-14を参照してください。
WorkSheetEventコレクション・エディタを使用して、ワークシート・イベントによって起動されるアクション・セットを指定します。
ワークシート・イベントからアクション・セットを起動する手順:
統合Excelワークブックを開きます。
ADFデスクトップ統合の作業ウィンドウで「ワークシート・プロパティ」をクリックして、「ワークブック・プロパティの編集」ダイアログを表示します。
Eventsプロパティの入力フィールドの横にある省略記号ボタン(「...」
)をクリックして、WorksheetEventコレクション・エディタを起動します。
「追加」をクリックして、イベントおよびそれが起動する対応するアクション・セットを指定する新しい要素を追加します。
図8-4は、Master Price ListモジュールのEditPriceList-DT.xlsx
ファイルの例を示します。ここでは、ワークシート・イベントのStartup
が、ADF表コンポーネントのDownload
アクションを起動するアクション・セットを起動します。
「OK」をクリックします。
アクション・セットでStatus
プロパティの値を指定することにより、アクション・セットの実行時にエンド・ユーザーに対してステータス・メッセージを表示できます。
ActionSet.Status
グループのプロパティのデフォルト値のいくつかは、実行時に予約済のリソース・バンドルで定義された文字列に解決するEL式です。これらのデフォルト値は、カスタムのリソース・バンドルを参照するEL式に置換できます。詳細は、10.2項「統合Excelワークブックでのリソース・バンドルの使用」を参照してください。
アクション・コレクション・エディタを使用して、ActionSet.Status
プロパティの値を構成します。
ステータス・メッセージを表示する手順:
統合Excelワークブックを開きます。
アクション・コレクション・エディタを開きます。
次の表に従って、ActionSet.Status
プロパティ・グループのプロパティの値を設定します。
表8-1 ActionSet.Statusプロパティ・グループ
プロパティ | 入力または選択する値 |
---|---|
|
|
|
実行時に表示するステータス・メッセージに解決するEL式または文字列。たとえば、Master Price Listモジュールの
|
Title |
実行時に表示するステータス・メッセージのタイトルに解決するEL式または文字列。たとえば、Master Price Listモジュールの
|
プロパティ |
入力または選択する値 |
図8-5は、実行時にSearchのラベルが付けられたMaster Price ListモジュールのEditPriceList-DT.xlsx
ワークブックにあるSearch ADFボタン・コンポーネントのActionSet.Status
プロパティ・グループに構成された値を示します。
ActionSet.Status
プロパティ・グループの詳細は、表A-14のStatus
のエントリを参照してください。
「OK」をクリックします。
アクション・セットが起動されると、ActionSet.Status
プロパティがステータス・メッセージを表示するように構成されていれば、ステータス・メッセージが表示されます。図8-6は、EditPriceList-DT.xlsx
ワークブックのSearchボタンに構成されているアクション・セットが実行される際、実行時に表示されるステータス・メッセージを示します。
エンド・ユーザーに対して、アクション・セットの操作が正常に完了したか、または失敗したかを通知するアラート・メッセージを表示できます。たとえば、アクション・セットのすべてのアクションが成功したときや、少なくとも1つは失敗があった場合にメッセージを表示できます。この動作は、ActionSet.Alert
プロパティ・グループで構成します。
注意: エンド・ユーザーがアクション・セットの実行をキャンセルした場合、アラート・メッセージは表示されません。For たとえば、ポップアップ・ダイアログのWebページを起動するアクション・セットが実行を完了した後に表示されるようにアラート・メッセージを構成します。実行時には、エンド・ユーザーは、ポップアップ・ダイアログをホストするExcel Webブラウザ・コントロールの「閉じる」ボタンを使用してポップアップ・ダイアログを閉じることにより、アクション・セットの実行をキャンセルします。このシナリオでは、アラート・メッセージは表示されません。Webページの表示の詳細は、8.4項「Fusion WebアプリケーションからのWebページの表示」を参照してください。 |
ActionSet.Alert
グループのプロパティのデフォルト値の多くは、実行時に予約済のリソース・バンドルで定義された文字列に解決するEL式です。これらのデフォルト値は、カスタムのリソース・バンドルを参照するEL式に置換できます。詳細は、10.2項「統合Excelワークブックでのリソース・バンドルの使用」を参照してください。
アクション・コレクション・エディタを使用して、ActionSet.Alert
プロパティ・グループの値を構成します。
アクション・セットにアラートを追加する手順:
統合Excelワークブックを開きます。
アクション・コレクション・エディタを開きます。
表8-2に従って、ActionSet.Alert
プロパティ・グループのプロパティの値を設定します。
表8-2 ActionSet.Alertプロパティ・グループ
プロパティ | 入力または選択する値 |
---|---|
|
ドロップダウン・リストから |
アクション・セットの実行時にエラーが発生した場合に、ダイアログ・ボックスに表示されるメッセージに評価されるEL式または文字列を指定します。たとえば、Master Price Listモジュールの
Upload to Serverボタンは、アクション・セットを起動します。これは、続いてADF表コンポーネントの |
|
|
ダイアログの「OK」ボタンに表示されるメッセージに評価されるEL式を指定します。デフォルトのEL式は次のとおりです。
|
アクション・セットの実行時にエラーが発生しなかった場合に、ダイアログに表示されるメッセージに評価されるEL式を指定します。たとえば、Master Price Listモジュールの
|
図8-7は、Master Price ListモジュールのEditPriceList-DT.xlsx
ワークブックでADFボタン・コンポーネントのActionSet.Alert
プロパティ・グループに構成された値を示します。このADFボタン・コンポーネントには、実行時にUpload to Serverというラベルが付けられます。
「OK」をクリックします。
図8-8は、Upload to Serverというラベルの付いたADFボタン・コンポーネントによって起動されるアクション・セットが正常に実行を完了したときに実行時に表示されるアラート・メッセージを示します。
アクション・セットのActionOptions
プロパティの値を指定して、次のイベントのいずれかが発生したときのアクション・セットの動作を決定します。
アクション・セットのアクションの失敗
アクション・セットのすべてのアクションが正常に完了
これらのエディタの起動方法、またはADFコンポーネントのプロパティ・インスペクタの詳細は、第5章「開発ツールの利用」を参照してください。アクション・セットのプロパティの詳細は、表A-13を参照してください。
アクション・セットのエラー処理を構成する手順:
統合Excelワークブックを開きます。
適切なエディタまたはプロパティ・インスペクタを開いて、次の表に従ってアクション・セットのActionOptions
プロパティの値を構成します。
表8-3 ActionOptionsプロパティ
設定するプロパティ | アクション |
---|---|
|
|
アクション・セットが正常に完了しなかった場合に起動するADFモデル・アクションを指定します。たとえば、アクション・セットの起動が失敗したときに、加えられた変更をロールバックするADFモデル・アクションを指定できます。
|
|
アクション・セットが正常に完了した場合に起動するADFモデル・アクションを指定します。たとえば、
|
「OK」をクリックします。
確認アクションはエンド・ユーザーに対して、Confirmationアクションのプロパティで指定されたタイトルとプロンプトのメッセージを表示する簡単なメッセージ・ダイアログを提供します。
アクション・セットの実行は、エンド・ユーザーが提供されたボタンをクリックするまで一時停止します。ユーザーが「OK」をクリックすると、アクション・セットはアクション・セットの残りのアクションを続けます。ユーザーが「取消」をクリックすると、その時点でアクション・セットは中止され、残りのアクションは起動されません。エラーや成功がないため、FailureActionID
アクションやSuccessActionID
アクションは起動されません。
Confirmationアクションをコンポーネントから起動する手順:
統合Excelワークブックを開きます。
アクション・コレクション・エディタを開き、ここの説明にあるように「追加」ボタンの下向き矢印をクリックしてドロップダウン・リストを開きます。
「確認」を選択して、次のリストにあるようにプロパティを構成します。
CancelButtonLabel
ダイアログの「取消」ボタンに表示されるメッセージに評価されるEL式または文字列を指定します。デフォルトのEL式は次のとおりです。
#{_ADFDIres['DIALOGS_CANCEL_BUTTON_LABEL']}
OKButtonLabel
ダイアログの「OK」ボタンに表示されるメッセージに評価されるEL式または文字列を指定します。デフォルトのEL式は次のとおりです。
#{_ADFDIres['DIALOGS_OK_BUTTON_LABEL']}
Prompt
ダイアログのプロンプトとして表示されるメッセージに評価されるEL式または文字列を指定します。デフォルトのEL式は次のとおりです。
#{_ADFDIres['DIALOGS_ACTION_CONFIRM_PROMPT']}
Title
実行時に表示する確認ダイアログのタイトルに解決されるEL式または文字列を指定します。デフォルトのEL式は次のとおりです。
#{_ADFDIres['DIALOGS_ACTION_TITLE']}
オプションで、構成するアクションの目的に関するコメントをAnnotation
プロパティに入力します。このプロパティに設定する値には、機能的な影響はありません。
「OK」をクリックします。
図8-9は、アクション・コレクション・エディタとDeleteボタンのデフォルトの属性値を示します。
一度アクション・セットが起動されると、ユーザーに対して確認のプロンプトが表示されます。ユーザーが「OK」をクリックすると、次のアクションが実行され、「取消」をクリックすると、アクション・セットの実行はエラーなしに終了します。
注意: ユーザーがConfirmationアクションをキャンセルする場合、FailureActionID バインディングは実行されません。 |
図8-10は、デフォルトの確認ダイアログと「OK」ボタン、および「取消」ボタンを示します。
Oracle ADFの機能を起動するアイテムを持つExcelリボンの実行時リボン・タブを、統合Excelワークブックで構成できます。実行時リボン・タブ・グループでVisible
ワークブック・プロパティをTrue
に設定すると、このタブが実行時に表示されます。Title
プロパティは、エンド・ユーザーに対して実行時に表示されるタブのタイトルを決定します。図8-11に示すように、デフォルトのタイトルはMyWorkbookです。
実行時にはタブがリボンの最後のタブとして表示され、Figure 図8-12に示すように、構成したすべてのコマンドが様々なタブのグループとして表示されます。
図8-13は、EditPriceList.xlsx
の実行時のリボン・タブと、ワークシート用に構成された2つのコマンドを示します。実行時には、コマンドはワークブックのコマンドを起動するアイテム、現在のワークシートのコマンドを起動するアイテム、すべてのデータをクリアするコマンド・グループ、ADFデスクトップ統合のバージョン情報を表示するコマンド・ワークグループの4つのグループに分類されます。
エンド・ユーザーがLogin
やLogout
などのワークブック・アクションを起動できるようにするコマンドが実行時リボン・タブに含まれるように、ワークブックのプロパティにあるWorkbook Commands
プロパティを構成します。ワークシートのプロパティにあるRibbon Commands
プロパティを構成して、ユーザーがアクション・セットを起動できるようにするアイテムがADFデスクトップ統合のタブに含まれるようにします。ワークシートのコマンド・アイテムは、ワークシートがアクティブな場合に表示されます。ワークブック・コマンドを削除すると、そのワークブックの実行時タブに表示されなくなります。あるグループのすべてのコマンドを削除すると、そのワークブックがアクティブなときはそのグループは表示されません。
図8-14は、SelectActionSet
アクション・セットを起動するワークシートのアクションが表示される、実行時のワークシート・グループを示します。
実行時リボン・タブにワークブック・コマンド・ボタンを定義するには、いくつかのワークブック・プロパティを構成します。次の手順は、ワークブックのアクション、Login
を例に使用して、ワークブック・グループのアイテムを作成または削除する方法を示します。
ワークブックのコマンド・ボタンを定義する手順:
統合Excelワークブックを開きます。
ADFデスクトップ統合の作業ウィンドウで、「ワークブック・プロパティ」をクリックします。
ワークブック・コマンドをクリックして、WorkbookMenuItem[]
配列の横にある省略記号ボタン(...)をクリックし、図8-15に示すようなダイアログを表示します。
「追加」をクリックして、次のようにワークブックのコマンド・ボタンのプロパティの値を指定します。
Method
ワークブック・コマンド・ボタンが起動するワークブック・アクションを指定します。
Label
実行時にラベルとして表示される値を入力フィールドに入力します。あるいは、省略記号ボタン(...)をクリックして式ビルダーを起動し、実行時にリソース・バンドルの文字列に解決されるEL式を記述します。
ラベルに表示される実行時の値は1024文字を超えることはできません。
リソース・バンドルの使用の詳細は、10.2項「統合Excelワークブックでのリソース・バンドルの使用」を参照してください。
ラベルの詳細は、9.4項「統合Excelワークブックでのラベルの使用」を参照してください。
注意: ワークブック・コレクション・エディタでのワークブック・コマンドの順序は、実行時には無視されます。ワークブック・レベルのコマンドの順序とグループ化は、常に同じです。 |
ワークシートのコマンドを定義するには、プロパティ・インスペクタを使用してワークシートのプロパティを構成します。デフォルトでは、ワークシートのプロパティでワークシート・グループに定義されるコマンド・ボタンはありません。ワークシートのプロパティのRibbon Commands
プロパティで参照されるリストにメンバーを追加します。
注意: コマンド・ボタンを表示するには、Runtime Ribbon Tab.Visibleワークブック・プロパティをTRUEに設定してください。Runtime Ribbon Tab.VisibleがFALSEに設定されていると、コマンド・ボタンは表示されません。ワークブックのプロパティの詳細は、表A-18を参照してください。 |
ワークシートのコマンド・ボタンを定義する手順:
統合Excelワークブックを開きます。
ADFデスクトップ統合の作業ウィンドウで、「ワークシート・プロパティ」をクリックします。
Ribbon Commands
プロパティの入力フィールドの横にある省略記号ボタン(...)をクリックして、図8-16のようにエディタを起動します。図8-14は、実行時のコマンドがどのように表示されるかを示します。
「追加」をクリックして、コレクション・エディタの「メンバー」リストに新しいリボン・ボタンを追加します。
「SelectActionSet」
のプロパティを構成して、リボン・ボタンが起動するアクションのタイプを指定します。
注意: 実行時には、ワークシート・コマンドはワークシート・コレクション・エディタで定義された順序で表示されます。 |
アクション・セットでDialog
アクションを構成して、Excelワークブックと統合するFusion Webアプリケーションからのページを表示します。これらのページによって、統合Excelワークブックに追加の機能が提供されます。これには、Fusion Webアプリケーションと対話する検索ダイアログや表示内容の選択ダイアログなどの機能があります。アップロード・オプションも構成できます。
アクション・セットのDialog
アクションは、次の2つのタイプのダイアログのどちらかを表示するように構成できます。
コンポーネントのアクション・セットのプロパティDialog.Target
(Popup
またはTaskPane
)は、Webページがレンダリングされる場所を決定します。
Dialog.Page
プロパティの値は、アクションの起動時に表示されるWebページを指定します。有効な値は、WebAppRoot
プロパティの値の相対URL、または絶対URLです。たとえば、Master Price ListモジュールのEditPriceList-DT.xlsx
ワークブックは、ユーザーが実行時に「拡張検索」ボタンをクリックすると起動するページの値として次の相対URLを指定します。
/faces/secured/excelAdvSearch.jspx
次のような絶対URLも有効です。
http://www.oracle.com/technetwork/middleware/index.html
注意: リスト・ボックスやドロップダウン・リストのようなHTML<select> コンポーネントは、ページがDialog アクションを通じて表示される場合、z-order 構成には従いません。.NET Webブラウザ・コントロールでは、レイヤー化された重複するコンポーネントを持つWebページ上で、<select> コンポーネントが他のコンポーネントの上に表示されることがあります。 |
アクション・セットのDialog
アクションを構成して、ExcelのWebブラウザ・コントロールによりホストされているモデル・ポップアップ・ダイアログのFusion WebアプリケーションからWebページを起動できます。この機能は、たとえばFusion Webアプリケーションからのページにより表示される値を、統合Excelワークブックに入力できるようにする機能をエンド・ユーザーに提供します。
アクション・セットが起動するWebページは、大/小文字区別のID属性がADFdi_CloseWindow
に設定されている予約済HTMLドキュメント・オブジェクト・モデル(DOM)要素(span要素など)を含む必要があります。 例8-1は、Master Price ListモジュールのexcelAdvSearch.jspx
ページにあるspan要素の値を、f:verbatim
タグのrendered
プロパティを使用して自動的に設定する方法を示します。
例8-1 HTMLドキュメント・オブジェクト・モデルのSpan要素の使用
<f:verbatim rendered="#{requestScope.searchAction eq 'search'}"> <span id="ADFdi_CloseWindow">Continue</span> </f:verbatim> <f:verbatim rendered="#{requestScope.searchAction eq 'cancel'}"> <span id="ADFdi_CloseWindow">Abort</span> </f:verbatim>
図8-17は、EditPriceList-DT.xlsx
ワークブックのブラウザ・コントロールによりホストされるexcelAdvSearch.jspx
ページを示します。
例8-1に示すように、f:verbatim
タグのrendered
プロパティが使用できない場合には、次のようにしなければならない場合があります。
Dialog
アクションの結果の値をプロパティとして公開するバッキングBeanを作成します。
アクション・リスナーを使用して、バッキングBeanおよびspan要素のEL式を起動し、ADFdi_CloseWindow
の値をBeanプロパティの値に設定します。
どちらの方法を使用する場合でも、ADFデスクトップ統合はADFdi_CloseWindow
の値を監視して、ポップアップ・ダイアログをいつ閉じるかを決定します。ADFdi_CloseWindow
が参照するものによって、次のように動作が異なります。
空白の文字列を参照する場合、または文字列が存在しない場合は、ポップアップ・ダイアログは開いたままになります。
"Continue
"を参照する場合、ポップアップ・ダイアログが閉じて、アクション・セットが次のアクションを起動します。
次の例は、Continue
"の値が割り当てられたADFdi_CloseWindow
を示します。
var closeWindowSpan = document.getElementById("ADFdi_CloseWindow");
closeWindowSpan.innerHTML = "Continue";
他のなんらかの文字列の値を参照する場合、ポップアップ・ダイアログは開いたままになります。
Dialog
アクションのTarget
プロパティをPopup
に設定して、ExcelのWebブラウザ・コントロールによりホストされるモーダルなポップアップ・ダイアログでFusion WebアプリケーションからのWebページを表示します。モーダルなポップアップ・ダイアログにWebページを表示する場合は、Excelの作業ウィンドウにWebページを表示するときとは異なります。これは、アクション・セットが起動するDialog
アクションは、ユーザーからの入力があるまで実行を続けられないためです。ポップアップ・ダイアログが開いているときに、エンド・ユーザーは統合Excelワークブックの他の部分と対話することはできません。ポップアップ・ダイアログがフォーカスを保持します。
エンド・ユーザーは、ブラウザ・コントロールを閉じたり、ADFデスクトップ統合がブラウザ・コントロールを閉じるまでは、ブラウザ・コントロール内でFusion Webアプリケーションからの複数のWebページ間を移動できます。
エンド・ユーザーがデータ・コントロールに対して行う変更をポップアップ・ダイアログを通じてすぐに同期するには、アクション・セットの次のアクションをDialog
アクションの後に指定して、変更されたすべてのバインディングをワークシート(DownSync
ワークシート・アクションを使用)またはADF表コンポーネント(Download
アクションを使用)にダウンロードします。このシナリオでは、"Continue"
をADFdi_CloseWindow
の値として指定することが前提です。
アクションのDialog.Target
プロパティをTaskPane
に設定して、ADFデスクトップ統合の作業ウィンドウのDialog.Page
プロパティで指定したWebページを表示します。ポップアップ・大ログでWebページを表示するのとは対照的に、作業ウィンドウでWebページを表示すると、Webページを表示する間はアクション・セットでアクションの実行を継続できます。エンド・ユーザーは、Webページが表示されている間、統合Excelワークブックの他の部分にアクセスして対話することができます。
Dialog
アクションのTarget
プロパティをTaskPane
に設定すると、ADFデスクトップ統合はADFdi_CloseWindow
の値(および他の要素)を無視します。
Dialog
アクションを起動するアクション・セットで追加のアクションを指定すれば、統合Excelワークブックに含まれるデータを、Fusion Webアプリケーションと同期した状態にできます。Dialog
アクションのShareFrame
プロパティを設定することにより、Fusion Webアプリケーション・ページと統合Excelワークシートの両方が同じデータ・コントロール・フレームを使用するよう徹底することができます。
注意:
|
統合ExcelワークブックとFusion Webアプリケーションの同期
エンド・ユーザーがFusion Webアプリケーションからのページを使用する際に、統合ExcelワークブックとFusion Webアプリケーションが同期された状態のままとなるように、Dialog
アクションを起動するアクション・セットを次のように構成します。
Dialog
アクションを起動する前に、統合ExcelワークブックからFusion Webアプリケーションに変更を送信します。
RowUpSync
ワークシート・アクションを起動して、ADF表コンポーネントの現在の行からの変更を同期します。
Dialog
アクションを起動した後、Fusion Webアプリケーションから統合Excelワークブックに変更を送信します。
RowDownSync
ワークシート・アクションを起動して、Fusion WebアプリケーションからADF表コンポーネントの現在の行へ変更を送信します。
DoubleClickActionSet
については、アクション・セットを実行した後で、サーバー・サイド・モデルがアクション・セットの実行前と同じ状態にあることを確認してください。ほとんどの場合は、アクション・セットの開始時には保留のコミットされていない変更はないため、DoubleClickActionSet
の終了ごとにすべてのコミットされていない変更をロールバックするだけで十分です。
統合ExcelワークブックとFusion Webアプリケーション間でのデータ同期の詳細は、第15章「切断されたモードでの複数のWebセッションにおける統合Excelワークブックの使用」を参照してください。ワークシート・アクションとADF表コンポーネント・アクションの詳細は、付録A「ADFデスクトップ統合コンポーネントのプロパティとアクション」を参照してください。
統合ExcelワークシートとFusion Webアプリケーション・ページ間のデータ・コントロール・フレームの共有
Fusion Webアプリケーションと統合Excelワークブックは、どちらもデータ・コントロール・フレームを使用して、トランザクションとビュー・オブジェクトの状態、および拡張機能によってページ定義ファイルで公開されるバインディングを管理します。Fusion Webアプリケーションのページを統合Excelワークシートから起動すると、ページを起動するDialog
アクションのShareFrame
プロパティをTrue
に設定することで、ページと統合Excelワークシートが両方とも同じデータ・コントロール・フレームを使用するように徹底できます。
Dialog
アクションのPage
プロパティで、Dialog
アクションが起動するページを指定します。Dialog
アクションが絶対URLやFusion Webアプリケーションの一部でないページを起動する場合、ShareFrame
がTrue
に設定されていると、ADFデスクトップ統合はShareFrame
の値を無視します。
次のシナリオではShareFrame
をFalse
に設定します。
アクション・セットのDialog.Page
プロパティは、絶対URLまたはFusion Webアプリケーションの一部でないページを参照します。
アクション・セットのDialog.Page
プロパティは、Fusion Webアプリケーションの一部であるページを参照しますが、統合Excelワークシートと情報を共有する必要はありません。たとえば、オンライン・ヘルプの情報を表示するページなどです。
Fusion Webアプリケーションのデータ・コントロール・フレームの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「データ・コントロール・インスタンスの共有」の項を参照してください。
ADFデスクトップ統合フレーム共有に対するFusion Webアプリケーションの構成
ADFデスクトップ統合のテクノロジ・スコープをFusion Webアプリケーションに追加する際、アプリケーションが自動的に構成されて、ADFデスクトップ統合のフレーム共有がサポートされます。フレーム共有によって、統合Excelワークブックの各ワークシートが専用のDataControl
フレームを使用できます。それぞれのワークシートから起動されるダイアログで表示されるWebページは、統合Excelワークシートと同じDataControl
フレームを共有できます。
Fusion Webアプリケーションがフレーム共有をサポートしていることを検証する手順:
JDeveloperでFusion Webアプリケーション・プロジェクトを開きます。
アプリケーション・ナビゲータで、「アプリケーション・リソース」ウィンドウを展開します。
「ディスクリプタ」 > ADF META-INFフォルダにあるadf-config.xml
ファイルを開きます。
「ソース」タブをクリックして、ソース・エディタを開きます。
次のadf-desktopintegration-servlet-config
要素が、</adf-config>
タブの前のファイルにあることを確認します。
<adf-desktopintegration-servlet-config xmlns="http://xmlns.oracle.com/adf/desktopintegration/servlet/config"> <controller-state-manager-class> oracle.adf.desktopintegration.controller.impl.ADFcControllerStateManager </controller-state-manager-class> </adf-desktopintegration-servlet-config>
adf-config.xm
lファイルを保存して、JDeveloperを閉じます。
ADF表コンポーネントの列のDoubleClickActionSet
を構成して、エンド・ユーザーがADF表コンポーネントの列に挿入する値を選択するピッカー・ダイアログをレンダリングするFusion Webアプリケーションを起動できます。
この機能は、エンド・ユーザーがADF表コンポーネントに入力できる値を制限する場合に役立ちます。たとえば、エラーが発生しないようにエンド・ユーザーが手動で値を変更できないようにするため、実行時のADF表コンポーネント列をExcelワークシートで読取り専用にしたい場合などです。Fusion Webアプリケーションによってレンダリングされたピッカー・ダイアログを起動すると、エンド・ユーザーは正しくないデータを入力することなくADF表コンポーネントの値を変更できるようになります。
DoubleClickActionSet
を構成するほか、次のようにする場合は、ADF表コンポーネントのRowData.CachedAttributes
を属性バインディングの値を参照するように正しく構成します。
統合ExcelワークブックのADF表コンポーネントに表示したくないFusion Webアプリケーションのページの値を、エンド・ユーザーが変更可能にする場合。
ADF表コンポーネントの列を統合Excelワークブックで読取り専用にする場合。
1つ以上のユーザー・セッションを通じて、エンド・ユーザーには表示されないが、ピッカー・ダイアログで変更するADF表コンポーネントのデータをキャッシュする場合。
たとえば、ADF表コンポーネントではエンド・ユーザーに製品名のリストが表示されます。ピッカー・ダイアログは起動されて、ADF表コンポーネントで製品名のリストをリフレッシュし、プロセスの一環として、製品IDの値を設定します。このシナリオでは、ADF表コンポーネントのRowData.CachedAttributes
プロパティの製品IDに属性バインディング値を指定します。アクション・セットが実行された後、ADF表コンポーネントはリフレッシュされた製品名のリストをExcelワークシートの行に表示し、そのRowData.CachedAttributes
プロパティにある関連の製品IDを参照します。
ピッカー・ダイアログへの値の移入の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「データ・バインドされた選択リストとシャトルの作成」の章を参照してください。
ADF表コンポーネントからピッカー・ダイアログを起動する手順:
統合Excelワークブックを開きます。
ADF表コンポーネントを配置するExcelワークシートのセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックして、プロパティ・インスペクタを表示します。
ADF表コンポーネントのRowData.CachedAttributes
プロパティを構成して、属性バインディング値を参照します。
Columnsの入力フィールドの横にある省略記号ボタン(...)をクリックして、TableColumnコレクション・エディタを表示します。
「メンバー」・リストで、エンド・ユーザーが実行時にピッカー・ダイアログを起動する元の列を選択します。
表8-4の説明に従って、UpdateComponent
プロパティのDoubleClickActionSet
を構成します。
表8-4 DoubleClickActionSetプロパティ
追加するアクション | アクション |
---|---|
|
(オプション)エンド・ユーザーがExcelワークシートのADF表コンポーネントに新しく作成された行から |
|
ADF表コンポーネントの |
|
|
|
ADF表コンポーネントの |
「OK」をクリックします。
ADF入力テキスト・コンポーネントとADFボタン・コンポーネントを使用して、統合Excelワークブックでフォームを作成できます。エンド・ユーザーは、作成されたフォームを使用して、データや情報の問合せを挿入できます。この項では後者の例を使用して、フォームの作成方法を説明します。
エンド・ユーザーはADF入力テキスト・コンポーネントに検索語句を入力し、ADFボタン・コンポーネントをクリックして一致する結果を取得します。検索処理でエンド・ユーザーにより洗練されたユーザー・インタフェースを提示するために、Fusion Webアプリケーションから検索フォームを起動できます。これらの検索処理の結果は、統合ExcelワークブックのADF表コンポーネントまたはADF読取り専用コンポーネントにダウンロードできます。
図8-18は、Master Price ListモジュールのEditPriceList-DT.xlsx
ワークブックが次の場合に検索オプションの構成に使用する、Oracle ADFコンポーネントの設計時のビューを示します。
ADFラベル・コンポーネントが単純検索フォームで使用されている
ADF入力テキスト・コンポーネントが単純検索フォームで使用されている
ADFボタン・コンポーネントが単純検索フォームで使用されている
ADFボタン・コンポーネントが拡張検索フォームを起動するために使用されている
注意: ADFデスクトップ統合は、ページ定義ファイルでのFindMode 属性の使用はサポートしていません。FindMode 属性の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「pageNamePageDef.xml」の項を参照してください。 |
エンド・ユーザーが検索語句を入力できるように、ADF入力テキスト・コンポーネントを挿入して構成します。ADFボタン・コンポーネントの挿入およびアクション・セットの構成は、次の目的で実行します。
エンド・ユーザーがADF入力テキスト・コンポーネントに入力する値の取得。
値の問合せ。
結果を統合ExcelワークブックのADF表コンポーネントまたはADF読取り専用表コンポーネントにダウンロード。
統合Excelワークブックでの単純検索フォームの作成の手順:
統合Excelワークブックを開きます。
ユーザーが入力する検索語句を属性バインディングに割り当てるように、ADF入力テキスト・コンポーネントを構成します。
図8-19は、Master Price ListモジュールのEditPriceList-DT.xlsx
ワークブックの例を示します。ここでは、ADF入力テキスト・コンポーネントはユーザーが入力した値をsearchTerm
属性バインディングに割り当てます。可変イテレータの一部であるsearchTerm
は、続いてNamedData
引数としてexecuteSimpleProductQuery
メソッドに渡されます。
オプションで、ADF入力テキスト・コンポーネントにスタイルを割り当てて、セルに検索語句を入力できることをエンド・ユーザーに示します。
オプションで、隣接するセルにADFラベル・コンポーネントを作成し、手順2で作成したADF入力テキスト・コンポーネントに検索語句を入力できることをエンド・ユーザーに示します。
ExcelワークシートにADFボタン・コンポーネントを作成します。
ADFボタン・コンポーネントのLabel
プロパティを、実行時に文字列を表示するようにボタンをクリックすれば検索処理を実行できることをエンド・ユーザーに示します。
アクション・コレクション・エディタを開いて、ADFボタン・コンポーネントのClickActionSet
プロパティのアクションの配列(Action[]Array
)構成します。表8-5は、順番に起動するアクションについて説明します。
表8-5 ADFボタン・コンポーネントのClickActionSetプロパティ
追加するアクション | アクション |
---|---|
|
|
|
手順3で指定した属性バインディングにバインドされたADFモデル・アクションを起動します。ADFモデル・アクションは、属性バインディングによって参照されるエンド・ユーザーの検索語句に対して問合せを実行します。
|
|
|
|
ADF表コンポーネントまたはADF読取り専用表コンポーネントから |
「OK」をクリックします。
図8-20は、Master Price ListモジュールのEditPriceList-DT.xlsx
ワークブックからの例を示します。ここでは、ADFボタン・コンポーネントが、エンド・ユーザーがADF入力テキスト・コンポーネントに入力した検索語句を使用して、executeSimpleProductQuery
アクション・バインディングを起動します。
ADFボタン・コンポーネントを使用して、エンド・ユーザーに対して検索フォームを表示するFusion Webアプリケーションからのページを起動します。ADFボタン・コンポーネントのアクション・セットを構成して、検索処理の検索結果が統合Excelワークブックにダウンロードされるように、ADF表コンポーネントまたはADF読取り専用コンポーネントについてDownload
アクションを起動します。
Fusion Webアプリケーションでの検索フォームの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「ADFデータ・バインド検索フォームの作成」の章を参照してください。
統合Excelワークブックでの拡張検索フォームの作成の手順:
統合Excelワークブックを開きます。
ExcelワークシートにADFボタン・コンポーネントを作成します。
ADFボタン・コンポーネントのLabel
プロパティを、実行時に文字列を表示するようにボタンをクリックすれば検索処理を実行できることをエンド・ユーザーに示します。
アクション・コレクション・エディタを使用して、ADFボタン・コンポーネントのClickActionSet
プロパティのアクションの配列(Action[]Array
)構成します。表8-6は、順番に起動するアクションについて説明します。
表8-6 拡張検索フォームを起動するアクション
追加するアクション | アクション |
---|---|
|
検索フォームを含むFusion Webアプリケーションからのページを表示します。Fusion Webアプリケーションからのページを表示する詳細は、8.4項「Fusion WebアプリケーションからのWebページの表示」を参照してください。 |
|
ADF表コンポーネントまたはADF読取り専用表コンポーネントから |
「OK」をクリックします。
図8-21は、Master Price ListモジュールのEditPriceList-DT.xlsx
ワークブックからの例を示します。ここでは、ADFボタン・コンポーネントがExecute
アクション・バインディングを起動して、エンド・ユーザーがMaster Price Listのモジュール検索ページ(excelAdvSearch.jspx
)で指定した値を取得します。ADF表コンポーネントのDownload
アクションは、返された値を統合Excelワークブックをダウンロードします。
第6章「ADFデスクトップ統合フォーム・タイプ・コンポーネントの使用」 の説明にあるADFデスクトップ統合コンポーネントを使用して、統合Excelワークブックでフォームを作成できます。これらのコンポーネントは、エンド・ユーザーに対して、表タイプ・コンポーネントにより提供される機能を使用してFusion Webアプリケーションからのデータ行をダウンロードするのでなく、個々のフィールドを表示、閲覧する機能を提供するときに役立ちます。次のコンポーネントを使用してフォームを作成します。
ADFボタン
このコンポーネントを使用して、ClickActionSet
を起動できるボタンをエンド・ユーザーに提供します。図8-22はSearchというラベルの付いたADFボタンを示し、これはエンド・ユーザーがADF入力テキスト・コンポーネントに入力した検索語句を使用して、検索処理を起動します。
ADF入力テキスト
このコンポーネントを使用して、バインディングの現在の値を表示される読取り/書込みフィールドをエンド・ユーザーに提供します。また、このコンポーネントは、図8-22に示すように値の入力にも使用できます。つまり、ユーザーがADF入力テキスト・コンポーネントに検索語句を入力します。
ADF出力テキスト
このコンポーネントを使用して、バインディングの現在の値を表示される読取り専用フィールドをエンド・ユーザーに提供します。
ADF値リスト
このコンポーネントを使用して、ユーザーがリスト・バインディングから値を選択できるドロップダウン・メニューをエンド・ユーザーに提供します。
ADFラベル
このコンポーネントを使用して、作成するフォームの使用方法の説明や他の情報をエンド・ユーザーに提供します。たとえば、Master Price ListモジュールのEditPriceList-DT.xlsx
ワークブックは、ADFラベル・コンポーネントを使用して、エンド・ユーザーに説明および検索語句の一致項目数を表示します。図8-22は、これらのコンポーネントの実行時の値を示します。テキストSearch For:
は、検索文字列を入力するようエンド・ユーザーに指示するラベルで、8 records found
ラベルに検索文字列に一致するレコード件数が表示されます。
ADFデスクトップ統合の作業ウィンドウを使用して、必要なコンポーネントをワークシートに挿入します。
統合Excelワークブックでのフォームの作成の手順:
完了したフォームにどのADFフォーム・コンポーネントが必要かを決定し、それを統合Excelワークシートに挿入します。
これらのコンポーネントの詳細は、第6章「ADFデスクトップ統合フォーム・タイプ・コンポーネントの使用」を参照してください。
挿入するコンポーネントのレイアウトと外観を構成します。
コンポーネントの外観の構成の詳細は、第9章「統合Excelワークブックの外観の構成」を参照してください。
フォームをテストします。
統合Excelワークブックのテストの詳細は、第13章「統合Excelワークブックのテスト」を参照してください。
ADFデスクトップ統合は、統合Excelワークブックでの値リストの作成に使用する次のコンポーネントを提供します。
ADF値リスト
Excelワークシートで値リストを作成するときに、このコンポーネントのプロパティを構成します。
TreeNodeListサブコンポーネント
ADF表コンポーネント列で値リストを作成するときに、このコンポーネントのプロパティを構成します。
これら2つのコンポーネントを使用して、統合Excelワークブックに依存値リストを作成できます。依存値リストとは、値リスト・コンポーネント(子の値リスト)で、値は別の値リスト・子(親の値リスト)によって決定されます。
サーバーサイド・リスト・バインディングを、親の値リストの選択された項目が変更になったときに、使用可能な子の値リストの項目が正しく更新されるように定義する必要があります。図8-23は、Master Price ListモジュールのAdvEditPriceList-DT.xlsx
ファイルから2つの画面を使用した例で、ここではCategory列(親の値リスト)が変わると、Sub-Category列(子の値リスト)が変更になります。
表8-7は、以前にリストしたコンポーネントを使用して作成できる依存値リストの実装と、それぞれの実装を完了するための要件を示します。
表8-7に説明する実装には、モデルドリブン・リストが必要なものがあります。モデルドリブン・リストの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「モデルドリブン・リストの作成方法」の項を参照してください。
表8-7 依存値リストの構成オプション
構成 | 要件 |
---|---|
ADF値リスト・コンポーネントを使用して、Excelワークシートで親と子の値リストの両方をレンダリングします。 |
ADF値リスト・コンポーネントの両方のインスタンスがリスト・バインディングを参照する必要があります。参照するリスト・バインディングの1つまたは両方をモデルドリブン・リストにすることができます。 両方のリスト・バインディングがモデルドリブン・リストを参照できるのは、基底にあるイテレータに少なくとも1つのデータ行がある場合のみです。実行時に基底のイテレータにデータ行がなく、エンド・ユーザーが親リスト(ADF値リスト・コンポーネントの このシナリオを回避するには、次のオプションのいずれかを選択します。
詳細は、8.8.1項「Excelワークシートでの依存値リストの作成方法」を参照してください。 |
TreeNodeListサブコンポーネントを使用して、ADF表コンポーネント列で親と子の値リストをレンダリングします。 |
親と子の値リスト(TreeNodeListサブコンポーネント)は、どちらもモデルドリブン・リストに関連付けられたツリー・バインディング属性を参照する必要があります。 詳細は、8.8.3項「ADF表コンポーネント列での依存値リストの作成方法」を参照してください。 |
TreeNodeListサブコンポーネントを使用して、ADF値リスト・コンポーネントで親の値リストを、ADF表コンポーネント列で子の値リストをそれぞれレンダリングします。 |
子の値リスト(TreeNodeListサブコンポーネント)は、モデルドリブン・リストに関連付けられたツリー・バインディング属性を参照する必要があります。親の値リスト(ADF値リスト・コンポーネント)がリスト・バインディングを参照する必要があります。 詳細は、8.8.5項「ExcelワークシートおよびADF表コンポーネント列での依存値リストの作成」を参照してください。 |
依存値リストを作成する場合は、次の点に注意してください。
DependsOnList
またはDependsOnListID
によって参照されるセルの値が変更されると、ADFデスクトップ統合は、エンド・ユーザーへの警告なしに子のコンポーネント値リストへの以前の変更をすべて上書きします。
DependsOnList
(またはDependsOnListID
)プロパティで指定されたリストがExcelワークシートのコンポーネントで参照されていないかぎり、依存値リストは機能しません。
再帰的な依存関係が定義されている場合(リストAがリストBに依存し、リストBがリストAに依存)、最初の依存関係(リストAがリストBに依存)が期待される動作をトリガーします。ADFデスクトップ統合は、他の依存関係を誤った構成と見なします。
次のようにして依存関係の連鎖を作成できます。
リストAがリストBに依存
リストBがリストCに依存
このシナリオでは、リストCの変更(祖父母の値リスト)がリストA(孫の値リスト)とリストB(子の値リスト)の両方を更新します。同様のシナリオを作成する場合、親の値リストの選択内容が変わったときに、孫の値リストと子の値リストがどちらも確実にリフレッシュされるようにする必要があります。孫の値リストに2つのバインド変数を指定し、ビュー属性に暗示的な依存関係を設定することにより、これを行います。もうひとつの方法は、モデルドリブン・リストが構成されているそれぞれのビュー属性間に明示的な属性の依存関係を制限することです。たとえば、属性Aが属性Bと属性Cに依存し、属性Bが属性Cに依存するように指定します。
依存値リストのキャッシュの詳細は、15.3項「切断されたモードで使用するための値リストのキャッシング」を参照してください。
ADFデスクトップ統合は、依存値リストに表示される値をキャッシュします。したがって、親リストの選択に対する依存リストの項目の値は、ADF表コンポーネントのすべての行で一貫している必要があります。
ADF値リスト・コンポーネントの2つのインスタンスを使用して、Excelワークシートで依存値リストを作成します。
親のADF値リスト・コンポーネントによって参照されるリスト・バインディングを、子のADF値リスト・コンポーネントのListOfValues.DependsOnListID
プロパティの値に指定します。
ADF値リストの詳細は、A.5項「ADF値リスト・コンポーネントのプロパティ」を参照してください。
Excelワークシートで依存値リストを作成する手順:
存在しない場合は、必要なリスト・バインディングをページ定義ファイルに追加します。
ページ定義ファイルへのバインディングの追加の詳細は、4.3項「統合Excelワークブックのページ定義ファイルの使用」を参照してください。
統合Excelワークブックを開きます。
6.6項「ADF値リスト・コンポーネントの挿入」の説明に従って、2つのADF値リスト・コンポーネントを統合Excelワークブックに挿入します。
依存値リストで親となるADF値リスト・コンポーネントのプロパティ・インスペクタを表示し、ListOfValues.ListID
プロパティの値を親となるリスト・バインディングに設定します。
依存値リストで子となるADF値リスト・コンポーネントのプロパティ・インスペクタを表示して、その値を次のように設定します。
「OK」をクリックします。
実行時にはADFデスクトップ統合は、ADF値リスト・コンポーネントの両方のインスタンスをレンダリングします。エンド・ユーザーが親の値リストから値を選択すると、選択された値によって子のリストの値リストが決まります。
図8-25は、依存値リストのStateIDが、選択されたCountryIdリスト値からの状態のみを表示する様子を示します。
TreeNodeListサブコンポーネントのインスタンスを使用して、ADF表コンポーネント列の依存値リストで両方の値リストを実行時にレンダリングします。
ツリー・バインディング属性を親のTreeNodeListサブコンポーネントのList
プロパティの値に指定します。また、ツリー・バインディング属性を子のTreeNodeListサブコンポーネントのList
プロパティに、親のTreeNodeListサブコンポーネントにより参照される同じツリー・バインディング属性をDependsOnList
プロパティの値にそれぞれ指定します。
両方のツリー・バインディング属性が、ツリー・バインディングをページ定義ファイルに追加する前に、モデルドリブン・リストに関連付けられていることを確認してください。モデルドリブン・リストの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「モデルドリブン・リストの作成方法」の項を参照してください。ページ定義ファイルへのツリー・バインディングの追加の詳細は、4.3項「統合Excelワークブックのページ定義ファイルの使用」を参照してください。
TreeNodeListサブコンポーネントの詳細は、A.6項「TreeNodeListサブコンポーネントのプロパティ」を参照してください。
ADF表コンポーネントに依存値リストを作成する手順:
統合Excelワークブックを開きます。
存在しない場合は、ADF表コンポーネントを挿入します。
詳細は、7.3項「ExcelワークシートへのADF表コンポーネントの挿入」を参照してください。
TableColumn[] Arrayの入力フィールドの横にある省略記号ボタン(...)をクリックすることにより、ADF表コンポーネントのプロパティ・インスペクタを表示して、TableColumnコレクション・エディタを起動します。
作成されない場合、「追加」をクリックして、親の値リストとなる新しい列を追加します。値リストの作成の詳細は、7.13項「ADF表コンポーネント列での値リストの作成」を参照してください。
実行時の依存値リストで子の値リストとなる新しい列を、ADF表コンポーネントに追加します。値リストの作成の詳細は、7.13項「ADF表コンポーネント列での値リストの作成」を参照してください。
親の値リストのツリー・バインディング属性を、DependsOnList
プロパティの値として指定します。
図8-26は、子のADFデスクトップ統合のツリー・ノード・コンポーネントのプロパティ・インスペクタを示し、ParentCategoryId
ツリー・バインディング属性は、親の値リストとして指定されます。
「OK」をクリックします。
実行時にはADF表コンポーネントは、TreeNodeListサブコンポーネントの両方のインスタンスを、これらのインスタンスを表示するよう構成した列にレンダリングします。エンド・ユーザーが親の値リストから値を選択すると、選択された値によって子のリストの値リストが決まります。
図8-27は、Category列の値リストでエンド・ユーザーが選択する値が、Sub-Category列の値リストに表示されるサブカテゴリの対応する値となる様子を示します。
注意: 子のリストと親のリストが同じADF表コンポーネントの列にバインドされている場合、エンド・ユーザーが親リストの選択内容を変更すると、現在の行の子のリスト項目のみが変更されます。 |
ADF値リスト・コンポーネントのインスタンスとTreeNodeListサブコンポーネントのインスタンスを使用して、親と子の値リストをレンダリングする依存値リストを作成します。
Excelワークシートの親の値リスト
ADF値リスト・コンポーネントのインスタンスは、親の値リストをExcelワークシートにレンダリングします。
ADF表コンポーネント列の子の値リスト
TreeNodeListサブコンポーネントのインスタンスは、子の値リストをADF表コンポーネント列にレンダリングします。
親のADF値リスト・コンポーネントのListID
プロパティの値として、リスト・バインディングを指定します。ツリー・バインディング属性を子のTreeNodeListサブコンポーネントのList
プロパティに、親のADF値リスト・コンポーネントによって参照される同じリスト・バインディングをDependsOnList
プロパティの値にそれぞれ指定します。
ツリー・バインディング属性が、ツリー・バインディングをページ定義ファイルに追加する前に、モデルドリブン・リストに関連付けられていることを確認してください。モデルドリブン・リストの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「モデルドリブン・リストの作成方法」の項を参照してください。ページ定義ファイルへのリストおよびツリー・バインディングの追加の詳細は、4.3項「統合Excelワークブックのページ定義ファイルの使用」を参照してください。
ADF値リスト・コンポーネントの詳細は、A.5項「ADF値リスト・コンポーネントのプロパティ」を参照してください。TreeNodeListサブコンポーネントの詳細は、A.6項「TreeNodeListサブコンポーネントのプロパティ」を参照してください。
ExcelワークシートとADF表コンポーネント列に依存値リストを作成する手順:
統合Excelワークブックを開きます。
6.6項「ADF値リスト・コンポーネントの挿入」の説明に従って、ADF値リスト・コンポーネントを統合Excelワークブックに挿入します。
ADF値リスト・コンポーネントのプロパティ・インスペクタを表示し、ListID
プロパティの値を、依存値リストで親の値リストとなるリスト・バインディングに設定します。
「OK」をクリックします。
TableColumn[] Arrayの入力フィールドの横にある省略記号ボタン(...)をクリックすることにより、ADF表コンポーネントのプロパティ・インスペクタを表示して、TableColumnコレクション・エディタを起動します。
「追加」をクリックして、実行時の依存値リストで子の値リストとなる新しい列をADF表コンポーネントに追加します。
InsertComponentの入力フィールドの横にある省略記号ボタン(...)をクリックして、挿入操作の実行時の値リストを構成します。
UpdateComponentの入力フィールドの横にある省略記号ボタン(...)をクリックして、更新操作とダウンロード操作の実行時の値リストを構成します。
両方のオプションでも、作成するサブコンポーネントの選択ダイアログが表示されます。
TreeNodeListを選択して、「OK」をクリックします。
手順7で選択したプロパティを展開して、次のように値を構成します。
3でADF値リスト・コンポーネントのListID
プロパティの値に指定したものと同じリスト・バインディングを、DependsOnList
プロパティの値として選択します。
List
プロパティのモデルドリブン・リストに関連付けられたツリー・バインディング属性を選択します。
必要に応じてReadOnly
プロパティを構成します。
「OK」をクリックします。
図8-28は、子のADFデスクトップ統合のツリー・ノード・コンポーネントのプロパティ・インスペクタを示し、countryList
リスト・バインディングは、親の値リストとして指定されます。
実行時にはADF値リスト・コンポーネントは親の値リストをレンダリングし、ADF表コンポーネントは子の値リストをTreeNodeListサブコンポーネントを表示するよう構成した列にレンダリングします。エンド・ユーザーが親の値リストから値を選択すると、選択された値によって子のリストの値リストが決まります。
図8-29は、エンド・ユーザーがCountryId値リストで選択する値によって、ADF表コンポーネントのStateId列に表示される値リストが決まる様子を示します。
注意: 親のリストがワークシートのセルにバインドされて、子のリストがADF表コンポーネント列にバインドされている場合、エンド・ユーザーが親リストの選択内容を変更すると、表のすべての行に対して子のリスト項目が更新されます。 |
EL式を使用して、ADFコンポーネントの値としてExcel式を生成できます。たとえば、EL式でHYPERLINK
関数を使用できます。EL式でExcel HYPERLINK
関数を使用する場合、ADF出力テキスト・コンポーネントなどのOracle ADFコンポーネントを使用して、実行時にハイパーリンクを表示するには、HYPERLINK
関数をExcelのT
関数内に囲む必要があります。
ADFデスクトップ統合はExcelの式を認識するため、HYPERLINK
関数を囲む必要があります。これを回避するには、HYERLINK
関数の回りにT
関数を配置して、HYPERLINK
関数の値がT
関数によって評価されるようにします。結果の値は、ADFコンポーネントが参照するExcelのセルに挿入されます。HYPERLINK
Excel関数を起動するEL式を記述する際は、次の構文を使用します。
=T("=HYPERLINK(""link_location"",""friendly_name"")")
たとえば、エンド・ユーザーがコンポーネントをクリックすると、次のEL式はHYPERLINK
関数を使用して、http://www.oracle.com
に移動します。
=T("=HYPERLINK(""http://www.oracle.com"", ""#{bindings.ProductId.inputValue}"")")
HYPERLINK
関数を使用してEL式を記述する場合、エラー・メッセージが表示されないようにするため、適用するカスタムのスタイルの「セルのフォーマット」ダイアログの保護タブの「ロック済」チェック・ボックスを選択することをお薦めします。
Excel T
関数を使用するEL式を記述して、HYERLINK
関数の出力を評価します。次の作業は、ADF出力テキスト・コンポーネントを構成してハイパーリンクを表示する様子を示します。このリンクをクリックすると、ProductName
バインディングを検索語句に使用して、Oracle OTN Discussion Forum for Developer Toolsで検索処理を起動します。
セルを構成し、EL式を使用してハイパーリンクを表示する手順:
統合Excelワークブックを開きます。
ADF出力テキスト・コンポーネントをExcelワークシートに挿入します。
ADF出力テキスト・コンポーネントのValue
プロパティにEL式を記述します。
記述するEL式は、Excel HYPERLINK
関数を起動して、出力を評価するためにExcel T
関数を使用します。この例では、Value
プロパティに次のEL式を入力しました:
=T("=HYPERLINK(""http://forums.oracle.com/forums/search.jspa?objID=c19&q=#{bindings.ProductName}"", ""#{bindings.ProductName}"")")
注意: Excelでは、式を正しく評価できるように、EL式に二重引用符(""#{bindings.ProductName}"" など)を記述する必要があります。 |
「OK」をクリックします。
ADFデスクトップ統合は、記述するEL式を実行時に評価します。次の例では、ADFデスクトップ統合は次のことを実行します。
ProductName
バインディングの値を取得
ProductName
バインディングの値をURLに挿入
ユーザーがクリックして検索を起動できる、ハイパーリンクの付いたセルに結果を挿入
図8-30は、8.9.1項「EL式を使用してハイパーリンクを表示する際のセルの構成方法」で構成した例の実行時の表示を示します。ここでは、Zune 30GB
はProductName
バインディングの取得された値です。ADF出力テキスト・コンポーネントをホストするセルをエンド・ユーザーがクリックすると、Oracle OTN Discussion Forum for Developer ToolsでZune 30GB
の検索処理が起動されます。
統合Excelワークブックで値の計算を実行するExcel式を記述できます。Before 統合Excelワークブックで値を計算するExcel式を記述する前に、次の点に注意してください。
式は、Oracle ADFバインディングを参照するセルと参照しないセルに入力できます。
統合Excelワークブックのエンド・ユーザーは実行時に式を入力できます。
統合Excelワークブックの開発者は、設計時に式を入力できます。
起動時には、ADF表コンポーネント・アクションUpload
とRowUpSync
が、式の計算結果をFusion Webアプリケーションに送信しますが、式自体は送信されません。
Oracle ADFバインディングを参照するセルが次の処理によって変更された場合、Excelではこれらのセルの式が再計算されます。
ADF表コンポーネントRowDownSync
アクションとDownload
アクションの起動
Oracle ADFコンポーネントのレンダリング
ADF表コンポーネントとADF読取り専用コンポーネントは、行がFusion Webアプリケーションからのデータを受け入れるために収縮すると同時に、行を挿入または削除します。式はExcel独自のルールに従って複製されます。
ADF表コンポーネントまたはADF読取り専用表コンポーネントを参照するセルの上または下に式を入力できます。これらのコンポーネントの下に入力した式は、表示される行数を受け入れるためにコンポーネントが収縮する際、コンポーネントを基準にしてその位置を保持します。
Excel関数の詳細は、Excelのオンライン・ヘルプ・ドキュメントの関数の参照の項を参照してください。
Excel式によって計算された値を表示する列を、Excelのリボンのメニュー・オプションを使用して、ワークシートに直接挿入します。ADF表コンポーネントまたはADF読取り専用表コンポーネントの列を管理するコレクション・エディタを使用して、計算された値を表示する列を追加することはできません。
Excel式により生成された値を表示する列を作成する手順:
Excelワークシートの設計モードで、Excelの式により生成された値を実行時に表示する列を表示するセルを選択します。
たとえば、EditPriceList-DT.xlsx
のセルH13には次の式が含まれています。
=G13-F13
セルG13
は実行時にList Priceとラベル付けされるADF表コンポーネント列の設計時の参照で、F13
は実行時にCost Priceとラベル付けされるADF表コンポーネント列の設計時のセル参照です。
セルH12
は、式のヘッダーをマークします。これには、Label
プロパティが次のEL式に設定されたADFラベル・コンポーネントが含まれます。
#{res['excel.difference.label']}
このEL式は、実行時にexcel.difference.label
文字列キーを取得します。
図8-31は、Excel式が式のバーに表示されている、手動で挿入された列の設計時の表示、および実行時にリソース・バンドルから文字列キーの値を取得するADFラベル・コンポーネントを示します。
Excelの「保存」ボタンを使用して変更を保存します。
実行時には、手動で挿入された列の各行に正しい値が表示されるように、ADF表コンポーネントとADF読取り専用コンポーネントが収縮する際に、Excelは式を複製して調整します。図8-32は、図8-31に示す例の実行時の表示の一部で、式が対応する各行を評価するようにExcelが式を調整しています。
次の作業は、Excel式のSUM
とOFFSET
を使用して、Master Price ListモジュールのEditPriceList-DT.xlsx
で、Differenceとラベル付けされた列の合計を実行時に計算する様子を示します。ADF表コンポーネントまたはADF読取り専用表コンポーネントがダウンロードする行数に基づいて、拡張または収縮するセルの範囲を参照する場合に、記述するExcel式でOFFSET
関数を使用します。SUM
関数が、Excelのセル範囲の合計を計算します。
ADF表コンポーネントで列の合計を計算する手順:
設計モードで、Excel式を記述するExcelワークシートのセルを選択します。EditPriceList-DT.xlsx
では、これは参照を持つセルH14
です。
実行時にセル範囲で計算を実行するExcel式を記述します。例:
=SUM(OFFSET(G12,1,0):OFFSET(G13,-1,0))
SUM
は、現在G12
とG13
によって参照されているセル範囲の値の合計を計算します。
図8-33は、統合ExcelワークブックのExcel式の設計時の表示を示します。
変更を保存して実行時モードに切り替え、入力したExcel式が正しく評価されるかテストします。