محرر مخططات 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)
- اختر نوع مخطط من الأمثلة لتحميل قالب يعمل.
- عدّل نص Mermaid في المحرر؛ فالمعاينة تتحدث أثناء الكتابة.
- أعد تسمية العناصر وأضف العلاقات واضبط التسميات حتى يقول المخطط ما تحتاجه.
- بدّل سمة الموقع إن أردت نسخة داكنة من المخطط.
- نزّل النتيجة بصيغة 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.