Register
Process Type
Graphical expression
Mind Type
Structured expression
Note Type
Efficient expression

مخطط انسيابيالصيغة

التعريف الأساسي

يتكوّن المخطط الانسيابي من عقد (أشكال هندسية) وخطوط توصيل (أسهم أو خطوط). يحدّد كود Mermaid طريقة إنشاء العقد وخطوط التوصيل، ويدعم أنواعًا متعددة من الأسهم والأسهم متعددة الاتجاهات والربط العشوائي بالمخططات الفرعية.

تحذير إذا استخدمت الكلمة "end" داخل عقدة المخطط الانسيابي، فاكتب الحرف الأول أو الكلمة كاملة بأحرف كبيرة (مثل: "End" أو "END")، فإدخال "end" بالكامل بأحرف صغيرة سيؤدي إلى خطأ في المخطط الانسيابي.

تحذير إذا وصلت عقد المخطط الانسيابي مستخدمًا الحرف "o" أو "x" كحرف أول، فأضف مسافة قبل الحرف أو اكتب الحرف بأحرف كبيرة (مثل: "dev--- ops" أو "dev---Ops").

عقدة واحدة (افتراضي)

كود
                            
نسخ
تضمين
--- title: Node --- flowchart LR id
معلومات

id هو المحتوى المعروض داخل المربع.

تلميح

صيغة إنشاء المخطط الانسيابي، فإلى جانب استخدام flowchart يمكنك أيضًا استخدام graph .

عقدة مع نص

يمكنك أيضًا تعيين نص مختلف عن id للمربع. إذا كررت هذه العملية، سيعتمد النظام النص المحدَّد أخيرًا لهذه العقدة. بالإضافة إلى ذلك، إذا عرّفت لاحقًا خط توصيل للعقدة، يمكنك حذف تعريف النص؛ وسيُستخدم النص المعرَّف سابقًا عند تصيير المربع.

كود
                            
نسخ
تضمين
--- title: Node with text --- flowchart LR id1[This is the text in the box]

نص Unicode

استخدم علامات الاقتباس المزدوجة لتغليف نص Unicode.

كود
                            
نسخ
تضمين
flowchart LR id["This ❤ Unicode"]

تنسيق Markdown

استخدم علامات الاقتباس المزدوجة والعلامات الخلفية لتغليف نص Markdown

كود
                            
نسخ
تضمين
flowchart LR markdown["`This **is** _Markdown_`"] newLines["`Line1 Line 2 Line 3`"] markdown --> newLines

الاتجاه

يصرّح باتجاه المخطط الانسيابي

يشير إلى أن المخطط الانسيابي مرتّب من الأعلى إلى الأسفل (TD أو TB)

كود
                            
نسخ
تضمين
flowchart TD Start --> Stop

تشمل اتجاهات المخطط الانسيابي:

  • TB - من الأعلى إلى الأسفل
  • TD - من الأعلى إلى الأسفل (مثل من الأعلى إلى الأسفل)
  • BT - من الأسفل إلى الأعلى
  • RL - من اليمين إلى اليسار
  • LR - من اليسار إلى اليمين

شكل العقدة

مستطيل بزوايا دائرية

كود
                            
نسخ
تضمين
flowchart LR id1(This is the text in the box)

شكل الملعب

كود
                            
نسخ
تضمين
flowchart LR id1([This is the text in the box])

مخطط فرعي

كود
                            
نسخ
تضمين
flowchart LR id1[[This is the text in the box]]

قاعدة بيانات

كود
                            
نسخ
تضمين
flowchart LR id1[(Database)]

دائري

كود
                            
نسخ
تضمين
flowchart LR id1((This is the text in the circle))

شكل غير متماثل

كود
                            
نسخ
تضمين
flowchart LR id1>This is the text in the box]

معين

كود
                            
نسخ
تضمين
flowchart LR id1{This is the text in the box}

