ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Frameworkデスクトップ統合開発者ガイド
11gリリース1 (11.1.1.7.0)
B66694-02
  目次へ移動
目次

前
 
次
 

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

この章では、ADFデスクトップ統合により提供される表タイプ・コンポーネント、その構成方法と使用方法、Fusion Webアプリケーションからデータをダウンロードする方法、統合Excelワークブックで表タイプ・コンポーネントからデータ行の挿入、更新、削除を行う方法、変更内容の追跡方法、表タイプ・コンポーネントで特殊な列を構成する方法、および表タイプ・コンポーネントを使用して実行できるその他のタスクについて説明します。

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

7.1 ADFデスクトップ統合表タイプ・コンポーネントの概要

ADFデスクトップ統合には、構造化データを表示するための次の表タイプ・コンポーネントがあります。

ADF表コンポーネントとADF読取り専用表コンポーネントは、エンド・ユーザーにデータ行をダウンロードおよびアップロードする機能を提供します。また、ADF表コンポーネントは、エンド・ユーザーがダウンロードしたデータの編集や削除、新しいデータ行の挿入を行えるようにします。図7-1は、ADF表コンポーネントとADF読取り専用表コンポーネントを示します。

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

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

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

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

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

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

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

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

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


注意:

Excelはバインディングのフラット・リストを表示して、イテレータは表示されないため、異なるイテレータの属性にはわかりやすい名前を使用します。


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

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

DEGで使用するADFバインディング

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

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

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

ADFデスクトップ統合デザイナの作業ウィンドウからADF表コンポーネントを挿入できます。

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

  1. 統合Excelワークブックを開きます。

  2. ADF表コンポーネントを挿入するExcelワークシートのセルを選択します。

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

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

    選択内容に基づいて、「コンポーネントの選択」ダイアログまたはコンポーネントの挿入ダイアログが表示されます。

  4. 表示されたダイアログで、「ADF表」を選択して「OK」をクリックします。


    注意:

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

    • ADF表コンポーネントはマージされたセルに挿入できません。

    • Insert Bindingを使用してADF表コンポーネントを挿入する場合は、すべての列に対してデフォルトでInputTextがサブコンポーネント・タイプとして定義されます。


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

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

    表コンポーネントのプロパティ・インスペクタ
  6. ツリー・バインディングに関連付けられたイテレータの各行を一意に識別する属性のバインディング式を指定します。バインディングのイテレータが行のキーをサポートする場合、UniqueAttributeプロパティは空白のままにしても問題ありません。

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

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

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

    CommitBatchActionID

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


  8. オプションで、RowLimitグループ・プロパティを構成し、ADF表コンポーネントがダウンロード可能な行数を決定します。

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

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

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

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

設計モードのADF表コンポーネント

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

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

実行時のADF表コンポーネント

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

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

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

統合ExcelワークブックのワークシートにADF表コンポーネントを挿入した後、ツリー・バインディングで使用できない列を追加したい場合があります。たとえば、Excel式によって計算される値を表示する列を追加する場合です。

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

  1. 統合Excelワークブックを開きます。

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

  3. 「コンポーネントの編集: ADF表」ダイアログで、Columnsプロパティの参照(...)アイコンをクリックします。

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

  4. 「追加」をクリックして、新しい列を追加します。新しい列が、Membersリストの末尾に挿入されます。列を特定の位置に移動するには、列を選択して「上」「下へ」の配列キーを使用します。

  5. ダイアログの右側ウィンドウにある新しい列のプロパティを構成します。

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


注意:

手順4の説明に従って新しい列を移動していない場合、新しい列はKey列の左側に表示されます。


ADFデスクトップ統合では、ADF表コンポーネントに追加可能な列の数に制限はありません。使用するExcelのバージョンでサポートされている列の数だけ追加できます。ただし、表の幅が非常に広い場合、パフォーマンスと操作性が低下することが報告されています。このような状況が発生した場合は、まず表の列数を減らしてみてから、パフォーマンス低下の他の理由を診断してください。

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

ADF表コンポーネントを追加すると、デフォルトでエンド・ユーザーが既存のデータを編集できるようになりますが、新しいデータ行の追加や既存のデータ行の削除はできません。

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

