1.7. ネストされた対話 : ホテル予約サンプルの拡張
1.7.1. はじめに リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
長期実行の対話では、 複数ウインドウの操作や戻るボタン操作も含めてアプリケーション内の状態の整合性を容易に維持することができます。 残念ながら、 長期実行の対話を単に開始して終了するだけでは不十分な場合があります。 アプリケーション要件によっては、 ユーザーの期待値とアプリケーションの状態間で整合性を欠く場合があります。
ネストされた予約アプリケーションでは、部屋の選択機能を組み込むためにホテル予約アプリケーションの機能を拡張します。 各ホテルにはユーザーが選択できる宿泊可能な部屋の一覧があります。 これによりホテルの予約の流れに部屋選択ページを追加することが必要となります。
これでユーザーは宿泊可能な部屋を選択して予約に含めることができます。 部屋選択が同じ対話コンテキスト内に残っていた場合、 状態の整合性に関する問題を招く恐れがあります。 対話変数が変更されると同じ対話コンテキスト内のすべてのウィンドウ操作に影響します。
たとえば、 ユーザーが新しいウィンドウでまったく同じ部屋選択の画面を作成したとします。 次にユーザーは Wonderful Room を選択して確認画面に進みます。 もう少し高い料金の部屋を見るため元の画面に戻り、 Fantastic Suite を選択して再び確認画面に進みます。 総額を再確認した後、 ユーザーは Wonderful Room を表示しているウィンドウに戻り確認作業を行います。
このシナリオでは、すべての状態が対話に保存されると同じ対話内で複数ウィンドウを柔軟に操作することは難しくなります。 ネストされた対話では、 同じ対話内でコンテキストが変化する場合にも正しい動作をさせることができます。