13 統合Excelワークブックへの検証の追加

統合Excelワークブックにサーバー・サイド検証とデータ入力検証を追加する方法、検証の失敗やデータ競合などのエラーを報告する方法、およびカスタム・エラー・ハンドラを使用してエラー・レポートを構成する方法について説明します。

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

統合Excelワークブックへの検証の追加について

Fusion Webアプリケーションと統合Excelワークブックにサーバー・サイドとデータ入力の検証を構成して、ADFモデル・レイヤー、ADFデスクトップ統合およびMicrosoft Excelにより提供される検証オプションを活用します。

これらの検証オプションに加えて、ADFデスクトップ統合のコンポーネントを利用して、Fusion Webアプリケーションからエラー・メッセージを返したり、コンポーネント・アクションの結果のステータスを提供するほか、Fusion Webアプリケーションによりホストされるデータとの統合Excelワークブックの競合でデータが変更されるときに発生するエラーを管理できます。

統合Excelワークブックに検証を追加することには、いくつかの利点があります。Fusion Webアプリケーションおよび統合Excelワークブックで検証ルールを作成して、エンド・ユーザーによるデータ入力を検証できます。

統合Excelワークブックの検証のユース・ケースと例

検証ルールは、無効なデータのアップロードを停止することでサーバーを保護します。ADFデスクトップ統合では、データ入力の検証とサーバー・サイドの検証の両方の機能が提供されます。図13-1に、無効な郵便番号(12345x)で入力検証ルールが失敗する、Summitサンプル・アプリケーションのEditCustomers-DT.xlsxワークブックからのサーバー・サイドの検証の例を示します。この失敗は、ステータス・ビューアの行(無効な郵便番号を含む行)のエントリに表示されます。

図13-1 入力検証ルールの失敗が表示されたステータス・ビューア

図13-1の説明が続きます
「図13-1 入力検証ルールの失敗が表示されたステータス・ビューア」の説明

図13-2に、値を必要とするセルに値が表示されていない、同じワークブックのデータ入力の検証の失敗例を示します。

図13-2 データ入力の検証メッセージ

図13-2の説明が続きます
「図13-2 データ入力の検証メッセージ」の説明

統合Excelワークブックへの検証の追加の追加機能

統合Excelワークブックで検証ルールを適用した後、必要に応じてワークブックを構成するための機能をさらに追加できます。次の各項では、使用可能なその他の機能について説明します。

  • 統合Excelワークブックのテスト: 統合Excelワークブックを公開してデプロイする前に、テストする必要があります。「統合Excelワークブックのテスト」を参照してください。

  • 統合Excelワークブックの公開およびデプロイ: 統合Excelワークブックの設計と検証に続く最終ステップは、公開およびデプロイです。「統合Excelワークブックのデプロイ」を参照してください。

  • ADF表コンポーネントのサーバー・サイド検証のトリガー: エンド・ユーザーが値を編集した行が自動リフレッシュされるようにADF表コンポーネントを構成できます。この機能を有効にすることが、サーバー・サイド検証をトリガーする1つの方法です。「ADF表コンポーネントの自動行リフレッシュの構成」を参照してください。

ステータス・ビューアを使用したエンド・ユーザーへのエラー・メッセージのレポート

ステータス・ビューアでは、エンド・ユーザーに対する情報がExcelの作業ウィンドウに表示されます。エンド・ユーザーは表示された情報を使用して、同時にエラーを確認および修正できます。

ステータス・ビューアに常に表示される情報には、現在の統合ワークシートのワークシート・レベル・ステータスが含まれます。さらに、ワークシートにADF表コンポーネントが含まれていて、現在選択されているセルがADF表コンポーネントの行である場合、ステータス・ビューアにはその行のステータスが表示されます。

ステータス・ビューアには、アクション・セットの起動結果の情報が表示されます。たとえば、Fusion WebアプリケーションのADFモデル・レイヤーの宣言的な検証ルールに違反する値をエンド・ユーザーが入力するとします。エンド・ユーザーが変更をアップロードしようとすると、失敗した行で失敗がレポートされます。このシナリオでは、ステータス・ビューアが表示され、検証失敗のメッセージが表示されます。