エンド・ユーザーが既存のデータを編集できるようにしながら、データ行の追加や削除を制限する場合、追加の構成は必要ありません。表7-2図7-6示すように、ADF表コンポーネントのRowActionプロパティが設定されていることを確認してください。

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

プロパティ

InsertRowEnabled

False

DeleteRowEnabled

False

UpdateRowEnabled

True


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

データを更新するためのADF表のRowActionプロパティ

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

エンド・ユーザーが行のデータを変更すると、ADFデスクトップ統合によりその行にマークが付けられ、上向きの三角形が_ADF_ChangedColumn列の行に表示されます。既存のデータを更新した後、エンド・ユーザーはアップロード処理を開始して変更を保存します。ADF表コンポーネントのアップロード処理の詳細は、7.8項「ADF表コンポーネントから変更をアップロードするためのADFコンポーネントの構成」を参照してください。

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

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

7.5 データを挿入するためのADF表コンポーネントの構成

ADF表コンポーネントの第一の目的は、データを入力および編集し、Fusion Webアプリケーションにサービスを提供するデータベースにアップロードできるインタフェースをエンド・ユーザーに提供することです。この目的を達成するには、データ・コントロールのメソッドを公開し、ページ定義ファイルでアクション・バインディングを作成して、ExcelワークシートがホストするADF表コンポーネントのプロパティを設定する必要があります。この機能が正常に動作するには、Excelの行全体を挿入する必要がある点に注意してください。

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

エンド・ユーザーがADF表コンポーネントで行う変更をADF表コンポーネントのUploadアクションを起動してコミットするには、ADF表コンポーネントのプロパティをいくつか構成する必要があります。

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

  1. JDeveloperでプロジェクトを開きます。

  2. プロジェクトがない場合は、CreateInsertCommitアクション・バインディングを、ADF表コンポーネントをホストするExcelワークシートに関連付けられたページ定義ファイルに追加します。

    詳細は、4.3項「統合Excelワークブックのページ定義ファイルの使用」7.2項「ADF表コンポーネントのページ定義の要件」を参照してください。

  3. 統合Excelワークブックを開きます。

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

  5. コンポーネントの編集: ADF表ダイアログで、表7-3に示すようにADF表コンポーネントのRowActionsプロパティを構成します。

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

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

    InsertRowEnabled

    True

    InsertBeforeRowActionID

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

    InsertRowsAfterUploadEnabled

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

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


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

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

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

    CommitBatchActionID

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


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

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

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

    InsertUsesUpdate

    True

    UpdateComponent

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

    • UpdateComponentReadOnlyプロパティが正しく設定されていることを検証します。

      このプロパティは、列に関連付けるサブコンポーネントとしてInputTextまたはTreeNodeListを選択した場合のみ表示されます。ユーザーが列の値を編集できるようにするには、ReadOnlyFalseに設定します。それ以外の場合はTrueに設定します。

      サブコンポーネントとして使用可能なコンポーネントの詳細は、第6章「ADFデスクトップ統合フォーム・タイプ・コンポーネントの使用」を参照してください。

    ID

    ADF表コンポーネントの列のリストで列を一意に識別する値をこのフィールドに設定します。このプロパティの値は必須です。ADF表コンポーネントによって、変更の必要がない初期値が生成されます。

    CellStyleName

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

    HeaderLabel

    このプロパティをラベル、または実行時に列ヘッダーにレンダリングされるラベルに評価されるEL式に設定します。ラベルの詳細は、9.4項「統合Excelワークブックでのラベルの使用」を参照してください。

    HeaderStyleName

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


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

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


注意:

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

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

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


7.6 ADF表コンポーネントにデータをダウンロードするためのOracle ADFコンポーネントの構成

ワークシートにADF表コンポーネントを追加した後は、ADF表コンポーネントがFusion Webアプリケーションからデータをダウンロードするように、コンポーネントおよびそれをホストするワークシートを構成できます。これを実行するには、ワークシート・リボン・コマンドなどのOracle ADFコンポーネントを構成して、アクション・セットを起動します。起動されるアクション・セットには、起動されるアクションの中からADF表コンポーネントDownloadアクションを含める必要があります。