سُداسي

كود
                            
نسخ
تضمين
flowchart LR id1{{This is the text in the box}}

متوازي أضلاع

كود
                            
نسخ
تضمين
flowchart TD id1[/This is the text in the box/]

متوازي أضلاع معكوس

كود
                            
نسخ
تضمين
flowchart TD id1[\This is the text in the box\]

شبه منحرف

كود
                            
نسخ
تضمين
flowchart TD A[/ProcessOn\]

شبه منحرف مقلوب

كود
                            
نسخ
تضمين
flowchart TD B[\ProcessOn/]

دائرة مزدوجة

كود
                            
نسخ
تضمين
flowchart TD id1(((This is the text in the circle)))

امتداد أشكال عقد المخطط الانسيابي في Mermaid

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

صيغة جديدة لتعريف الأشكال

تدعم Mermaid الآن صيغة عامة لتعريف أنواع الأشكال لتواكب تزايد عدد الأشكال. تسمح لك هذه الصيغة بتحديد شكل معيّن لعقدة باستخدام تنسيق واضح ومرن.

                            
نسخ
تضمين
A@{ shape: rect }

تنشئ هذه الصيغة العقدة A كمستطيل. وتُصيَّر بالطريقة نفسها مثل [A] أو A.

القائمة الكاملة لأشكال العقد

فيما يلي القائمة الكاملة لأشكال العقد المُقدَّمة حديثًا مع معانيها المقابلة واختصاراتها وأسمائها البديلة:

الاسم الدلالي صيغة الرسم الاختصار الصيغي البديل الصيغي الوصف التفصيلي
بطاقة Notched Rectangle notch-rect card, notched-rectangle يمثّل بطاقة
ترتيب Hourglass hourglass collate يمثّل عملية ترتيب
رابط اتصال Lightning Bolt bolt com-link, lightning-bolt رابط اتصال
تعليق Curly Brace brace brace-l, comment إضافة تعليق
تعليق على اليمين Curly Brace brace-r إضافة تعليق
تعليق بأقواس معقوصة على الجانبين Curly Braces braces إضافة تعليق
إدخال أو إخراج البيانات Lean Right lean-r in-out, lean-right يمثّل الإدخال أو الإخراج
إدخال أو إخراج البيانات Lean Left lean-l lean-left, out-in يمثّل الإخراج أو الإدخال
قاعدة بيانات Cylinder cyl cylinder, database, db تخزين قاعدة البيانات
قرار Diamond diam decision, diamond, question خطوة قرار
تأخير Half-Rounded Rectangle delay half-rounded-rectangle يمثّل تأخيرًا
تخزين الوصول المباشر Horizontal Cylinder h-cyl das, horizontal-cylinder تخزين الوصول المباشر
تخزين على القرص Lined Cylinder lin-cyl disk, lined-cylinder تخزين على القرص
عرض Curved Trapezoid curv-trap curved-trapezoid, display يمثّل عرض المعلومات على الشاشة أو الطرفية أو أجهزة أخرى
معالجة مقسّمة Divided Rectangle div-rect div-proc, divided-process, divided-rectangle شكل المعالجة المقسّمة
مستند Document doc document يمثّل مستندًا
حدث Rounded Rectangle rounded event يمثّل حدثًا
استخلاص Triangle tri extract, triangle عملية الاستخلاص
تفرّع/دمج Filled Rectangle fork join تفرّع أو دمج في المخطط الانسيابي
تخزين داخلي Window Pane win-pane internal-storage, window-pane تخزين داخلي
نقطة اتصال Filled Circle f-circ filled-circle, junction نقطة اتصال
مستند مع خط Lined Document lin-doc lined-document مستند مع خط
عملية الخط/الظل Lined Rectangle lin-rect lin-proc, lined-process, lined-rectangle, shaded-process شكل عملية مع خط
حد الحلقة Trapezoidal Pentagon notch-pent loop-limit, notched-pentagon خطوة حد الحلقة
ملف يدوي Flipped Triangle flip-tri flipped-triangle, manual-file عملية ملف يدوي
إدخال يدوي Sloped Rectangle sl-rect manual-input, sloped-rectangle خطوة إدخال يدوي
عملية يدوية Trapezoid Base Top trap-t inv-trapezoid, manual, trapezoid-top يمثّل مهمة يدوية
مستندات متعددة Stacked Document docs documents, st-doc, stacked-document 多个文档
عمليات متعددة Stacked Rectangle st-rect processes, procs, stacked-rectangle 多个进程
شكل غير منتظم Odd odd شكل غير منتظم
شريط ورقي Flag flag paper-tape شريط ورقي
شرط تحضيري Hexagon hex hexagon, prepare خطوة تحضير أو شرط
إجراء ذو أولوية Trapezoid Base Bottom trap-b priority, trapezoid, trapezoid-bottom إجراء ذو أولوية
معالجة Rectangle rect proc, process, rectangle شكل المعالجة القياسي
بداية Circle circle circ نقطة البداية
بداية Small Circle sm-circ small-circle, start نقطة بداية دائرية صغيرة
توقف Double Circle dbl-circ double-circle يمثّل نقطة التوقف
توقف Framed Circle fr-circ framed-circle, stop يمثّل نقطة التوقف
تخزين البيانات Bow Tie Rectangle bow-rect bow-tie-rectangle, stored-data تخزين البيانات
مخطط فرعي Framed Rectangle fr-rect framed-rectangle, subproc, subprocess, subroutine مخطط فرعي، روتين فرعي
ملخّص Crossed Circle cross-circ crossed-circle, summary ملخّص
مستند موسوم Tagged Document tag-doc tagged-document مستند موسوم
عملية معيارية Tagged Rectangle tag-rect tag-proc, tagged-process, tagged-rectangle 已标准进程
نقطة النهاية Stadium stadium pill, terminal نقطة النهاية
كتلة نصية Text Block text كتلة نصية