図13-3は、エンド・ユーザーが郵便番号(12345x)を入力したが、Fusion WebアプリケーションのADFモデル・レイヤーで定義した入力検証に失敗した場合に、EditCustomers-DT.xlsxワークブックに表示されるステータス・ビューアを示しています。検証失敗を含む表の行の任意の場所のセルを選択すると、検証失敗メッセージがステータス・ビューアに表示されます。図13-3のステータス・ビューアに表示されるワークシートレベルのステータスは、正常に完了したこのワークシートからの最新のアクション・セットを示します。

図13-3 ステータス・ビューア

図13-3の説明が続きます
「図13-3 ステータス・ビューア」の説明

このリリースのADFデスクトップ統合を使用して作成した統合Excelワークブックでは、図13-4に示すように、Excelのリボンにステータス・ビューアのリボン・コマンドがデフォルトで表示されます。

図13-4 Excelリボンのステータス・ビューアのリボン・コマンド

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

エンド・ユーザーは、ステータス・ビューアのリボン・コマンドをクリックして、Excelの作業ウィンドウにステータス・ビューアを表示したり非表示にします。デフォルトでは、実行時にExcelワークブックでエラーが発生すると、ステータス・ビューアが自動的に表示されます。エラーの発生時にステータス・ビューアが自動的に表示されるように、以前のリリースを使用して作成した統合Excelワークブックの動作を構成できます。「ステータス・ビューアの自動表示を管理する方法」を参照してください。

「実行時リボン・タブのワークブック・リボン・コマンドの定義方法」の説明に従って、ToggleStatusViewerワークブック・アクションを追加し、ステータス・ビューアのリボン・コマンドをExcelリボンに追加します。ワークブック・アクションの詳細は、「ワークブックのアクションおよびプロパティ」を参照してください。

ステータス・ビューアのリボン・コマンドは、ワークブック・コマンドとしてExcelリボンに追加しますが、ステータス・ビューアはワークシート固有であり、対象の統合Excelワークシートの情報が表示されます。統合されていないワークシートにエンド・ユーザーが移動して、ステータス・ビューアのリボン・コマンドをクリックすると、そのワークシートではステータス・ビューアを使用できない旨をエンド・ユーザーに通知するメッセージが表示されます。

ステータス・ビューアの自動表示を管理する方法

Excelの作業ウィンドウでステータス・ビューアの自動表示を管理するには、AutoDisplayStatusViewerEnabledワークブック・プロパティの値をTrueまたはFalseに設定します。

始める前に:

ADFデスクトップ統合で提供されるステータス・ビューアに関する知識が役立つ場合があります。「ステータス・ビューアを使用したエンド・ユーザーへのエラー・メッセージのレポート」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「統合Excelワークブックへの検証の追加の追加機能」を参照してください。

ステータス・ビューアの自動表示を管理する手順:

  1. 統合Excelワークブックを開きます。
  2. Excelリボンの「Oracle ADF」タブで、「ワークブック・プロパティ」をクリックします。
  3. 「ワークブック・プロパティの編集」ダイアログで、「動作」を展開し、AutoDisplayStatusViewerEnabledプロパティを正しく設定します。
    • True: エラーの発生時にステータス・ビューアが自動的に表示されます。

    • False: ステータス・ビューアを表示するには、エンド・ユーザーがExcelリボンのステータス・ビューアのリボン・コマンドをクリックする必要があります。

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

統合Excelワークブックのデータ入力の検証の追加

エンド・ユーザーがADFコンポーネントにバインドされているセルを変更した後、ADFデスクトップ統合では基本的なデータ入力検証が自動的に実行されます。

基本的なデータ入力検証には、予期されるデータ・タイプ(たとえば、ユーザーが入力した数値属性の数値)および必須フィールドが空白でないことの検証が含まれます。エンド・ユーザーがセルを離れるとすぐに、ADFデスクトップ統合でこの検証が実行されます。

