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

مخطط تسلسليالصيغة

مخطط تسلسلي

يمكن لـ Mermaid تصيير مخططات التسلسل. ومخطط التسلسل مخطط تفاعلي يعرض كيفية تفاعل العمليات مع بعضها وترتيب العمليات.

كود
                            
نسخ
تضمين
sequenceDiagram Alice->>John: Hello John, how are you? John-->>Alice: Great! Alice-)John: See you later!
معلومات

ملاحظة حول العقد: نظرًا لطريقة كتابة لغة Mermaid، فإن كلمة "end" تُفسد المخطط بأكمله. وإذا كان لا بد من استخدام "end"، فتحتاج إلى إحاطتها بالأقواس الهلالية () أو علامتي الاقتباس المزدوجتين "" أو الأقواس المعقوصة {} أو الأقواس المربعة []، أي: (end) أو [end] أو {end}.

الصيغة

المشارك

تُعرض المشاركون وفق ترتيب ظهورهم في النص المصدر للمخطط. وأحيانًا قد ترغب في عرض المشاركين بترتيب مختلف عن ترتيب ظهورهم في الرسالة الأولى، ويمكن تحديد ترتيب ظهور المشاركين بالطريقة التالية:

كود
                            
نسخ
تضمين
sequenceDiagram participant Alice participant Bob Bob->>Alice: Hi Alice Alice->>Bob: Hi Bob

角色

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

كود
                            
نسخ
تضمين
sequenceDiagram actor Alice actor Bob Alice->>Bob: Hi Bob Bob->>Alice: Hi Alice

الاسم البديل

يمكنك تعريف اسم بديل باستخدام as بعد الإعلان عن المشارك

كود
                            
نسخ
تضمين
sequenceDiagram participant A as Alice participant J as John A->>J: Hello John, how are you? J->>A: Great!

إنشاء المشارك وتدميره

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

                            
نسخ
تضمين
participant B A --> B: Hello

تدعم تعليمة الإنشاء التمييز بين المشارك والاسم البديل. ويمكن تدمير مُرسِل الرسالة أو مُستقبِلها، لكن يمكن إنشاء المُستقبِل فقط.

كود
                            
نسخ
تضمين
sequenceDiagram Alice->>Bob: Hello Bob, how are you ? Bob->>Alice: Fine, thank you. And you? create participant Carl Alice->>Carl: Hi Carl! create actor D as Donald Carl->>D: Hi! destroy Carl Alice-xCarl: We are too many destroy Bob Bob->>Alice: I agree

تجميع/مربع

يمكن تجميع المشاركين في مربع رأسي. يمكنك تعريف اللون باستخدام رمز (وإذا لم يُعرَّف، فسيكون شفافًا).

                            
نسخ
تضمين
box Aqua Group Description ... actors ... end box Group without description ... actors ... end box rgb(33,66,99) ... actors ... end box rgba(33,66,99,0.5) ... actors ... end
معلومات

إذا كان اسم مجموعتك ملوّنًا، فيمكنك فرض جعل هذا اللون شفافًا:

                            
نسخ
تضمين
box transparent Aqua ... actors ... end
كود
                            
نسخ
تضمين
sequenceDiagram box Orange Alice & John participant A participant J end box Another Group participant B participant C end A->>J: Hello John, how are you? J->>A: Great! A->>B: Hello Bob, how is Charley? B->>C: Hello Charley, how are you?

رسالة

يمكن عرض الرسالة بخط متصل أو بخط متقطّع.

يمكن أن يكون الخط متصلًا أو متقطّعًا، ويدعم الانتهاء بأنواع مختلفة من الأسهم أو الصلبان أو الأسهم المفتوحة.

                            
نسخ
تضمين
[Actor][Arrow][Actor]:Message text

عشرة أنواع قياسية من الأسهم

النوع الوصف
-> خط متصل بلا سهم
--> خط متقطّع بلا سهم
->> خط متصل مع سهم
-->> خط متقطّع مع سهم
<<->> خط متصل بسهم ثنائي الاتجاه
<<-->> خط متقطّع بسهم ثنائي الاتجاه
-x خط متصل بصليب في الطرف
--x خط متقطّع بصليب في الطرف
-) خط متصل بسهم مجوّف في النهاية (غير متزامن)
--) خط متقطّع بسهم مجوّف في النهاية (غير متزامن)