فيما يلي مثال على كود مخطط انسيابي يستخدم الأشكال المُقدَّمة حديثًا:

كود
                            
نسخ
تضمين
flowchart RL A@{ shape: manual-file, label: "File Handling"} B@{ shape: manual-input, label: "User Input"} C@{ shape: docs, label: "Multiple Documents"} D@{ shape: procs, label: "Process Automation"} E@{ shape: paper-tape, label: "Paper Records"}

العملية

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: rect, label: "This is a process" }

حدث

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: rounded, label: "This is an event" }

العملية الفرعية

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: subproc, label: "This is a subprocess" }

قاعدة بيانات (أسطوانة)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: cyl, label: "Database" }

بداية (دائرة)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: circle, label: "Start" }

شكل غير منتظم

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: odd, label: "Odd shape" }

قرار (معين)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: diamond, label: "Decision" }

شرط تحضيري (سُداسي)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: hex, label: "Prepare conditional" }

إدخال/إخراج البيانات (مائل إلى اليمين)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: lean-r, label: "Input/Output" }

إدخال/إخراج البيانات (مائل إلى اليسار)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: lean-l, label: "Input/Output" }

إجراء ذو أولوية (شبه منحرف)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: trap-b, label: "Priority action" }

عملية يدوية (شبه منحرف مقلوب)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: trap-t, label: "Manual operation" }

توقف (دائرة مزدوجة)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: dbl-circ, label: "Stop" }

كتلة نصية

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: text, label: "This is a text block" }

بطاقة (مستطيل بفتحة)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: notch-rect, label: "Card" }

عملية بخط/ظل

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: lin-rect, label: "Lined process" }

بداية (دائرة صغيرة)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: sm-circ, label: "Small start" }

توقف (دائرة بإطار)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: framed-circle, label: "Stop" }