ADFモデル・レイヤーのメタデータを使用して、基本的なデータ入力検証が実行されます。追加のワークブック構成は不要です。この検証は、「ADFデスクトップ統合のデータ入力の検証を有効化または無効化する方法」の説明に従ってCompatibility.DataEntryValidationEnabledワークブック・プロパティを使用することで、無効にできます。ADFデスクトップ統合では、基本的なデータ検証がデフォルトで有効になっています。

ADFデスクトップ統合では、アップロード中に追加の検証が実行されます。「統合Excelワークブックのサーバー・サイド検証の追加」を参照してください。

ADFデスクトップ統合が実行するその他の検証の1つに、統合ExcelワークブックがFusion Webアプリケーションに送信するExcelセルのエラー値を拒否するものがあります。Excelセルのエラーの例としては、数値がゼロ(0)または値を含まないセルで除算される場合に発生する、#DIV/0!エラーがあります。Excelセルのエラー値は、大きな負の値を返します。たとえば、#DIV/0!のエラーは-2146826281を返します。ADFデスクトップ統合は、アップロードに適さないためこれらの値を拒否し、ADFモデル層のデータ検証が行われていない場合に、Fusion Webアプリケーションのデータベースにコミットできます。

Excelセルのエラー値を含むセルを持つ行で、Upload、RowUpSync、またはRowUpSyncNoFailアクションをADF表コンポーネントが実行すると、ADF表コンポーネントによって「ステータス」列に「更新に失敗しました」メッセージが表示されます。同様に、ワークシートのUpSyncアクションは、Excelセルのエラー値を含むセルの保留中の変更の同期に失敗します。

#DIV/0!エラーとは別に、ADFデスクトップ統合が拒否する他のエラー・セルの値には、#NULL!、#REF!、#N/A、#NAME?、#NUM!および#VALUE!があります。Excelセルのエラー値の詳細は、Microsoftのドキュメントを参照してください。

ADFデスクトップ統合でExcelセルのエラー値を受け入れるようにすることで、統合Excelワークブックを有効にして、Excelセルのエラー値をFusion Webアプリケーションにアップロードできます。これを行うには、ワークブックのCompatibility.RejectExcelErrorsEnabledプロパティをFalseに設定します。このリリースのADFデスクトップ統合を使用して作成されたワークブックのデフォルト値は、Trueです。「Fusion WebアプリケーションにExcelのセルのエラーをアップロードする方法」を参照してください。

ADFデスクトップ統合を使用したデータ入力の検証の追加

ADFデスクトップ統合では、データ入力の検証を実行して次を検証します。

  • 必須フィールドに値が含まれている。ADFデスクトップ統合では、必須値が必要なADFコンポーネント(例: ADF入力テキスト・コンポーネント)を含むExcelセルが空白の場合に、検証失敗をレポートします。

  • 正しいデータ型が入力されている。たとえば、必要なデータ型が日付または数値の入力フィールドに文字列("Bob")を入力すると、ADFデスクトップ統合は検証失敗をレポートします。

ADFデスクトップ統合では、Fusion Webアプリケーションにリクエストせずに、前述のタイプの検証を実行します。

ADFデスクトップ統合では、ADF入力テキスト、ADF入力日およびADF表コンポーネントでデータ入力の検証を実行します。読取り専用のセル、ラベルまたはヘッダーのセル、ロックされたセル、または「ADF表コンポーネント内の特殊な列」に説明されている列のセルのデータ入力の検証は実行されません。また、ADF読取り専用表コンポーネントまたはADF値リスト・コンポーネントのセルのデータ入力の検証も実行されません。

ADFデスクトップ統合で実行されるデータ入力の検証では、単一または複数のセルの編集時(同時)の失敗を識別します。複数のセルにまたがる編集の例には、ADF表コンポーネントでの列の選択や、エンド・ユーザーがADF表コンポーネントで1つ以上のデータ行を貼り付ける操作などがあります。ADFデスクトップ統合では、エンド・ユーザーが単一または複数のセルを編集し、そのセルを編集モードのままにした場合のみ、データ入力の検証を実行します。検証失敗が発生した場合、ADFデスクトップ統合は、エンド・ユーザーが[Enter]を押す、タブを移動、または異なるセルを選択して編集モードを終了した後に、検証に失敗したセルを赤枠で表示します。

