ダーティ・データの取得ステータス・アクションの追加
「ダーティ・データ・ステータスの取得」処理を使用して、含まれているフロー、ページ、フラグメント、レイアウトなど、特定のスコープ(アプリケーション、フロー、ページ、フラグメント、レイアウト)内の追跡された変数のいずれかの値が変更されたかどうかを確認します。 チェック対象のスコープ外で追跡された変数は考慮されません。 たとえば、このイメージでは、ページ・レベルで定義された両方の変数の「ダーティ・データ動作」プロパティが「トラッキング」に設定されています:
図jsac-variable-dirty-data.pngの説明
これらの追跡対象変数の値が変更されるたびに、そのスコープのダーティ・データ・ステータス(コードではcontextと呼ばれます)がnotDirtyからdirtyに自動的に変更されます。 このページのレイアウト、フラグメントまたはアプリケーションに追跡された変数が定義されていて、それらの変数の1つが変更された場合、ページのダーティ・データ・ステータスも自動的に'dirty'に設定されます。 スコープのダーティ・データ・ステータスをnotDirtyにリセットするには、「ダーティ・ステータスのリセット」アクションを使用します。
特定のスコープおよびそのサブスコープのダーティ・データ・ステータスをチェックする場合、アクション・チェーンが定義されているスコープではなく、アクション・チェーンが呼び出されるスコープです。 たとえば、ページ・イベントが「ダーティ・データ・ステータスの取得」処理を使用してフローのアクション・チェーンを開始した場合、「ダーティ・データ・ステータスの取得」処理では、アクション・チェーンがページからコールされるため、フローではなくそのページのダーティ・データ・ステータスが返されます。
この機能では、サービス・データ・プロバイダ(SDP)を除くすべてのデータ型を使用できます。 必要に応じて、SDPの値変更のトラッキングを手動で処理する必要があります。
「Oracle Visual Builderページ・モデル参照」でのこのアクションの詳細は、「使用済データ・ステータスの取得」を参照してください。
ダーティ・データ・ステータス・アクションとダーティ・データ・ステータス・プロパティの取得
「ダーティ・データ・ステータスの取得」アクションは、スコープのトラッキング対象変数のダーティ・データ・ステータスを確認するために使用されます。そのため、「保存」ボタンを実装して、ページにデータが実際にダーティ・データがあるかどうかを確認してからデータベースにデータを投稿できます。 アクションは、ページから移動した結果を説明するものではありません。 ページから移動すると、追跡対象の変数がデータを失うかどうかを確認する場合は、ページのvbBeforeExitイベント・リスナーを使用します。 このイベント・リスナーは、ページからの移動時にトリガーされ、dirtyDataStatusプロパティを持つeventパラメータを受信する関連アクション・チェーンを開始します。 ページのvbBeforeExitイベント・リスナーによって開始されるアクション・チェーンの例を次に示します。これは、追跡された変数によってデータが失われる場合、ページからの移動を防止します。
図jsac-dirty-data-before-exit-event-action-chain.pngの説明
event.dirtyDataStatusプロパティは、「ダーティ・データ・ステータスの取得」アクションとは異なり、ページから移動する効果が追跡変数に与える影響を考慮します。 ページから移動すると、追跡対象の変数によってデータが失われる場合は、プロパティが'dirty'に設定されます。それ以外の場合は、'notDirty'に設定されます。 スコープ内の変数は、ユーザーのナビゲーションの宛先がスコープまたはそのサブスコープ内にあるかぎり、値を保持します。 たとえば、フローに定義された変数は、ユーザーが同じフロー内の別のページに移動しても値が保持されますが、別のフロー内のページに移動する場合には保持されません。 ユーザーが同じフローまたは別のフローで別のページにナビゲートしても、ページに対して定義された変数は値を保持しません。
例:
この例では、新しい従業員の情報を追加するための「従業員の追加」ページを示します。 ページには2つのフィールドがあり、1つは名前用、もう1つは生年月日用で、それらのダーティ・データ・ステータスを追跡する必要があります。 このページには、「保存」、「取消」および「ホーム・ページに移動」ボタンもあります。 保存ボタンをクリックすると、従業員の情報がストレージに保存されます。
「
図jsac-personal-info-form.pngの説明」
名前および生年月日コンポーネントは、ページ変数にバインドされ、値を保持します:
図jsac-dirty-data-bind-component.pngの説明
- ページ変数の「ダーティ・データ動作」プロパティを「追跡」に設定します。
- 「保存」ボタンのアクション・チェーンの場合は、「ダーティ・データ・ステータスの取得」アクションを追加して、新しい従業員の情報をストレージに転記する前に、ページにダーティ・データ(保存されていない変更)が実際にあるかどうかを確認します。
- ページから移動したために保存されていない変更をユーザーに警告するには、
vbBeforeExitイベント・リスナーを追加し、eventパラメータのdirtyDataStatusプロパティを使用して、ページからの移動によって追跡されたページ変数がデータを失うかどうかを確認します。 - ホーム・ページにナビゲートする「取消」ボタンのアクション・チェーンについて、「使用済データのリセット」処理を追加して、ページの使用済データ・ステータスをリセットします。 これは、
vbBeforeExitイベント・リスナーのアクション・チェーンで、ダーティ・データがある場合にホーム・ページへのナビゲーションを可能にするために必要です。
開始するには、次の手順を実行します。
- ページの変数タブに移動し、ページ変数のダーティ・データの動作プロパティをトラックに設定します:
- ダーティ・データ機能を「保存」ボタンのアクション・チェーンに追加するには、転記前に実際にダーティ・データがあるかどうかを確認します:
- 「保存」ボタンのアクション・チェーンに移動します。 次に、データをストレージにポストするアクション・チェーンに新しい従業員の情報を渡す例を示します:
- 「ダーティ・データの取得」アクションをアクション・チェーンの上部に追加します。
- Ifアクションに新規従業員のデータを転記するためのコードをラップして、転記するダーティ・データがあるかどうかを確認します。 汚いデータがない場合は、何もしないでください。
- Ifアクションのコードの最後に、「使用済データ・ステータスのリセット」アクションを追加して、使用済データ・ステータスを「
notDirty」に戻します。
ダーティ・データ機能が追加されたアクション・チェーンを次に示します:

