محرر مخططات UML (Mermaid)

أنشئ مخططات UML بصيغة Mermaid مع معاينة مباشرة ودعم للوضع الداكن وتنسيق احترافي.

واجهة الأداة نفسها باللغة الإنجليزية حاليًا، وتعمل بالكامل داخل متصفحك.

جارٍ تحميل الأداة…

المخططات كنص: كيف يعمل Mermaid

رسم UML بسحب المربعات بطيء الإنشاء وأبطأ في التعديل: حرّك صنفًا واحدًا فيحتاج كل موصل إلى إعادة توجيه. أما المخططات كشيفرة فتقلب ذلك. تصف البنية ببناء نصي قصير، فهذا الصنف له هذه الحقول، وهذه الخدمة تستدعي تلك، وهذه الحالة تنتقل إلى التالية، ويرسمها العارض لك. ويعيش النص بارتياح في Git، وتظهر فروقه بوضوح في مراجعة الشيفرة، ويبقى متزامنًا مع النظام الذي يوثّقه.

وMermaid أوسع هذه الصيغ دعمًا؛ إذ تعرضها GitHub وGitLab وNotion وأدوات توثيق كثيرة مباشرة. يشغّل هذا المحرر Mermaid داخل متصفحك ويدعم أنواع المخططات الأكثر استخدامًا في تصميم البرمجيات: مخططات الأصناف، ومخططات التسلسل، ومخططات الحالات، ومخططات الكيانات والعلاقات، والمخططات الانسيابية، ومخططات Git. وتُعاد رسم المعاينة أثناء الكتابة وتتبع سمة الموقع الفاتحة أو الداكنة. ويمكنك كتابة التسميات بالعربية بين علامتي اقتباس.

لماذا أنشأنا هذه الأداة

يستخدمه المطورون لرسم نموذج أصناف قبل كتابة الشيفرة، أو لتوثيق تسلسل استدعاءات API في طلب دمج، أو لرسم جداول قاعدة البيانات في مخطط كيانات، أو لإنتاج صورة نظيفة لمستند تصميم أو عرض تقديمي.

ومخططات البنية تصف أنظمة داخلية، من أسماء خدمات ونماذج بيانات وتكاملات، لن تلصقها في خادم غريب. هنا يُرسم مصدر Mermaid في متصفحك أنت، وتُنشأ صورة SVG أو PNG وتُنزّل محليًا.

نصائح وأخطاء شائعة

  • ابدأ من أحد الأمثلة (الأصناف، التسلسل، الحالات، الكيانات، الانسيابي، Git) وعدّله؛ فالبناء أسهل تعلمًا بتغيير مخطط يعمل.
  • احفظ مصدر Mermaid بجانب شيفرتك، كملف .mmd أو كتلة mermaid مسيّجة في README، حتى يُحدَّث المخطط مع الشيفرة.
  • صدّر بصيغة SVG للمستندات والشرائح، حيث يبقى حادًا بأي حجم؛ واستخدم PNG حيث لا تُقبل SVG.
  • إذا توقفت المعاينة عن التحديث، ففي البناء خطأ؛ تراجع عن آخر تغيير وابحث عن سهم أو قوس ناقص.

بداية سريعة: استخدام محرر مخططات UML (Mermaid)

  1. اختر نوع مخطط من الأمثلة لتحميل قالب يعمل.
  2. عدّل نص Mermaid في المحرر؛ فالمعاينة تتحدث أثناء الكتابة.
  3. أعد تسمية العناصر وأضف العلاقات واضبط التسميات حتى يقول المخطط ما تحتاجه.
  4. بدّل سمة الموقع إن أردت نسخة داكنة من المخطط.
  5. نزّل النتيجة بصيغة SVG أو PNG.

توثّق الشيفرة حوله؟ محرر Markdown ومعاينته مفيد لملف README المرافق، والسبورة الإلكترونية تناسب الرسومات الحرة قبل إضفاء الطابع الرسمي عليها.

لماذا تكتب المخططات كنص

  • سهلة التغيير. إعادة تسمية صنف أو إضافة خطوة تعديل من سطر واحد، والتخطيط يضبط نفسه.
  • تناسب أنظمة إدارة الإصدارات. المخطط بضعة أسطر من النص العادي، فتظهر التغييرات بوضوح في المقارنة.
  • تعمل في أماكن أخرى أيضًا. GitHub وGitLab وNotion وObsidian وأدوات توثيق كثيرة تعرض Mermaid مباشرة، فيعمل النص نفسه في README.

مخططات الأصناف

تُظهر مخططات الأصناف بنية النظام: الأصناف، وما تحتويه، وكيف ترتبط.

classDiagram
    class Order {
      +int id
      +Date created
      +addItem(Product p)
      +total() double
    }
    class Customer {
      +String name
      +String email
    }
    Customer "1" --> "*" Order : places
    Order *-- LineItem : contains
    LineItem --> Product

علامة + تعني عضوًا عامًا و- عضوًا خاصًا. والعضو ذو الأقواس دالة؛ والنص بعد القوس الختامي نوع القيمة المعادة.

العلاقات