تنشيط

يمكن تنشيط دور وإلغاء تنشيطه، ويمكن أن يكون الإلغاء أو التنشيط إعلانًا مخصّصًا:

كود
                            
نسخ
تضمين
sequenceDiagram Alice->>Bob: Hello Bob, how are you? activate Alice Bob->>Alice: Hi Alice! deactivate Alice

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

كود
                            
نسخ
تضمين
sequenceDiagram Alice->>+John: Hello John, how are you? John-->>-Alice: Great!

يمكن تراكب تنشيطات الدور نفسه:

كود
                            
نسخ
تضمين
sequenceDiagram Alice->>+John: Hello John, how are you? Alice->>+John: John, can you hear me? John-->>-Alice: Hi Alice, I can hear you! John-->>-Alice: I feel great!

تعليق

يمكن إضافة تعليقات إلى مخطط التسلسل. ويمكن تحقيق ذلك بالرموز التالية: Note[right of] أو [left of] أو [over][المشارك]: محتوى التعليق

كود
                            
نسخ
تضمين
sequenceDiagram participant John Note right of John: Text in note

يمكن أيضًا إنشاء تعليق يغطي مشاركين:

كود
                            
نسخ
تضمين
sequenceDiagram Alice->John: Hello John, how are you? Note over Alice,John: A typical interaction

حرف سطر جديد

يمكن إضافة حرف سطر جديد في التعليقات والرسائل:

كود
                            
نسخ
تضمين
sequenceDiagram Alice->John: Hello John,<br/>how are you? Note over Alice,John: A typical interaction<br/>But now in two lines

يتطلب حرف السطر الجديد في اسم الدور تعريف اسم بديل:

كود
                            
نسخ
تضمين
sequenceDiagram participant Alice as Alice<br/>Johnson Alice->John: Hello John,<br/>how are you? Note over Alice,John: A typical interaction<n/>But now in two lines

حلقة

في مخطط التسلسل، يمكن التعبير عن الحلقة بالرمز التالي.

                            
نسخ
تضمين
loop Loop text ... statements ... end

راجع المثال التالي:

كود
                            
نسخ
تضمين
sequenceDiagram Alice->John: Hello John, how are you? loop Every minute John-->Alice: Great! end

بديل

في مخطط التسلسل، يمكن التعبير عن مسار بديل بالرمز.

                            
نسخ
تضمين
alt Describing text... statements else statements end

或者如果存在可选序列:

                            
نسخ
تضمين
opt Describing text... statements end

راجع المثال التالي:

كود
                            
