7 ADFデスクトップ統合表タイプ・コンポーネントの使用

ADFデスクトップ統合には表タイプ・コンポーネントが用意されており、これを構成して、Fusion Webアプリケーションからデータをダウンロード、挿入、更新および削除します。

この章の内容は次のとおりです。

ADFデスクトップ統合表タイプ・コンポーネントについて

ADFデスクトップ統合には、構造化データを表示するためのADF表コンポーネントがあります。エンド・ユーザーには、データ行をダウンロードする機能が提供されます。また、ダウンロードしたデータの編集または削除、新しいデータ行の挿入、および新しいデータ行または編集済のデータ行のアップロードをエンド・ユーザーが行えるようにします。

この目的を達成するには、データ・コントロールのメソッドを公開し、ページ定義ファイルでアクション・バインディングを作成して、ExcelワークシートがホストするADF表コンポーネントのプロパティを設定する必要があります。図7-1に、ADF表コンポーネントを示します。

図7-1 ADFデスクトップ統合表タイプ・コンポーネント

図7-1の説明が続きます
「図7-1 ADFデスクトップ統合表タイプ・コンポーネント」の説明

それぞれのADF表コンポーネントには、「キー」列が1つ含まれています。「キー」列には、ADFデスクトップ統合で表が正しく機能するために使用される重要な情報が含まれるため、削除しないでください。「キー」列を削除したり、「キー」列のセルを変更すると、エラーおよびデータ破損が発生します。「キー」列の詳細は、「ADF表コンポーネントのキー列の構成」を参照してください。

これらの表タイプ・コンポーネントとともに使用可能な他のADFデスクトップ統合コンポーネントの詳細は、「ADFデスクトップ統合フォーム・タイプ・コンポーネントの使用」および「値リストの使用」を参照してください。

ADFデスクトップ統合表タイプ・コンポーネントのユース・ケースと例

表は、構造化された情報を表示するときに使用されます。たとえば、表7-2は、ADFデスクトップ統合のSummitサンプル・アプリケーションのADF表コンポーネントと、それぞれのFusion Webアプリケーションからダウンロードされたデータを示します。

図7-2 ADF表コンポーネントとダウンロードされたデータ

図7-2の説明が続きます
「図7-2 ADF表コンポーネントとダウンロードされたデータ」の説明

表タイプ・コンポーネントの追加機能

統合Excelワークブックに表コンポーネントを追加した後、表を構成するために追加機能が必要になることがあります。表コンポーネントで使用可能な他の機能へのリンクは次のとおりです。

ADF表コンポーネントのページ定義の要件

ADF表コンポーネントでは、データ入力機能を提供するために、特定のコントロール・バインディングをページ定義ファイルに公開する必要があります。

ADF表コンポーネントは、ADFデスクトップ統合が公開するOracle ADFコンポーネントの1つです。これは、ADFデスクトップ統合デザイナの作業ウィンドウのコンポーネント・パレットに表示されます。Excelワークシートに挿入された後は、次の操作が可能です。

  • 読取り専用

  • 挿入専用

  • 更新専用

  • 挿入と更新

ADF表コンポーネントに固有のページ定義ファイルの要件の詳細は、次の項を参照してください。

エンド・ユーザーにデータ・エントリ機能を提供するようADF表コンポーネントを構成するには、Excelワークシートの基礎となるページ定義ファイルにADFバインディングをあらかじめ構成しておく必要があります。統合Excelワークブックのページ定義ファイルの要件の概要は、「統合Excelワークブックのページ定義ファイルの使用」を参照してください。

ADF表コンポーネント作成のためにページ定義ファイルを作成する際に、次のコントロール・バインディングを公開します。

  • 目的の属性バインディングを公開するツリー・バインディング。ADFデスクトップ統合では、ビュー・オブジェクトに対して、スクロール可能な範囲ページング・アクセス・モードのみをサポートしています。他のアクセス・モードはサポートされていません。

    統合Excelワークブックで大量のデータをダウンロードする必要がある場合は、範囲ページング・アクセス・モードを使用することを検討してください。『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』範囲ページ移動を使用した大きい結果セットの効率的なスクロールに関する項を参照してください。

    範囲ページング・アクセス・モードを使用する場合は、ADFデスクトップ統合で使用する前に、このアクセス・モードがアプリケーションのビュー・オブジェクトでサポートされていることを確認してください。たとえば、ビュー・オブジェクトは、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』上位N問合せのサポート方法の理解に関する項で説明されている上位N問合せを適切に処理する必要があります。

    また、範囲ページング・アクセス・モードを使用したビュー・オブジェクトは、ポストされていない行ではスクロールできません。このため、保留中の変更がADFデスクトップ統合のアクション・セットで想定どおりコミットまたはロールバックされることを確認してください。ADF表コンポーネントのDownloadアクションを起動する前に、保留中の変更がコミットまたはロールバックされないと、アプリケーションで次の例外がレポートされます。

    An attempt has been made to navigate a rowset in range paging mode when the rowset has pending changes.
    

    新しい行を挿入する前に、イテレータにより、必要に応じて最初の行に再配置されます。これは、最初の行の後に新しい行を挿入すると、予期しないスクロールが発生する場合があるためです。この動作は、ADF表コンポーネントのUploadアクションおよび挿入行のダブルクリック・アクション・セットに適用されます。

    注意:

    また、範囲ページング・アクセス・モードでは、行を削除すると、ビュー・オブジェクトに関する予期しないスクロール動作が発生する可能性があります。このため、ADF表コンポーネントのDeleteFlaggedRowsアクションが統合Excelワークブックに公開されている場合は、範囲ページング・アクセス・モードを使用しないでください。
  • ADF表コンポーネントのRowActionsおよびBatchOptionsプロパティ・グループの値を構成する場合、メソッド・アクション・バインディングおよびアクション・バインディング(ExecuteCommitCreateInsertなど)になります。これらのプロパティ・グループに値を設定する手順の例には、次のものがあります。

図7-3に、ページ定義ファイルExcelCustomers.xmlに含まれるバインディングを示します。このページ定義ファイルは、関連付けられているExcelワークシートでのADF表コンポーネントの使用をサポートします。

図7-3 ADF表コンポーネントの使用をサポートするADFバインディング

図7-3の説明が続きます
「図7-3 ADF表コンポーネントの使用をサポートするADFバインディング」の説明

ExcelワークシートへのADF表コンポーネントの挿入

ページ定義ファイルを正しく構成した後、ADF表コンポーネントをワークシートに挿入して、そのプロパティを構成し、必要な機能を使用可能にできます。ADF表コンポーネントを使用して、データ行のダウンロード、編集、アップロードを行うことができます。

ADF表コンポーネントの挿入方法

次のいずれかの方法を使用して、ADF表コンポーネントを挿入します。

  • ADFデスクトップ統合デザイナの作業ウィンドウのバインディング・パレットで、使用するツリー・バインディングを選択して、バインディングの挿入をクリックします。

    次の手順では、バインディング・パレットを使用してADF表コンポーネントを挿入する方法について説明します。他の2つの方法ではなく、この方法を使用する利点の1つは、実行時にコンポーネントに表示する各列を手動で追加する必要がないことです。

  • 「Oracle ADF」タブで、「コンポーネントの挿入」ドロップダウン・リストから「ADF表」を選択します。

  • ADFデスクトップ統合デザイナの作業ウィンドウのコンポーネント・パレットで、「ADF表」を選択し、「コンポーネントの挿入」をクリックします。

始める前に:

ADF表コンポーネントについて理解しておくと役立ちます。「ExcelワークシートへのADF表コンポーネントの挿入」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

ADF表コンポーネントをExcelワークシートに挿入する手順:

  1. 統合Excelワークブックを開きます。
  2. ADF表コンポーネントを挿入するExcelワークシートのセルを選択します。

    セルを選択する場合、次を確認します。

    • 2つの表のデータが実行時に重複しない

    • 選択したセルがマージされたセルではない

  3. ADFデスクトップ統合デザイナの作業ウィンドウのバインディング・パレットで、使用するツリー・バインディングを選択して、バインディングの挿入をクリックします。
  4. 表示されたダイアログで、「ADF表」を選択して「OK」をクリックします。

    注意:

    • デフォルトでは、バインディング・パレットを使用してADF表コンポーネントを挿入する際に、ModelDrivenColumnComponentサブコンポーネントは、すべての列のサブコンポーネント・タイプとして定義されます。

      列で異なるサブコンポーネント・タイプを使用する場合は、ADF表プロパティ・インスペクタを開き(ADF表コンポーネントの任意のセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリック)、Columnsプロパティの参照(...)アイコンをクリックします。「列の編集」ダイアログで列を選択し、UpdateComponentプロパティの参照(...)アイコンをクリックします。「コンポーネントの選択」ダイアログで、目的のサブコンポーネント・タイプを選択し、バインディングおよび他のプロパティを確認して、「OK」をクリックします。

    • 複数の<nodeDefinition>要素(子ノード)を含むツリー・バインディングの場合、UpdateComponentおよびInsertComponentValueプロパティの式に使用される属性名は、すべての<nodeDefinitions>で一意である必要があります。

  5. 表7-1の説明に従って、図7-4に示すプロパティ・インスペクタを使用して、ADF表コンポーネントのプロパティを構成します。

    図7-4 ADF表プロパティ・インスペクタ

    この図は周囲のテキストで説明しています

    表7-1 ADF表コンポーネントのプロパティ

    設定するプロパティ 設定する値

    BatchOptions.CommitBatchActionID

    ページ定義ファイルで公開されたCommitアクション・バインディング。

    UniqueAttribute

    ツリー・バインディングに関連付けられたイテレータの各行を一意に識別するバインディング式を指定します。ツリー・バインディングのイテレータが行キーをサポートしていない場合は、UniqueAttributeプロパティ値のみを指定してください。

    RowLimit

    (オプション) ADF表コンポーネントでダウンロードされる行数を決定するように、このプロパティ・グループを構成します。

    「表タイプ・コンポーネントがダウンロードする行数の制限」を参照してください。

  6. 「OK」をクリックします。
  7. コンポーネントの挿入: ADF表ダイアログで適切なオプションを選択します。

図7-5は、設計モードでのEditCustomers-DT.xlsxにおけるADF表コンポーネントを示しています。

図7-5 設計モードのADF表コンポーネント

図7-5の説明が続きます
「図7-5 設計モードのADF表コンポーネント」の説明

図7-6は、実行時のEditCustomers-DT.xlsxにおけるADF表コンポーネントを示しています。

図7-6 実行時のADF表コンポーネント

図7-6の説明は次にあります
「図7-6 実行時のADF表コンポーネント」の説明

ADF表コンポーネントに設定可能なプロパティの詳細は、「ADF表コンポーネントのプロパティおよびアクション」を参照してください。

表コンポーネントを削除するには、「削除」リボン・コマンドを使用します。「ADFデスクトップ統合コンポーネントの削除」を参照してください。

ADF表コンポーネントへの列の追加方法

ツリー・バインディングを使用せずに表を挿入した場合(例: コンポーネント・パレットから表を挿入した場合)、列を表に追加して、表に表示する各属性のデータを表示します。たとえば、顧客の表には、顧客の名前、電話番号、信用評価などを表示する列があります。

ツリー・バインディングを使用して挿入した表に列を追加する場合も、手順は同じです。

始める前に:

ADF表コンポーネントについて理解しておくと役立ちます。「ExcelワークシートへのADF表コンポーネントの挿入」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

ADF表コンポーネントに列を追加するには:

  1. 統合Excelワークブックを開きます。
  2. ADF表コンポーネントを参照するExcelワークシートのセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックします。
  3. 「コンポーネントの編集: ADF表」ダイアログで、Columnsプロパティの参照(...)アイコンをクリックします。

    「列の編集」ダイアログが表示され、選択したADF表コンポーネントのすべての列が一覧表示されます。

  4. 「追加」をクリックして、新しい列を追加します。新しい列が、Membersリストの末尾に挿入されます。列を特定の位置に移動するには、列を選択して「上」「下へ」の配列キーを使用します。
  5. ダイアログの右側ウィンドウにある新しい列のプロパティを構成します。
  6. 「OK」をクリックします。

ADFデスクトップ統合では、ADF表コンポーネントに追加できる列の数に制限はありません。Excelのバージョンでサポートされる数の列を追加できます。ただし、表の幅が広くなると、操作性とパフォーマンスが低下する場合があります。パフォーマンスが低下した場合は、他の原因を調査する前に、表の列の数を減らしてみてください。ADFデスクトップ統合では、パフォーマンスと操作性を最適化するために、可能であれば、1つの表当たり30列未満の構成にすることをお薦めします。

ADF表コンポーネントへのデータのダウンロード

ADF表コンポーネントをワークシートに追加した後、ワークシート・リボン・コマンドなどのOracle ADFコンポーネントを構成して、アクション・セットを起動します。アクション・セットには、起動されるアクションの中からADF表コンポーネントDownloadアクションを含める必要があります。

ADF表コンポーネントに含まれる行数は、Fusion Webアプリケーションからダウンロードする行数に基づいて増減します。Excelが表タイプ・コンポーネントがダウンロードするデータを受け入れるために行を挿入するときに、複製する場合を除いて、表タイプ・コンポーネントの左右には何も配置しないでください。実行時に表タイプ・コンポーネントに対して位置が維持されるため、表タイプ・コンポーネントの上下には他のコンポーネントを配置できます。

ADF表コンポーネントへのデータのダウンロード方法

ADF表コンポーネントのDownloadアクションを起動するリボン・コマンドを構成します。

始める前に:

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

ADFコンポーネントを構成してデータをADF表データ・コンポーネントにダウンロードする方法を理解しておくと役立ちます。「ADF表コンポーネントへのデータのダウンロード」を参照してください。

データをADF表コンポーネントにダウンロードする手順:

  1. 統合Excelワークブックを開きます。
  2. 「Oracle ADF」タブで、「ワークシート・プロパティ」ボタンをクリックし、リボン・コマンドを追加します。ワークシートにリボン・コマンドを追加する方法の詳細は、「実行時リボン・タブのワークブック・リボン・コマンドの定義方法」を参照してください。

    注意:

    リボン・コマンドを追加するかわりに、実行時にアクション・セットを起動するように、ワークシート・イベントを構成できます。

  3. アクションの編集ダイアログを開き、アクション・セットを構成します。アクション・セットの起動の詳細は、「アクション・セットの使用」を参照してください。
  4. 実行時に起動するアクション・セットに、次のアクションを次の順に追加します。
    • ADFmAction Executeアクション・バインディング: ADF表コンポーネントのTreeIDプロパティで参照されるイテレータ・バインディングで問合せを実行します。これにより、アクション・セットでADF表コンポーネントのDownloadアクションを起動する前に、バインディングが最新になります。

    • ADF表コンポーネントのDownloadアクション。

      ADF表コンポーネントDownloadアクションは、ADF表コンポーネントTreeIDプロパティにより参照されるバインディングの現在の状態をダウンロードします。

    図7-7に、Excelリボンの「ダウンロード」リボン・コマンドで起動されるアクション・セットが構成される、EditCustomers-DT.xlsxワークブックのアクションの編集ダイアログを示します。

    図7-7 ADF表コンポーネントにデータをダウンロードするアクション・セット

    この図は周囲のテキストで説明しています
  5. 「OK」をクリックします。