ADF表コンポーネントやADF読取り専用コンポーネントに含まれる行数は、Fusion Webからダウンロードする行数に基づいて増減します。Excelが表タイプ・コンポーネントがダウンロードするデータを受け入れるために行を挿入するときに、複製する場合を除いて、表タイプ・コンポーネントの左右には何も配置しないでください。実行時に表タイプ・コンポーネントに対して位置が維持されるため、表タイプ・コンポーネントの上下には他のコンポーネントを配置できます。エンド・ユーザーが実行時にADF表コンポーネントに新しいデータ行を挿入する場合は、ADF表コンポーネントをホストするExcelワークシートに行全体を挿入する必要があります。

7.6.1 ADF表コンポーネントにデータをダウンロードするためのADFコンポーネントの構成方法

Oracle ADFコンポーネント、ワークシート・リボン・ボタン、ワークシート・イベントを構成して、ADF表コンポーネントDownloadアクションを起動するアクション・セットを起動します。

ADFコンポーネントを構成してADF表コンポーネントにデータをダウンロードするには:

  1. 統合Excelワークブックを開きます。

  2. 「アクションの編集」ダイアログを開き、実行時にアクション・セットを起動するワークシート・イベント、ワークシート・リボン・ボタン、Oracle ADFコンポーネント(ボタンなど)にアクション・セットを構成します。

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

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

    ADF表コンポーネントDownloadアクションは、ADF表コンポーネントTreeIDプロパティにより参照されるバインディングの現在の状態をダウンロードします。ダウンロードの前にこのバインディングの状態が最新であることを確認するため、アクション・セットがADF表コンポーネントDownloadアクションを起動する前にバインディングをリフレッシュする問合せアクションを追加します。

    図7-7は、EditCustomers-DT.xlsxワークブックの「アクションの編集」ダイアログを示しています。ここでは、ワークシート・イベントStartupにより起動されるアクション・セットが構成されます。

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

    データ・エントリ・グリッド・コンポーネントにデータをダウンロードするActionSet
  4. 「OK」をクリックします。

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

エンド・ユーザーは、構成されたアクション・セットを起動します。アクション・セットは、指定されたアクションのリストを順に起動します。これには、ADF表コンポーネントのDownloadアクションを起動するアクションが含まれます。このアクションは、ADF表コンポーネントTreeIDプロパティにより参照されるツリー・バインディングからすべての行をダウンロードします。TreeIDプロパティにより参照されるツリー・バインディングにマスター/ディテール関係のデータ(たとえば、複数の製品を持つ製品カテゴリなど)が含まれる場合、ADF表コンポーネントは詳細結果セットに最初のレコードを表示します(最初の製品など)。Fusion Webアプリケーションでどのようにツリー・バインディングを構成したかによって、最初のレコードとして定義された詳細レコードが決まります。ツリー・バインディングを使用したマスター/ディテール・データの表示の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のツリーを使用したマスター/ディテール・オブジェクトの表示に関する項を参照してください。

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


注意:

ワークシートに適用されたフィルタ条件はDownload操作の前に自動的にクリアされます。


7.7 ADF表コンポーネントに挿入前のデータをダウンロードするためのワークシートの構成

Pre-insertデータとは、データベースにコミットされていないFusion Webアプリケーションのイテレータ内のデータのことです。イテレータを構成して、属性の一部またはすべての値を移入できます。

統合Excelワークブックで設計時に、ADF表コンポーネントが挿入前のデータをFusion Webアプリケーションからダウンロードするように、ADF表コンポーネントおよびそれをホストするワークシートを構成できます。このユースケースを実行するには、ワークシート・リボン・コマンドなどのOracle ADFコンポーネントを構成して、アクション・セットを起動します。起動されるアクション・セットには、起動されるアクションの中からADF表コンポーネントのDownloadForInsertアクションを含める必要があります。

イテレータ内の各行は保留中の挿入行としてADF表に作成されます。これ以降のTable.Uploadへのコールでは、挿入行のアクションのプロパティで定義したメソッドに従い、これらの各行を挿入しようとします。

DownloadForInsertアクションは、次の点でDownloadアクションとは異なります。

DownloadForInsertアクションの起動に際して、次の点に注意してください。

7.7.1 ADF表コンポーネントに挿入前のデータをダウンロードするためのワークシートの構成方法

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

