مخططات النشاط: الإجراءات والتدفقات
مخططات النشاط: الإجراءات والتدفقات
في الدروس السابقة نمذجتَ من يقول ماذا لمن باستخدام مخططات التسلسل. الآن ننتقل إلى سؤال سلوكي مختلف: ما الذي يحدث، خطوة بخطوة، حين يعمل النظام؟ هذا هو مجال مخطط النشاط — مخطط UML الذي يُظهر سير العمل والقرارات والمسارات التي يمكن أن تسلكها العملية من البداية حتى النهاية.
مخططات النشاط هي على الأرجح أكثر مخططات السلوك استخداماً في الممارسة العملية. يستخدمها محللو الأعمال لتوثيق العمليات التجارية، ويستخدمها المطوّرون لتصميم الخوارزميات، ويستخدمها المختبرون لتحديد المسارات التي تحتاج إلى حالات اختبار. بنهاية هذا الدرس ستستطيع رسم مخطط نشاط صحيح وقابل للقراءة لسيناريو أعمال حقيقي باستخدام العناصر الأربعة الأساسية: عقد البداية، وعقد النهاية، والإجراءات، والقرارات مع دمجها.
العناصر الأربعة الأساسية
كل مخطط نشاط مبني من مجموعة صغيرة من الأشكال المحددة بدقة. احفظ هذه الأشكال عن ظهر قلب — استخدام الشكل الخاطئ يُخالف رموز المعيار ويُربك قارئيك.
- العقدة الابتدائية (البداية): دائرة مصمتة مملوءة (
●). كل مخطط نشاط له عقدة ابتدائية واحدة بالضبط. تُحدّد أين يبدأ التدفق وليس لها حواف واردة — فقط حافة صادرة. - عقدة النهاية النهائية للنشاط (النهاية): علامة النشان — دائرة مصمتة داخل دائرة أكبر فارغة (
⊙). يصل التدفق هنا حين تكتمل النشاط بأكمله. قد يكون للمخطط أكثر من عقدة نهاية نهائية للنشاط إذا كان بإمكان مسارات متعددة إنهاء النشاط. - الإجراء: مستطيل ذو زوايا مدوّرة يحتوي على جملة فعلية قصيرة. يمثّل كل إجراء خطوة واحدة منفصلة ينفّذها النظام أو شخص ما — "التحقق من بيانات الاعتماد"، "إرسال بريد التأكيد"، "التحقق من التوفر". الإجراءات هي محرّكات المخطط الأساسية.
- عقدة القرار: معيّن. له حافة واردة واحدة بالضبط وحافتان صادرتان أو أكثر. كل حافة صادرة تحمل شرط الحراسة بين قوسين معكوفين — مثل
[متاح]و[غير متاح]. يجب أن تكون الشروط متنافية ومشتركة (تغطي كل نتيجة ممكنة). - عقدة الدمج: معيّن أيضاً، لكنه يُستخدم في الاتجاه العكسي: له حافتان واردتان أو أكثر وحافة صادرة واحدة. تُعيد عقدة الدمج توحيد المسارات التي انقسمت بقرار. من الناحية العملية، يرسم كثير من الأدوات والمؤلفين الدمج والقرار بنفس المعيّن؛ وتميّزهما بعدّ حوافهما.
- تدفق التحكم (الحافة): سهم مصمت يربط عقدتين. يتبع التدفق السهم. لا يلزم تعليق على معظم الحواف؛ التعليقات تظهر فقط على الحواف الصادرة من القرار (شروط الحراسة).
قراءة مخطط نشاط: حجز موعد في عيادة
قبل الرسم، تدرّب على القراءة. المخطط أدناه ينمذج العملية التي يتّبعها موظف الاستقبال في عيادة ونظام الحجز الخاص بها عندما يطلب مريض موعداً.
سِر عبر هذا المخطط خطوة بخطوة:
- يبدأ التدفق عند الدائرة السوداء المصمتة.
- "استقبال طلب الموعد" و"البحث عن توفر الطبيب" إجراءان متتاليان — مربوطان بأسهم عادية.
- المعيّن الأول هو قرار: حافة واحدة داخلة وحافتان خارجتان، معلّمتان بـ
[yes]و[no]. - مسار
[yes]يؤكّد الحجز فوراً. مسار[no]يعرض أقرب موعد متاح ثم يسأل المريض مجدداً. - المعيّن الثاني (مسار
[no]الداخلي) يوجّه إلى "إلغاء الطلب" وعقدة نهاية منفصلة — يمكن أن ينتهي النشاط هنا دون إرسال أي بريد إلكتروني. - المعيّن البنفسجي المسمّى "merge" يُعيد توحيد المسارين الناجحين (تأكيد فوري، أو تأكيد بعد إعادة الجدولة) في تدفق واحد.
- ينفّذ "إرسال بريد التأكيد"، وتُحدّد علامة النشان النهاية الناجحة.
مرجع الرموز: جميع الأشكال الأساسية
المخطط أدناه هو مرجع رموز مضغوط — وليس سيناريو أعمال، بل مرجع بصري يُظهر كل شكل منفرداً باسمه والقواعد التي تحكمه.
رسم مثال غني بالقرارات: طلب في متجر إلكتروني
أفضل طريقة لترسيخ معرفة الرموز هي رسم مثال ثانٍ من الصفر. تأمّل عملية التحقق من صحة الطلب في متجر إلكتروني. يستقبل النظام طلباً، يتحقق من تفويض الدفع، ثم يتحقق من المخزون — قراران متتاليان قبل تأكيد الطلب أو رفضه.
اتّبع هذا الإجراء في كل مرة ترسم فيها مخطط نشاط:
- حدّد المُشغّل. ما الذي يبدأ التدفق؟ هنا: "يُرسل العميل طلباً."
- أدرج الإجراءات. استقبال الطلب ← التحقق من الدفع ← التحقق من المخزون ← تأكيد الطلب (أو رفضه).
- حدّد القرارات. هل الدفع مُفوَّض؟ هل المخزون متاح؟ كل منهما يصبح معيّناً مع شروط حراسة معلّمة.
- حدّد نقاط الدمج. أين تلتقي المسارات البديلة؟ قد يلتقي كلا مساري الرفض في إجراء "إخطار العميل".
- ارسم عقد البداية والنهاية. دائرة مصمتة في الأعلى؛ علامة نشان واحدة أو أكثر في الأسفل.
القرارات مقابل الدمج: الحصول على العدد الصحيح
معيّن القرار يُدخل التفرّع: رمز التحكم يسير في مسار واحد بالضبط من المسارات الصادرة بناءً على شرط الحراسة الذي يُقيَّم على أنه صحيح. معيّن الدمج ينهي التفرّع: يُمرّر أياً من الرموز الواردة يصل — لا ينتظر جميع المسارات ولا يُزامنها (ذلك سيكون شريط التوصيل، الذي ستدرسه في الدرس التالي عن مسارات السباحة والأنشطة المتوازية).
في مخطط العيادة أعلاه، تُعيد عقدة الدمج توحيد "تأكيد الحجز" (الذي يُصل إليه فوراً) والمسار المُعاد توجيهه "تأكيد الحجز" (الذي يُصل إليه بعد قبول المريض لموعد بديل). أحد المسارين، لا كلاهما، سيصل إلى الدمج. يُمرّره الدمج فحسب إلى "إرسال بريد التأكيد". لو كان هذا شريط توصيل بدلاً من ذلك، كان المخطط سيُشير خطأً إلى ضرورة اكتمال كلا المسارين قبل إرسال البريد — استحالة منطقية لحجز واحد.
متى تستخدم مخطط النشاط
مخططات النشاط هي الخيار الصحيح حين تحتاج إلى نمذجة:
- عملية تجارية ذات خطوات ومشاركين ونقاط قرار متعددة (تحقيق حالة الاستخدام).
- خوارزمية أو عملية معقدة داخل مكوّن نظام.
- عملية تتضمن مسارات متوازية (يُغطّى ذلك في الدرس التالي حين نضيف أشرطة التفرّع/التوصيل ومسارات السباحة).
- سير عمل تُعيد تصميمه — ترسم مخطط "الوضع الراهن" ثم مخطط "الوضع المستهدف" وتقارن بينهما.
مخططات النشاط تُكمل مخططات التسلسل بدلاً من أن تحلّ محلّها. مخطط التسلسل يُجيب على "بأي ترتيب تتبادل الكائنات الرسائل؟" مخطط النشاط يُجيب على "ما الخطوات التي يتخذها النظام وما القرارات التي يتخذها على الطريق؟" لنظام حجز المكتبة، قد ترسم مخطط تسلسل يُظهر كيف تستدعي ReservationService الـCatalogueRepository، ومخطط نشاط منفصل يُظهر سير عمل الحجز الكامل من طلب القارئ حتى الاختيار من الرف.
خلاصة
يوثّق مخطط النشاط تدفق التحكم عبر عملية باستخدام أربعة لبنات بناء أساسية: العقدة الابتدائية (دائرة مصمتة) للبداية، الإجراءات (مستطيلات مدوّرة الزوايا) للعمل، عقد القرار (معيّنات بشروط حراسة معلّمة) للتفرّع، عقد الدمج (معيّنات بحواف واردة متعددة) لإعادة توحيد الفروع، وعقدة النهاية النهائية للنشاط (علامة النشان) للانتهاء. رسم شروط الحراسة الصحيحة على كل حافة قرار، واختيار الدمج بدلاً من التوصيل للفروع الحصرية، هما العادتان اللتان تُميّزان المخطط المقروء والصحيح تقنياً عن المخطط المُربك. في الدرس التالي ستُضيف أقسام مسارات السباحة وأشرطة التفرّع/التوصيل للتعامل مع سير العمل المتزامن متعدد الجهات.