جهت مشاهدهی چالش هفتهی پانزدهم اینجا کلیک کنید.
درک کلی چالش:
چالش پیش رو، مخاطب را به سمت مدلسازی یک سیستم رزرواسیون سفر با تمرکز بر نیازهای خاص یک شرکت (بانک) سوق میدهد. این چالش، درک عمیقی از مفاهیم کلیدی DDD مانند Bounded Context، Entities، Aggregates، و Value Objects را میطلبد.
پیشزمینه:
شما در شرکت ExploreTheWorld.com به عنوان یک ارائه دهنده پیشرو خدمات گردشگری آنلاین مشغول فعالیت هستید. شرکت شما پیشنهاد همکاری خود را جهت اجرای برنامه تشویقی سفر برای کارکنان بانک Bank.com ارائه داده است. شما در حال پیادهسازی این خدمات هستید.
سناریو:
بانک Bank.com قصد دارد با اهدای خدمات گردشگری متنوع، از جمله بلیت هواپیما و تخفیف اقامت، به عنوان یک برنامه تشویقی از کارکنان خود قدردانی نماید. این برنامه با هدف افزایش رضایت شغلی و انگیزش کارکنان، بر اساس عملکرد و موقعیت شغلی آنها طراحی شده است.
بانک قصد دارد برای کارکنان خود بر اساس میزان رضایت مندی از آنها امکانات مختلفی از جمله امکان خرید بلیت رفت و برگشت در طول ماه بصورت رایگان، یا تخفیف رزرو اقامتگاه ارائه دهد.
کارکنان بانک باید بتوانند وارد سایت شما شده از خدماتی که توسط بانک به آنها داده شده است استفاده کنند.
صورت مسئله:
با در نظر گرفتن سناریو بالا به سوالات زیر پاسخ دهید:
- چه Entities و Aggregates کلیدی را برای مدلسازی بانک پیشنهاد میکنید؟ (مثلاً کارمند، حساب، قرارداد، …)
- چگونه سیستم تشویقی را به مدل دامنه بانک اضافه میکنید؟ چه Entities و Aggregates جدیدی نیاز است؟ (مثلاً برنامه تشویقی، پاداش، …) چگونه ارتباط بین سیستم تشویقی و سایر بخشهای بانک را مدل میکنید؟
- چگونه محدودیتهای پروازی (مبدا، مقصد، تاریخ) را در مدل دامنه اعمال میکنید؟ از چه مکانیزمهایی برای اطمینان از رعایت این محدودیتها استفاده میکنید؟
- آیا ایجاد یک Bounded Context جداگانه برای رزرو پرواز ضروری است؟ چرا؟ مرزهای این Bounded Context کجا باید تعریف شود؟ چه اطلاعاتی بین Bounded Context رزرو پرواز و سایر Bounded Contextها رد و بدل میشود؟
- کدام باندد کانتسکت مسئول اجرای عملیات رزرو پرواز است. فرض کنید یک BC رزرو پرواز دارید. آیا این BC باید سناریوهای مربوط به رزرو پرواز برای کارکنان بانک را نیز مدیریت کند؟