تفرّع/دمج (مستطيل طويل)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: fork, label: "Fork or Join" }

ترتيب (ساعة رملية)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: hourglass, label: "Collate" }

تعليق (أقواس معقوصة)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: comment, label: "Comment" }

تعليق على اليمين (أقواس معقوصة على اليمين)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: brace-r, label: "Comment" }

تعليق (بأقواس على الجانبين)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: braces, label: "Comment" }

رابط اتصال (برق)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: bolt, label: "Communication link" }

مستند

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: doc, label: "Document" }

تأخير (مستطيل نصف دائري الزوايا)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: delay, label: "Delay" }

直接存取存储(水平圆柱)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: das, label: "Direct access to storage" }

تخزين على القرص (أسطوانة بأخاديد)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: lin-cyl, label: "Disk storage" }

عرض (شكل العرض)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: curv-trap, label: "Display" }

معالجة مقسّمة (مستطيل مقسّم)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: div-rect, label: "Divided process" }

استخلاص (مثلث صغير)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: tri, label: "Extract" }

تخزين داخلي (لوحة نافذة)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: win-pane, label: "Internal storage" }

نقطة اتصال (دائرة ممتلئة)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: f-circ, label: "Connect" }

مستند مع خط

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: lin-doc, label: "Lined document" }

حد الحلقة (خماسي بفتحة)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: notch-pent, label: "Loop limit" }

ملف يدوي (مثلث مقلوب)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: flip-tri, label: "Manual file" }

إدخال يدوي (شبه منحرف قائم)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: sl-rect, label: "Manual input" }

مستندات متعددة (مستندات مكدّسة)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: docs, label: "Multi-document" }

عمليات متعددة (مستطيلات مكدّسة)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: processes, label: "Multiple processes" }

شريط ورقي (علم)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: flag, label: "Paper tape" }

تخزين البيانات (مستطيل بشكل ربطة العنق)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: bow-rect, label: "Data stored" }

ملخّص (دائرة بصليب)

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: cross-circ, label: "Summary" }

مستند موسوم

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: tag-doc, label: "Tagged document" }

العملية الموسومة

كود
                            
نسخ
تضمين
flowchart TD A@{ shape: tag-rect, label: "Tagged process" }

أشكال خاصة في المخططات الانسيابية لـ Mermaid

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

شكل الصورة

يمكنك استخدام image لإدراج صورة في المخطط الانسيابي، وصيغة تعريف الصورة كما يلي:

                            
نسخ
تضمين
flowchart TD A@{ img: "https://www.processon.com/image.png", label: "Image Label", pos: "t", w: 60, h: 60, constraint: "off" }

معامل

  • img: عنوان URL للصورة المراد عرضها.
  • label: تسمية نصية مرتبطة بالصورة، ويمكن أن تكون أي سلسلة نصية. إذا لم تُعرَّف، فلن تُعرض أي تسمية.
  • pos: موضع التسمية. إذا لم يُعرَّف، فستكون التسمية افتراضيًا أسفل الصورة.
  • w: عرض الصورة. إذا لم يُعرَّف، فسيكون افتراضيًا العرض الطبيعي للصورة.
  • h: ارتفاع الصورة. إذا لم يُعرَّف، فسيكون افتراضيًا الارتفاع الطبيعي للصورة.
  • constraint: يحدّد ما إذا كانت الصورة تقيّد حجم العقدة. يضمن هذا الإعداد أيضًا أن تحافظ الصورة على نسبة العرض إلى الارتفاع الأصلية، ويعدّل الارتفاع وفقًا للعرض. إذا لم يُعرَّف، فسيكون افتراضيًا off .

تمنحك الصور مرونة إضافية وجاذبية بصرية لمخططك الانسيابي، مما يجعله أكثر إفادة وجذبًا.

الروابط بين العقد

يمكن ربط العقد عبر خطوط التوصيل والأسهم. هناك أنواع مختلفة من الروابط، ويمكن أيضًا إرفاق سلسلة نصية بالرابط.