نسخ
تضمين
sequenceDiagram Alice->>Bob: Hello Bob, how are you? alt is sick Bob->>Alice: Not so good :( else is well Bob->>Alice: Feeling fresh like a daisy end opt Extra response Bob->>Alice: Thanks for asking end

متوازٍ

يمكن التعبير عن الإجراءات التي تحدث بالتوازي بالرمز التالي.

كود
                            
نسخ
تضمين
par Action 1 statements and Action 2 statements and Action N statements end

راجع المثال التالي:

كود
                            
نسخ
تضمين
sequenceDiagram par Alice to Bob Alice->>Bob: Hello guys! and Alice to John Alice->>John: Hello guys! end Bob-->>Alice: Hi Alice! John-->>Alice: Hi Alice!

يمكن أيضًا تضمين كتل متوازية.

كود
                            
نسخ
تضمين
sequenceDiagram par Alice to Bob Alice->>Bob: Go help John and Alice to John Alice->>John: I want this done today par John to Charlie John->>Charlie: Can we do this today? and John to Diana John->>Diana: Can you help us today? end end

منطقة حرجة

يمكن إظهار الإجراءات التي يجب تنفيذها تلقائيًا عبر جعلها مشروطة بحالات مختلفة.

ويتم ذلك بالرمز التالي:

                            
نسخ
تضمين
critical [Action that must be performed] ... statements ... option [Circumstance A] ... statements ... option [Circumstance B] ... statements ... end

راجع المثال التالي:

كود
                            
نسخ
تضمين
sequenceDiagram critical Establish a connection to the DB Service-->DB: connect option Network timeout Service-->Service: Log error option Credentials rejected Service-->Service: Log different error end

ومن الممكن أيضًا ألّا يوجد أي خيار على الإطلاق.

كود
                            
نسخ
تضمين
critical Establish a connection to the DB Service-->DB: connect end

يمكن أيضًا تضمين هذه الكتلة الحرجة، وهو ما يكافئ عبارة par الواردة أعلاه.

مقاطعة

يمكن الإشارة إلى توقف التسلسل في المسار، ويُستخدم عادةً لنمذجة الحالات الاستثنائية.

ويتم ذلك بالرمز التالي:

                            
نسخ
تضمين
break [something happened] ... statements ... end

راجع المثال التالي:

كود
                            
نسخ
تضمين
sequenceDiagram Consumer-->API: Book something API-->BookingService: Start booking process break when the booking process fails API-->Consumer: show failure end API-->BillingService: Start billing process

إبراز الخلفية

يمكن تعيين مستطيل خلفية ملوّن لإبراز المسار، ويتم ذلك بالرمز التالي:

                            
نسخ
تضمين
rect COLOR ... content ... end

تُعرَّف الألوان باستخدام صيغة rgb و rgba.

                            
نسخ
تضمين
rect rgb(0, 255, 0) ... content ... end
                            
نسخ
تضمين
rect rgba(0, 0, 255, .1) ... content ... end

راجع المثال التالي:

كود
                            
نسخ
تضمين
sequenceDiagram participant Alice participant John rect rgb(191, 178, 255) note right of Alice: Alice calls John. Alice->>+John: Hello John, how are you? rect rgb(142, 182, 89) Alice->>+John: John, can you hear me? John-->>-Alice: Hi Alice, I can hear you! end John-->>-Alice: I feel great! end Alice ->>+ John: Did you want to go to the game tonight? John -->>- Alice: Yeah! See you there.

تعليق

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

كود
                            
نسخ
تضمين
sequenceDiagram Alice->>John: Hello John, how are you? %% this is a comment John-->>Alice: Great!

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

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

كود
                            
نسخ
تضمين
sequenceDiagram A->>B: I #9829; you! B->>A: I #9829; you #infin; times more!

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

ولأن الفاصلة المنقوطة يمكن أن تحل محل حرف السطر الجديد لتعريف العلامة، فعند تضمين فاصلة منقوطة في نص الرسالة، تحتاج إلى استخدام (#59;).

ترقيم

يمكن إرفاق رقم تسلسلي بكل سهم في مخطط التسلسل. كما يلي:

كود
                            
نسخ
تضمين
sequenceDiagram autonumber Alice->>John: Hello John, how are you? loop HealthCheck John->>John: Fight against hypochondria end Note right of John: Rational thoughts! John-->>Alice: Great! John->>Bob: How about you? Bob-->>John: Jolly good!

قائمة المشارك

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

يمكن تكوين ذلك بإضافة سطر رابط واحد أو أكثر، بالتنسيق التالي:

                            
نسخ
تضمين
link <actor>: <link-label> @ <link-url>
كود
                            
نسخ
تضمين
sequenceDiagram participant Alice participant John link Alice: Dashboard @ https://dashboard.contoso.com/alice link Alice: Wiki @ https://wiki.contoso.com/alice link John: Dashboard @ https://dashboard.contoso.com/john link John: Wiki @ https://wiki.contoso.com/john Alice->>John: Hello John, how are you? John-->>Alice: Great! Alice-)John: See you later!

صيغة القائمة المتقدمة

هناك صيغة متقدمة تعتمد على تنسيق JSON. وإذا كنت متمكّنًا من تنسيق JSON، فيمكن استخدامها أيضًا.

يمكن التكوين بإضافة سطر رابط بالتنسيق التالي:

                            
نسخ
تضمين
links <actor>: <json-formatted link-name link-url pairs>

示例如下:

كود
                            
نسخ
تضمين
sequenceDiagram participant Alice participant John links Alice: {"Dashboard": "https://dashboard.contoso.com/alice", "Wiki": "https://wiki.contoso.com/alice"} links John: {"Dashboard": "https://dashboard.contoso.com/john", "Wiki": "https://wiki.contoso.com/john"} Alice->>John: Hello John, how are you? John-->>Alice: Great! Alice-)John: See you later!