ADF表コンポーネントに挿入前のデータをダウンロードするためにワークシートを構成するには:

  1. 統合Excelワークブックを開きます。

  2. 「アクションの編集」ダイアログを開き、実行時にアクション・セットを起動するワークシート・イベント、ワークシート・リボン・ボタン、Oracle ADFコンポーネントにアクション・セットを構成します。

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

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

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

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

エンド・ユーザーは、構成されたアクション・セットを起動します。アクション・セットは、指定されたアクションのリストを順に起動します。これには、ADF表コンポーネントのDownloadForInsertアクションを起動するアクションが含まれます。このアクションは、Fusion Webアプリケーションから挿入前のデータをダウンロードし、ExcelワークシートのADF表コンポーネントの行にそれを挿入します。InsertComponentプロパティは、挿入前のデータをホストするために挿入される行に関連付けられたADF表コンポーネントに対して構成されます。エンド・ユーザーはADF表コンポーネントのUploadアクションを起動して、挿入前のデータをFusion Webアプリケーションのデータベースにコミットできます。

7.8 ADF表コンポーネントから変更をアップロードするためのADFコンポーネントの構成

エンド・ユーザーがADF表コンポーネントでデータに加える変更をFusion Webアプリケーションにアップロードできるように、ADF表コンポーネントおよびホストされるワークシートを構成します。この機能を構成するには、どのようなユーザーによる操作やワークシート・イベントが、ADF表コンポーネントのUploadアクションを起動するアクション・セットを起動するかを決定します。

Fusion WebアプリケーションからのWebページで、エンド・ユーザーにデフォルトのアップロード用ダイアログとは異なるアップロード・オプションを提供するには、ADF表コンポーネントのUploadを起動するアクションの前に、アクション・セットでDialogアクションを指定する必要があります。詳細は、7.8.5項「カスタムのアップロード・ダイアログの作成方法」を参照してください。


注意:

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


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

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

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

  1. 統合Excelワークブックを開きます。

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

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

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

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

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

    データ・エントリ・グリッド・コンポーネントからデータをアップロードするActionSet
  4. 「OK」をクリックします。


注意:

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


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

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

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

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

  3. 7.8.5項「カスタムのアップロード・ダイアログの作成方法」にあるようにアクション・セットにカスタムのアップロード・ダイアログを構成しなかった場合、ADFデスクトップ統合は図7-9に示すようなデフォルトのアップロード・ダイアログを表示します。

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

    デフォルトのアップロード・オプション

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

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

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

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

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

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

    4. アップロードされた各行について、ステータス・メッセージがStatus列に表示されます。詳細は、8.2.5項「アクション・セットの実行中にステータス・メッセージを表示する方法」を参照してください。

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

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

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

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

手順3の「アップロード・オプション」ダイアログで「失敗した場合は、引き続き後続の行をアップロードします」を選択した場合、一部の行で検証に失敗した場合でも、Uploadアクションはアクション・セットに成功コードを返します。


注意:

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

ADF表コンポーネント列のプロパティの詳細は、表A-10を参照してください。


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

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

Upload中の読取り専用式の評価に関する詳細は、7.20項「読取り専用プロパティのEL式の評価」を参照してください。

7.8.4 実行時の処理: アップロードの失敗

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

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

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

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


注意:

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


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

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

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

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

  1. Fusion Webアプリケーションを開発するJDeveloperプロジェクトにページを作成します。このページの作成方法の詳細は、8.4項「Fusion WebアプリケーションからのWebページの表示」を参照してください。

  2. 8.4項「Fusion WebアプリケーションからのWebページの表示」 に示すADFdi_CloseWindow要素(span要素など)の他に、手順1で作成するページには表7-6に示す要素を含める必要があります。

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

    名前 説明

    ADFdi_AbortUploadOnFailure

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

    ADFdi_DownLoadAfterUpload

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



    注意:

    作成するページには、ADFデスクトップ統合がデフォルトのアップロード・ダイアログをエンド・ユーザーに表示しないように、両方の要素を含める必要があります。


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

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

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

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