رابط مع سهم

كود
                            
نسخ
تضمين
flowchart LR A-->B

رابط مفتوح

كود
                            
نسخ
تضمين
flowchart LR A --- B

رابط مع نص

كود
                            
نسخ
تضمين
flowchart LR A-- This is the text! ---B

أو

كود
                            
نسخ
تضمين
flowchart LR A --- | This is the text| B

رابط مع سهم ونص

كود
                            
نسخ
تضمين
flowchart LR A-->|text|B

أو

كود
                            
نسخ
تضمين
flowchart LR A-- text -->B

رابط متقطّع

كود
                            
نسخ
تضمين
flowchart LR A-.->B;

رابط متقطّع مع نص

كود
                            
نسخ
تضمين
flowchart LR A-. text .->B;

رابط سميك

كود
                            
نسخ
تضمين
flowchart LR A ==> B

رابط سميك مع نص

كود
                            
نسخ
تضمين
flowchart LR A == |text| ==> B

رابط غير مرئي

كود
                            
نسخ
تضمين
flowchart LR A ~~~ B

الربط التسلسلي للروابط

كود
                            
نسخ
تضمين
flowchart LR A -- text --> B -- text2 --> C

يمكنك أيضًا الإعلان عن روابط عقد متعددة في السطر نفسه، كما يلي:

كود
                            
نسخ
تضمين
flowchart LR a --> b & c--> d

يمكنك أيضًا وصف التبعية، كما في الكود التالي:

كود
                            
نسخ
تضمين
flowchart LR a --> b & c--> d & e--> f

إذا وصفت الرسم نفسه باستخدام الصيغة الأساسية، فستحتاج إلى 8 أسطر. وتجدر الإشارة إلى أن الإفراط في استخدام هذه الطريقة قد يجعل مخطط Markdown الانسيابي أصعب في القراءة.

كود
                            
نسخ
تضمين
flowchart TB a --> b a --> c b --> d b --> e c --> d c --> e d --> f e --> f

إضافة ID إلى خط التوصيل

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

الصيغة:

لإضافة ID إلى خط التوصيل، ضع ID قبل صيغة خط التوصيل مباشرة متبوعًا بحرف @. على سبيل المثال:

كود
                            
نسخ
تضمين
flowchart LR A e1@--> B

في هذا المثال، e1 هو الـ ID لخط التوصيل بين A و B. يمكنك استخدام هذا الـ ID في تعريفات أو عبارات تنسيق لاحقة، تمامًا كما تستخدم العقدة.

تشغيل الحركة

بعد إضافة ID إلى خط التوصيل، يمكنك تشغيل حركة خط التوصيل عبر تعريف خصائصه:

كود
                            
نسخ
تضمين
flowchart LR A e1@==> B e1@{ animate: true }

يخبر هذا Mermaid بأن خط التوصيل e1 متحرّك.

اختيار نوع الحركة

في الإصدار الأولي، تُدعَم سرعتان للحركة: fast و slow. ويعدّ اختيار نوع حركة معيّن طريقة سهلة لتمكين الحركة وتعيين سرعتها مرة واحدة.

كود
                            
نسخ
تضمين
flowchart LR A e1@--> B e1@{ animation: fast }

这相当于 e1@{ animate: true, animation: fast }。

استخدام عبارة classDef للحركة

يمكنك أيضًا إضافة حركة إلى خط التوصيل عبر إسناد فئة إليه، ثم تعريف خصائص الحركة في عبارة classDef. على سبيل المثال:

كود
                            
نسخ
تضمين
flowchart LR A e1@--> B classDef animate stroke-dasharray: 9,5,stroke-dashoffset: 900,animation: dash 25s linear infinite; class e1 animate