ADFデスクトップ統合で検証失敗がレポートされると、エンド・ユーザーは、編集モードにせずにセルを選択することで、非モーダル・ポップアップ・メッセージを表示できます。非モーダル・ポップアップ・メッセージには、検証失敗の内容が表示され、検証失敗を解決するためのアクションが提示されます。これは、エンド・ユーザーがセルを選択して、検証失敗が存在する場合は、表示されたままになります。非モーダル・ポップアップ・メッセージは、エンド・ユーザーが検証失敗の複数のセルを選択した場合には表示されません。ADF表コンポーネントのセルでは、検証失敗のセルが少なくとも1つ行に含まれることを示すメッセージも「ステータス」列に表示されます。DownloadUploadなどのADF表コンポーネントのアクションにより、後者のメッセージはクリアされます。ADF表コンポーネントのDownloadアクションでは、検証失敗を含むセルの赤枠もクリアされます。「ステータス」列の詳細は、「ADF表コンポーネント内の特殊な列」を参照してください。

ステータス・ビューアには、検証失敗を含むセルの行にメッセージが表示されます。このメッセージ(保留中の無効な変更が行に含まれています)は、エンド・ユーザーが検証失敗を解決するまで表示されます。ステータス・ビューアには、データ入力の検証エラーに加えて、最後のアップロード操作の失敗メッセージなども表示される場合があります。「ステータス・ビューアを使用したエンド・ユーザーへのエラー・メッセージのレポート」を参照してください。

図13-1に、Summitサンプル・アプリケーションのEditCustomers-DT.xlsxワークブックのデータ入力の検証失敗のセルを示します。エンド・ユーザーは、値が必要なADF表コンポーネントのセルに値を入力していません。非モーダル・ポップアップ・メッセージおよびステータス・ビューアの両方に、この失敗に関する情報が表示されます。

図13-5 ADFデスクトップ統合のデータ入力の検証

図13-5の説明
「図13-5 ADFデスクトップ統合のデータ入力の検証」の説明

検証失敗の原因となった問題をエンド・ユーザーが解決するまで、ADFデスクトップ統合は、検証に失敗したセルに赤枠を表示します。エンド・ユーザーがセルの境界を赤に設定すると、ADFデスクトップ統合は、検証エラーが発生するまで(例: 必須値がない)、そのセルを無効と認識しません。エンド・ユーザーが表示を混乱しないようにするには、赤枠の使用がADFデスクトップ統合での検証失敗のレポート用に予約されるように、統合Excelワークブックでセルに赤枠を使用しないようにします。

検証が失敗した場合に、エンド・ユーザーが統合Excelワークブックでデータの編集や入力を継続できないようにしたり、データ入力の検証失敗が解決されない場合に、統合Excelワークブックからデータをアップロードできないようにすることはできません。

注意:

エンド・ユーザーが大量のセルを同時に変更すると、データ検証の時間が大幅に長くなる場合があります。このような場合は、進捗バーが表示され、エンド・ユーザーに進捗が示されます。エンド・ユーザーが「取消」をクリックすると、その時点で検証は停止します。

ADFデスクトップ統合のデータ入力の検証を有効化または無効化する方法

統合Excelワークブックでは、ADFデスクトップのデータ入力の検証がデフォルトで有効になっています。「ADFデスクトップ統合互換性のプロパティ」の説明に従って、DataEntryValidationEnabledワークブックのプロパティを構成することで、ADFデスクトップ統合のデータ入力の検証を有効および無効にできます。

始める前に:

ADFデスクトップ統合のデータ入力の検証について理解しておくと役立ちます。「ADFデスクトップ統合を使用したデータ入力の検証の追加」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「統合Excelワークブックへの検証の追加の追加機能」を参照してください。

ADFデスクトップ統合のデータ入力の検証を有効または無効にする手順:

  1. 統合Excelワークブックを開きます。
  2. Excelリボンの「Oracle ADF」タブで、「ワークブック・プロパティ」をクリックします。
  3. 「ワークブック・プロパティの編集」→「互換性」で、DataEntryValidationEnabledプロパティを正しく設定します。
    • True: ADFデスクトップ統合のデータ入力の検証を有効にします。

    • False: ADFデスクトップ統合のデータ入力の検証を無効にします。

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