図jsac-dirtydata-save-action-check.pngの説明 - 「保存」ボタンのアクション・チェーンに移動します。 次に、データをストレージにポストするアクション・チェーンに新しい従業員の情報を渡す例を示します:
- 次に、
vbBeforeExitイベント・リスナーを作成して、ブラウザの「戻る」ボタンと「進む」ボタンの使用など、ユーザーがページから移動しようとしたときにリスニングする必要があります。 未保存の変更がある場合、通知によって未保存の変更がユーザーに警告され、ナビゲーションが防止されます。 イベント・リスナーのアクション・チェーンは、dirtyDataStatusプロパティを持つeventオブジェクトを自動的に渡し、ページからのナビゲーションによって追跡されたページ変数がデータを失うかどうかをチェックします。開始するには、次の手順を実行します。
- 「イベント・リスナー」タブを開き、「+イベント・リスナー」ボタンをクリックして新しいイベント・リスナーを作成します。
- vbBeforeExitを選択します。これは、ユーザーがページからの移動を試みるたびに、関連するアクション・チェーンを開始します。 次をクリックします:
今度は、このイベント・リスナーによって開始されるアクション・チェーンを作成する必要があります。
- 「イベント・リスナーの作成」ウィザードの「アクション・チェーンの選択」ステップで、「ページ・アクション・チェーン」の下の「ページ・アクション・チェーンの作成」オプションを選択します。 「終了」をクリックします。
- 「イベント・リスナー」タブに戻り、作成した新しいイベント・リスナーにマウス・ポインタを重ねて、表示されるアクション・チェーンに移動リンクをクリックします:
アクション・チェーン・エディタに移動して、ユーザーに未保存の変更を警告するアクション・チェーンを作成します。
- Ifアクションを追加して、ページからの移動によって追跡変数がデータを失うかどうかを確認します。
dirtyDataStatusプロパティを持つアクション・チェーンに渡されたeventパラメータを使用します。 追跡データが失われる場合はプロパティが'dirty'に設定され、それ以外の場合は'notDirty'に設定されます。 - ナビゲーションで追跡データが失われるケースを処理するには、「If」アクション内に「Fire Notification」アクションを追加して、ユーザーに未保存の変更を通知します。 ページから移動しないようにするには、戻りアクションを追加して、
cancelledプロパティがtrueに設定された戻りオブジェクトを返します。 - ダーティ・データがないケースを処理するには、
cancelledプロパティがfalseに設定された戻りオブジェクトを返します。完了したアクション・チェーンを次に示します:

図jsac-dirty-data-before-exit-event-action-chain.pngの説明
- 最後に、「取消」ボタンのアクション・チェーンに移動し、ホーム・ページに移動します。 「ダーティ・データ・ステータスのリセット」アクションを追加して、ページのダーティ・データ・ステータスを「
notDirty」にリセットします。 これは、vbBeforeExitイベント・リスナーのアクション・チェーンがホーム・ページへのナビゲーションを許可しないように、ダーティ・データが存在する場合に必要です。