في هذا الكود:

  • e1@--> 创建了一个 ID 为 e1 的连接线
  • classDef animate يعرّف فئة اسمها animate وذات خصائص تنسيق وحركة.
  • class e1 animate يطبّق الفئة animate على خط التوصيل e1.

ملاحظة حول إفلات الفاصلة: عند تعيين خاصية stroke-dasharray، تذكّر إفلات الفاصلة، لأن الفاصلة تُستخدم كفاصل في تعريفات التنسيق في Mermaid.

أنواع أسهم جديدة

دعم أنواع أسهم جديدة

  • خط توصيل بدائرة ممتلئة
  • خط توصيل بعلامة تقاطع

خط توصيل بدائرة ممتلئة

كود
                            
نسخ
تضمين
flowchart LR A --o B

خط توصيل بعلامة تقاطع

كود
                            
نسخ
تضمين
flowchart LR A --x B

سهم متعدد الاتجاهات

يمكن استخدام سهم متعدد الاتجاهات، على سبيل المثال:

كود
                            
نسخ
تضمين
flowchart LR A o--o B B <--> C C x--x D

طول خط التوصيل

تُسنَد لكل عقدة في المخطط الانسيابي، وفقًا للعقد المتصلة بها، رتبة في المخطط المُصيَّر، أي مستوى رأسي أو أفقي (حسب اتجاه المخطط الانسيابي). افتراضيًا، يمكن للرابط أن يمتد عبر أي عدد من الرتب، لكن يمكنك طلب أن يكون رابط معيّن أطول من غيره بإضافة شرطات إضافية في تعريف الرابط.

في هذا المثال، أُضيفت شرطتان إضافيتان في الرابط من العقدة B إلى العقدة E، ليمتد عبر رتبتين أكثر من الرابط العادي:

كود
                            
نسخ
تضمين
flowchart TD A[Start] --> B{Is it?} B -->|Yes| C[OK] C --> D[Rethink] D --> B B ---->|No| E[End]
ملاحظة: قد يكون الرابط أطول من عدد الرتب التي طلبها محرّك التصيير، لتلبية طلبات أخرى.

عند كتابة تسمية الرابط في وسط الرابط، يجب إضافة شرطات إضافية على الجانب الأيمن من الرابط. هذا المثال مكافئ للمثال السابق:

كود
                            
نسخ
تضمين
flowchart TD A[Start] --> B{Is it?} B -->|Yes| C[OK] C --> D[Rethink] D --> B B -- No ----> E[End]

بالنسبة للخط المتقطّع أو الرابط السميك، تكون الأحرف المطلوب إضافتها هي علامة التساوي أو النقطة، كما في الجدول التالي:

الطول 1 2 3
رابط عادي --- ---- -----
رابط عادي مع سهم --> ---> ---->
رابط سميك === ==== =====
رابط سميك مع سهم ==> ===> ====>
خط منقّط -.- -..- -...-
خط منقّط مع سهم -.- -..-> -...->

أحرف خاصة

يمكنك وضع النص داخل علامات الاقتباس لتصيير الأحرف الأكثر إشكالًا. كما في المثال التالي:

كود
                            
نسخ
تضمين
flowchart LR id1["This is the (text) in the box"]

ترميز الكيانات لإفلات الأحرف

يمكنك إفلات الأحرف باستخدام الصيغة الموضّحة في المثال.

كود
                            
نسخ
تضمين
flowchart LR A["A double quote:#quot;"] --> B["A dec char:#9829;"]

الأرقام المعطاة عشرية، لذا يمكن ترميز # بالشكل #35. كما يُدعَم استخدام أسماء أحرف HTML.

مخطط فرعي

                            
نسخ
تضمين
subgraph title graph definition end

فيما يلي مثال:

كود
                            
نسخ
تضمين
flowchart TB c1-->a2 subgraph one a1-->a2 end subgraph two b1-->b2 end subgraph three c1-->c2 end

يمكنك أيضًا تعيين id للمخطط الفرعي.