注意:

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


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

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

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

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

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

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

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

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

  2. 存在しない場合は、Deleteアクション・バインディングを、ADF表コンポーネントをホストするExcelワークシートに関連付けられたページ定義ファイルに追加します。

    詳細は、4.3項「統合Excelワークブックのページ定義ファイルの使用」を参照してください。

  3. ADF表コンポーネントのプロパティ・インスペクタを開いて、表7-7に示すようにRowActionsプロパティ・グループの値を設定します。

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

    設定するプロパティ アクション

    DeleteRowActionID

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

    DeleteRowEnabled

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

    デフォルト値はFalseです。


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

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

  5. 統合Excelワークブックを開きます。

  6. 「アクションの編集」ダイアログを開き、実行時にアクション・セットを起動するときにエンド・ユーザーが使用するOracle ADFコンポーネント、リボン・コントロール、ワークシート・イベントにアクション・セットを構成します。

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

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

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

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

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

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

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

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

  2. アクション・セットは、RowActions.DeleteRowActionIDにより指定されたDeleteアクション・バインディングを起動します。


    注意:

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


  3. Deleteアクション・バインディングの起動中にエラーがなければ、成功のメッセージ・エントリが_ADF_StatusColumn列に表示されます。失敗があった場合、ADF表コンポーネントはDeleteアクション・バインディングの起動を中止して、手順4に進みます。

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

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

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

  6. アクション・セットがアクションを起動する際に予期しない例外が発生した場合、アクション・セットにエラー・コードが返されます。行レベルのエラーはすべてStatus列に表示され、バッチ・レベルのエラーはすべてTable.errorsから追跡できます。エラー処理の詳細は、12.4項「統合Excelワークブックでレポートされるエラー」を参照してください。

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

ADFコンポーネントは、Excelワークブックで変更された行を、行ごとにではなくバッチ処理でアップロードします。バッチのサイズや、バッチのアップロード時にADF表コンポーネントが起動するアクションを決定するバッチ・オプションのプロパティを構成できます。

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

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

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

  1. 統合Excelワークブックを開きます。

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

  3. 表示されたプロパティ・インスペクタでBatchOptionsプロパティ・グループの値を設定します。

    表7-8 RowData.BatchOptionsプロパティ

    設定するプロパティ アクション

    BatchSize

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

    CommitBatchActionID

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

    LimitBatchSize

    True

    Trueの場合、ADF表コンポーネントはBatchSizeの値により決定されるバッチで行を処理します。Falseの場合、ADF表コンポーネントは変更されたすべての行を1つのバッチでアップロードします。

    デフォルト値はTrueです。

    StartBatchActionID

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


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

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

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

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

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

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

DEGコンポーネントのフラグ付けされた列

注意:

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


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

  • DeleteFlaggedRows

  • DownloadFlaggedRows

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


注意:

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

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


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

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

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

ADF表コンポーネントからデータをアップロードする際に、特定の状況ではエンド・ユーザーが予期しないエラーを体験する可能性があります。バッチからの変更を記録した後に、ADFデスクトップ統合はCommitBatchActionIDで指定されたアクションを実行します。コミット・アクション中に発生したエラーが、それ以降のレコードのバッチにエラーがなくても、後に続くバッチ・コミット・アクションで引き続き報告される可能性があります。これは、CommitBatchActionIDアクションが失敗し、保留中のモデル更新が自動的に元に戻らなかった場合に発生する可能性があります。

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


注意:

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


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

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

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

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

統合ExcelワークブックにADF表を追加すると、設計時に「キー」列(列ID: _ADF_RowKeyColumn)が自動的に表示されます。「キー」列には、ADFデスクトップ統合で表が正しく機能するために使用される重要な情報が含まれます。実行時には「キー」列を削除しないでください。

7.12.1 キー列の構成方法

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

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

  1. 統合Excelワークブックを開きます。

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

  3. 「コンポーネントの編集: ADF表」ダイアログで、Columnsの入力フィールドの横にある参照(...)アイコンをクリックします。

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

  4. ID_ADF_RowKeyColumnの列を選択します。

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

    • DynamicColumn

    • InsertComponent

    • InsertUsesUpdate

    • UpdateComponent

    • ID

    • Visible

  6. 必要があれば、「上」「下へ」の配列キーを使用して、列の位置を変更します。

  7. 「OK」をクリックして、「列の編集」ダイアログを閉じます。

  8. 「OK」をクリックして、コンポーネントの編集: ADF表ダイアログを閉じます。

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

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

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

  1. 統合Excelワークブックを開きます。

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

  3. 表7-9の説明に従って、ADF表に新しい列を追加してプロパティを指定します。列の追加の詳細は、7.3.2項「ADF表コンポーネントへの列の追加方法」を参照してください。

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

    設定するプロパティ

    CellStyleName

    _ADFDI_TableKeyCellStyle

    HeaderStyleName

    _ADFDI_HeaderStyle

    DynamicColumn

    False

    HeaderLabel

    #{_ADFDIres[COMPONENTS_TABLE_ROWKEY_COL_LABEL]}

    ID

    _ADF_RowKeyColumn

    InsertUsesUpdate

    True

    UpdateComponent

    OutputText

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

    Visible

    True


    必要があれば、「上」「下へ」の配列キーを使用して、「キー」列の位置を変更します。

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


