ケース階層の設計
3 タスク
2 時間
シナリオ
Front Stageでは、屋外イベントの開催に関して、天候に対する準備、ホテル客室の予約、駐車場などの要件をまとめました。 天候のモニタリングはイベントの料金に含まれています。 ホテルの予約や駐車場の手配は、オプションサービスとして別途料金がかかります。
このアプリケーションの主な要件を分析してください。 考慮すべき主な要件は以下のとおりです。
プロセス - 天候に対する準備、ホテル客室リクエスト、駐車場サービスの各機能は個々に実行する必要があります。
拡張性 - Bookingアプリケーションを拡張して、さまざまなタイプの施設をサポートできる必要があります。
レポート - 収益、コスト、利益(イベントタイプ別の利益)を表示するイベントのレポートを定義する必要があります。
データ - 設備のユーザーには財務情報が見えないようにする必要があります。
UI - 顧客の見積書、イベントマネージャーのレビュー、ホテルの予約画面。
実行可能な設計オプションをすべて検討し、それぞれの長所と短所を挙げて、アプリケーションに最も適したケース構造を提案してください。
オプション:Front Stageへの追加の質問のリストを作成してください。このリストの目的は、現在の要件を満たすとともに、最小限のリファクタリングを行うだけで将来の要件にも対応できる設計を作成することです。
詳細なタスク
1 設計オプションの特定
サブプロセス(サブフロー)を持つ単一ケース
単一のEventケースでは、ロックの問題によりプロセスの要件を満たすことができません。 拡張性とレポートの要件は簡単に満たせます。UIの要件は各ホテルを追跡する独立したデータオブジェクトで満たせるかもしれません。 ただし、各ホテルのステータスを更新するためには追加作業が必要です。
データの要件は、設備使用者のデータを難読化することで満たせますが、これはデータを保護するための最適なソリューションではありません。
しかし、ケースがロックされると2人のユーザーが同時にケースを更新することができなくなるため、プロセスの要件は完全には満たせません。 楽観的なロックで問題を改善することはできますが、ケースプロセス中のユーザーエクスペリエンスを損なう可能性があるため、最適ではないかもしれません。 サービスを追加したときに、この問題が悪化する可能性があります。
子ケース(サブケース)を持つ単一ケース
実行可能な代替案としては、Event最上位ケースにサービス(現時点ではWeather、Hotel、Parking)を扱うサブケースを付随させる方法が考えられます。 デフォルトのロック方式を変更してサブケースが親ケースとは別にロックされるようにすると、ロックの問題が解決され、中断のない並列処理が可能になります。 この方法では、サービスを追加した場合でも簡単に対応できるため、設計の拡張性も確保できます。 この設計オプションの候補を使用して、サブケースの完了とメインケースとの調整を行うことを検討してください。 Hotelサブケースはイベント開始前に完了するはずです。Parkingケースは実際のイベント期間中、さらに場合によってはイベント後もアクティブです。 また、将来的にサービスを追加した場合の影響も考慮してください。
複数のケース(サブフロー/プロセスを持つ)
最上位にEventケースを単独で設定するのではなく、Quoteケースを別に作成して当初の見積もりを行うこともできます。 承認されると、ピアEventケースが作成されます。 この方法では、顧客とエグゼクティブが承認した場合にのみ、Eventケースを作成できます。
状況設定最上位ケース(サブフロー/プロセスを持つ)
別の代替案として、マッシュアップチャネルEventケースの状況設定からカスタマーセルフサービス見積もり機能を提示する方法があります。 顧客がCreateステージ内に生成された見積もりを気に入った場合、サブミットするときにEventケースは顧客がアクセスできないQuotationステージに進みます。 顧客が進めたくないと考える場合は、Eventケースを完了するCreateステージ内でキャンセルできます。 Quotationステージでは、セールスエグゼクティブは顧客がサブミットした見積もりを承認または拒否できます。 顧客がサブミットした見積もりをセールスエグゼクティブが承認するときに、顧客と直接話さないのであれば、顧客は、マッシュアップインターフェイスを介して決定を確認するよう求められます。
2 設計オプションの評価
各設計オプションの長所と短所
設計 | 長所 | 短所 |
---|---|---|
サブプロセスを持つ単一のケース |
|
|
子ケースを持つ単一のケース |
|
|
複数のケース |
|
|
子ケースを持つ単一のケース、マッシュアップのため単一のケースの状況を設定 |
|
|
3 最適な設計オプションの提案
サブケースを持つEventケースが望ましい理由には、以下のようなものがあります。
- アプリケーションのロックの要件を完全に満たす
- UIの要件を簡単に満たせる
- サブケースではより多くの特殊化のオプションを利用できるため、将来の要件に対応するアプリケーションの作成に便利
最上位ケースに追加されるカスタマーセルフサービスは、Quotationステージを過ぎるとサブケースを作成する意思決定に影響しません。 セールスエグゼクティブだけが確認するべきコストと利益などの情報を、顧客に表示しないよう注意が必要です。