كود
                            
نسخ
تضمين
flowchart TB c1-->a2 subgraph ide1 [one] a1-->a2 end

مخطط انسيابي

باستخدام المخططات من نوع المخطط الانسيابي، يمكنك أيضًا تعيين خطوط توصيل متجهة إلى المخطط الفرعي ومنه، كما في المخطط الانسيابي التالي.

كود
                            
نسخ
تضمين
flowchart TB c1-->a2 subgraph one a1-->a2 end subgraph two b1-->b2 end subgraph three c1-->c2 end one --> two three --> two two --> c2

اتجاه المخطط الفرعي

عند استخدام النوع flowchart، يمكنك استخدام عبارة الاتجاه لتعيين اتجاه تصيير المخطط الفرعي، كما يلي:

كود
                            
نسخ
تضمين
flowchart LR subgraph TOP direction TB subgraph B1 direction RL i1 -->f1 end subgraph B2 direction BT i2 -->f2 end end A --> TOP --> B B1 --> B2

القيود

إذا كانت أي عقدة في المخطط الفرعي متصلة بالخارج، فسيُتجاهل اتجاه المخطط الفرعي. وإلا فسيرث المخطط الفرعي اتجاه المخطط الأصل:

كود
                            
نسخ
تضمين
flowchart LR subgraph subgraph1 direction TB top1[top] --> bottom1[bottom] end subgraph subgraph2 direction TB top2[top] --> bottom2[bottom] end %% ^ These subgraphs are identical, except for the links to them: %% Link *to* subgraph1: subgraph1 direction is maintained outside --> subgraph1 %% Link *within* subgraph2: %% subgraph2 inherits the direction of the top-level graph (LR) outside ---> top2

سلسلة Markdown

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

كود
                            
نسخ
تضمين
flowchart LR subgraph "One" a("`The **cat** in the hat`") -- "edge label" --> b{{"`The **dog** in the hog`"}} end subgraph "`**Two**`" c("`The **cat** in the hat`") -- "`Bold **edge label**`" --> d("The dog in the hog") end
  • لجعل النص عريضًا، استخدم نجمتين (**) قبل النص وبعده.
  • يُستخدم المائل بنجمة واحدة (*) قبل النص وبعده.
  • بالنسبة للسلاسل التقليدية، تحتاج إلى إضافة وسم <br> ليتفاف النص في العقدة. أما سلاسل Markdown فتتفاف تلقائيًا عندما يكون النص طويلًا، ويكفي استخدام حرف سطر جديد بدلًا من وسم <br> لبدء سطر جديد.

تنطبق هذه الميزة على تسميات العقد وتسميات خطوط التوصيل وتسميات المخططات الفرعية

يمكن تعطيل التفاف النص التلقائي باستخدام صيغة معيّنة

كود
                            
نسخ
تضمين
--- config: markdownAutoWrap: false --- graph LR

تعليق

يمكنك إدخال تعليقات في المخطط الانسيابي، وسيتجاهلها المحرّر. يجب أن يشغل التعليق سطرًا مستقلًا، ويجب أن يبدأ بعلامتي النسبة المئوية المزدوجة (%%). ويُعدّ أي نص من بداية التعليق حتى السطر التالي تعليقًا، بما في ذلك أي صيغة مخطط.

كود
                            
نسخ
تضمين
flowchart LR %% this is a comment A -- text --> B{node} A -- text --> B -- text2 --> C

التنسيق والفئات

تنسيق الرابط

يمكنك تعيين تنسيق الرابط. على سبيل المثال، قد ترغب في تصميم رابط يتحرك للخلف في المسار؛ ولأن الروابط لا تملك ID كما العقد، فأنت بحاجة إلى طريقة أخرى لتحديد التنسيق الذي ينبغي أن يستخدمه الرابط. استخدم رقم الترتيب عند تعريف الرابط، أو استخدم القيمة الافتراضية لتطبيقها على جميع الروابط.

                            
نسخ
تضمين
linkStyle 3 stroke:#ff3,stroke-width:4px,color:red;