注意:

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


7.13 ADF表コンポーネント列での値リストの作成

ADF表コンポーネント列で値のドロップダウン・リストをレンダリングする場合は、TreeNodeListサブコンポーネントを使用します。値リストは、実行時に最大250の値を表示できます。5.5項「コンポーネント・パレットの使用」で説明されているように、ADFデスクトップ統合とは異なり、TreeNodeListサブコンポーネントはコンポーネント・パレットには表示されません。これは、ADF表コンポーネント列のInsertComponentプロパティやUpdateComponentプロパティに値を指定するときに、サブコンポーネントとして起動します。ADF表コンポーネント列のプロパティの詳細は、A.9.2項「ADF表コンポーネント列のプロパティ」を参照してください。

TreeNodeListサブコンポーネントを起動した後、モデルドリブンのリストに関連付けられたツリー・バインディング属性を、TreeNodeListサブコンポーネントのListプロパティの値として指定する必要があります。モデルドリブン・リストに関連付けられたツリー・バインディング属性は、表コンポーネントのDownloadアクションが起動された後で、表コンポーネントの列のドロップダウン・メニューに値リストを移入します。


注意:

ModelDrivenColumnComponentをサブコンポーネント・タイプとして選択すると、モデルドリブンの値リストをADF表コンポーネントに作成できます。モデルドリブン・リストの作成の詳細は、7.14項「ADF表コンポーネントへのModelDrivenColumnComponentサブコンポーネントの追加」を参照してください。


TreeNodeListサブコンポーネントのプロパティの詳細は、A.6項「TreeNodeListサブコンポーネントのプロパティ」を参照してください。

7.13.1 ADF表コンポーネント列での値リストの作成方法

ADF表コンポーネント列に列を追加して、TreeNodeListをサブコンポーネントとして選択します。それから、ツリー・バインディング属性をTreeNodeListサブコンポーネントのListプロパティの値に指定します。モデルドリブン・リストは、指定するツリー・バインディング属性に関連付ける必要があります。


注意:

TreeNodeListサブコンポーネントは、コントロール・タイプがinput_text_lovまたはcombo_lovのモデルドリブンのリストをサポートしていません。


ADF表コンポーネント列に値リストを作成するには:

  1. 統合Excelワークブックを開きます。

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

  3. 「コンポーネントの編集: ADF表」ダイアログで、Columnsの入力フィールドの横にある参照(...)アイコンをクリックします。

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

  4. 「追加」をクリックして、新しい列を追加します。

  5. 新しく作成した列に適切なオプションを選択します。

    • InsertComponentの入力フィールドの横にある参照(...)アイコンをクリックして、挿入操作の実行時の値リストを構成します。

    • UpdateComponentの入力フィールドの横にある参照(...)アイコンをクリックして、更新操作とダウンロード操作の実行時の値リストを構成します。

    両方のオプションでも、作成するサブコンポーネントの選択ダイアログが表示されます。

  6. TreeNodeListを選択して、「OK」をクリックします。

  7. 手順5で選択したプロパティを展開して、次のように値を構成します。

    • Listプロパティのモデルドリブン・リストに関連付けられたツリー・バインディング属性を選択します。

    • 8.8項「統合Excelワークブックでの依存値リストの作成」の説明にあるように、従属する値リストを作成する場合にのみ、DependsOnListの値を選択してください。 DependsOnListに選択したツリー・バインディング属性またはリスト・バインディングは、従属値リスト内で親の値リストとして機能します。

    • 必要に応じてReadOnlyプロパティを構成します。

      これらのプロパティの詳細は、A.6項「TreeNodeListサブコンポーネントのプロパティ」を参照してください。

    図7-13は、TreeNodeListが列のUpdateComponentプロパティのサブコンポーネントとして選択された後の、EditCustomers-DT.xlsxのADF表コンポーネント列のプロパティ・インスペクタを示しています。

    図7-13 値リストを表示するように構成されたADF表コンポーネント列

    値リストを表示する表コンポーネント列
  8. 「OK」をクリックします。