Excelを使用したデータ検証の追加

Excelのデータ検証機能を使用して、エンド・ユーザーがセルに入力したデータの型や値を制御できます。これらの機能によって、データ・エントリを一定の日付範囲に制限したり、リストを使用して選択内容を限定したり、正の整数のみをセルに入力したりすることができます。たとえば、EditWarehouseInventory-DT.xlsxワークブックのZipCodeフィールドを構成して、ユーザーがこのフィールドのセルに整数のみを入力できるようにすることができます。

値リストをレンダリングするセルにカスタム検証を適用した場合、実行時にADFデスクトップ統合でセルに値リストが移入されると、検証が伝播されます。ただし、値リストを含むコンポーネントに適用されたカスタム検証は、ADFデスクトップ統合によって実行時に上書きされる点に注意してください。これは、ADFデスクトップ統合が、実行時に起動される独自のリスト制約検証を適用するためです。値リストの詳細は、「値リストの使用」を参照してください。

Excelでのデータ検証の詳細は、Excelのドキュメントを参照してください。

Fusion WebアプリケーションにExcelのセルのエラーをアップロードする方法

デフォルトで、ADFデスクトップ統合は統合ExcelワークブックがFusion Webアプリケーションに送信するExcelセルのエラー値を拒否します。その結果、これらの値を統合Excelワークブックから正常にアップロードできません。このデフォルトの動作は、RejectExcelErrorsEnabledワークブック・プロパティを構成して変更します。

RejectExcelErrorsEnabledワークブック・プロパティは、当初統合Excelワークブックを作成したときにはADFデスクトップ統合で利用できなかった機能を利用する場合に、統合Excelワークブックで構成できるいくつかのプロパティの1つです。「ADFデスクトップ統合互換性のプロパティ」を参照してください。

始める前に:

統合Excelワークブックに提供できるデータ・エントリの検証オプションを理解しておくと役立つことがあります。「統合Excelワークブックのデータ入力の検証の追加」を参照してください。

他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。「統合Excelワークブックへの検証の追加の追加機能」を参照してください。

Excelセルのエラー値を正常にアップロードするには:

  1. 統合Excelワークブックを開きます。
  2. Excelリボンの「Oracle ADF」タブで、「ワークブック・プロパティ」をクリックします。
  3. 「ワークブック・プロパティの編集」→「互換性」で、RejectExcelErrorsEnabledプロパティを正しく設定します。
    • True: ADFデスクトップ統合は、Excelセルのエラー値を拒否し、Fusion Webアプリケーションのデータベースにコミットされないようにします。これはデフォルト値です。

    • False: ADFデスクトップ統合は、Excelセルのエラー値を受け入れ、サーバー・サイドのデータ検証が許可する場合に、Fusion Webアプリケーションのデータベースにコミットします。

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

統合Excelワークブックのサーバー・サイド検証の追加

ADFデスクトップ統合は、ADFモデル・レイヤーがバインディングの属性に対して設定する検証ルールを使用します。エンド・ユーザーがADFデスクトップ統合コンポーネントの1つに入力または編集したデータは、ADFモデル・レイヤーの設定ルールおよび条件に対して検証できます。

ADF表コンポーネントの場合、そのコンポーネントに対して自動行リフレッシュが構成されていれば、サーバー・サイド検証の失敗をエンド・ユーザーに迅速にレポートできます。コンポーネントで自動行リフレッシュを有効にし、TriggersRowRefreshプロパティを使用して、検証するデータ値が含まれる列を指定します。実行時、自動行リフレッシュが行われると、変更された値が、検証をトリガーするADFモデル・レイヤーに送信されます。このため、エンド・ユーザーは「アップロード」アクションを起動して検証の失敗を表示する必要がありません。

エンド・ユーザーが無効な値を入力すると、自動行リフレッシュをサポートするように構成されているADF表コンポーネント内の行データの一貫性が失われる可能性があります。統合Excelワークブックで一貫性のないデータがアップロードされるのを回避するために、エンティティ・レベルの検証ルールを追加します。