実行時の処理: ADF表コンポーネントによるデータのダウンロード

エンド・ユーザーは、構成されたアクション・セットを起動します。アクション・セットは、指定されたアクションのリストを順に起動します。これには、ADF表コンポーネントのDownloadアクションを起動するアクションが含まれます。起動時に、Downloadアクションは、ADF表コンポーネントTreeIDプロパティにより参照されるツリー・バインディングからすべての行をダウンロードします。

実行時にDownloadアクションが起動される場合は、次の点に注意してください。

  • Downloadアクションの起動時に、行が変更済とマークされている場合、エンド・ユーザーは、アクションを確認して続行するように求められます(図7-8を参照)。エンド・ユーザーが「いいえ」を選択すると、アクションとアクション・セットはエラーなしで中止されます。

  • 既存のすべてのExcel行がExcelの表から削除されます。

  • ステータス列からすべてのメッセージが消去されます。

  • Excelのフィルタ機能を使用してワークシートに適用された条件は、Uploadアクションの前に自動的にクリアされます。

  • 指定した数値に対するExcelの精度は、有効数字15桁に制限されています。サーバー・データの精度がそれを超える場合、Excelは警告なしで精度を変更します。たとえば、12345678901234567890123456789012345678901.23456789012345E+39としてダウンロードされます。

図7-8 データをADF表にダウンロードする前の確認プロンプト

図7-8の説明が続きます
「図7-8 データをADF表にダウンロードする前の確認プロンプト」の説明

アクションによりダウンロードされる行数は、ADF表コンポーネントでRowLimitグループ・プロパティに設定された値によって異なります。「表タイプ・コンポーネントがダウンロードする行数の制限」を参照してください。

ADF表コンポーネントへの保留中の挿入行および保留中の更新行のダウンロード

ADFデスクトップ統合では、ADF表コンポーネントからのデータの挿入と更新を容易にする、保留中の挿入行と保留中の更新行が提供されています。

保留中の挿入行は、アップロード時に、新しいデータ行としてイテレータに挿入されるデータのあるワークシートの表の行です。たとえば、エンド・ユーザーが、右クリックのコンテキスト・メニューにある「挿入」オプションを使用して表に新しい行を作成する場合、新しい行は保留中の挿入行として扱われ、アップロード時にイテレータに挿入されます。

保留中の更新行は、アップロード時に、イテレータの既存のデータを更新するデータのあるワークシートの表の行です。たとえば、ツリー・バインディングのイテレータにデータベースから取得した行が含まれている場合、その行がADF表にダウンロードされると、その行は保留中の更新行として扱われます。エンド・ユーザーがこれらの行を変更しアップロードすると、イテレータ内の既存の行はADF表の行の新しい値で更新されます。

大部分の場合、ツリー・バインディングのイテレータ内の行は保留中の更新行としてADF表にダウンロードされます。一部の行を保留中の挿入としてダウンロードする場合は、これらの行の状態をSTATUS_INITIALIZEDに設定する必要があります。行の状態をSTATUS_INITIALIZEDに設定する方法の詳細は、Oracle Fusion Middleware Oracle ADFモデルJava APIリファレンスsetNewRowStateメソッドを参照してください。

保留中の挿入行と保留中の更新行には次の違いがあります。

  • 保留中の挿入行には、ADF表コンポーネントの各列に関連付けられた挿入コンポーネントに対するEL式の値が移入される(InsertUsesUpdate列プロパティがFalseに設定されている場合)のに対し、保留中の更新行には、ADF表コンポーネントの各列に関連付けられた更新コンポーネントに対するEL式の値が移入されます。

  • 保留中の挿入行の検証時に、EL式#{components.componentID.currentRowMode}Insertを返します。これに対し、保留中の更新行の場合は、同じEL式がUpdateを返します。

    EL式#{components.componentID.currentRowMode}componentID部分は、ADF表コンポーネントのIDを参照します。

EL式の詳細は、「ADFデスクトップ統合のEL式」を参照してください。

実行時の処理: Downloadアクションの起動

Downloadアクションが起動されると、そのアクションはイテレータ内の各行の状態を確認します。状態がSTATUS_INITIALIZEDの行は保留中の挿入行として表にダウンロードされ、他の状態の行は保留中の更新行としてダウンロードされます。

保留中の挿入に対するSTATUS_INITIALIZED行の使用

STATUS_INITIALIZED行を使用して、保留中の挿入行の一部の属性またはすべての属性の値を事前移入できます。STATUS_INITIALIZED行は検証されないため、Downloadアクションが起動される前に、STATUS_INITIALIZED行の一部を移入し、その行をイテレータに挿入するアクションを構成できます。Downloadアクションはこの行を保留中の挿入行として扱うため、事前移入された行に基づいて新しい行を挿入できます。

STATUS_INITIALIZED行は、ダウンロード中にイテレータから自動的に削除されることに注意してください。ダウンロード後にSTATUS_INITIALIZED行を削除する別のアクションを構成できます。たとえば、次の操作でアクション・セットを構成できます。

  1. STATUS_INITIALIZED行を作成するADFmAction

  2. Table.Downloadアクション

  3. STATUS_INITIALIZED行をクリーン・アップするADFmAction

DownloadForInsertアクションに関する必知事項

ADFデスクトップ統合は、DownloadForInsertと呼ばれる表アクションもサポートしています。DownloadForInsertは現在サポートされていないアクションであり、Downloadアクションと置き換えることができます。DownloadForInsertは、以前のリリースと同様に、引き続き使用できます。Downloadとの主な違いは、DownloadForInsertはイテレータにあるSTATUS_INITIALIZED状態の行のみを考慮する点です。

ADF表コンポーネントの既存のデータの更新

エンド・ユーザーが表の既存のデータ行に対する変更を編集およびアップロードできるようにADF表コンポーネントを構成する方法について説明します。

「ADF表コンポーネントからの変更のアップロード」では、変更したデータ行をエンド・ユーザーがアップロードできるように、ADF表コンポーネントをどのように構成できるかについて説明します。

データを更新するためのADF表コンポーネントの構成方法

エンド・ユーザーが既存のデータを編集できるようにしながら、データ行の追加や削除を制限する場合、追加の構成は必要ありません。次の手順に示すように、プロジェクトおよびADF表コンポーネントが構成されていることを確認します。

データをアップロードするようにADF表コンポーネントを構成する手順:

  1. JDeveloperでプロジェクトを開きます。
  2. 存在しない場合は、Commitアクション・バインディングを、ADF表コンポーネントをホストするExcelワークシートに関連付けられたページ定義ファイルに追加します。
  3. 統合Excelワークブックを開きます。
  4. ADF表コンポーネントを参照するExcelワークシートのセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックします。
  5. 表7-2図7-9に示すように、ADF表コンポーネントのRowActionプロパティが設定されていることを確認してください。

表7-2 ADF表コンポーネントのRowActionプロパティ

プロパティ

InsertRowEnabled

False

DeleteRowEnabled

False

UpdateRowEnabled

True

図7-9 データを更新するためのADF表のRowActionsプロパティ

この図は周囲のテキストで説明しています

実行時の処理: ADF表コンポーネントでのデータ更新

エンド・ユーザーが行のデータを変更すると、ADFデスクトップ統合によりその行にマークが付けられ、上向きの三角形が_ADF_ChangedColumn列の行に表示されます。

注意:

また、エンド・ユーザーが値を編集したときに行が自動的にリフレッシュされるようにADF表コンポーネントを構成することもできます。「ADF表コンポーネントの自動行リフレッシュの構成」を参照してください。

既存のデータを更新した後、エンド・ユーザーはアップロード処理を開始して変更を保存します。ADF表コンポーネントのアップロード処理の詳細は、「ADF表コンポーネントからの変更のアップロード」を参照してください。

Excelは、統合ワークブックで変更された行を、行ごとにではなくバッチ処理でアップロードします。アップロードされる行数をバッチごとに構成し、行のバッチのアップロードおよびコミット時にADF表コンポーネントが起動するアクションを構成できます。バッチ処理の詳細は、「ADF表コンポーネントでのバッチ処理」を参照してください。

ADF表コンポーネントに設定可能なプロパティの詳細は、「ADF表コンポーネントのプロパティおよびアクション」を参照してください。

注意:

Excelのフィルタ機能を使用してワークシートに適用された条件は、Uploadアクションの前に自動的にクリアされます。

ADF表コンポーネントでのデータの挿入

エンド・ユーザーが新しいデータ行を挿入できるようにADF表コンポーネントを構成できます。

このタスクを完了したら、「ADF表コンポーネントからの変更のアップロード」の説明に従って、エンド・ユーザーが新規および変更済データ行をアップロードできるようにコンポーネントを構成することもできます。

ビュー・オブジェクトの操作を使用してデータを挿入するためのADF表コンポーネントの構成方法

ADF表コンポーネントでエンド・ユーザーが行った変更をコミットするには、ADF表コンポーネントをホストするExcelワークシートに関連付けられているページ定義ファイルに、アクション・バインディングを追加し、ADF表コンポーネントのいくつかのプロパティを構成します。

始める前に:

ADF表コンポーネントを構成してデータを挿入する方法を理解しておくと役立ちます。「ADF表コンポーネントでのデータの挿入」を参照してください。

ADF表コンポーネント・プロパティの詳細は、「ADF表コンポーネントのプロパティおよびアクション」 を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

ビュー・オブジェクトの操作を使用してデータを挿入するためにADF表コンポーネントを構成するには:

  1. JDeveloperでプロジェクトを開きます。
  2. プロジェクトがない場合は、CreateInsertCommitアクション・バインディングを、ADF表コンポーネントをホストするExcelワークシートに関連付けられたページ定義ファイルに追加します。
  3. 統合Excelワークブックを開きます。
  4. ADF表コンポーネントを参照するExcelワークシートのセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックします。
  5. コンポーネントの編集: ADF表ダイアログで、表7-3に示すようにADF表コンポーネントのRowActionsプロパティを構成します。

    表7-3 ADF表コンポーネントのRowActionsプロパティ

    設定するプロパティ 設定する値

    AutoConvertNewRowsEnabled

    TrueTrueの場合、エンド・ユーザーは、ADF表コンポーネントの行を編集したり、新しいデータをコンポーネントの行に直接貼り付けて、それらをADF表コンポーネントの行に変換したりできます(ワークシートProtection.ModeプロパティがOff (デフォルト値)に設定されている場合)。

    ワークシート・プロパティの詳細は、「ワークシートのアクションおよびプロパティ」を参照してください。

    InsertRowEnabled

    True

    InsertBeforeRowActionID

    ページ定義ファイルで公開されたCreateInsertアクション・バインディング。

    InsertRowsAfterUploadEnabled

    True(以前にアップロードされたことがあるかどうかに関係なく、挿入された行を再びアップロードする場合)。デフォルトでは、このプロパティはFalseに設定されます。

    InsertRowEnabledFalseに設定されている場合、このプロパティは無視されます。

  6. 表7-4の説明に従って、ADF表コンポーネントのBatchOptionsプロパティを構成します。

    表7-4 ADF表コンポーネントのBatchOptionsプロパティ

    設定するプロパティ 設定する値

    CommitBatchActionID

    ページ定義ファイルで公開されたCommitアクション・バインディング。

  7. 表7-5に示すように、ADF表コンポーネントのColumnsプロパティを構成します。

    注意:

    「ADF表コンポーネントの挿入方法」の説明に従ってADF表を挿入する際にツリー・バインディングを選択した場合、ADFデスクトップ統合により自動的に適切なプロパティ値が設定されます。(オプション)必要に応じて、他の列プロパティ値を確認して調整します。「ADF表コンポーネントの列プロパティ」を参照してください。

    表7-5 ADF表コンポーネントのColumnsプロパティ

    設定するプロパティ 設定する値

    InsertUsesUpdate

    True

    UpdateComponent

    • UpdateComponentプロパティのValueフィールドを、ページ定義ファイルから属性を更新するように設定します。たとえば、#{row.bindings.ProductId.inputValue}です。

    • UpdateComponentReadOnlyプロパティが正しく設定されていることを検証します。ユーザーが列の値を編集できるようにするには、ReadOnlyFalseに設定します。それ以外の場合はTrueに設定します。ReadOnlyプロパティのデフォルト値はFalseです。

      「ADF表コンポーネントへのModelDrivenColumnComponentサブコンポーネントの追加」を参照してください。

  8. Uploadアクションの起動時にコミットするデータを含む列ごとに、ステップ7を繰り返します。

注意:

  • 多相ビュー・オブジェクトを使用中に新しい行を挿入する場合は、デフォルトのCreateInsertアクション・バインディングでは不十分です。新しく作成した行でも識別子の値を設定するカスタム・メソッドを作成する必要があります。

    カスタム・メソッドを作成する際に、ページ定義ファイルでカスタム・メソッドをアクション・バインディングとして公開する必要があります。このアクション・バインディングは、CreateInsertではなくInsertBeforeActionIdとして指定してください。

  • InsertRowsAfterUploadEnabledプロパティがFalseに設定されていて、エンド・ユーザーが挿入済のデータをもう一度アップロードしようとすると、行を二度挿入することはできないというエラー・メッセージがステータス列に表示されます。

ADF表コンポーネントからの変更のアップロード

エンド・ユーザーがADF表コンポーネントでデータに加える変更をFusion Webアプリケーションにアップロードできるように、ADF表コンポーネントおよびホストされるワークシートを構成します。

この機能を構成するには、どのようなユーザーによる操作やワークシート・イベントが、ADF表コンポーネントのUploadアクションを起動するアクション・セットを起動するかを決定します。

Uploadアクションは、一部の行で失敗があっても、正常なすべての行をコミットします。1つ以上の行で失敗があったときに行の変更がコミットされないようにする場合は、かわりにUploadAllOrNothingアクションを使用します(「UploadAllOrNothingアクションを使用したADF表コンポーネントからの変更のアップロード」を参照)。Fusion WebアプリケーションからのWebページで、エンド・ユーザーにデフォルトのアップロード用ダイアログとは異なるアップロード・オプションを提供するには、ADF表コンポーネントのUploadを起動するアクションの前に、アクション・セットでDialogアクションを指定する必要があります。「カスタムのアップロード・ダイアログの作成方法」を参照してください。