7.13.2 実行時の処理: ADF表列による値リストのレンダリング

実行時には、ADF表コンポーネントはDownloadアクションを起動して、それぞれの列に値を移入します。また、このアクションは値リストをレンダリングするよう構成した列に値リストを移入します。図7-14は、ADFデスクトップ統合のSummitサンプル・アプリケーションのEditCustomers-DT.xlsxからの例で、ここではCountryが値のリストを表示するように構成された列です。

図7-14 値リストを表示するADF表コンポーネント列の実行時のビュー

値リストを表示する表コンポーネント列

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

ModelDrivenColumnComponentサブコンポーネントをADF表コンポーネントに追加できます。ModelDrivenColumnComponentの値は、サーバー上でそれぞれの属性に指定されたコントロール・タイプのヒントにより決まります。

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


注意:

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


モデルドリブン・リストの作成の詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のモデルドリブン・リストの作成方法に関する項を参照してください。

従属値リストのサポート

複数のModelDrivenColumnComponentリスト・サブコンポーネントがADF表コンポーネントで公開される場合、ADFデスクトップ統合は各リストが別のモデルドリブン・リストに依存するかどうかを判断します。リストに指定されたバインド変数が、別のリストにバインドされた属性を参照するかどうかが検証されます。

リストが別のモデルドリブン・リストに従属する場合、サブコンポーネントのDependsOnList値は実行時に自動的に設定されます。

サーバー・サイド・リストのバインディングの従属性は、同じツリー・ノードにあるリストについてのみ判断されます。次のツリー・ノード・リストのバインディングはサポートされていません。

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

ビュー・オブジェクトによって返される使用可能な属性に応じて、実行時にADF表コンポーネントが拡張または収縮するように、ADF表コンポーネントに動的な列を追加できます。TableColumn配列内にあるColumnsグループのDynamicColumnプロパティによって、この動作は制御されます。列を動的にするには、DynamicColumnプロパティをTrueに設定します。TableColumn配列の動的な列とは、属性名が設計時に認識されていないツリー・バインディングまたはツリー・ノード・バインディングにバインドされている列です。動的な列は、実行時に複数のワークシートの列に拡張できます。

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


注意:

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


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

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

7.15.1 動的な列の構成方法

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} 

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

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

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

ADF表コンポーネントのUploadアクションが起動されるとき、ワークブックはエンド・ユーザーに対して、以前にダウンロードした属性がツリー・バインディングにもう存在しない場合、データのアップロードを続行するかどうかを決定するプロンプトを表示します。

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

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

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

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

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

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

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

または:

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

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


注意:

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


エンド・ユーザーが値を入力しなければならない必須の列に、記号や文字列でマークを付ける場合は、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}"

7.15.4 属性データ・タイプに基づいた動的な列のスタイルの指定方法

列のデータ型に応じて、データ型ごとに異なるスタイルを指定できます。次の構文を使用して、動的な列のCellStyleNameプロパティにEL式を記述します。

=IF("#{bindings.TreeID.[TreeNodeID].hints.*.dataType}"="<data_type>", <custom_style_expression1>, <custom_style_expression2>)

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

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

次の例は、MyDateStyleスタイルがすべてのdateデータ型の列に、MyNumberStyleがすべてのnumberデータ型の列に、MyDefaultStyleがその他のデータ型の列にそれぞれ適用されるシナリオを示します。

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

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

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

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

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

ADF読取り専用表の最初の列には、適切な動作のために表コンポーネントにより使用される重要なデータが含まれます。これは削除できません。この列は設計時は表示されますが、実行時には非表示になります。列Aを非表示にする補正を行い、設計時の視覚的なレイアウトを維持するために、実行時、ワークシートのコンテンツは右方向に1列シフトされます。

図7-15に、設計時のADF読取り専用表コンポーネントを示します。プロパティ・インスペクタが最前面に表示されています。

