サブケース階層の設計
3 タスク
1時間 30 分
シナリオ
Front Stageアプリケーションは、単一のEventケースと各サービスプロセスのための子ケースで構成されています。 この他にも、子ケースのカーディナリティやインスタンス化についても決める必要があります。
このアプリケーションの主な要件を分析し、子ケースの最適な設計と子ケースの開始方法を決定してください。 子ケースタイプごとに、実行可能な代替設計を検討し、それぞれの長所と短所を列挙してください。 アプリケーションに最も適した子ケースの構造を提案してください。 考慮すべき主な要件は以下のとおりです。
- プロセス - 天候に対する準備、ホテル客室リクエスト、駐車場の各機能は個々に実行する必要があります。
- 拡張性 - Bookingアプリケーションを専用設計または拡張して、さまざまなタイプの施設をサポートできる必要があります。
- レポート - 収益、コスト、利益(イベントタイプ別の利益)を表示するイベントのレポートを定義する必要があります。
- データ - ユーザーには財務情報が見えないようにする必要があります。
- UI - 顧客の見積書、イベントマネージャーのレビュー、ホテルの予約画面。
詳細なタスク
1 設計オプションの特定
Weather
Weatherプロセスには次の2つのオプションがあります。
- Weather子ケースを常に作成する。
- 降水が予想される場合に、条件付きで子ケースを作成する。
オプション1:Weather子ケースを常に作成する
このオプションでは、承認されたイベントごとにWeatherサブケースが常に作成されます。 Weatherケースには、天候確認日時を待つための遅延が実装されます。
オプション2:降水予報がある場合に、条件付きでWeather子ケースを作成する
このオプションでは、意図した日時に、Eventケースで降水がチェックされます。 Weather子ケースは、降水予報があり天候に備える必要がある場合にのみ作成されます。 このオプションは、以下の4つの方法のうちのいずかで実装できます。
- Waitシェープを使用して、目的の日時までEventケースを一時停止する。 天気予報を確認する。 降水予報がある場合は、条件付きでWeatherケースを作成する。
- Eventケース内の並列フローやスピンオフフローで、希望する日時の天候を確認する。 降水予報がある場合は、条件付きでWeatherケースを作成する。
- 天候確認タスクをエージェントのキューに入れる。 エージェントは、希望する日時に天気予報を実行し、降水予報がある場合には条件付きでWeather子ケースを作成する。
- 遅延Queue Processorで、希望する日時の天気予報を確認する。 降水予報がある場合は、条件付きでWeather子ケースを作成する。
Parking
Parkingケースはシンプルで、駐車場サービスのオプションが選択された場合にのみ条件付きで作成されます。 シンプルなので、これ以外のオプションを検討する必要はありません。
Hotel Booking
ホテル客室リクエストには、少なくとも2つの実行可能な設計オプションがあります。 1つ目は、すべてのホテル客室リクエスト募集を表すHotelサービスケースを1つ作成する方法です。 2つ目は、個別のホテルのRoom Requestケース(募集ホテルごとに1件)を複数作成する方法です。
オプション1:1つのHotelケース
ホテルサービスオプションが選択されると、Hotelケースが1つ作成されます。 各ホテルを表すデータオブジェクトは、このHotelケースに含まれています。
オプション2:ホテルごとの子ケース
ホテルサービスオプションが選択されると、ホテルごとにHotelケースが個別に作成されます。 募集ホテルを表す子ケースは、Event Booking親ケースで取り扱います。
2 設計オプションの評価
Weather
次の表に示すように、Weather子ケースを条件付きで作成するよりも、Weather子ケースを常に作成する方が利点が多くあります。
設計 | 長所 | 短所 |
---|---|---|
Weather子ケースを常に作成する(オプション1) |
|
|
Weather子ケースを条件付きで作成する(オプション2) |
|
|
Parking
Parkingケースはシンプルで、駐車場サービスのオプションが選択された場合にのみ条件付きで作成されます。 シンプルなので、これ以外のオプションを検討する必要はありません。
Hotel Booking
次の表に示すように、単一のHotelケースを作成するよりも、ホテルごとにHotel子ケースを作成する方が利点が多くあります。
設計 | 長所 | 短所 |
---|---|---|
1つのHotelケース |
|
|
ホテルごとのHotel子ケース |
|
|
3 最適な設計オプションの提案
Weather子ケース
オブジェクト指向プログラミングのカプセル化の原則に沿い、Eventケースは天候に関するすべてのタスクをWeatherケースに委任します。 天候を独立した子ケースとして実装することにより、Bookingアプリケーションだけでなく、どのアプリケーションでも組み込みアプリケーションとして利用できる天候アプリケーションを作成できます。 ライセンスが懸念される場合、他のオプションを検討してください。
Hotel子ケース
顧客が「Hotel Service」オプションを選択すると、単一のHotel子ケースではなく、複数のHotel子ケースが作成されます。 ホテルごとの子ケースが望ましい理由は、次のとおりです。
- アプリケーションのロック要件が完全に満たされている。
- UI要件を簡単に満たせる。
- ホテルごとに子ケースを1つ持つことで特殊化の幅が広がる。
Parking子ケース
顧客が「Parking and Shuttle Services」オプションを選択すると、Parking子ケースが1つ作成されます。