注意:

マスター/ディテール関係では、ADFデスクトップ統合はViewLinkソース属性の編集をサポートしていません。これは、子のビュー・オブジェクトの選択が結果的に変わるためです。誤って編集されないようにするため、ViewLinkソース属性を読取り専用にするか、マスターとディテール間のビュー・リンクを含まないモデル構成を使用してください。

ADF表コンポーネントからデータをアップロードするためのADFコンポーネントの構成方法

ワークシート・リボン・コマンドなどの、ADFコンポーネントを構成し、アクション・セットを起動します。これは、続いてADF表コンポーネントのUploadアクションを起動します。

始める前に:

ADFコンポーネントを構成してデータをADF表データ・コンポーネントからアップロードする方法を理解しておくと役立ちます。「ADF表コンポーネントからの変更のアップロード」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

ADFコンポーネントを構成してADF表コンポーネントに変更済データをアップロードするには:

  1. 統合Excelワークブックを開きます。
  2. 「アクションの編集」ダイアログを開いて、ADF表コンポーネントのUploadアクションを起動するアクション・セットを構成します。

    アクション・セットの詳細は、「アクション・セットの使用」を参照してください。

  3. ADF表コンポーネントのUploadアクションを、実行時にアクション・セットにより起動されるアクションのリストに追加します。

    図7-10は、EditCustomers-DT.xlsxワークブックの「編集実行時」ダイアログを示しています。ここでは、実行時にUploadのラベルの付いたリボン・コマンドにより起動されるアクション・セットが構成されます。

    図7-10 ADF表コンポーネントからデータをアップロードするアクション・セット

    この図は周囲のテキストで説明しています
  4. 「OK」をクリックします。
  5. 「アップロード・オプション」ダイアログを表示しない場合は、ADF表コンポーネントを参照するExcelワークシートのセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックします。

    「表のプロパティ」ダイアログでDisplayUploadOptionsFalseに設定して、「OK」をクリックします。

注意:

このアクション・セットには、ADF表コンポーネントのバッチ・オプションにCommitへのコールがすでに含まれるため、コミット・タイプのアクションのコールは含まれません。「ADF表コンポーネントのバッチ・オプションの構成方法」を参照してください。

実行時の処理: ADF表コンポーネントによるデータのアップロード

実行時に、エンド・ユーザーは、構成したメカニズム(ADFコンポーネント、ワークシート・リボン・コマンドまたはワークシート・イベント)でアクション・セットを起動します。これによって、次の一連のイベントがトリガーされます。

  1. ADF表コンポーネントに動的な列が含まれる場合、ADFデスクトップ統合は前回ADF表コンポーネントのDownloadアクションが起動されたときに展開された動的な列が、まだFusion Webアプリケーションに存在するかどうかを検証します。列が存在しない場合は、ADFデスクトップ統合はアップロード処理を続行するかどうか決めるようエンド・ユーザーにプロンプトを表示します。エンド・ユーザーが続行しないと決めた場合、ADFデスクトップ統合は実行中のアクション・セットに中止コードを返します。

  2. ADF表コンポーネントにアップロードする保留中の変更がない場合、ADF表コンポーネントのUploadアクションは実行中のアクション・セットに成功コードを返します。

  3. ADF表コンポーネントは、変更した行を1行ずつではなく、バッチでアップロードします。バッチ・オプションはBatchOptionsプロパティ・グループを使用して構成できます。ADF表コンポーネントのバッチ・オプションの詳細は、「ADF表コンポーネントでのバッチ処理」を参照してください。

    各バッチ行は次のように処理されて、各バッチの変更されたすべての行が終わるまで処理が続けられます。

    1. 挿入された行の場合は、InsertBeforeRowActionIDアクションが起動されます(指定されている場合)。

    2. 編集済の行の場合は、ツリー・バインディング・イテレータを正しい行に配置します。

    3. キャッシュされたすべての行属性の値を含む、ワークシートからの属性をモデルに設定します。

    4. 編集された行の場合、UpdateRowActionIDアクションを起動し、挿入された行については、InsertAfterRowActionIDアクションを起動します(指定されている場合)。

    5. アップロードされた行ごとに、成否が「ステータス」列に示されるステータス・メッセージを表示します。行のアップロードに失敗した場合は、「ステータス」列にメッセージが表示されます(例: Update Failed)。失敗の詳細は、失敗した行のセルをエンド・ユーザーがクリックすると、ステータス・ビューアに表示されます。「ステータス・ビューアを使用したエンド・ユーザーへのエラー・メッセージのレポート」を参照してください。

      「ステータス」列の詳細は、「ADF表コンポーネント内の特殊な列」を参照してください。

    6. 行について失敗があった場合、ADF表コンポーネントでAbortOnFailの値が検証されます。AbortOnFailFalseに設定されている場合、アップロード処理は続行されます。それ以外の場合は、コンポーネントはデータのアップロードを停止し、Commitアクションを起動します。

  4. データをアップロードする際、ADF表コンポーネントは次の条件に基づいて実行中のアクション・セットに成功または失敗のコードを返します。

    • ADF表コンポーネントがすべてのバッチを問題なくコミットした場合、実行中のアクション・セットに成功のステータスが返されます。Table.DisplayUploadOptionsプロパティがTrueに設定されており、エンド・ユーザーが「アップロード・オプション」ダイアログで「正常にアップロードした後はすべての行をダウンロードします」オプションを選択した場合、ADF表コンポーネントはFusion Webアプリケーションからすべての行をダウンロードします。

    • ADF表コンポーネントがすべてのバッチを正常にコミットしなかった場合、アクション・セットはRowActions.FailureActionIDプロパティで指定されたアクションを起動します(このプロパティにアクションが指定されている場合)。ADFデスクトップ統合は、アクション・セットに失敗コードを返します。

Table.DisplayUploadOptionsプロパティがTrueに設定されており、「アップロード・オプション」ダイアログで「失敗した場合は、引き続き後続の行をアップロードします」チェック・ボックスを選択した場合、一部の行で検証に失敗した場合でも、Uploadアクションはアクション・セットに成功コードを返します。

注意:

Excelフィルタが適用されたADF表でUploadアクションが起動されると、Excelフィルタの条件がクリアされ、非表示のExcelワークシート行が表示されますが、フィルタは削除されません。

実行時の処理: アップロード中のReadOnly EL式の評価

実行時にADF表コンポーネント列のReadOnlyプロパティがTrueに評価された場合、ADF表コンポーネントのUploadアクションは列のセルにあるすべての変更を無視します。

変更トラッキングに関する詳細は、「読取り専用プロパティのEL式の評価」を参照してください。

実行時の処理: アップロード中の行エラーの処理

ADF表コンポーネントがデータのアップロードを開始すると、ADFデスクトップ統合はアップロード処理を開始する前にDataControlFrameセーブポイントを作成します(アップロードされた行のバッチごとに1回)。なんらかのエラーがあった場合、ADFデスクトップ統合はセーブポイントまで戻り、Fusion Webアプリケーションのサーバー・サイドの状態の整合性を維持します。

アップロードされた行のバッチの各行ごとに、ADFデスクトップ統合は次の処理を実行します。

  1. 構成されたアクションを起動し、行の属性値の変更を適用して、データの検証を実行。

  2. なんらかのエラーがあった場合、セーブポイントの状態に復元。

注意:

必要に応じて2度目の繰り返しが実行され、アップロードに成功したすべての行でその後のアップロード・エラーによって変更が元に戻されたものが再度アップロードされます。

ADFデスクトップ統合ではアップロード時にモデル状態を管理するためにセーブポイントを使用するため、行レベルのアクション実装ではcommitまたはrollbackアクションの呼び出しを回避する必要があります。

セーブポイントの詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』ツリーを使用したマスター/ディテール・オブジェクトの表示に関する項を参照してください。

アップロード・オプションに関する必知事項

実行時、エンド・ユーザーが統合ExcelワークブックからFusion Webアプリケーションにデータをアップロードすると、ADFデスクトップ統合は、行で失敗があった場合に、後続のデータ行を引き続きアップロードし、アップロードに成功すると、すべての行のデータをリフレッシュまたはダウンロードしません。

図7-11に示すように、Table.DisplayUploadOptionsプロパティを設定することで、必要に応じて「アップロード・オプション」ダイアログを有効または無効にできます。DisplayUploadOptionsTrueに設定されている場合、ADFデスクトップ統合には「アップロード・オプション」ダイアログが表示されます。

図7-11 デフォルトのアップロード・ダイアログ

図7-11の説明が続きます
「図7-11 デフォルトのアップロード・ダイアログ」の説明

注意:

Table.DisplayUploadOptionsプロパティは、Table.DisplayUploadOptionsプロパティが含まれていないバージョンのADFデスクトップ統合で作成された統合ExcelワークブックのADF表コンポーネントでは、デフォルトでTrueに設定されます。

「アップロード・オプション」ダイアログを使用して、エンド・ユーザーは次のオプションを有効または無効にできます。

  • 失敗した場合は引き続き後続の行をアップロードする。これはデフォルトの動作です。

    無効にすると、行で失敗があった場合に、ADFデスクトップ統合はアップロード処理を中断します。

  • 正常にアップロードした後はすべてのデータ行をダウンロードする。この動作はデフォルトで無効になっています。

    有効にした場合、アップロードが成功すると、ADFデスクトップ統合は、ビュー・オブジェクト・キャッシュから最新のデータをダウンロードします。

    注意:

    正常にアップロードした後はすべてのデータ行をダウンロードする。チェック・ボックスが選択されている場合、ADFデスクトップ統合は、データベースではなく、ビュー・オブジェクト・キャッシュから最新のデータをダウンロードします。

    したがって、エンド・ユーザーが更新したのと同じ行を別のユーザーが更新すると、そのエンド・ユーザーには、データ行のダウンロード後に、別のユーザーが行った更新が表示されません。

エンド・ユーザーが「アップロード・オプション」ダイアログの「取消」をクリックした場合、ADFデスクトップ統合は実行中のアクション・セットに中止コードを返します。エンド・ユーザーが「OK」をクリックすると、アクション・セットはアップロード操作のダイアログで指定したオプションの実行を続けます。

カスタムのアップロード・ダイアログを作成することもできます。「カスタムのアップロード・ダイアログの作成方法」を参照してください。

カスタムのアップロード・ダイアログの作成方法

デフォルトのアップロード・ダイアログのものとは異なるオプションをエンド・ユーザーに提供する、Fusion Webアプリケーションからのページを表示します。アクション・セットでADF表コンポーネントのUploadアクションを起動するアクションの前に、Dialogアクションを追加します。

注意:

「アップロード・オプションに関する必知事項」で説明されているように、DisplayUploadOptionsプロパティをFalseに設定することで、標準の「アップロード・オプション」ダイアログを表示しないようにできます。

始める前に:

ADFコンポーネントを構成してデータをADF表データ・コンポーネントからアップロードする方法を理解しておくと役立ちます。「ADF表コンポーネントからの変更のアップロード」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

カスタムのアップロード・ダイアログを作成するには:

  1. Fusion Webアプリケーションを開発するJDeveloperプロジェクトにページを作成します。このページの作成方法の詳細は、「Fusion WebアプリケーションからのWebページの表示」を参照してください。
  2. 「Fusion WebアプリケーションからのWebページの表示」に示すADFdi_CloseWindow要素(span要素など)の他に、ステップ1で作成するページには表7-6に示す要素を含める必要があります。

    表7-6 カスタム・アップロードに必要なSpan要素

    名前 説明

    ADFdi_AbortUploadOnFailure

    この要素をTrueに設定すると、失敗があったときにアクション・セットはアップロードを停止します。要素がFalseを参照する場合、アクション・セットはすべての行をアップロードしようと試み、各行のアップロードが成功したか失敗したかを表示します。

    ADFdi_DownLoadAfterUpload

    この要素をTrueに設定すると、変更されたデータがアップロードされた後で、アクション・セットはFusion WebアプリケーションからADF表コンポーネントにデータをダウンロードします。

    注意:

    作成するページには、ADFデスクトップ統合がデフォルトのアップロード・ダイアログをエンド・ユーザーに表示しないように、両方の要素を含める必要があります。必ず、各要素にブール値(TrueまたはFalse)を指定してください。

  3. ステップ1 で作成したページを起動するには、ADF表コンポーネントのUploadアクションを起動するアクション・セットのアクションより前に、Dialogアクションを追加します。

    Fusion Webアプリケーションからのページを表示する詳細は、「Fusion WebアプリケーションからのWebページの表示」を参照してください。

実行時の処理: カスタム・アップロード・ダイアログ

カスタムのダイアログが表示されるときに、デフォルトのアップロード・ダイアログではなく、表示されるアクション・セットでDialogアクションを構成するFusion Webアプリケーションからのページが表示されます。

注意:

エンド・ユーザーがデータをアップロードしようとしてサーバーに接続されていない場合、Dialogアクションでカスタムのアップロード・ページが見つからないとエンド・ユーザーにエラーが表示されます。サーバーへの接続がない場合、ADFデスクトップ統合が標準のダイアログに戻ることはありません。

Fusion Webアプリケーションからのページを表示する詳細は、「Fusion WebアプリケーションからのWebページの表示」を参照してください。それ以外の、データをアップロードするために構成するアクション・セットの実行時の動作については、「実行時の処理: ADF表コンポーネントによるデータのアップロード」を参照してください。

UploadAllOrNothingアクションを使用したADF表コンポーネントからの変更のアップロード

ADF表コンポーネントからデータをアップロードする場合、他にUploadAllOrNothingアクションがあり、このアップロード・プロセスでは、すべての行が正常にアップロードされた場合にのみ、すべての変更済の行がコミットされます。

ADFデスクトップ統合は、Table.Upload操作時に正常にアップロードされたすべての行の変更を、1つ以上の行で失敗があった場合でもコミットします。たとえば、100行がアップロードされ、3行のみで失敗があった場合は、97行がデータベースにコミットされます。詳細は、「ADF表コンポーネントからの変更のアップロード」を参照してください。

UploadAllOrNothingアクションを使用すると、すべての行が正常にアップロードされた場合にかぎり変更されたすべての行をコミットするように、アップロード・プロセスを構成できます。たとえば、100行がアップロードされ、いくつかの行で失敗があった場合は、行はデータベースにコミットされません。

