نظرة عامة وتوطئة
عند بناء المخططات التوضيحية داخل بيئة لينكس، تبرز الحاجة المتكررة لتمثيل الطوبولوجيا الشبكية والعمليات المتكررة بنسق دائري متناسق. توفر حزمة Graphviz محرك circo المتخصص لمعالجة هذه الهياكل الحلقية بكفاءة عالية. يستعرض هذا المقال دليلاً عملياً شاملاً لتوظيف هذا الأمر، بدءاً من البناء المبدئي، وتصدير المخرجات بصيغتي SVG وPNG، وصولاً إلى إدارة المسافات بين العقد وضبط الخطوط لتجنب مشاكل المحارف أثناء العرض الفعلي.
تثبيت حزمة Graphviz وتوليد أول رسم بياني دائري عبر circo
لإعداد بيئة العمل على خادم أو نظام Ubuntu، نبدأ بتجهيز مستودعات النظام وتثبيت حزمة graphviz:

يُمثّل أمر circo المحرك الحلقي (Circular Layout) المدمج في منظومة Graphviz، وهو مصمم خصيصاً لتوزيع العقد حول محيط دائري متوازن يناسب الشبكات الحلقية والتسلسلات المغلقة. للتأكد من جاهزية المحرك والتحقق من الإصدار المثبت على النظام، نمرر المعامل -V:
⚙️ [خيارات التشغيل الأساسية]
-T<format> : تحديد صيغة الملف الناتج (مثل png أو svg أو pdf).-o <file> : تعيين اسم ومسار ملف الإخراج لحفظ النتيجة النهائية.-O : توليد اسم ملف الإخراج تلقائياً بالاعتماد على اسم ملف الإدخال مع لاحقة الامتداد.-V : إظهار بيانات الإصدار الحالية للأداة ومنظومة Graphviz.-v : تفعيل نمط التفاصيل لتتبع سجلات المعالجة والتوزيع خطوة بخطوة.-G<name>=<val> : ضبط الخصائص العامة للرسم البياني بالكامل مباشرة عبر سطر الأوامر.-N<name>=<val> : تعيين القيم الافتراضية لسمات العقد (Nodes) من الطرفية.-E<name>=<val> : تخصيص السمات الافتراضية للروابط والمسارات (Edges) أثناء التنفيذ.

كنموذج تطبيقي، ننشئ ملف sample_ring.dot يعبر عن شبكة غير موجهة تتألف من 4 أجهزة توجيه (Routers) مترابطة على هيئة حلقة مغلقة:

نقوم الآن بمعالجة ملف sample_ring.dot باستخدام circo لإنتاج صورة مسطحة بتنسيق PNG تحت اسم sample_ring.png، ثم نستعرض خصائص الملف الناتج عبر أمر ls -lh. يتم توظيف المعامل -Tpng لضبط نمط الإخراج والمعامل -o لتسمية الملف:

تمثيل دورات العمل الموجهة (Digraph) وتصدير رسوميات المتجهات (SVG)
في سيناريوهات إدارة المشروعات وهندسة البرمجيات، تحتاج المراحل المتتابعة إلى أسهم توجيهية توضح مسار التدفق الدوري. نبني ملف workflow_cycle.dot لتمثيل دورة تبدأ من التخطيط وتمر بالتطوير والاختبار والنشر والمراقبة ثم تعود للبداية كـ digraph موجه:

تتطلب الوثائق الفنية وعروض الويب استخدام صيغ متجهة تتيح التكبير بلا فقدان في الدقة. نستخدم circo مع خيار -Tsvg لتوليد الملف الفيكتوري workflow_cycle.svg، ثم نلقي نظرة على أول 10 أسطر منه بواسطة أمر head:
يُظهر الخرج بنية XML السليمة وعنصر <svg> الأساسي، مما يؤكد نجاح بناء الرسم البياني المتجه القابل للتضمين في متصفحات الإنترنت ومواقع التوثيق.

التحكم المتقدم في تباعد العقد (mindist) وتثبيت العقدة المركزية
عند بناء هياكل هجينة تجمع بين النمط النجمي (Star) والنمط الحلقي (Ring) — كوجود عقدة رئيسية (Master) تدير عدة عقد فرعية (Workers) مترابطة فيما بينها — يصبح التحكم في التباعد وموقع المركز أمراً حيوياً لمنع تداخل العناصر. ننشئ ملف star_ring.dot متضمناً خاصية mindist=1.2:

عبر تمرير الوسيط -Groot=Master إلى أمر circo، نلزم المحرك بوضع عقدة Master في بؤرة الدائرة، بينما تنتظم العقد الفرعية على المحيط الخارجي. بعد اكتمال الرسم، نتحقق من سلامة الملف الناتج بواسطة أمر file:
يوفر خيار -Groot ميزة تنظيمية استثنائية في المخططات الهندسية المعقدة، حيث يحافظ على وضوح الروابط المحورية ويزيل أي تشوه قد ينجم عن التوزيع التلقائي العشوائي.

إعداد الخطوط متعددة اللغات ومحاذير المخططات الكبيرة
عند إدراج نصوص غير لاتينية (مثل الكورية أو العربية أو خطوط CJK) داخل المخططات، قد تظهر المحارف على هيئة مربعات فارغة تُعرف بظاهرة (Tofu) نتيجة غياب الخطوط الداعمة في بيئة النظام الأساسية. لتلافي ذلك، نقوم بتثبيت حزمة الخطوط المطلوبة مثل fonts-nanum:

نقوم بعدها بإنشاء ملف korean_cycle.dot مع تخصيص السمة fontname="NanumGothic" لكل من المخطط والعقد والمسارات لضمان المعالجة الطباعية الصحيحة:

يُنفَّذ أمر circo لمعالجة الملف وحفظه بصيغة PNG، متبوعاً بأمر ls -lh لمعاينة النتيجة:
يتبين نجاح التصيير بحجم يقارب 25 كيلوبايت مع وضوح النصوص وظهورها بشكل سليم بلا تشوه.
ومن الجدير بالذكر كقاعدة هندسية عند التعامل مع المخططات الضخمة: مع زيادة كثافة العقد في التوزيع الحلقي، قد تتقاطع الخطوط المتجهة عبر مركز الدائرة مسببة تشويشاً بصرياً. لتفادي هذا الازدحام في المشاريع الكبيرة، يُنصح برفع قيمة mindist لتباعد العناصر أو تقسيم الشبكة إلى مجموعات فرعية (Subgraphs) للمحافظة على المقروئية وسلاسة التتبع.

بهذا نكون قد أحطنا بأساسيات وممارسات أداة circo ضمن حزمة Graphviz لإنشاء المخططات الحلقية. اعتمد هذه التقنيات عند توثيق معماريات الأنظمة والمسارات الدائرية لتحصل على مخرجات بيانية دقيقة واحترافية.