يمكنك أيضًا إضافة تنسيق إلى روابط متعددة عبر فصل أرقام الروابط بفواصل في عبارة واحدة:

                            
نسخ
تضمين
linkStyle 1,2,7 color:blue;

تعيين نمط انحناء خط التوصيل

إذا لم تلِ الطريقة الافتراضية احتياجاتك، فيمكنك تعيين نمط انحناء لخطوط التوصيل بين العناصر. تشمل أنماط الانحناء المتاحة basis و bumpX و bumpY و cardinal و catmullRom و linear و monotoneX و monotoneY و natural و step و stepAfter و stepBefore.

في المثال التالي، يستخدم مخطط من اليسار إلى اليمين نمط الانحناء stepBefore.

                            
نسخ
تضمين
%%{ init: { 'flowchart': { 'curve': 'stepBefore' } } }%% graph LR

تعيين تنسيق العقدة

يمكن تعيين تنسيق معيّن للعقدة، مثل إطار أكثر سماكة أو لون خلفية مختلف.

كود
                            
نسخ
تضمين
flowchart LR id1(Start)-->id2(Stop) style id1 fill:#f99,stroke:#33d,stroke-width:4px style id2 fill:#bfc,stroke:#f96,stroke-width:2px,color:#000,stroke-dasharray: 5 5

فئة

بدلًا من تعريف التنسيق في كل مرة، يكون من الأنسب تعريف فئة تنسيق وإرفاقها بالعقد التي تحتاج إلى مظهر مختلف.

تُعرَّف الفئة كما يلي:

                            
نسخ
تضمين
classDef className fill:pink,stroke:#333,stroke-width:4px;

بالإضافة إلى ذلك، يمكن تعريف التنسيق لعدة فئات في عبارة واحدة:

                            
نسخ
تضمين
classDef firstClassName,secondClassName font-size:12pt;

تتم إرفاق الفئة بالعقدة كما يلي:

                            
نسخ
تضمين
class nodeId1 className;

يمكن أيضًا إرفاق فئة بقائمة عقد في عبارة واحدة:

                            
نسخ
تضمين
class nodeId1,nodeId2 className;

لإضافة فئة، يمكنك استخدام المعامل ::: لإرفاق اسم الفئة بالعقدة، كما يلي:

كود
                            
نسخ
تضمين
flowchart LR A:::someclass --> B classDef someclass fill:#f96

يمكن استخدام هذا الشكل عند الإعلان عن روابط متعددة بين العقد:

كود
                            
نسخ
تضمين
flowchart LR A:::foo & B:::bar --> C:::foobar classDef foo stroke:#f00 classDef bar stroke:#0f0 classDef foobar stroke:#00f

  • في إعلانات الرسم، يمكن الآن أن تنتهي العبارات دون فاصلة منقوطة. فبعد الإصدار 0.2.16، أصبح انتهاء عبارات الرسم بفاصلة منقوطة اختياريًا فقط. لذلك، فإن إعلان الرسم التالي صالح تمامًا مثل إعلان الرسم القديم.
  • يُسمح بمسافة واحدة بين القمم والروابط. ومع ذلك، لا ينبغي وجود أي مسافة بين القمة ونصها، ولا بين الرابط ونصه. كما يظل إعلان الرسم القديم صالحًا، لذا فهذه الميزة الجديدة اختيارية وتهدف إلى تحسين قابلية القراءة.

فيما يلي الإعلان الجديد لخط التوصيل، وهو صالح تمامًا مثل إعلان خط التوصيل القديم.

كود
                            
نسخ
تضمين
flowchart LR A[Hard edge] -->|Link text| B(Round edge) B --> C{Decision} C -->|One| D[Result one] C -->|Two| E[Result two]