UploadAllOrNothingアクションで非常に多くの変更済ワークシート行をアップロードすると、アプリケーション・サーバーでのメモリー消費量が大幅に増加する可能性があります。これは、すべての行が正常に処理された場合のみUploadAllOrNothingアクションがコミットするためです。このため、UploadAllOrNothingアクションは、大きいデータ・セットでの使用を対象にしていません。UploadAllOrNothing.ChangedDataLimitサーブレット・パラメータを使用して、UploadAllOrNothingアクションでアップロードできるデータの量を制限できます。UploadAllOrNothing.ChangedDataLimitサーブレット・パラメータの詳細は、「UploadAllOrNothingアクションを使用してアップロードできる変更済データの量の制限」を参照してください。

UploadAllOrNothingアクションを使用するためのADFコンポーネントの構成方法

ワークシート・リボン・コマンドなどのADFコンポーネントを構成し、アクション・セットを起動します。これは、続いてADF表コンポーネントのUploadAllOrNothingアクションを起動します。

始める前に:

ADFコンポーネントを構成してデータをADF表データ・コンポーネントからアップロードする方法を理解しておくと役立ちます。「UploadAllOrNothingアクションを使用したADF表コンポーネントからの変更のアップロード」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

UploadAllOrNothingアクションを使用するためにADFコンポーネントを構成するには:

  1. 統合Excelワークブックを開きます。
  2. 「Oracle ADF」タブで、「ワークシート・プロパティ」ボタンをクリックし、実行時にエンド・ユーザーがアクション・セットを起動するのに使用するリボン・コマンドを追加します。ワークシートにリボン・コマンドを追加する方法の詳細は、「実行時リボン・タブのワークシート・リボン・コマンドの構成方法」を参照してください。
  3. アクションの編集ダイアログを開いて、ADF表コンポーネントのアクションを起動するアクション・セットを構成します。

    アクション・セットの詳細は、「アクション・セットの使用」を参照してください。

  4. ADF表コンポーネントのUploadAllOrNothingアクションを、実行時にアクション・セットにより起動されるアクションのリストに追加します。
  5. 「OK」をクリックします。

実行時の処理: UploadAllOrNothingアクションの起動

UploadAllOrNothingアクションを選択した場合、ADFデスクトップ統合は、すべての行が正常にアップロードされた場合にかぎり、行の変更をコミットします。

注意:

UploadAllOrNothingアクションは、Uploadアクションと同じ方法でデータをアップロードします。UploadアクションおよびUploadAllOrNothingアクション時にデータがアップロードされる方法の詳細は、「実行時の処理: ADF表コンポーネントによるデータのアップロード」を参照してください。

UploadAllOrNothingアクション時に、ADFデスクトップ統合は、CommitBatchActionIDによって指定されたアクションが起動される前に、変更されたすべてのワークシート行をアップロードします。1つ以上の行レベルの失敗があると、FailureActionIDによって指定されたアクションは起動されますが、CommitBatchActionIDによって指定されたアクションは起動されません。

失敗があると、「変更済」列のすべての値は未変更のままになります。「ステータス」列には、エラーを含む行に対してメッセージが表示されますが、エラーのない行ではすべて空のままです。すべての行が正常にコミットされると、「変更済」列の値は消去され、アップロードされた行の「ステータス」列は成功を示します。

注意:

  • UploadAllOrNothingアクションは、データベース・トランザクションをサポートするデータ・コントロールでのみサポートされます。

  • CommitBatchActionIDが構成されておらず、アクション・セットにUploadAllOrNothingアクションが含まれている場合は、検証エラーが報告されます。

  • UploadAllOrNothingアクションは、すべての更新および挿入行を単一のバッチとして扱います。つまり、ADF表コンポーネントRowData.BatchOptionStartBatchActionIDおよびCommitBatchActionIDプロパティで指定されたアクション・バインディングは、操作ごとに1回起動されます。

UploadAllOrNothingアクションを使用してアップロードできる変更済データの量の制限

UploadAllOrNothingアクションで非常に多くの変更済ワークシート行をアップロードすると、アプリケーション・サーバーでのメモリー消費量が大幅に増加する可能性があります。このため、これは、大きいデータ・セットでの使用を対象にしていません。UploadAllOrNothingアクションの実行時にエンド・ユーザーが非常の多くのデータをアップロードすることを防ぐために、アップロードできる変更済データの合計を制限するUploadAllOrNothing.ChangedDataLimitサーブレット・パラメータを設定します(Kbで指定)。パラメータ値が指定されない場合は、デフォルトの制限値の10,240 Kbが使用されます。このサーブレット・パラメータにデフォルトより大きい値を指定する場合は、パフォーマンスおよびスケーラビリティのテストと分析を実行し、アプリケーション・サーバーへの影響を測定するようにしてください。

変更済データのアップロードの合計がUploadAllOrNothing.ChangedDataLimit値を超過すると、エンド・ユーザーにエラー・メッセージが報告され、UploadAllOrNothingアクションが中止されます。変更済データの制限を超過すると、Table.RowActions.FailureActionIDによって指定されたアクションが起動されます。

アップロード可能な変更済データの量の上限を変更する手順:

  1. Fusion Webアプリケーションのweb.xmlファイルを開きます。
  2. 表7-7の説明に従って、UploadAllOrNothing.ChangedDataLimitサーブレット・パラメータを追加します。

    表7-7 アップロード可能な変更済データの量の制限

    プロパティ

    Name

    サーブレット・パラメータの名前を次のように入力します。

    UploadAllOrNothing.ChangedDataLimit

    Value

    アップロード可能な変更済データの合計量をKB単位で指定します。

  3. web.xmlファイルを保存します。
  4. Fusion Webアプリケーションをリビルドして再起動します。

例7-1 UploadAllOrNothing.ChangedDataLimitサーブレット・パラメータを含むweb.xmlファイル

<servlet>
  <servlet-name>adfdiRemote</servlet-name>
  <servlet-class>oracle.adf.desktopintegration.servlet.DIRemoteServlet</servlet-class>
  <init-param>
    <param-name>UploadAllOrNothing.ChangedDataLimit</param-name>
    <param-value>10240</param-value>
  </init-param>
</servlet>

例7-1に、ADFデスクトップ統合のweb.xmlファイルのSummitサンプル・アプリケーションのUploadAllOrNothing.ChangedDataLimitのエントリを示します。

Fusion WebアプリケーションでのADF表コンポーネント行の削除

ADF表コンポーネントは、アクション(DeleteFlaggedRows)を公開します。このアクションは起動されると、ADF表コンポーネントでフラグの付いた行に対応するFusion Webアプリケーションの行を削除します。

ADF表コンポーネントでフラグの付けられた行とは、「ADF表コンポーネントでのバッチ処理」に示すように、エンド・ユーザーがダブルクリックしたか、_ADF_FlagColumn列のセルに文字を入力した行です。_ADF_FlagColumn列を構成してFusion Webアプリケーションの行を削除するには、列がADF表コンポーネントに存在する必要があります。

また、ADF表コンポーネントをホストするワークシートに関連付けるページ定義ファイルは、Deleteアクション・バインディングを公開する必要があります。

Fusion Webアプリケーションで行を削除するためのADF表コンポーネントの構成方法

ADF表コンポーネントから行を削除するには、Deleteアクション・バインディングをページ定義ファイルに追加し、ADF表コンポーネントのRowActionsプロパティ・グループを構成して、さらにアクション・セットを構成してDeleteFlaggedRowsアクションを起動する必要があります。

始める前に:

ADF表コンポーネントを構成してFusion Webアプリケーションのデータ行を削除する方法を理解しておくと役立ちます。「Fusion WebアプリケーションでのADF表コンポーネント行の削除」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

ADF表コンポーネントを構成して、Fusion Webアプリケーションで行を削除するには:

  1. JDeveloperFusion Webアプリケーションを開きます。
  2. 存在しない場合は、Deleteアクション・バインディングを、ADF表コンポーネントをホストするExcelワークシートに関連付けられたページ定義ファイルに追加します。
  3. ADF表コンポーネントのプロパティ・インスペクタを開いて、表7-8に示すようにRowActionsプロパティ・グループの値を設定します。

    表7-8 ADF表コンポーネントのRowActionsプロパティ

    設定するプロパティ 目的

    DeleteRowActionID

    ページ定義ファイルで公開されたDeleteアクション・バインディング。指定したDeleteアクション・バインディングは、イテレータの現在の行を削除するように想定されています。

    DeleteRowEnabled

    Trueに設定すると、ADF表コンポーネントでFusion Webアプリケーションの行を削除できます。

    デフォルト値はFalseです。

    ADF表コンポーネント・プロパティの詳細は、「ADF表コンポーネントのプロパティおよびアクション」 を参照してください。

  4. 「OK」をクリックします。
  5. 統合Excelワークブックを開きます。
  6. 「Oracle ADF」タブで、「ワークシート・プロパティ」ボタンをクリックし、実行時にエンド・ユーザーがアクション・セットを起動するのに使用するリボン・コマンドを追加します。ワークシートにリボン・コマンドを追加する方法の詳細は、「実行時リボン・タブのワークシート・リボン・コマンドの構成方法」を参照してください。
  7. ADF表コンポーネントのDeleteFlaggedRowsアクションを、実行時にアクション・セットにより起動されるアクションのリストに追加します。

    アクション・セットの起動の詳細は、「アクション・セットの使用」を参照してください。

  8. (オプション)失敗した場合でも、アクション・セットで処理を継続する場合は、DeleteFlaggedRowsアクションのOptions.AbortOnFailureプロパティをFalseに設定します。デフォルト値はTrueです。
  9. 「OK」をクリックします。

実行時の処理: Fusion Webアプリケーション内でのADF表コンポーネントによる行の削除

エンド・ユーザーは、「ADF表コンポーネントでの行のフラグ付け」で説明されているように、削除する行にフラグを付けます。それからエンド・ユーザーはアクション・セットを起動します。次に示す一連のイベントが発生します。

  1. 指定があれば、BatchOptions.StartBatchActionIDプロパティに参照されるアクション・バインディングが起動されます。

    このステップでの失敗はエラーとして処理されます。エラーがあると、アクション・セットの起動が停止します。また、アクション・セットにエラー条件が返されます。ActionSet.FailureActionIDプロパティにアクション・バインディングが指定されている場合、アクション・セットは指定されたアクション・バインディングを起動します。

    バッチ・オプションの構成の詳細は、「ADF表コンポーネントでのバッチ処理」を参照してください。

  2. アクション・セットは、ADF表コンポーネントでフラグ付けされた行ごとに、ツリー・バインディング・イテレータを正しい行に配置し、RowActions.DeleteRowActionIDで指定されたdelete-typeアクション・バインディングを起動します。

    注意:

    ADF表コンポーネントのDownloadアクションを最後に起動した後に挿入され、Fusion Webアプリケーションにアップロードされていない行は、削除のフラグが付いていても無視されます。

  3. ADF表コンポーネントでフラグ付けされた各行について、RowActions.DeleteRowActionIDで指定されたdelete-typeアクション・バインディングが失敗した場合、次のイベントはDeleteFlaggedRowsアクションのOptions.AbortOnFailureプロパティで指定した値に依存します。Falseの場合、アクション・セットは、最初の失敗時に停止することなく、フラグ付けされたすべての行の削除を試みます。フラグ付けされた行の削除がアクション・セットで失敗すると、その行は次のようになります。

    • ADF表コンポーネントに残る

    • ADF表コンポーネントの「ステータス」列でFailedとマークされる

    • 正常に削除されたフラグ付きの行のバッチをアクション・セットがコミットする際にスキップされる

    • 「フラグ付き」列のセルにフラグを付けたままにする

    DeleteFlaggedRowsアクションのOptions.AbortOnFailureプロパティがTrue (デフォルト値)に設定されている場合、ADF表コンポーネントはDeleteFlaggedRowsアクションの起動を停止します。

  4. BatchOptions.CommitBatchActionIDプロパティにアクション・バインディングが指定されている場合、アクション・セットがそれを起動します。このステップに失敗した場合、アクション・セットはバッチ処理を停止します。失敗がなかった場合、アクション・セットはBatchOptions.StartBatchActionIDプロパティによって指定されたアクション・バインディングを起動することにより、すべてのバッチがアクションによって処理されるまで次のバッチを処理します。

  5. アクション・セットがすべてのバッチを正常に処理した場合、ActionOptions.SuccessActionIDプロパティにアクション・バインディングが指定されていれば、このプロパティにより指定されたアクション・バインディングが起動されます。RowActions.DeleteRowActionIDで指定されているdelete-typeアクション・バインディングが起動して、Fusion Webアプリケーションにより削除された行がワークシートから削除され、アクション・セットに成功コードが戻されます。

    アクションがバッチを処理する間に失敗があった場合、アクション・セットはそのActionOptions.FailureActionIDプロパティで指定されたアクション・バインディングを起動します(このプロパティにアクション・バインディングが指定されている場合)。このアクション・バインディングは、アクション・セットに失敗コードを返します。

  6. アクション・セットがアクションを起動する際に予期しない例外が発生した場合、アクション・セットにエラー・コードが返されます。関連するすべてのエラー・メッセージがステータス・ビューアに表示されます。「ステータス・ビューアを使用したエンド・ユーザーへのエラー・メッセージのレポート」を参照してください。

注意:

Excelフィルタが適用されたADF表でDeleteFlaggedRowsアクションが起動されると、Excelフィルタの条件がクリアされ、非表示のExcelワークシート行が表示されますが、フィルタは削除されません。

ADF表コンポーネントでのバッチ処理

パフォーマンスとスケーラビリティを最適化するために、ADF表コンポーネントのUploadおよびDeleteFlaggedRowsアクションは、行単位ではなく、バッチで変更をコミットします。バッチのサイズや、バッチのアップロード時にADF表コンポーネントが起動するアクションを決定するバッチ・オプションのプロパティを構成できます。

ADF表コンポーネントのバッチ・オプションの構成方法

ADF表コンポーネントには、ADF表コンポーネントによる行のバッチの管理を構成できるプロパティ・グループ(BatchOptions)があります。これらのプロパティの詳細は、「ADF表コンポーネントのプロパティおよびアクション」 を参照してください。

始める前に:

ADF表コンポーネントのアップロード・データ、削除データ、およびバッチ・プロセスの両方のタスクについて理解しておくと役立ちます。「実行時の処理: ADF表コンポーネントによるデータのアップロード」「実行時の処理: Fusion Webアプリケーション内でのADF表コンポーネントによる行の削除」および「ADF表コンポーネントでのバッチ処理」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