図7-15 設計時のADF読取り専用表コンポーネント

設計時の読取り専用表コンポーネント

図7-16は、実行時にCustomersツリー・バインディングを参照するADF読取り専用表コンポーネントの列を示しています。

図7-16 実行時のADF読取り専用表コンポーネントの列

実行時の読取り専用表コンポーネントの列

注意:

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


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

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

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

  1. 統合Excelワークブックを開きます。

  2. コンポーネントを配置するExcelワークシートのセルを選択します。

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

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

  4. 表示されるダイアログで、「ADF読取り専用表」を選択します。


    注意:

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


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

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


    注意:

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

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


7.16.2 ADF読取り専用表コンポーネントへの手動による列の追加方法

その他の列をADF読取り専用表コンポーネントに手動で追加したり、以前に削除した列をもう一度追加したりすることができます。

ADF読取り専用表コンポーネントに手動で列を追加するには:

  1. 統合Excelワークブックを開きます。

  2. ADF読取り専用表コンポーネントをホストするワークシートのセルを選択し、「Oracle ADF」タブの「プロパティの編集」ボタンをクリックします。

  3. 「コンポーネントの編集: ADF表」ダイアログで、Columnsの入力フィールドの横にある参照(...)アイコンをクリックします。

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

  4. 「追加」をクリックして、ADF読取り専用表コンポーネントに手動で新しい列を追加します。

  5. 新しい列のプロパティに値を設定します。

    ADF読取り専用表コンポーネントのプロパティの詳細は、表A-13を参照してください。

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

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

ADF表またはADF読取り専用表コンポーネントがダウンロードする行数は、コンポーネントのRowLimitプロパティ・グループの値を設定すれば後世できます。また、必要に応じて、ダウンロード可能な行数が指定した行数を超過したときにエンド・ユーザーに警告する警告メッセージを表示できます。

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

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

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

  1. 統合Excelワークブックを開きます。

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

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

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

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

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

    RowLimit.Enabled

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

    RowLimit.MaxRows

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

    RowLimit.WarningMessage

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

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


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

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

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

設計時のRowLimit属性グループ

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

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

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

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

7.18 ADF表コンポーネントでのキャッシュされた属性値のクリア

表A-9 に示すRowDataプロパティ・グループを使用して、ADF表コンポーネントでキャッシュするデータを指定できます。この機能の詳細は、次を参照してください。

ADF表コンポーネントは、アクション(ClearCachedRowAttributes)を公開します。これは、公開されるとADF表コンポーネントの現在の行のキャッシュされた属性の値をクリアします。

エンド・ユーザーがRowData.CachedAttributes配列の要素にも指定した属性バインディングを表示または編集できるように、コンポーネント(ADF表コンポーネントの列やADF入力テキスト・コンポーネントなど)は構成しないでください。RowData.CachedAttributes配列は、ワークシートのDownSyncアクションで取得された値をキャッシュします。ワークシートUpSyncアクションは、RowData.CachedAttributes配列の値をFusion Webアプリケーションに送信します。これによって、エンド・ユーザーがワークシート内のコンポーネントを通して公開される属性バインディングに行う編集が上書きされることがあります。

7.18.1 ADF表コンポーネントでのキャッシュされた属性値のクリア方法

ADF表コンポーネントのClearCachedRowAttributesアクションを起動するアクションを含むDoubleClickActionSetを構成します。

ADF表コンポーネント内のキャッシュされた属性の値をクリアするには:

  1. 統合Excelワークブックを開きます。

  2. 実行時にDoubleClickActionSetを起動するOracle ADFコンポーネントの「アクションの編集」ダイアログを開きます。

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

  3. ADF表コンポーネントのClearCachedRowAttributesアクションを起動するDoubleClickActionSetにアクションを追加します。

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

7.18.2 実行時の処理: ADF表コンポーネントによる値のキャッシュ

アクション・セットは、ADF表コンポーネントのClearCachedRowAttributesアクションを起動します。このアクションは、ADF表コンポーネントの現在の行のプロパティについて、RowData.CachedAttributesプロパティにより指定されたキャッシュされた値をクリアします。

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

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

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

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

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

DEGコンポーネントの変更された列

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

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

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

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

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

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

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

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

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

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

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

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


注意:

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


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

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

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

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