البناء المعنى
A <|-- B وراثة: B يرث A
A *-- B تركيب: لا يوجد B دون A
A o-- B تجميع: A يملك B، ويمكن أن يوجد B وحده
A --> B ارتباط
A ..> B اعتماد
A ..|> B تحقيق: A يطبّق الواجهة B
A --> B : label أي علاقة، مع تسمية
A "1" --> "*" B التعددية على كل طرف

الواجهات والأصناف المجردة

classDiagram
    class PaymentGateway {
      <<interface>>
      +charge(int cents) bool
    }
    class StripeGateway
    PaymentGateway <|.. StripeGateway

مخططات التسلسل

تُظهر مخططات التسلسل الرسائل المتبادلة بين المشاركين عبر الزمن، من الأعلى إلى الأسفل.

sequenceDiagram
    participant U as User
    participant W as Web app
    participant D as Database
    U->>W: Submit form
    W->>D: INSERT order
    D-->>W: OK
    W-->>U: Order confirmed

->> طلب و-->> (المتقطع) رد. واستخدم كتل loop وalt/else وopt للتكرار والتفرعات:

sequenceDiagram
    Client->>Server: Login
    alt valid password
        Server-->>Client: Token
    else wrong password
        Server-->>Client: 401 Unauthorized
    end

مخططات الحالات

تُظهر مخططات الحالات الحالات التي يمكن أن يكون فيها شيء ما وما الذي ينقله بينها. و[*] هي البداية أو النهاية.

stateDiagram-v2
    [*] --> Draft
    Draft --> Submitted : submit
    Submitted --> Approved : approve
    Submitted --> Rejected : reject
    Rejected --> Draft : edit
    Approved --> Published
    Published --> [*]

مخططات الكيانات والعلاقات

تمثّل مخططات ER جداول قاعدة البيانات وكيف ترتبط. والرموز على طرفي الخط تعطي العددية: || واحد بالضبط، وo{ صفر أو أكثر، و|{ واحد أو أكثر.

erDiagram
    CUSTOMER ||--o{ ORDER : places
    ORDER ||--|{ LINE_ITEM : contains
    PRODUCT ||--o{ LINE_ITEM : "appears in"
    CUSTOMER {
      int id PK
      string email
    }
    ORDER {
      int id PK
      int customer_id FK
      date created
    }

المخططات الانسيابية

ليست UML بالمعنى الدقيق، لكنها غالبًا ما تحتاجه لعملية أو حالة استخدام. LR يرسمها من اليسار إلى اليمين، وTD من الأعلى إلى الأسفل، وRL من اليمين إلى اليسار. والتسميات العربية تعمل بين علامتي اقتباس.

flowchart TD
    A["وصل الطلب"] --> B{"مسجّل الدخول؟"}
    B -- نعم --> C["اعرض لوحة التحكم"]
    B -- لا --> D["اعرض صفحة الدخول"]
    D --> B

نصائح

  • ابدأ صغيرًا. اعرض المخطط بعد كل بضعة أسطر، فإذا انكسر شيء عرفت أي سطر سببه.
  • سمِّ الأشياء كما تسميها شيفرتك. فيصبح المخطط توثيقًا يمكن البحث فيه.
  • فكرة واحدة لكل مخطط. مخططان واضحان أفضل من مخطط مزدحم.
  • استخدم SVG للمستندات. تبقى حادة عند التكبير أو الطباعة وأصغر عادةً من PNG.

حين لا يُرسم المخطط

يعرض المحرر رسالة خطأ Mermaid تحت المعاينة. والأسباب المعتادة:

المشكلة الحل
لا يُرسم شيء إطلاقًا تأكد أن السطر الأول يسمّي نوع مخطط، مثل classDiagram
خطأ قرب تسمية ضع التسميات التي فيها مسافات أو رموز أو نص عربي بين علامتي اقتباس مزدوجتين
خطأ غير متوقع في سهم قارن السهم بالجداول أعلاه؛ فأسهم التسلسل والأصناف مختلفة
كلمة تكسر المخطط كلمات مثل end محجوزة؛ أعد تسمية العقدة أو ضعها بين علامتي اقتباس

تغطي وثائق Mermaid كل أنواع المخططات بالتفصيل، ومنها المخططات الدائرية ومخططات Gantt والخطوط الزمنية والخرائط الذهنية، التي يرسمها المحرر أيضًا.

أسئلة شائعة

ما أنواع المخططات التي يمكنني إنشاؤها؟

مخططات الأصناف والتسلسل والحالات والكيانات والعلاقات (ER) والمخططات الانسيابية ومخططات Git، وكلها مكتوبة بصيغة Mermaid.

هل يمكنني استخدام المخططات على GitHub؟

نعم. تعرض GitHub صيغة Mermaid مباشرة، فيمكنك لصق النص نفسه في كتلة mermaid مسيّجة في ملف README أو مشكلة أو طلب دمج.

ما صيغ التصدير المتاحة؟

SVG، التي تتسع دون ضبابية، وPNG للأماكن التي لا تقبل SVG.

أدوات أخرى من أدوات المطورين

تصفح جميع أدوات المطورين ←