ADF表コンポーネントのバッチ・オプションを構成するには:

  1. 統合Excelワークブックを開きます。
  2. ADF表コンポーネントを参照するExcelワークシートのセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックします。
  3. 表示されたプロパティ・インスペクタでBatchOptionsプロパティ・グループの値を設定します。

    表7-9 BatchOptionsのプロパティ

    設定するプロパティ 目的

    BatchSize

    ADF表コンポーネント・アクション(UploadまたはDeleteFlaggedRows)がCommitBatchActionIDにより指定されたアクション・バインディングを起動する前に、どれだけの行を処理するかを指定します。正の整数以外の値の場合、1回のバッチですべての行が処理されます。デフォルト値は100行です。

    CommitBatchActionID

    ADF表コンポーネントがそれぞれのバッチを処理した後で起動するアクション・バインディング。通常これはCommitアクション・バインディングです。

    LimitBatchSize

    True

    Trueの場合、ADF表コンポーネントはBatchSizeの値により決定されるバッチで行を処理します。デフォルト値はTrueです。

    Falseの場合、ADF表コンポーネントは変更されたすべての行を1つのバッチでアップロードします。

    ADF表コンポーネントですべての行をアップロードする場合、または失敗時に行をアップロードしない場合、このプロパティをFalseするだけでは十分ではありません。かわりに、「UploadAllOrNothingアクションを使用したADF表コンポーネントからの変更のアップロード」の説明に従って、UploadAllOrNothingアクションを起動する必要があります。

    StartBatchActionID

    (オプション)各バッチの開始時に起動するアクション・バインディングを指定します。

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

エンティティ・レベルでの失敗はバッチの失敗とは見なされません。コミット・レベルでの失敗(たとえば、外部キー属性の間違った値)はバッチの失敗と見なされます。

データのアップロード中のエラーのトラブルシューティング

ADF表コンポーネントからデータをアップロードする際に、特定の状況でエンド・ユーザーにエラーがレポートされる可能性があります。バッチからの変更を記録した後に、ADFデスクトップ統合はCommitBatchActionIDで指定されたアクションを実行します。CommitBatchActionIDによって指定されたアクションの実行中に失敗があったバッチの行では、失敗の詳細がステータス・ビューアに表示されます。変更があったバッチの行は、失敗時にBatch Failedが「ステータス」列に表示される前に、サーバーに正常にポストされます。

コミット・アクション中に発生したエラーは、それ以降のレコードのバッチにエラーがなくても、後に続くバッチ・コミット・アクションで引き続き報告される可能性があります。これは、CommitBatchActionIDアクションが失敗し、保留中のモデル更新が自動的に元に戻らなかった場合に発生する可能性があります。このようなエラーを回避するには、コミットが失敗した後に存在する保留中のモデル更新を明示的に元に戻す必要があります。たとえば、最初に保留中のモデル変更をコミットしようとするカスタムのアクションをCommitBatchActionIDに作成します。ただし、コミット中に例外が発生した場合は、カスタム・メソッドは後に続くすべてのバッチ・コミットが成功するように、最初に保留中のモデル変更をロールバックする必要があります。

注意:

クライアントで期待されるとおりにコミット・エラーが報告されるように、ロールバック後にコミットの例外がスローされることが重要です。

ADF表コンポーネント内の特殊な列

ADF表コンポーネントには、ワークシートにADF表コンポーネントを挿入する際にいくつかの列がデフォルトで含まれています。これらの列は、必要に応じてそのまま残しておくことも、削除することもできます。

次に、これらの列とその目的を示します。

  • _ADF_ChangedColumn

    この列のセルは、ADF表コンポーネントの行の変更を追跡します。ダウンロードまたは最後に成功したアップロード以降にADF表コンポーネントの行のデータを変更した場合、上向き矢印のような記号が、_ADF_ChangedColumn列の対応するセルに表示されます。ユーザーのこの列のセルをダブルクリックすると、この記号は切り替わります(表示または非表示)。図7-12に例を示します。

    図7-12 ADF表コンポーネントの変更された列

    図7-12の説明が続きます
    「図7-12 ADF表コンポーネントの変更された列」の説明

    注意:

    エンド・ユーザーがADF表コンポーネントのUploadアクションで、この列によってマークされた行の変更をアップロードしない場合、ユーザーは対応するセルに表示されるエントリをクリアする必要があります。

    ADF表コンポーネントがUploadアクションを起動すると、空でないセルを含むすべての行が_ADF_ChangedColumn列にアップロードされます。「ADF表コンポーネントからの変更のアップロード」を参照してください。

  • _ADF_FlagColumn

    エンド・ユーザーがこの列のセルをダブルクリックすると、対応する行がフラグ付けされた行処理としてフラグ付けされます。実線の円記号が表示され、フラグ付けされた行処理のために行にフラグが付けられたことが示されます。この列の使用の詳細は、「ADF表コンポーネントでの行のフラグ付け」を参照してください。

    注意:

    デフォルトでは、実線の円記号はフラグ付けされた行処理としてフラグ付けされた行を示します。ただし、_ADF_FlagColumnの空白でないセルは、フラグ付けされた行処理のために対応する行にフラグを付けます。

  • _ADF_StatusColumn

    この列は、DeleteFlaggedRowsUploadなどのADF表コンポーネント・アクションの起動の結果をレポートします。

    _ADF_StatusColumnのセルにメッセージが表示され、対応する行の起動結果が示されます。エンド・ユーザーがADF表列で定義されたDoubleClickActionSetを起動してエラーが発生した場合、そのエラーは対応する行の「ステータス」列でもレポートされます。図7-13に、アップロードが失敗した行の「ステータス」列のメッセージの例を示します。ステータスの詳細は、「ステータス・ビューアを使用したエンド・ユーザーへのエラー・メッセージのレポート」で説明されているステータス・ビューアに表示されます。

    図7-13 ADF表コンポーネントのステータス列

    図7-13の説明が続きます
    「図7-13 ADF表コンポーネントのステータス列」の説明
  • _ADF_RowKeyColumn

    「キー」列とも呼ばれるこの列には、実行時にADFデスクトップ統合によって使用されるADF表コンポーネントに関する重要な情報が含まれます。この列は実行時と設計時の両方に表示されます。「キー」列は、ADF表コンポーネントが正しく機能するために必要なため、削除しないでください。その外観に関連するプロパティを構成できます。

    _ADF_RowKeyColumnの詳細は、「ADF表コンポーネントのキー列の構成」を参照してください。

ADF表コンポーネントでは、_ADF_ChangedColumn列、_ADF_FlagColumn列、_ADF_RowKeyColumn列および_ADF_StatusColumn列のプロパティは、それが参照する他の列のプロパティとは別の方法で処理されます。InsertComponentInsertUsesUpdateUpdateComponentなどのプロパティの値セットは、表A-12に示すようなDisplayRowErrorsアクションを起動する場合を除いて無視されます。CellStyleNameHeaderStyleNameなど、スタイルや外観に関連するプロパティの値が読み取られます。

ADF表コンポーネントでの行のフラグ付け

ADF表コンポーネントには、フラグの付いた処理で行を簡単に選択できる_ADF_FlagColumn列がデフォルトで含まれています。_ADF_FlagColumn列のセルをダブルクリックすると、対応する行にコンポーネント・アクションによって起動されるアクションによる処理のフラグが付きます。

エンド・ユーザーが_ADF_FlagColumn列のセルをダブルクリックすると、セルに実線の円が表示されるか非表示になり、その行にフラグが付いているかどうかが示されます。図7-14はフラグの付いた列の例を示します。

図7-14 ADF表コンポーネントのフラグ付けされた列

この図は周囲のテキストで説明しています

注意:

デフォルトでは、実線の円記号はフラグ付けされた行処理としてフラグ付けされた行を示します。ただし、_ADF_FlagColumn列の空白でないセルは、フラグ付けされた行処理のために対応する行にフラグを付けます。

次のコンポーネント・アクションは、フラグ付けされた行に対して起動できます。

  • DeleteFlaggedRows

  • DownloadFlaggedRows

すべての行にフラグを付けるにはFlagAllRowsコンポーネント・アクションを、ADF表コンポーネントのすべての行からフラグを取るにはUnflagAllRowsコンポーネント・アクションを使用できます。

注意:

  • ADF表コンポーネントのDownloadFlaggedRowsアクションは、最後にDownloadDownloadForInsertアクションを起動した後の表列構造の変更をサポートしていません。表列構造は通常、動的な列を使用していたり、Visibleプロパティに複雑な式がある列が表に含まれる場合に変わります。

  • DownloadFlaggedRowsアクションは挿入された行には適用できません。

これらのコンポーネント・アクションの使用は、ADF表コンポーネントの_ADF_FlagColumn列があるかどうかによって決まります。ADF表コンポーネントから_ADF_FlagColumn列を削除すると、これらのコンポーネント・アクションはいずれも起動できません。これらのコンポーネント・アクションの詳細は、「ADF表コンポーネントのアクション」を参照してください。

実行時にはエンド・ユーザーは以前にリストされたすべてのコンポーネント・アクションをアクション・セットから起動できます。起動されたコンポーネント・アクションは、フラグ付けされたすべての行を処理します。たとえば、フラグ付けされたすべての行をダウンロードまたは削除します。コンポーネント・アクションを起動するアクション・セットの構成の詳細は、「アクション・セット内のコンポーネント・アクションの起動方法」を参照してください。

ADF表コンポーネントのキー列の構成

統合ExcelワークブックにADF表を追加すると、設計時に「キー」列(列ID: _ADF_RowKeyColumn)が自動的に表示されます。

「キー」列には、ADFデスクトップ統合で表が正しく機能するために使用される重要な情報が含まれます。実行時には「キー」列を削除しないでください。

キー列の構成方法

「キー」列の位置、スタイルのプロパティ、ヘッダー・ラベルを構成できます。デフォルトでは、Key Cellスタイルが適用されます。

始める前に:

ADF表コンポーネントのキー列について理解しておくと役立ちます。「ADF表コンポーネントのキー列の構成」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

「キー」列を構成するには:

  1. 統合Excelワークブックを開きます。
  2. ADF表コンポーネントを参照するExcelワークシートのセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックします。
  3. 「コンポーネントの編集: ADF表」ダイアログで、Columnsの入力フィールドの横にある参照(...)アイコンをクリックします。

    「列の編集」ダイアログが表示され、選択したADF表コンポーネントのすべての列が一覧表示されます。

  4. ID_ADF_RowKeyColumnの列を選択します。
  5. 必要に応じて列のプロパティを変更します。ただし、次のプロパティは変更しないでください。
    • DynamicColumn

    • InsertComponent

    • InsertUsesUpdate

    • UpdateComponent

    • ID

    • Visible

  6. 必要に応じて、矢印キーと矢印キーを使用して列の位置を変更し、列の外観を決定するプロパティの値(LabelTooltipおよびStyle)を変更します。
  7. 「OK」をクリックして、「列の編集」ダイアログを閉じます。
  8. 「OK」をクリックして、コンポーネントの編集: ADF表ダイアログを閉じます。

設計時のキー列の手動による追加方法

旧バージョンのADFデスクトップ統合を使用して準備および構成された統合Excelワークブックを使用する場合、設計時に「キー」列は使用できません。この列は実行時にのみ表示されます。「キー」列のプロパティを構成するには、設計時にこれをワークブックに追加します。

始める前に:

ADF表コンポーネントのキー列について理解しておくと役立ちます。「ADF表コンポーネントのキー列の構成」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

設計時に手動で「キー」列を追加するには:

  1. 統合Excelワークブックを開きます。
  2. ADF表コンポーネントを参照するExcelワークシートのセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックします。
  3. 表7-10の説明に従って、ADF表に新しい列を追加してプロパティを指定します。列の追加の詳細は、「ADF表コンポーネントへの列の追加方法」を参照してください。

    表7-10 「キー」列のプロパティ

    設定するプロパティ

    CellStyleName

    Key Cell

    HeaderStyleName

    Column Header

    DynamicColumn

    False

    HeaderLabel

    #{_ADFDIres[COMPONENTS_TABLE_ROWKEY_COL_LABEL]}

    ID

    _ADF_RowKeyColumn

    InsertUsesUpdate

    True

    UpdateComponent

    OutputText

    Valueのプロパティは空白にする必要があります。

    Visible

    True

    必要に応じて、矢印キーと矢印キーを使用して列の位置を変更し、列の外観を決定するプロパティの値(LabelTooltipおよびStyle)を変更します。

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

注意:

新しい列のIDプロパティを_ADF_RowKeyColumnに指定する必要があります。そうしなければ、この列は「キー」列と見なされず、実行時に別の「キー」列が自動的に表示されます。

ADF表コンポーネントへの動的な列の追加

ビュー・オブジェクトによって返される使用可能な属性に応じて、実行時にADF表コンポーネントが拡張または収縮するように、ADF表コンポーネントに動的な列を追加できます。

TableColumn配列内にあるColumnsグループのDynamicColumnプロパティによって、この動作は制御されます。列を動的にするには、DynamicColumnプロパティをTrueに設定します。TableColumn配列の動的な列とは、属性名が設計時に認識されていないツリー・バインディングまたはツリー・ノード・バインディングにバインドされている列です。動的な列は、実行時に複数のワークシートの列に拡張できます。

ADF表コンポーネントの動的な列は、次のサブコンポーネント・タイプをサポートしています。

  • ModelDrivenColumnComponent

  • 入力テキスト

  • 出力テキスト

注意:

ADFデスクトップ統合は、動的な列にあるサブコンポーネント・タイプTreeNodeListをサポートしていません。

モデルドリブンの値リストのサポート

また、動的な列を構成して、サブコンポーネント・タイプが実行時のモデルの構成から決定される値リスト・サブコンポーネントをサポートできます。設計時には、UpdateComponentプロパティまたはInsertComponentプロパティに対して、サブコンポーネント・タイプをModelDrivenColumnComponentと指定します。実行時には、動的な列の拡張の際に、値リストをキャッシュする前にモデルドリブンのランタイム・コンポーネントが決定されます。リモート・サーブレットによって、クライアントはモデル構成を取得でき、クライアントは希望する列のサブコンポーネント・タイプを選択できるようになります。「ADF表コンポーネントへのModelDrivenColumnComponentサブコンポーネントの追加」および「ADF表コンポーネント列での値リストの作成」を参照してください。

注意:

複数の<nodeDefinition>要素を含むツリー・バインディングがADF表コンポーネントで使用される場合、動的な列に使用されるモデルドリブン・リストの名前は、すべてのノードで一意である必要があります。

動的な列の構成方法

EL式を次の形式で、ADF表コンポーネント列のInsertComponentプロパティによってサブコンポーネントとして指定されたコンポーネントのValueプロパティについて指定することにより、動的な列は、構成します。

#{bindings.TreeID.[TreeNodeID].AttributeNamePrefix*.inputValue}

または:

#{bindings.TreeID.AttributeNamePrefix*.inputValue}