注意:

ADFデスクトップ統合は、サーバー・サイドの検証の警告をサポートしていません。Fusion Webアプリケーションで定義されるルールに設定される検証の警告は、統合Excelワークブックによって表示されません。

自動行リフレッシュの詳細は、「ADF表コンポーネントの自動行リフレッシュの構成」を参照してください。

『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』で、次の内容に該当する項を参照してください。

ADF表コンポーネントでの行ごとのステータスの追加

多数のADF表コンポーネント・アクションの起動試行中にエラーが発生した場合、デフォルトでステータス・ビューアが表示されます。

次のアクションの起動中にエラーが発生すると、ステータス・ビューアが自動的に表示されます。

  • DeleteFlaggedRows

  • Upload

  • UploadAllOrNothing

  • ADF表コンポーネントの列から起動されたDoubleClickActionSet

エンド・ユーザーは、各自に関係のあるADF表コンポーネント行のセルを選択することで、ADF表コンポーネントの行ごとに、ステータス・メッセージをステータス・ビューアで表示できます。

また、ADF表コンポーネントは、ADF表コンポーネント・アクションの起動後に、各行のステータスを_ADF_StatusColumn列に移入します。たとえば、ADF表コンポーネントのUploadアクションの起動後に、各行のアップロード・ステータスを_ADF_StatusColumn列に移入します。

図13-6は、ADF表コンポーネントの行を示しています。Changed列の上向き矢印で示されているように、これらの行の値は変更されています。ZipCode列では、12345または12345-6789があるはずのところに値12345xが入力されています。

図13-6 アップロードの前に行が変更済のADF表コンポーネント

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

図13-7は、ADF表コンポーネントのUploadアクションの起動後にADF表コンポーネントにある同じ行を示しています。ADF表コンポーネントは、_ADF_StatusColumn列(この例の実行時はStatusというラベル付き)に、行の更新が成功したかどうかを示すメッセージを移入します。行で更新に失敗すると、図13-7に示すように、ステータス・ビューアが自動的に表示され、行で更新に失敗した理由を説明するメッセージが表示されます。

注意:

図13-7に示すように、ステータス・ビューアを表示するために、いくつかの列が非表示になっています。

図13-7 アップロード後に行が変更済のADF表コンポーネント

図13-7の説明が続きます
「図13-7 アップロード後に行が変更済のADF表コンポーネント」の説明

デフォルトでは、__ADF_StatusColumn列のDoubleClickActionSetは、ADF表コンポーネントのDisplayRowErrorsアクションを起動するように構成されています。エンド・ユーザーが実行時にこの列の行をダブルクリックすると、ADF表コンポーネントによりDisplayRowErrorsアクションが起動されます。エラーが存在する場合、このアクションによってその行のエラーのリストを示すダイアログが表示されます。エラーがない場合、ダイアログにはエラーが発生しなかったことを示すメッセージが表示されます。図13-8は、「ステータス」列にUpdate failedと表示される図13-7のセルをエンド・ユーザーがダブルクリックすると表示されるダイアログを示しています。

図13-8 行のエラー・メッセージを表示するダイアログ

図13-8の説明が続きます
「図13-8 行のエラー・メッセージを表示するダイアログ」の説明

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

統合Excelワークブックでのエラー・メッセージへの詳細の追加

Fusion Webアプリケーションを構成して、カスタムのエラー・ハンドラを使用してエラーを報告し、統合Excelワークブックでエンド・ユーザーに表示されるエラー・メッセージに対する詳細を提供することができます。

この機能を実装するには、カスタムのエラー・ハンドラがgetDetailedDisplayMessageメソッドをオーバーライドして、DCErrorMessageオブジェクトを返す必要があります。実行時にADFデスクトップ統合は、カスタムのエラー・ハンドラを検出して、DCErrorMessageオブジェクトに対してgetHtmlTextメソッドを起動します。ADFデスクトップ統合には、エラー・メッセージ・リストのgetHtmlTextメソッドにより返されるHTMLが詳細として含まれます。

注意:

