رسم مخطط التسلسل
رسم مخطط التسلسل
مخططات التسلسل هي أداة العمل الرئيسية في نمذجة السلوك. إذا كانت حالات الاستخدام تخبرك بما يفعله النظام، فإن مخطط التسلسل يوضح كيف يفعل ذلك — أي الكائنات تتواصل مع بعضها، وبأي ترتيب، وماذا تقول. في هذا الدرس ستقوم برسم مخطط تسلسل واقعي شامل لـتدفق الدفع في متجر إلكتروني، مستعرضًا كل عنصر من عناصر التدوين أثناء بنائه.
السيناريو: إتمام الدفع في متجر إلكتروني
يملك العميل عناصر في سلة التسوق وينتقل إلى إتمام الطلب. يغطي التدفق: تقديم العميل للطلب، وتحقق النظام من صحة السلة وفحص توفر المخزون، ومعالجة بطاقة الدفع عبر بوابة الدفع، وتأكيد الطلب وإرسال بريد تأكيد. هذا تفاعل بين ستة مشاركين يتضمن استدعاءات متزامنة ومسار إعادة — مثالي لتطبيق التدوين الكامل لمخطط التسلسل.
الخطوة الأولى — تحديد المشاركين
ابدأ بإدراج كل جهة فاعلة ومكوّن نظام يتبادل الرسائل خلال السيناريو. في تدفق الدفع، المشاركون هم:
- Customer — الجهة الفاعلة البشرية التي تبدأ عملية الدفع.
- Browser — واجهة المستخدم الأمامية (تُعرَض كجهة فاعلة أو كائن حدودي).
- OrderController — المكوّن التطبيقي الذي ينسّق التدفق.
- CartService — يتحقق من محتويات السلة وتوفر المخزون.
- PaymentGateway — معالج الدفع الخارجي.
- NotificationService — يرسل بريد تأكيد الطلب.
كل مشارك يصبح خطًا حيويًا (Lifeline): مستطيل معنوَن في الأعلى وخط عمودي متقطع يمتد منه إلى أسفل، يمثّل وجود ذلك الكائن عبر الزمن.
الخطوة الثانية — رسم الخطوط الحيوية ومحور الزمن
في مخطط التسلسل يتدفق الزمن نحو الأسفل. لكل خط حيوي مستطيل مشارك في الأعلى وخط عمودي متقطع تحته. عندما يكون المشارك نشطًا — يعالج استدعاءً — يُرسَم مستطيل تفعيل رفيع على الخط الحيوي. مستطيلات التفعيل تساعد القارئ على رؤية متى يكون كل مكوّن مشغولًا بالضبط.
الخطوة الثالثة — إضافة الرسائل
الرسائل أسهم أفقية بين الخطوط الحيوية، تُرسَم عند الموضع العمودي المناسب لتعكس التسلسل. يحدد UML عدة أنواع من الأسهم:
- الاستدعاء المتزامن — خط صلب برأس سهم مملوء. المُرسِل ينتظر الرد قبل المتابعة. استخدمه للاستدعاءات العادية لتوابع أو واجهات برمجة.
- رسالة الإعادة — خط متقطع برأس سهم مفتوح. تُظهر القيمة أو الإقرار المُعاد للمستدعي.
- الرسالة غير المتزامنة — خط صلب برأس سهم مفتوح (عصاوي). المُرسِل لا ينتظر. شائعة للأحداث والإشعارات "أطلق وانسَ" أو طوابير الرسائل.
ضع على كل سهم اسم الرسالة وأبرز المعاملات عند الحاجة. اجعل التسميات مختصرة — placeOrder(cartId, paymentToken) مناسب؛ نسخ حمولة JSON كاملة ليس كذلك.
OrderController باستدعاء validateSession() الداخلية قبل تنفيذ الطلب.
مخطط التسلسل الكامل لعملية الدفع
يوضح المخطط أدناه تدفق الدفع بالكامل. اقرأه من أعلى إلى أسفل: يُقدّم العميل الطلب، وينسّق OrderController عملية التحقق، ويفحص CartService المخزون، وتعالج PaymentGateway الدفع، وأخيرًا ترسل NotificationService بريد التأكيد.
قراءة المخطط خطوة بخطوة
- الرسالة 1 — ينقر العميل على "تأكيد الطلب"؛ يستقبل Browser حدث
submitCheckout(). يبدأ شريط تفعيل Browser، مما يشير إلى انشغاله الآن. - الرسائل 2–6 — يرسل Browser طلب
POST /ordersإلىOrderController، الذي يتفعّل ويفوّض فورًا إلىCartService. يجري استدعاءان متزامنان:validateCart()وcheckStock(). يُعيد كل منهما سهمًا متقطعًا يحمل نتيجته قبل بدء الاستدعاء التالي. - الرسائل 7–9 — يستدعي
OrderControllerالتابعchargeCard()فيPaymentGateway. لاحظ حلقة الاستدعاء الذاتي: تتحقق البوابة من الرمز داخليًا قبل المعالجة. بعد الانتهاء ترجع سهمًا متقطعًا يحملchargeResult: success. - الرسالة 10 — يُطلق
OrderControllersendConfirmation(orderId)كرسالة غير متزامنة (رأس سهم مفتوح، باللون الأزرق). لا ينتظر — يُقيَّد البريد في الخلفية بينما يجهّز المتحكم استجابة HTTP فورًا. - الرسائل 12–13 — يعيد المتحكم
201 Createdإلى Browser، الذي يعرض صفحة التأكيد للعميل.
عرض مبسّط: تسلسل تسجيل الدخول
لترسيخ التدوين بمثال أقصر، إليك تدفق تسجيل دخول المستخدم. ثلاثة مشاركين — Customer وAuthController وUserRepository — يتبادلون خمس رسائل. هذا قالب جيد لتقديمه لأصحاب المصلحة قبل عرض مخطط الدفع الكامل؛ يُعرّف بجميع التدوين الرئيسي دون إرهاق القارئ.
قائمة التحقق عند رسم مخططاتك
قبل تقديم أي مخطط تسلسل لأصحاب المصلحة، تحقق من كل ما يلي:
- كل مشارك لديه مستطيل معنوَن وخط حيوي متقطع.
- كل فترة نشاط لها مستطيل تفعيل على الخط الحيوي.
- الاستدعاءات المتزامنة تستخدم رؤوس أسهم مملوءة؛ الإعادات تستخدم خطوطًا متقطعة برؤوس أسهم مفتوحة.
- الرسائل غير المتزامنة واضحة التمييز (رأس سهم عصاوي مفتوح، أو محاطة بـ
«async»). - تسميات الرسائل تحمل معلومات كافية لتكون لا لبس فيها دون إسهاب.
- للمخطط عنوان والسيناريو الذي يصوّره محدد النطاق بوضوح (المسار السعيد، مسار الخطأ، أو كلاهما — محددًا بإطار).
ملخص
رسم مخطط التسلسل عملية منضبطة خطوة بخطوة: تحديد المشاركين، ورسم الخطوط الحيوية، ووضع الرسائل بالترتيب الزمني، وتمييز التفعيلات، والتفريق بين أنواع الاستدعاءات. السيناريو الذي نمذجته هنا يلتقط تفاعلًا تجاريًا واقعيًا وشاملًا — ستة مشاركين يتبادلون ثلاث عشرة رسالة، بين استدعاءات متزامنة وإشعار غير متزامن. إتقان هذا الأساس يُهيّئك لإضافة شظايا التفاعل (alt وopt وloop) في الدرس التالي، التي تُمكّنك من نمذجة السلوك الشرطي والتكراري ضمن نفس المخطط.