説明:

  • TreeIDはADF表コンポーネントで使用されるツリー・バインディングのIDです。

  • TreeNodeIDは、ツリー・ノード・バインディングIDを指定するオプションの値です。この値を省略する場合は、属性がどのツリー・ノード・バインディングに属するかに関係なく、ツリー・バインディングからの一致するすべての属性が表示されます。

  • AttributeNamePrefixは、ツリー・バインディングの基底にあるイテレータ内に存在する属性のサブセットを識別します。AttributeNamePrefixの値を指定しない場合、ツリー・バインディングまたはツリー・バインディング・ノードのすべての属性が返されます。常に*文字を使用してください。

注意:

動的な列を追加する際、ツリー・ノード属性名がページ定義ファイルで指定されていないことを確認してください。実行時には、ツリー・ノード・オブジェクトは基底にあるイテレータからすべての属性名を返します。ページ定義ファイルに指定された属性名がある場合、ツリー・ノード・オブジェクトはそのリストに基づいて、使用可能な属性名のリストを限定します。

次の例は、EmpTreeバインディングのmodel.EmpViewノードにある、"period"で始まる名前を持つすべての属性を返します。

#{bindings.EmpTree.[model.EmpView].period*.inputValue} 

宣言型SQLモードによるビュー・オブジェクトのサポート

宣言型SQLモードで構成され、実行時にカスタマイズされたビュー・オブジェクトをサポートするために、属性が定義されていないページ定義ファイルのツリー・バインディングを公開します。次に例を示します。

<tree IterBinding="DeclSQLModeIterator" id="DeclSQLModeTree">
    <nodeDefinition Name="DeclSQLModeTreeNode"/>
</tree>

実行時に、ツリー・バインディングは選択した属性を、基礎となる宣言型SQLモード・ビュー・オブジェクトから統合Excelワークシートへ戻します。

実行時の処理: 動的な列でのデータのダウンロードまたはアップロード

ADF表コンポーネントのDownloadアクションまたはDownloadForInsertアクションが起動されると、ADF表コンポーネントは一致する属性の最新のセットが含まれるように動的な列を自動的に更新します。Downloadが起動されるたびに、ADFデスクトップ統合は動的な列に対して、すべての行に同じ属性セットがあることを要求します。Downloadの際に属性のセットが行ごとに異なる場合、エラーが発生することがあります。

動的な列がInsert操作とUpdate操作をどちらもサポートする場合、動的な列のInsertComponentサブコンポーネントとUpdateComponentサブコンポーネントについて、Valueプロパティに同じEL式を指定する必要があります。実行時には、ADF表コンポーネントはEL式により返される属性バインディングの値を表示する動的な列を含むように拡張します。

通常、一致する属性のセットは、ADF表コンポーネントのDownloadアクションの起動からUploadアクションの起動までの間は変更されません。ただし、ADF表コンポーネントがUploadアクションを起動したときに、以前にダウンロードした属性がツリー・バインディングにもう存在しない場合、統合Excelワークブックは、データのアップロードを続行するかどうか決めるようエンド・ユーザーにプロンプトを表示します。前述のシナリオ(ダウンロードした属性がツリー・バインディングにもう存在しない)を回避する方法の詳細は、「複数のWebセッション間における統合Excelワークブックの使用」を参照してください。

注意:

ADF表コンポーネントは、列を動的として構成する場合、列のVisibleプロパティの値を無視します。ADF表コンポーネントの列プロパティの詳細は、表A-11を参照してください。

動的な列のヘッダー・ラベルの指定方法

次の構文を使用して、動的な列のHeaderLabelプロパティにEL式を記述します。

#{bindings.TreeID.[TreeNodeID].hints.AttributeNamePrefix*.label}

または:

#{bindings.TreeID.hints.AttributeNamePrefix*.label}

動的な列でInsert操作およびUpdate操作がサポートされている場合、動的な列のInsertComponentおよびUpdateComponentValueプロパティに指定するものと同じツリー・バインディングID、ツリー・ノード・バインディングID、および属性名の接頭辞の値を、動的な列のHeaderLabelプロパティで指定します。

エンド・ユーザーが値を入力しなければならない必須の列に、記号や文字列でマークを付ける場合は、HeaderLabelプロパティを構成する必要があります。次の構文を使用して、すべての必須の列に記号や文字列を追加するEL式を記述します。