セキュリティ上の理由で、カスタム・エラー・ハンドラを実装することにより、戻されたHTMLコンテンツを、ブラウザで信頼できるコンテンツとみなされるように適切にフィルタ処理およびエスケープする必要があります。

カスタム・エラー・ハンドラの作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』エラー処理のカスタマイズに関する項を参照してください。

ワークブックからデータをアップロードする際のデータ競合の処理

DownloadFlaggedRowsアクションを公開して、別のセッションで変更された可能性のある行をユーザーが選択してダウンロードできるようにし、行が変更されたかどうかを判別するためのChangeIndicatorAttributeプロパティにツリー・バインディングの行固有属性を指定します。

エンド・ユーザーの1人(User X)がFusion WebアプリケーションからExcelワークブックにダウンロードしたデータ行に変更を加えて、異なるセッションにいる別のエンド・ユーザー(User Y)が、User Xが行をダウンロードした後にFusion Webアプリケーションで同じ行を変更する場合、User Xが変更済の行のアップロード時に、User XとUser Yがそれぞれ行った変更が競合するために、エラーが発生する可能性があります。Fusion Webアプリケーションの構成によっては、User XはRowInconsistentExceptionタイプのエラー・メッセージを受信することがあります。Fusion Webアプリケーションを構成してデータを保護する方法の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』同時更新によるデータの消失を防ぐ方法に関する項を参照してください。

統合Excelワークブックでこの競合を解決するには、User XがFusion Webアプリケーションから最新バージョンのデータをダウンロードする必要があります。ただし、ADF表コンポーネントのDownloadアクションを起動すると、コンポーネントがExcelワークブックにホストしているすべてのデータがリフレッシュされます。これによって、User Xが加えた他の変更で競合エラー・メッセージを生成しないものが上書きされる可能性があります。このシナリオを解決するために、ADF表コンポーネントのDownloadFlaggedRowsアクションを公開できます。このアクションが起動すると、エンド・ユーザーがダウンロード用にフラグ付けした行についてのみデータがダウンロードされます。このアクションを使用して、User Xは競合の問題を解決し、変更済データをアップロードできます。

「複数のWebセッション間における統合Excelワークブックの使用」には、複数のセッションに対しての統合Excelワークブックの使用に関する情報が記載されています。行のフラグ付けの詳細は、「ADF表コンポーネントでの行のフラグ付け」を参照してください。コンポーネント・アクションの起動の詳細は、「アクション・セット内のコンポーネント・アクションの起動方法」を参照してください。ADF表コンポーネントでサポートされるコンポーネントの詳細は、「ADF表コンポーネントのプロパティおよびアクション」を参照してください。

データをアップロードする際のデータ競合を処理するためのワークブックの構成

RowData.ChangeIndicatorAttributeプロパティに対してツリー・バインディングの行に固有な属性を指定して、行が最後にADF表コンポーネントによってダウンロードされてから別のユーザーによって変更されたかどうかを判断します。

ワークブックを構成してデータの競合を処理するには:

  1. 統合Excelワークブックを開きます。
  2. ADF表コンポーネントのセルを選択し、「Oracle ADF」タブの「プロパティの編集」をクリックします。
  3. 「コンポーネントの編集: ADF出力テキスト」で、RowData.ChangeIndicatorAttributeプロパティについて、行に固有のツリー・バインディングの属性を指定して、統合ExcelワークブックでADF表コンポーネントによって最後にダウンロードされてから、別のユーザーによって行が変更されているかを判断します。
  4. 「OK」をクリックします。

実行時の処理: データ競合の処理

ADF表コンポーネントは、RowDownSyncアクションを起動する際にRowData.ChangeIndicatorAttributeの値として指定した、ツリー・バインディングの行に固有な属性の元の値をキャッシュします。ADF表コンポーネントがRowUpSyncアクションを起動する際、Fusion Webアプリケーションによってホストされるバインディングの値と、ADF表コンポーネントがキャッシュした元の値が異なるかどうかをチェックします。これらが異なる場合、Fusion Webアプリケーションによってホストされるバインディングの値が、ADF表コンポーネントがバインディングの値をダウンロードした後に変更されているため、データの競合を示します。