Oracle® Fusion Middleware Oracle Application Development Frameworkデスクトップ統合開発者ガイド 11gリリース1 (11.1.1.9.0) B66694-04 |
|
![]() 前 |
![]() 次 |
この章では、統合Excelワークブックにサーバー・サイド検証とデータ入力検証を追加する方法、検証の失敗やデータ競合などのエラーを報告する方法、およびカスタム・エラー・ハンドラを使用してエラー・レポートを構成する方法について説明します。
この章の内容は次のとおりです。
Fusion Webアプリケーションと統合Excelワークブックにサーバー・サイドとデータ入力の検証を構成して、ADFモデル・レイヤー、ADFデスクトップ統合およびMicrosoft Excelにより提供される検証オプションを活用します。これらの検証オプションに加えて、ADFデスクトップ統合のコンポーネントを利用して、Fusion Webアプリケーションからエラー・メッセージを返したり、コンポーネント・アクションの結果のステータスを提供するほか、Fusion Webアプリケーションによりホストされるデータとの統合Excelワークブックの競合でデータが変更されるときに発生するエラーを管理できます。
統合Excelワークブックに検証を追加することには、いくつかの利点があります。Fusion Webアプリケーションおよび統合Excelワークブックで検証ルールを作成して、エンド・ユーザーによるデータ入力を検証できます。
検証ルールは、無効なデータのアップロードを停止することでサーバーを保護します。ADFデスクトップ統合では、データ入力の検証とサーバー・サイドの検証の両方の機能が提供されます。図13-1に、無効な郵便番号(12345x
)で入力検証ルールが失敗する、Summitサンプル・アプリケーションのEditCustomers-DT.xlsx
ワークブックからのサーバー・サイドの検証の例を示します。この失敗は、ステータス・ビューアの行(無効な郵便番号を含む行)のエントリに表示されます。
図13-2に、値を必要とするセルに値が表示されていない、同じワークブックのデータ入力の検証の失敗例を示します。
統合Excelワークブックで検証ルールを適用した後、必要に応じてワークブックを構成するための機能をさらに追加できます。次の各項では、使用可能なその他の機能について説明します。
統合Excelワークブックのテスト: 統合Excelワークブックを公開してデプロイする前に、テストする必要があります。詳細は、第14章「統合Excelワークブックのテスト」を参照してください。
統合Excelワークブックの公開およびデプロイ: 統合Excelワークブックの設計と検証に続く最終ステップは、公開およびデプロイです。詳細は、第15章「統合Excelワークブックのデプロイ」を参照してください。
ステータス・ビューアでは、エンド・ユーザーに対する情報がExcelの作業ウィンドウに表示されます。エンド・ユーザーは表示された情報を使用して、同時にエラーを確認および修正できます。ステータス・ビューアに常に表示される情報には、現在の統合ワークシートのワークシート・レベル・ステータスが含まれます。さらに、ワークシートにADF表コンポーネントが含まれていて、現在選択されているセルがADF表コンポーネントの行である場合、ステータス・ビューアにはその行のステータスが表示されます。
ステータス・ビューアには、アクション・セットの起動結果の情報が表示されます。たとえば、Fusion WebアプリケーションのADFモデル・レイヤーの宣言的な検証ルールに違反する値をエンド・ユーザーが入力するとします。エンド・ユーザーが変更をアップロードしようとすると、失敗した行で失敗がレポートされます。このシナリオでは、ステータス・ビューアが表示され、検証失敗のメッセージが表示されます。
図13-3は、エンド・ユーザーが郵便番号(12345x
)を入力したが、Fusion WebアプリケーションのADFモデル・レイヤーで定義した入力検証に失敗した場合に、EditCustomers-DT.xlsx
ワークブックに表示されるステータス・ビューアを示しています。検証失敗を含む表の行の任意の場所のセルを選択すると、検証失敗メッセージがステータス・ビューアに表示されます。図13-3のステータス・ビューアに表示されるワークシートレベルのステータスは、正常に完了したこのワークシートからの最新のアクション・セットを示します。
このリリースのADFデスクトップ統合を使用して作成した統合Excelワークブックでは、図13-4に示すように、Excelのリボンにステータス・ビューアのリボン・コマンドがデフォルトで表示されます。
エンド・ユーザーは、ステータス・ビューアのリボン・コマンドをクリックして、Excelの作業ウィンドウにステータス・ビューアを表示したり非表示にします。デフォルトでは、実行時にExcelワークブックでエラーが発生すると、ステータス・ビューアが自動的に表示されます。エラーの発生時にステータス・ビューアが自動的に表示されるように、以前のリリースを使用して作成した統合Excelワークブックの動作を構成できます。詳細は、13.2.1項「ステータス・ビューアの自動表示を管理する方法」を参照してください。
9.3.1項「実行時リボン・タブのワークブック・リボン・コマンドの定義方法」の説明に従って、ToggleStatusViewer
ワークブック・アクションを追加し、ステータス・ビューアのリボン・コマンドをExcelリボンに追加します。ワークブックのアクションの詳細は、A.14項「ワークブックのアクションおよびプロパティ」を参照してください。
ステータス・ビューアのリボン・コマンドは、ワークブック・コマンドとしてExcelリボンに追加しますが、ステータス・ビューアはワークシート固有であり、対象の統合Excelワークシートの情報が表示されます。統合されていないワークシートにエンド・ユーザーが移動して、ステータス・ビューアのリボン・コマンドをクリックすると、そのワークシートではステータス・ビューアを使用できない旨をエンド・ユーザーに通知するメッセージが表示されます。
Excelの作業ウィンドウでステータス・ビューアの自動表示を管理するには、AutoDisplayStatusViewerEnabled
ワークブック・プロパティの値をTrue
またはFalse
に設定します。
始める前に:
ADFデスクトップ統合で提供されるステータス・ビューアに関する知識が役立つ場合があります。詳細は、13.2項「ステータス・ビューアを使用したエンド・ユーザーへのエラー・メッセージのレポート」を参照してください。
他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。詳細は、13.1.2項「統合Excelワークブックに検証を追加するための追加の機能」を参照してください。
ステータス・ビューアの自動表示を管理する手順:
統合Excelワークブックを開きます。
Excelリボンの「Oracle ADF」タブで、「ワークブック・プロパティ」をクリックします。
「ワークブック・プロパティの編集」ダイアログで、「動作」を展開し、AutoDisplayStatusViewerEnabled
プロパティを正しく設定します。
True: エラーの発生時にステータス・ビューアが自動的に表示されます。
False: ステータス・ビューアを表示するには、エンド・ユーザーがExcelリボンのステータス・ビューアのリボン・コマンドをクリックする必要があります。
「OK」をクリックします。
エンド・ユーザーがADFコンポーネントにバインドされているセルを変更した後、ADFデスクトップ統合では基本的なデータ入力検証が自動的に実行されます。基本的なデータ入力検証には、予期されるデータ・タイプ(たとえば、ユーザーが入力した数値属性の数値)および必須フィールドが空白でないことの検証が含まれます。エンド・ユーザーがセルを離れるとすぐに、ADFデスクトップ統合でこの検証が実行されます。
ADFモデル・レイヤーのメタデータを使用して、基本的なデータ入力検証が実行されます。追加のワークブック構成は不要です。この検証は、13.3.1.1項「ADFデスクトップ統合のデータ入力の検証を有効化または無効化する方法」の説明に従ってCompatibility.DataEntryValidationEnabled
ワークブック・プロパティを使用することで、無効にできます。ADFデスクトップ統合では、基本的なデータ検証がデフォルトで有効になっています。
ADFデスクトップ統合では、アップロード中に追加の検証が実行されます。詳細は、13.4項「統合Excelワークブックのサーバー・サイド検証の追加」を参照してください。
ADFデスクトップ統合では、データ入力の検証を実行して次を検証します。
必須フィールドに値が含まれている。ADFデスクトップ統合では、必須値が必要なADFコンポーネント(例: ADF入力テキスト・コンポーネント)を含むExcelセルが空白の場合に、検証失敗をレポートします。
正しいデータ型が入力されている。たとえば、必要なデータ型が日付または数値の入力フィールドに文字列("Bob"
)を入力すると、ADFデスクトップ統合は検証失敗をレポートします。
ADFデスクトップ統合では、Fusion Webアプリケーションにリクエストせずに、前述のタイプの検証を実行します。
ADFデスクトップ統合では、ADF入力テキスト、ADF入力日およびADF表コンポーネントでデータ入力の検証を実行します。読取り専用のセル、ラベルまたはヘッダーのセル、ロックされたセル、または7.12項「ADF表コンポーネント内の特殊な列」に説明されている列のセルのデータ入力の検証は実行されません。また、ADF読取り専用表コンポーネントまたはADF値リスト・コンポーネントのセルのデータ入力の検証も実行されません。
ADFデスクトップ統合で実行されるデータ入力の検証では、単一または複数のセルの編集時(同時)の失敗を識別します。複数のセルにまたがる編集の例には、ADF表コンポーネントでの列の選択や、エンド・ユーザーがADF表コンポーネントで1つ以上のデータ行を貼り付ける操作などがあります。ADFデスクトップ統合では、エンド・ユーザーが単一または複数のセルを編集し、そのセルを編集モードのままにした場合のみ、データ入力の検証を実行します。検証失敗が発生した場合、ADFデスクトップ統合は、エンド・ユーザーが[Enter]を押す、タブを移動、または異なるセルを選択して編集モードを終了した後に、検証に失敗したセルを赤枠で表示します。
ADFデスクトップ統合で検証失敗がレポートされると、エンド・ユーザーは、編集モードにせずにセルを選択することで、非モーダル・ポップアップ・メッセージを表示できます。非モーダル・ポップアップ・メッセージには、検証失敗の内容が表示され、検証失敗を解決するためのアクションが提示されます。これは、エンド・ユーザーがセルを選択して、検証失敗が存在する場合は、表示されたままになります。非モーダル・ポップアップ・メッセージは、エンド・ユーザーが検証失敗の複数のセルを選択した場合には表示されません。ADF表コンポーネントのセルでは、検証失敗のセルが少なくとも1つ行に含まれることを示すメッセージも「ステータス」列に表示されます。Download
やUpload
などのADF表コンポーネントのアクションにより、後者のメッセージはクリアされます。ADF表コンポーネントのDownload
アクションでは、検証失敗を含むセルの赤枠もクリアされます。「ステータス」列の詳細は、7.12項「ADF表コンポーネント内の特殊な列」を参照してください。
ステータス・ビューアには、検証失敗を含むセルの行にメッセージが表示されます。このメッセージ(保留中の無効な変更が行に含まれています
)は、エンド・ユーザーが検証失敗を解決するまで表示されます。ステータス・ビューアには、データ入力の検証エラーに加えて、最後のアップロード操作の失敗メッセージなども表示される場合があります。ステータス・ビューアの詳細は、13.2項「ステータス・ビューアを使用したエンド・ユーザーへのエラー・メッセージのレポート」を参照してください。
図13-1に、Summitサンプル・アプリケーションのEditCustomers-DT.xlsx
ワークブックのデータ入力の検証失敗のセルを示します。エンド・ユーザーは、値が必要なADF表コンポーネントのセルに値を入力していません。非モーダル・ポップアップ・メッセージおよびステータス・ビューアの両方に、この失敗に関する情報が表示されます。
検証失敗の原因となった問題をエンド・ユーザーが解決するまで、ADFデスクトップ統合は、検証に失敗したセルに赤枠を表示します。エンド・ユーザーがセルの境界を赤に設定すると、ADFデスクトップ統合は、検証エラーが発生するまで(例: 必須値がない)、そのセルを無効と認識しません。エンド・ユーザーが表示を混乱しないようにするには、赤枠の使用がADFデスクトップ統合での検証失敗のレポート用に予約されるように、統合Excelワークブックでセルに赤枠を使用しないようにします。
検証が失敗した場合に、エンド・ユーザーが統合Excelワークブックでデータの編集や入力を継続できないようにしたり、データ入力の検証失敗が解決されない場合に、統合Excelワークブックからデータをアップロードできないようにすることはできません。
注意: エンド・ユーザーが大量のセルを同時に変更すると、データ検証の時間が大幅に長くなる場合があります。このような場合は、進捗バーが表示され、エンド・ユーザーに進捗が示されます。エンド・ユーザーが「取消」をクリックすると、その時点で検証は停止します。 |
統合Excelワークブックでは、ADFデスクトップのデータ入力の検証がデフォルトで有効になっています。A.16項「ADFデスクトップ統合互換性のプロパティ」の説明に従って、DataEntryValidationEnabled
ワークブックのプロパティを構成することで、ADFデスクトップ統合のデータ入力の検証を有効および無効にできます。
始める前に:
ADFデスクトップ統合のデータ入力の検証について理解しておくと役立ちます。詳細は、13.3.1項「ADFデスクトップ統合を使用したデータ入力の検証の追加」を参照してください。
他のADFデスクトップ統合の機能を使用して追加できる機能についても理解しておくと役立ちます。詳細は、13.1.2項「統合Excelワークブックに検証を追加するための追加の機能」を参照してください。
ADFデスクトップ統合のデータ入力の検証を有効または無効にする手順:
統合Excelワークブックを開きます。
Excelリボンの「Oracle ADF」タブで、「ワークブック・プロパティ」をクリックします。
「ワークブック・プロパティの編集」→「互換性」で、DataEntryValidationEnabled
プロパティを正しく設定します。
True: ADFデスクトップ統合のデータ入力の検証を有効にします。
False: ADFデスクトップ統合のデータ入力の検証を無効にします。
「OK」をクリックします。
Excelのデータ検証機能を使用して、エンド・ユーザーがセルに入力したデータの型や値を制御できます。これらの機能によって、データ・エントリを一定の日付範囲に制限したり、リストを使用して選択内容を限定したり、正の整数のみをセルに入力したりすることができます。たとえば、EditWarehouseInventory-DT.xlsx
ワークブックのZipCode
フィールドを構成して、ユーザーがこのフィールドのセルに整数のみを入力できるようにすることができます。
値リストをレンダリングするセルにカスタム検証を適用した場合、実行時にADFデスクトップ統合でセルに値リストが移入されると、検証が伝播されます。ただし、値リストを含むコンポーネントに適用されたカスタム検証は、ADFデスクトップ統合によって実行時に上書きされる点に注意してください。これは、ADFデスクトップ統合が、実行時に起動される独自のリスト制約検証を適用するためです。値リストの作成の詳細は、第8章「値リストの使用」を参照してください。
Excelでのデータ検証の詳細は、Excelのドキュメントを参照してください。
ADFデスクトップ統合は、ADFモデル・レイヤーがバインディングの属性に対して設定する検証ルールを使用します。エンド・ユーザーがADFデスクトップ統合コンポーネントの1つに入力または編集したデータ(ADF表コンポーネントなど)は、Fusion WebアプリケーションのADFモデル・レイヤーの設定ルールおよび条件に対して検証できます。Oracle ADFでの検証ルールの定義に関する一般的な情報は、『Oracle Application Development Framework Fusion開発者ガイド』の検証とビジネス・ルールの宣言的な定義に関する項を参照してください。
ADFモデル・レイヤーの検証の追加の詳細は、『Oracle Application Development Framework Fusion開発者ガイド』のADFモデル・レイヤーでの検証規則の定義に関する項を参照してください。
注意: ADFデスクトップ統合は、サーバー・サイドの検証の警告をサポートしていません。Fusion Webアプリケーションで定義されるルールに設定される検証の警告は、統合Excelワークブックによって表示されません。 |
ステータス・ビューアは、13.2項「ステータス・ビューアを使用したエンド・ユーザーへのエラー・メッセージのレポート」で説明されているように、次の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-7は、ADF表コンポーネントのUpload
アクションの起動後にADF表コンポーネントにある同じ行を示しています。ADF表コンポーネントは、_ADF_StatusColumn
列(この例の実行時はStatusというラベル付き)に、行の更新が成功したかどうかを示すメッセージを移入します。行で更新に失敗すると、図13-7に示すように、ステータス・ビューアが自動的に表示され、行で更新に失敗した理由を説明するメッセージが表示されます。
デフォルトでは、__ADF_StatusColumn
列のDoubleClickActionSet
は、ADF表コンポーネントのDisplayRowErrors
アクションを起動するように構成されています。エンド・ユーザーが実行時にこの列の行をダブルクリックすると、ADF表コンポーネントによりDisplayRowErrors
アクションが起動されます。エラーが存在する場合、このアクションによってその行のエラーのリストを示すダイアログが表示されます。エラーがない場合、ダイアログにはエラーが発生しなかったことを示すメッセージが表示されます。図13-8は、「ステータス」列にUpdate failed
と表示される図13-7のセルをエンド・ユーザーがダブルクリックすると表示されるダイアログを示しています。
_ADF_StatusColumn
列の詳細は、7.12項「ADF表コンポーネント内の特殊な列」を参照してください。
Fusion Webアプリケーションを構成して、カスタムのエラー・ハンドラを使用してエラーを報告し、統合Excelワークブックでエンド・ユーザーに表示されるエラー・メッセージに対する詳細を提供することができます。
この機能を実装するには、カスタムのエラー・ハンドラがgetDetailedDisplayMessage
メソッドをオーバーライドして、DCErrorMessage
オブジェクトを返す必要があります。実行時にADFデスクトップ統合は、カスタムのエラー・ハンドラを検出して、DCErrorMessage
オブジェクトに対してgetHtmlText
メソッドを起動します。ADFデスクトップ統合には、エラー・メッセージ・リストのgetHtmlText
メソッドにより返されるHTMLが詳細として含まれます。
カスタムのエラー・ハンドラの作成の詳細は、『Oracle Application Development Framework Fusion開発者ガイド』のエラー処理のカスタマイズに関する項を参照してください。
エンド・ユーザーの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開発者ガイド』の同時に更新したデータの損失を防止する方法に関する項を参照してください。
統合Excelワークブックでこの競合を解決するには、User XがFusion Webアプリケーションから最新バージョンのデータをダウンロードする必要があります。ただし、ADF表コンポーネントのDownload
アクションを起動すると、コンポーネントがExcelワークブックにホストしているすべてのデータがリフレッシュされます。これによって、User Xが加えた他の変更で競合エラー・メッセージを生成しないものが上書きされる可能性があります。このシナリオを解決するために、ADF表コンポーネントのDownloadFlaggedRows
アクションを公開できます。このアクションが起動すると、エンド・ユーザーがダウンロード用にフラグ付けした行についてのみデータがダウンロードされます。このアクションを使用して、User Xは競合の問題を解決し、変更済データをアップロードできます。
第16章「複数のWebセッション間における統合Excelワークブックの使用」には、複数のセッションに対しての統合Excelワークブックの使用に関する情報が記載されています。行のフラグ付けの詳細は、7.12.1項「ADF表コンポーネントでの行のフラグ付け」を参照してください。コンポーネント・アクションの起動の詳細は、9.2.2項「アクション・セット内のコンポーネント・アクションの起動方法」を参照してください。ADF表コンポーネントでサポートされるコンポーネントの詳細は、A.11項「ADF表コンポーネントのプロパティおよびアクション」を参照してください。
RowData.ChangeIndicatorAttribute
プロパティに対してツリー・バインディングの行に固有な属性を指定して、行が最後にADF表コンポーネントによってダウンロードされてから別のユーザーによって変更されたかどうかを判断します。
ワークブックを構成してデータの競合を処理するには:
統合Excelワークブックを開きます。
ADF表コンポーネントのセルを選択し、「Oracle ADF」タブの「プロパティの編集」をクリックします。
「コンポーネントの編集: ADF出力テキスト」で、RowData.ChangeIndicatorAttribute
プロパティについて、行に固有のツリー・バインディングの属性を指定して、統合ExcelワークブックでADF表コンポーネントによって最後にダウンロードされてから、別のユーザーによって行が変更されているかを判断します。
「OK」をクリックします。
ADF表コンポーネントは、RowDownSync
アクションを起動する際にRowData.ChangeIndicatorAttribute
の値として指定した、ツリー・バインディングの行に固有な属性の元の値をキャッシュします。ADF表コンポーネントがRowUpSync
アクションを起動する際、Fusion Webアプリケーションによってホストされるバインディングの値と、ADF表コンポーネントがキャッシュした元の値が異なるかどうかをチェックします。これらが異なる場合、Fusion Webアプリケーションによってホストされるバインディングの値が、ADF表コンポーネントがバインディングの値をダウンロードした後に変更されているため、データの競合を示します。