=IF(#{bindings.TreeID.[TreeNodeID].hints.*.mandatory}, "<prefix_for_mandatory_cols>", "") & "#{bindings.TreeID.[TreeNodeID].hints.*.label}"

たとえば、次のEL式は必須の列のラベルにアスタリスク(*)文字を追加します。

=IF(#{bindings.MyTree.[myapp.model.MyChildNode].hints.*.mandatory}, "* ", "") & "#{bindings.MyTree.[myapp.model.MyChildNode].hints.*.label}"

動的な列のスタイルの指定方法

展開したすべての列に同じスタイルを適用できる場合は、動的な列のCellStyleNameプロパティにリテラル・スタイル名を指定します。

ただし、展開した別の列に異なるスタイルが必要な場合、動的な列のCellStyleNameプロパティにEL式を指定する必要があります。

adfdiCellStyleなどのカスタム属性プロパティを使用して、属性ごとに異なるスタイルを指定できます。次の構文は、CellStyleName EL式に使用されます。

#{bindings.TreeID.[TreeNodeID].hints.*.adfdiCellStyle}

カスタム属性プロパティの詳細は、「ADFデスクトップ統合ELベースのプロパティとカスタム属性プロパティの使用」を参照してください。

または、より複雑なEL式をスタイル名の計算に使用して、属性ごとに異なるスタイルを指定できます。

次の例では、すべてのdate列にMyDateStyleスタイルが適用され、他のデータ型の列にはMyDefaultStyleが適用されます。

=IF("#{bindings.MyTree.[myapp.model.MyChildNode].hints.*.dataType}"="date", "MyDateStyle", "MyDefaultStyle")

EL式の詳細は、「ADFデスクトップ統合のEL式」を参照してください。

ADF表コンポーネントへのModelDrivenColumnComponentサブコンポーネントの追加

ModelDrivenColumnComponentは、ADF表コンポーネントを挿入したときのデフォルトのサブコンポーネントです。列サブコンポーネントのタイプは、サーバー上に指定された列の属性のコントロール・タイプのヒントにより、実行時に決まります。

設計時には、列について、UpdateComponentプロパティまたはInsertComponentプロパティに対して、サブコンポーネント・タイプをModelDrivenColumnComponentと指定します。実行時に、属性に関連付けられたモデルドリブン・リストがある場合、列は、モデルドリブン・リスト項目を含むドロップダウン・リストを使用します。

注意:

  • 日付属性を含むモデルドリブン列に(オプションの)日付ピッカーを使用するには、Compatibility.TableComponents.ModelDrivenColumns.DatePickerEnabledプロパティをTrueに設定します。「ADFデスクトップ統合互換性のプロパティ」を参照してください。

  • 属性に関連付けられたモデルドリブン・リストがなかったり、リストに基づいていないコントロール・タイプが指定されている場合、列で入力テキスト・サブコンポーネントが使用されます。コントロール・タイプがcombo_lovのモデルドリブン・リストがある場合、列は入力テキスト・サブコンポーネントを使用します。

  • 依存値リストの実装では、ADF表コンポーネントで複数のModelDrivenColumnComponentサブコンポーネントが使用される場合に、ADFデスクトップ統合は、各リストのサブコンポーネントが別のモデルドリブン・リストに依存するかどうかを決定します。これを行うために、リストに指定されたバインド変数が、別のリストにバインドされた属性を参照するかどうかが検証されます。表8-1を参照してください。

モデルドリブン・リストの作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』モデルドリブン・リストの作成方法に関する項を参照してください。

実行時にデータに基づいて列をサイズ変更するためのADF表コンポーネントの構成

ADF表コンポーネントの列幅を構成して、実行時に自動的にサイズ変更されるようすることができます。

列は、Excelの列幅の自動調整機能を使用してサイズ変更できます。この機能は、列のデータ値に基づいて幅を決定します。ADFデスクトップ統合では、EL式から導出された明示的な幅値を使用して列をサイズ変更することもできます。

ADF表の列のサイズ変更の動作は、表レベルで構成されます。その後、列レベルでオーバーライドできます。

実行時の列幅のサイズ変更は、2ステップのプロセスです。まず、目的の幅関連プロパティ値で表の列を構成します。次に、ADF表コンポーネントのResizeColumnsアクションを目的のアクション・セットに追加します。通常は、アクション・セットのADF表コンポーネントのDownloadアクションの後に。このアクションを追加します。「ADFデスクトップ統合のサンプル・アプリケーションの概要」に説明されているSummitサンプル・アプリケーションのEditCustomers-DT.xlsxワークブックは、この実装を示します。

実行時に列をサイズ変更するようにADF表コンポーネントを構成する方法

設計時ResizeColumnsModeプロパティを使用して、ADF表コンポーネントのすべての列の共通サイズ変更動作を指定できます。ResizeColumns表コンポーネント・メソッドを使用して、サイズ変更がいつ行われるかを制御します。特定の列のサイズ変更動作をオーバーライドするには、列のResizeModeプロパティを使用します。

始める前に:

これは、ADF表の列のサイズ変更動作の構成を理解するのに役立つことがあります。「実行時にデータに基づいて列をサイズ変更するためのADF表コンポーネントの構成」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

ADF表の列のサイズ変更動作を構成する手順:

  1. 統合Excelワークブックを開きます。
  2. ADF表コンポーネントのセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックします。
  3. 「コンポーネントの編集: ADF表」ダイアログで、ResizeColumnsModeプロパティを表7-11の説明に従って構成および設定します。

    表7-11 ADF表コンポーネントのResizeColumnsMode値

    説明

    UseColumnValue

    デフォルトです。表のすべての列のサイズは、そのColumn.ResizeModeプロパティ値に基づいて変更されます(または変更されません)。InheritFromTableを含む列のサイズは変更されません。Column.ResizeModeプロパティがInheritFromTable以外の値に設定されている個々の列は、適宜サイズ変更されます。

    AutoFitAllWithHeader

    表の境界内のすべての列が、Excelの自動調整サポートを使用して最適なサイズに変更されます。ヘッダー・セルを含む列のセルのデータ値が最適なサイズの決定に使用されます。

    Column.ResizeModeプロパティがInheritFromTable以外の値に設定されている個々の列は、適宜サイズ変更されます。

    表の上または下にある列のセルの値は、最適なサイズの検出時に考慮されません。

    AutoFitAllWithoutHeader

    表の境界内のすべての列が、Excelの自動調整サポートを使用して最適なサイズに変更されます。ヘッダー・セルを除く列のセルのデータ値が最適なサイズの決定に使用されます。

    Column.ResizeModeプロパティがInheritFromTable以外の値に設定されている個々の列は、適宜サイズ変更されます。

    表の上または下にある列のセルの値は、最適なサイズの検出時に考慮されません。

  4. コマンドのサイズ変更動作を構成し、表レベルのサイズ変更動作をオーバーライドするには、ResizeModeプロパティを設定します。

    「コンポーネントの編集: ADF表」ダイアログで、Columnsプロパティを展開し、ResizeModeプロパティを表7-12の説明に従って設定します。

    表7-12 ADF表の列プロパティのResizeMode値

    説明

    Manual

    列はサイズ変更されません。列幅は現在の設定のままになります。

    InheritFromTable

    デフォルトです。列は表のResizeColumnsMode設定に基づいてサイズ変更されます。

    ResizeColumnsModeUseColumnValueに設定されている場合、サイズ変更は行われません。

    AutoFitWithHeader

    ヘッダー・セルを含め、列はExcelの自動調整サポートを使用して最適なサイズに変更されます。

    AutoFitWithoutHeader

    ヘッダー・セルを除き、列はExcelの自動調整サポートを使用して最適なサイズに変更されます。

    SpecifiedWidth

    ADFデスクトップ統合では、Widthプロパティを使用して目的の列幅を決定します。数値またはEL式を指定できます。

  5. ADF表コンポーネントのResizeColumnsModeプロパティがUseColumnValueに設定され、列のResizeModeプロパティがSpecifiedWidthに設定されている場合は、Column.Widthプロパティを、列に表示する文字数に設定します。

    列のWidthプロパティは、リテラル数値、または1から255までの数値に評価されるEL式に設定できます。属性としてUIヒントdisplayWidthを利用するWidthのEL式の例を次に示します。

    #{bindings.Customers.hints.Name.displayWidth}

    注意:

    • 式を評価できない場合、または式が1未満か255より大きい値に評価される場合、ResizeModeManualと見なされ、列はサイズ変更されません。

    • 環境の「地域と言語」の設定に関係なく、小数値を指定する場合は、小数点を使用します。(フランス語のロケールに見られるような) "小数点を表すカンマ"はサポートされていません。

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

実行時にADF表コンポーネントの列をサイズ変更するようにアクション・セットを構成する方法

ADF表コンポーネントのResizeColumnsアクションを呼び出すように、ワークシート・リボン・コマンドまたはワークシート・イベントのアクション・セットを構成できます。

多くの列および多くの行のある表のサイズ変更には時間がかかることがあります。

始める前に:

これは、ADF表の列のサイズ変更動作の構成を理解するのに役立つことがあります。「実行時にデータに基づいて列をサイズ変更するためのADF表コンポーネントの構成」および「アクション・セットの使用」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

ADF表コンポーネントの列をサイズ変更するようにアクション・セットを構成する手順:

  1. 統合Excelワークブックを開きます。
  2. 「Oracle ADF」タブの「ワークシート・プロパティ」ボタンをクリックして、リボン・コマンドを追加します(「実行時リボン・タブのワークブック・リボン・コマンドの定義方法」を参照)。

    注意:

    リボン・コマンドを追加するかわりに、実行時にアクション・セットを起動するように、ワークシート・イベントを構成できます。

  3. アクションの編集ダイアログを開き、アクション・セットを構成します。アクション・セットの起動の詳細は、「アクション・セットの使用」を参照してください。
  4. ADF表コンポーネントResizeColumnsアクションを、実行時にアクション・セットにより起動されるアクションのリストに追加します。ResizeColumnsはコンポーネント・アクションです。
  5. 「OK」をクリックします。

図7-15に、EditCustomers-DT.xlsxワークブックのワークシートEventsプロパティに構成されている設計時のResizeColumnsアクションを示します。

注意:

ワークシートStartupイベントで起動されるアクション・セットを構成し、Downloadアクション後に、このアクション・セットがADF表コンポーネントのResizeColumnsアクションを起動する場合は、Downloadアクションの前に、アクション・セットがADF表コンポーネントのInitializeアクションを起動することを確認してください。図7-15に、この構成を示します。

図7-15 ResizeColumnsアクション

この図は周囲のテキストで説明しています

実行時の処理: ADF表の列のサイズ変更方法

ADF表の列は、アクション・セット内のTable.ResizeColumnsコンポーネント・アクションの実行結果としてサイズ変更されます(「実行時にADF表コンポーネントの列をサイズ変更するようにアクション・セットを構成する方法」を参照)。

実行時のADF表コンポーネントの列のサイズ変更に関する必知事項

ADF表コンポーネントの列を含むワークシート全体の列は、Table.ResizeColumnsModeおよびColumn.ResizeModeプロパティの値に応じてサイズ変更されます。表の列のサイズ変更は、表の境界外の同じExcelワークシート列にあるセルまたは他のコンポーネント(フォーム・コンポーネントなど)の内容に影響します。

実行時に列のサイズが変更されるようにアクション・セットで構成されたADF表コンポーネントがワークシートに2つ以上含まれる場合、ADF表コンポーネントは、それらのサイズを個別に変更することを試みます。ただし、最後に実行されるADF表コンポーネントのResizeColumnsアクションは、列の幅を設定します。

ヒント:

複数のADF表コンポーネントを含むワークシートの場合は、プライマリ表に対してのみResizeColumnsアクションをコールします。

注意:

  • Column.Widthプロパティでは、行固有のバインディングはサポートされません。

  • 一般的な戦略は、ダウンロード・アクションの1つの後にResizeColumnsをコールすることです。例は図7-15を参照してください。

  • 大きい表の列のサイズを変更すると、時間が大幅にかかる場合があります。このような余分な作業により、ダウンロードが遅くなるとエンド・ユーザーが感じる場合があります。通常のデータ・ロードでワークブックをテストし、各自のユースケースで、遅延してもサイズ変更する必要があるかどうかを判断してください。

  • Excelでは、指定されたWidth値が整数のピクセル値に四捨五入されます。たとえば、8.5文字の値は、64ピクセルに等しい8.43に丸められます。

  • スタイル定義で「テキストの折返し」が選択されたセルに対して自動調整サイズ変更モードの1つを使用すると、期待どおりにサイズ変更されないことがあります。SpecifiedWidthモードを使用する、設計時に表のセルの行の高さを明示的に設定する、またはスタイルから「テキストの折返し」設定を削除すると、より適切な結果が生成されることがあります。

  • 自動調整サイズ変更モードの1つを使用して、実行時にテキストが折り返されないようにする場合、設計時にExcel列を広くしておくと便利です。これは、Excelの自動調整サイズ変更モードの機能によるものです。

ADF表コンポーネントでの列のグループ化

たとえば、ADF表コンポーネントにレンダリングされる列のグループ・ヘッダーをレンダリングし、列のグループに説明ラベルを使用することで、エンド・ユーザーに直感的なインタフェースを提供できます。

図7-22に、ADFデスクトップ統合のSummitサンプル・アプリケーションのEditAllInventory-DT.xlsxワークブックで、「製品」から補充日の列を在庫の詳細グループ・ヘッダーにグループ化し、「倉庫」から「国」の列が倉庫の詳細の列のグループにグループ化されている例を示します。

図7-16 ADF表コンポーネントの列でのグループ化ヘッダーの指定

この図は周囲のテキストで説明しています

ADFデスクトップ統合には、実行時に、ADF表コンポーネントの標準の表ヘッダー行の上部に追加の表ヘッダー行をレンダリングすることで、図7-16に示す機能が実装されます。ADF表コンポーネントのいずれかの列定義にGroupHeaderプロパティを構成すると、この追加の表ヘッダー行がレンダリングされます。この機能を動的な列に実装することもできます。この機能を動的な列に実装する場合は、「動的な列でレンダリングする列をグループ化する方法」に説明されているカスタム属性を定義する必要があります。静的および動的な列にGroupHeaderプロパティを構成する方法の詳細は、「ADF表コンポーネントで列をグループ化する方法」を参照してください。

実行時に、既存のデータとスタイルが上書きされ、追加の表ヘッダー行がレンダリングされるため、グループ列に追加の表ヘッダー行をレンダリングする場合は、ADF表コンポーネントの上の行にデータとスタイルがない状態にします。

ADF表コンポーネントで列をグループ化する方法

列のグループの開始列と終了列にGroupHeaderプロパティを構成して、ADF表コンポーネントの列をグループ化します。

始める前に:

ADF表コンポーネントで列をどのようにグループ化できるかについて理解しておくと役立ちます。「ADF表コンポーネントでの列のグループ化」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

動的な列にレンダリングされるヘッダー列をグループ化する場合は、「動的な列でレンダリングする列をグループ化する方法」の説明に従って、カスタム属性プロパティを定義します。このステップは、静的な列でヘッダー列をグループ化する場合は不要です。

ADF表コンポーネントで列をグループ化する手順:

  1. 統合Excelワークブックを開きます。
  2. ADF表コンポーネントを参照するExcelワークシートのセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックします。
  3. 「コンポーネントの編集: ADF表」ダイアログで、Columnsプロパティの参照(...)アイコンをクリックします。

    「列の編集」ダイアログが表示され、選択したADF表コンポーネントのすべての列が一覧表示されます。

  4. 「列の編集」ダイアログで、列のグループを開始する列を選択します。
  5. 「列の編集」ダイアログの右側ウィンドウで、「レイアウト」フィールドのGroupHeaderプロパティを展開し、表7-13の説明に従って、プロパティを構成します。

    表7-13 ADF表コンポーネントのグループの開始列のGroupHeaderプロパティ

    設定するプロパティ 設定する値

    Boundary

    startまたはstartに評価されるEL式に設定します。

    これにより、列が列のグループの開始として定義されます。

    列のグループの開始として動的な列を定義する場合は、「動的な列でレンダリングする列をグループ化する方法」の説明に従って、startの値のカスタム属性プロパティを定義することをお薦めします。このカスタム属性プロパティの値を取得するEL式を記述します。

    Label

    このプロパティを文字列、または実行時に列グループ・ヘッダーのラベルに評価されるEL式に設定します。評価された値は、開始列のセルにレンダリングされます。列グループ・ヘッダーの開始列には、このプロパティの値が必要です。値を指定しないと、実行時に列グループ・ヘッダーが形成されません。ラベルの詳細は、「統合Excelワークブックでのラベルの使用」を参照してください。

    ラベル・テキストが表示されるExcelセルを編集して、このプロパティを編集することもできます。セルのテキストを編集すると、このプロパティのみが直接影響を受けます。Boundaryプロパティには影響はありません。

    StyleName

    このプロパティをワークブックで定義するスタイル、またはスタイル名に評価されるEL式に設定します。名前付きスタイルは、実行時に列グループのヘッダー・セルに適用されます。スタイルの詳細は、「統合Excelワークブックの外観の構成」を参照してください。

    Tooltip

    (オプション)ツールチップを指定します。指定したツールチップは、グループの終了列の追加の表ヘッダー・セルからレンダリングされます。詳細は、「実行時の処理: ADF表コンポーネントによる列のグループ化」を参照してください。

    ツールチップの詳細は、「ADF表コンポーネントへのツールチップの追加方法」を参照してください。

    図7-17に、図7-16に示すEditAllInventory-DT.xlsxワークブックの在庫の詳細の列のグループを開始するようにGroupHeaderに構成された値を示します。

    図7-17 列のグループの開始列の構成

    この図は周囲のテキストで説明しています
  6. 「列の編集」ダイアログで、列のグループを終了する列を選択します。

    注意:

    列のグループを終了するように列を構成しない場合は、ステップ5で開始列として構成した列は、単一列のグループとしてレンダリングされます。

  7. 「列の編集」ダイアログの右側ウィンドウで、「レイアウト」カテゴリのGroupHeaderプロパティを展開し、次のプロパティを構成します。
    • Boundary: endまたは、endに評価されるEL式に設定します。

      これにより、列が列のグループの終了として定義されます。

      列のグループの終了として動的な列を定義する場合は、「ADF表コンポーネントで列をグループ化する方法」の説明に従って、endの値のカスタム属性プロパティを定義し、このカスタム属性プロパティの値を取得するEL式を記述します。

    • 残りのプロパティの値はGroupHeaderに設定しないでください。ステップ5で開始列に設定した値により、実行時に列のヘッダーのグループにレンダリングされるラベル、スタイルおよびツールチップが決定されます。

      注意:

      開始列と終了列の間の列には、プロパティを設定する必要はありません。

      実行時に、統合Excelワークブックで、終了列として構成した列の左側に開始列が見つからない場合、終了列に指定した値は無視されます。

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

    注意:

    実行時に、既存のデータとスタイルが上書きされ、ADF表コンポーネントの上に表示される追加の表ヘッダー行がレンダリングされるため、列をグループ化する場合は、ADF表コンポーネントの上の行にデータとスタイルがない状態にしてください。

動的な列でレンダリングする列をグループ化する方法

動的な列は、実行時に複数のワークシートの列に拡張できます。実行時に、統合Excelワークブックは、動的な列の展開後に、GroupHeaderプロパティに定義されたEL式を評価します。GroupHeaderプロパティの評価結果に応じて、列グループが形成され、統合Excelワークブックによって、動的な列にグループ化済ヘッダーがレンダリングされます。

動的な列にレンダリングされる列のGroupHeaderプロパティを構成するには、実行時に動的な列にレンダリングされるビュー・オブジェクト属性で、最初にカスタム属性プロパティを定義します。

実行時に動的な列のグループ化済ヘッダーの開始境界線と終了境界線をレンダリングする属性に、カスタム属性プロパティを定義します。EL式を使用して、実行時にGroupHeader BoundaryLabelStyleNameおよびTooltipプロパティで参照される開始属性にカスタム属性プロパティを構成します。EL式を使用して、実行時にGroupHeader Boundaryプロパティで参照される終了属性にカスタム属性プロパティを構成します。

カスタム属性プロパティの定義の詳細は、「ADFデスクトップ統合ELベースのプロパティとカスタム属性プロパティの使用」を参照してください。

図7-18に、グループ化されたヘッダーを開始するカスタム属性プロパティを定義する属性(住所)を示します。

図7-18 動的な列でグループ化されたヘッダーを開始するカスタム属性プロパティ

この図は周囲のテキストで説明しています

図7-19に、グループ化されたヘッダーを終了するカスタム属性プロパティを定義する属性(コメント)を示します。

図7-19 動的な列でグループ化されたヘッダーを終了するカスタム属性プロパティ

この図は周囲のテキストで説明しています

実行時に、動的な列が展開し、ビュー・オブジェクトの属性の列がレンダリングされます。この例では、展開された列は、グループ化されたヘッダーをレンダリングするように構成された「住所」、「市区町村」および「コメント」です。図7-20に、設計時に動的な列に構成するGroupHeaderプロパティを示します。実行時に、図7-18および図7-19に示す構成済のカスタム属性プロパティの値がEL式で取得され、評価されます。「詳細」のラベルの付いたグループ化されたヘッダーにより、「住所」、「市区町村」および「コメント」の列が形成されます。

GroupHeaderプロパティの構成方法の詳細は、「ADF表コンポーネントで列をグループ化する方法」を参照してください。

図7-20 動的な列でのグループ化されたヘッダーの開始

この図は周囲のテキストで説明しています

実行時の処理: ADF表コンポーネントによる列のグループ化

GroupHeaderプロパティに値を構成すると、実行時に、ADF表コンポーネントの標準の表ヘッダー行の上に、追加の表ヘッダー行がレンダリングされます。各グループの開始列のLabelStyleNameおよびTooltipプロパティに指定した値により、グループ・ヘッダーのラベル、スタイルおよびツールチップが決定されます。列グループの他の列のこれらのGroupHeaderプロパティに構成した値は無視されます。

開始列として構成した列のGroupHeader.StyleNameプロパティによって指定されたスタイルは、グループのすべての列の追加の表ヘッダー・セルに適用されます。グループ・ヘッダー・ラベルの水平方向の配置は、グループのすべての列の追加の表ヘッダー・セルの中央になります。

開始列のGroupHeader.Tooltipプロパティによって定義されたツールチップは、図7-21に示すように、グループの終了列の追加の表ヘッダー・セルにレンダリングされます。

図7-21 スタイルをレンダリングしてツールチップを表示するグループ化された列

図7-21の説明が続きます
「図7-21 スタイルをレンダリングしてツールチップを表示するグループ化された列」の説明

開始列および終了列として構成した列が実行時にレンダリングされることを確認します。開始列として構成した列が実行時にレンダリングされない場合、列グループは形成されません。たとえば、列1を開始列、列3を終了列として構成し、そのVisibleプロパティがfalseを返すために、列1が実行時にレンダリングされない場合、列グループは形成されません。同様に、列3がレンダリングされないと、列1、列2および列3にまたがる列グループも形成されません。かわりに、列1が単一列のグループとしてレンダリングされます。

読取り専用にするためのADF表コンポーネントの構成

ADF表コンポーネントを読取り専用として構成する方法について説明します。

ADF表コンポーネントには、「ADF読取り専用表コンポーネントの作成」に説明されているADF読取り専用表コンポーネントで使用できない機能が複数用意されています。ADF表コンポーネントで使用可能な機能の例には、動的な列、列のグループ化機能、および列のサイズ変更の機能があります。このため、ADF読取り専用表コンポーネントを作成するのではなく、ADF表コンポーネントを作成して、読取り専用として構成するようにしてください。Summitサンプル・アプリケーションのCustomerSearch-DT.xlsxワークブックには、読取り専用として構成されているADF表コンポーネントが含まれます。

読取り専用になるようにADF表コンポーネントを構成する方法

ADF表コンポーネントを読取り専用にするには、RowActions UpdateRowEnabledおよびInsertRowEnabledプロパティをFalseに設定して、_ADF_ChangedColumn_ADF_FlagColumnおよび_ADF_StatusColumn列をADF表コンポーネントから削除します。

始める前に:

ADF表コンポーネントについて理解しておくと役立ちます。「読取り専用にするためのADF表コンポーネントの構成」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

「ExcelワークシートへのADF表コンポーネントの挿入」の説明に従って、ADF表コンポーネントを統合Excelワークブックに挿入します。

ADF表コンポーネントを読取り専用に構成する手順:

  1. 統合Excelワークブックを開きます。
  2. ADF表コンポーネントを参照するExcelワークシートのセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックします。
  3. 「コンポーネントの編集: ADF表」ダイアログで、ADF表コンポーネントのRowActions.UpdateRowEnabledプロパティをFalseに設定します。
  4. 「コンポーネントの編集: ADF表」ダイアログで、Columnsプロパティの参照(...)アイコンをクリックします。

    「列の編集」ダイアログが表示され、ADF表コンポーネントのすべての列がリストされます。

  5. _ADF_ChangedColumn_ADF_FlagColumnおよび_ADF_StatusColumn列を選択し、「列の編集」の削除をクリックして、これらの列を削除します。

    注意:

    「キー」列は削除しないでください。「キー」列の詳細は、「ADF表コンポーネントのキー列の構成」を参照してください。

  6. (オプション)各列のUpdateComponentコンポーネント・タイプ値をModelDrivenColumnComponentからOutputTextに変更することを検討してください。

    これは、ビュー・オブジェクトが読取り専用として構成されている場合は不要です。これは、ADF表コンポーネントをツリー・バインディングから作成する場合に、各UpdateComponentReadOnlyプロパティが、対応するreadOnly属性ヒントにデフォルトでバインドされているためです。CustomerSearch-DT.xlsxワークブックは、この実装を示しています。

  7. (オプション)読取り専用のセルと編集可能なセルを視覚的に区別できるように、各列のCellStyleNameプロパティをRead-only Cellに変更することを検討してください。

    「スタイルの使用」を参照してください。

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

ADF読取り専用表コンポーネントの作成

実行時、ADF読取り専用表コンポーネントは、参照するツリー・バインディングのデータを表示する、連続した範囲のセルにまたがる表をレンダリングします。エンド・ユーザーが編集できないデータを表示する場合に、このコンポーネントを使用します。

注意:

ADF表コンポーネントには、ADF読取り専用表コンポーネントで使用できない機能が複数用意されています。このため、ADF読取り専用表コンポーネントを作成するのではなく、ADF表コンポーネントを作成して、読取り専用として構成することを検討してください。「読取り専用にするためのADF表コンポーネントの構成」を参照してください。

ADF読取り専用表コンポーネントは、Downloadアクションの起動時にコンポーネントがダウンロードする行数を決定するRowLimitなどの複数のプロパティをサポートします。また、これには実行時にExcelワークシートに表示されるツリー・バインディングの列を決定するプロパティ・グループ(Columns)も含まれます。TreeIDプロパティは、コンポーネントが参照するツリー・バインディングを指定します。これらのプロパティや、ADF読取り専用表コンポーネントがサポートする他のプロパティの詳細は、「ADF読取り専用表コンポーネントのプロパティおよびアクション」を参照してください。

注意:

  • 実行時には、ADF読取り専用表コンポーネントに行を挿入すると、新しいExcelの行がダウンロードされたデータ・セットの一部であるかのような動作をしますが、新しい行はExcelのみに存在します。新しい行のデータはサーバーにアップロードされず、Fusion Webアプリケーションのデータには影響しません。

  • 読取り専用列には、ダブルクリックのアクション・セットが含まれます。ただし、このようのアクションは現在の行に確実に配置できません。そのため、ADF読取り専用表コンポーネントで行レベルのアクション・セットを使用した場合の結果に一貫性がありません。行レベルのアクション・セットを行に確実に配置して使用する必要がある場合は、ADF読取り専用表コンポーネントのかわりにADF表コンポーネントを使用します。

ADF読取り専用表コンポーネントの作成方法

ADFデスクトップ統合デザイナの作業ウィンドウを使用して、ADF読取り専用表コンポーネントをワークシートに挿入します。

始める前に:

ADF読取り専用表コンポーネントについて理解しておくと役立ちます。「ADF読取り専用表コンポーネントの作成」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

ADF読取り専用表コンポーネントを挿入するには:

  1. 統合Excelワークブックを開きます。
  2. コンポーネントを配置するExcelワークシートのセルを選択します。

    表コンポーネントへの挿入の際、2つの表のデータが実行時に重複しないことと、選択したセルがマージされたセルでないことを確認する必要があります。

  3. バインディング・パレットで、ADF読取り専用表コンポーネントを作成するバインディングを選択して、バインディングの挿入をクリックします。
  4. 表示されるダイアログで、「ADF読取り専用表」を選択します。

    注意:

    または、コンポーネント・パレットまたは「Oracle ADF」タブを使用しても、ADF読取り専用表コンポーネントを挿入できます。「ADF読取り専用表」を選択して、コンポーネントの挿入をクリックします。コンポーネント・パレットを使用してコンポーネントを作成する場合は、実行時にコンポーネントに表示されるそれぞれの列を追加する必要があります。

  5. 表示されるプロパティ・インスペクタでプロパティを構成し、表示される列とコンポーネントが実行時に起動するアクションを決定します。
  6. 「OK」をクリックします。

    注意:

    コンポーネントのプロパティを後から変更するには、コンポーネントを配置するワークシートのセルを選択して、プロパティ・インスペクタを表示します。

    表コンポーネントを削除するには、「ADFデスクトップ統合コンポーネントの削除」の説明に従って「削除」リボン・コマンドを使用します。

表タイプ・コンポーネントがダウンロードする行数の制限

ADF表またはADF読取り専用表コンポーネントがダウンロードする行数は、コンポーネントのRowLimitプロパティ・グループの値を設定すれば構成できます。

また、必要に応じて、ダウンロード可能な行数が指定した行数を超過したときにエンド・ユーザーに警告する警告メッセージを表示できます。

コンポーネントがダウンロードする行数の制限方法

Downloadアクションを起動するときにコンポーネントがダウンロードする行数を、RowLimit.MaxRowsプロパティの値として指定します。オプションで、ダウンロード可能な行数がRowLimit.MaxRowsで指定した値を超過した場合に、エンド・ユーザーがメッセージを受信するように、RowLimit.WarningMessageプロパティのEL式を記述します。

始める前に:

ADF表コンポーネントにデータをダウンロードする際に行数を制限する方法を理解しておくと役立ちます。「表タイプ・コンポーネントがダウンロードする行数の制限」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

表タイプ・コンポーネントがダウンロードする行数を制限するには:

  1. 統合Excelワークブックを開きます。
  2. 表タイプ・コンポーネントを参照するExcelワークシートのセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックします。

    「アクション・セットの使用」を参照してください。

  3. 表7-14の説明に従って、 RowLimitプロパティ・グループのプロパティを構成します。これらのプロパティの詳細は、「ADFデスクトップ統合で頻繁に使用するプロパティ」を参照してください。

    表7-14 RowLimitプロパティ・グループ

    設定するプロパティ 設定する値

    RowLimit.Enabled

    Trueに設定すると、ダウンロードする行数がRowLimit.MaxRowsで設定した値に制限されます。

    RowLimit.MaxRows

    ダウンロードする最大行数に評価されるEL式を記述します。

    RowLimit.WarningMessage

    このプロパティにEL式を記述して、ダウンロード可能な行数がRowLimit.MaxRowsで指定した値を超過した場合にエンド・ユーザーにメッセージを生成します。

    このプロパティの値がNULLの場合、Downloadアクションは、エンド・ユーザーにデフォルトの警告メッセージを表示して、RowLimit.MaxRowsで指定した行数をダウンロードします。

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

図7-22は、ADF表コンポーネントの行の制限が構成されているEditCustomers-DT.xlsxワークブックの「コンポーネントの編集」ダイアログを示しています。

図7-22 ADF表コンポーネントの行数の制限

図7-22の説明が続きます
「図7-22 ADF表コンポーネントの行数の制限」の説明

実行時の処理: RowLimitプロパティのしくみ

表タイプ・コンポーネントのDownloadアクションが起動されると、RowLimit.MaxRowsの値として指定した行数がFusion Webアプリケーションからダウンロードされます。RowLimit.MaxRowsにEL式を指定したり、デフォルト値を変更しない場合、図7-23に示すものに似たメッセージ・ダイアログが表示されます。

図7-23 行の制限を超過した場合の警告メッセージ

図7-23の説明が続きます
「図7-23 行の制限を超過した場合の警告メッセージ」の説明

ADF表コンポーネントでの変更の追跡

エンド・ユーザーは、ADF表コンポーネントをホストする統合Excelワークブックのセルで、データを作成したり変更できます。

列が更新可能で読取り専用でなければ、変更の追跡がアクティブ化されます。エンド・ユーザーが次の変更を行うと、変更の追跡がアクティブ化されます。

  • セルの値の編集

  • セルの値の挿入または削除

  • どこかでコピーした値をADF表コンポーネント列のセルに貼り付ける場合

エンド・ユーザーが対応する行のデータを変更した場合、上向きの矢印に似た記号が_ADF_ChangedColumn列に表示されます。図7-24に例を示します。

図7-24 ADF表コンポーネントの変更された列

この図は周囲のテキストで説明しています

この記号は、コンポーネントのReadOnlyプロパティの値がFalseに設定されているコンポーネントによってホストされているデータを、エンド・ユーザーが変更すると表示されます。ModelDrivenColumnComponentなどの様々なサブコンポーネントに、ReadOnlyプロパティがあります。TrueあるいはFalseに評価されるこのReadOnlyプロパティに、EL式またはリテラル文字列を記述できます。Trueに評価される静的な文字列またはEL式を記述する場合、_ADF_ChangedColumn列には記号は表示されません。読取り専用EL式および変更トラッキングの詳細は、「読取り専用プロパティのEL式の評価」を参照してください。

読取り専用プロパティのEL式の評価

表の列の読取り専用プロパティのEL式にバインディング式(#{row.bindings.color.inputValue}など)が含まれる場合、その式の実行時の評価は、評価が行われるタイミングによって異なります。

評価は次のときに行われます。

  • データのダウンロード(DownloadDownloadFlaggedRowsDownloadForInsert)

  • データのアップロード(UploadUploadAllOrNothing)および変更トラッキング

実行時の処理: データのダウンロード時のEL式の評価

Download中、EL式は想定どおりに現在のバインディング値で評価されます。

実行時の処理: データのアップロードまたは変更のトラッキング時のEL式の評価

Upload中、またはエンド・ユーザーが変更可能表の値を変更する場合、EL式はDownloadとは異なる方法で評価されます。具体的には、EL式の評価の前に、空白の文字列がバインディング式に対して置換されます。

たとえば、次のEL式が編集可能コールにある場合:

=IF("#{row.bindings.color.inputValue}"="RED", True, False)

Upload中、またはエンド・ユーザーが変更可能表の値を変更する場合、EL式は=IF(""="RED", True, False),に評価され、常にFalseが返されます。

注意:

変更のトラッキング中に、列コンポーネントValueプロパティは評価されません。このため、たとえば、構成した値のEL式に関係なく、新しく挿入した行のセル値は空白になります。

データのアップロードまたは変更のトラッキング時のEL式の評価に関する必知事項

Uploadおよび変更トラッキング中に、EL式を適切に評価するためには、サーバーとの追加のデータ転送がバインディング値を取得するために必要です。サーバーとの追加のデータ転送はパフォーマンスにマイナスの影響を与え、エンド・ユーザーに現在有効なセッションがない場合には新しいログインが必要になることもあります。

注意:

同じEL式の評価の動作は、表の変更トラッキング中に新しいワークシートの行を挿入する場合、CellStyleName EL式に適切に適用されます。

動作の違いにより、可能ならば、バインディング式を含む読取り専用EL式は避ける必要があります。ただし、指定したユースケースが読取り専用式で属性値を使用することが重要な場合、ワークシートの保護をAutomaticへ設定することを検討する必要があります。ワークシート保護の詳細は、「ワークシート保護の使用」を参照してください。

たとえば、次のEL式がセルにある場合:

=IF("#{row.bindings.color.inputValue}"="RED", True, False)

Download中に、この列のREDセルをLockedに設定すると、エンド・ユーザーはこれらのセルを編集できません。

エラー・メッセージ列でのエラー・メッセージの表示

実行時に行レベルのエラー・メッセージが表示されるメッセージ列を表示するように、ADF表コンポーネントを構成できます。

実行時に、ADFデスクトップ統合により、エラー・メッセージ列のセルに、UploadUploadAllOrNothingおよびDeleteFlaggedの各アクションの起動中に取得した行レベルのエラー・メッセージが移入されます。統合Excelワークブックのエンド・ユーザーは、Excelの「フィルタ」、「ソート」および「検索」機能を使用し、同じエラー・メッセージを示すエラーを見つけて、エラーを効率的に解決してから、修正した行を再発行することができます。

Excelの「フィルタ」および「ソート」機能は、デフォルトでは、「編集」リボン・グループ内のExcelの「ホーム」リボン・タブにあります。エラー・メッセージ列のセルを選択し、右クリックして表示されるコンテキスト・メニューで、「フィルタ」の後に適切なサブメニュー・オプションを選択して、「フィルタ」および「ソート」を起動することもできます。Excelワークシート保護が有効な場合、「フィルタ」および「ソート」機能へのアクセスは無効化されます。これは仕様動作です。

エラー・メッセージ列のセルには、1つのエラー・メッセージ行が表示されます。アクションで複数のエラーがレポートされた場合、エンド・ユーザーは、表示されたエラーを解決してアクションをリプレイしないと、セルの次のエラー・メッセージを表示できません。このシナリオでは、エンド・ユーザーは、原因やエラーの解決に必要なアクションなどの詳細に加え、1つの行のすべてのエラーが同時に表示されるステータス・ビューアを参照する必要があります。

UploadアクションとDeleteFlaggedアクションの両方を含むアクション・セットの場合、エラー・メッセージ列には失敗したアクションのメッセージが表示されます。UploadおよびDeleteFlaggedの両方のアクションで同じ行に対して行レベルのエラーが生成される場合は、エラー・メッセージの列にアクション・セットの2番目のアクションのエラーが表示されます。

エラー・メッセージをエラー・メッセージ列に表示する方法

新しい列をADF表コンポーネントに追加し、新しい列のIDを_ADF_ErrorColumnに設定します。

始める前に:

ADF表コンポーネントでエラー列を表示する方法について理解しておくと役立ちます。「エラー・メッセージ列でのエラー・メッセージの表示」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「表タイプ・コンポーネントの追加機能」を参照してください。

エラー・メッセージをエラー・メッセージ列に表示するには:

  1. 統合Excelワークブックを開きます。
  2. ADF表コンポーネントを参照するExcelワークシートのセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックします。
  3. 「コンポーネントの編集: ADF表」ダイアログで、Columnsプロパティの参照(...)アイコンをクリックします。

    「列の編集」ダイアログが表示され、選択したADF表コンポーネントのすべての列が一覧表示されます。

  4. 「追加」をクリックして、新しい列を追加します。新しい列が、Membersリストの末尾に挿入されます。列を特定の位置に移動するには、列を選択して「上」「下へ」の配列キーを使用します。
  5. IDプロパティの値を_ADF_ErrorColumnに設定します。
  6. 次のプロパティはデフォルト値を使用したままにします。
    • DynamicColumn
    • InsertComponent
    • InsertUsesUpdate
    • UpdateComponent
    • TriggersRowRefresh
  7. 必要に応じて、新しい列の他のプロパティ(HeaderLabelHeaderStyleNameなど)を構成します。

    ヒント:

    最善の結果を得るには、TableComponents.SmartRowFailureReportingEnabled ADFデスクトップ統合互換性プロパティをTrueに設定します。

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