Prozess Typ
Grafischer Ausdruck
Denken Typ
Strukturierter Ausdruck
Notizen Typ
Effizienter Ausdruck

FlussdiagrammSyntax

Grunddefinition

Ein Flussdiagramm besteht aus Knoten (geometrischen Formen) und Verbindungslinien (Pfeilen oder Linien). Der Mermaid-Code definiert, wie Knoten und Verbindungslinien aufgebaut werden, und unterstützt verschiedene Pfeiltypen, mehrdirektionale Pfeile sowie beliebige Links zu Untergraphen.

Warnung Wenn du das Wort "end" in einem Flussdiagramm-Knoten verwendest, schreibe den ersten Buchstaben oder das ganze Wort groß (zum Beispiel: "End" oder "END"). Die Eingabe von "end" in Kleinbuchstaben führt zu einem Fehler im Flussdiagramm.

Warnung Wenn du beim Verbinden von Flussdiagramm-Knoten die Buchstaben "o" oder "x" als Anfangsbuchstaben verwendest, füge vor dem Buchstaben ein Leerzeichen hinzu oder schreibe den Buchstaben groß (zum Beispiel: "dev--- ops", "dev---Ops").

Ein Knoten (Standard)

Code
                            
Kopieren
Einbetten
--- title: Node --- flowchart LR id
Informationen

id ist der Inhalt, der im Kästchen angezeigt wird.

Tipp

Für die Syntax zum Erstellen eines Flussdiagramms kannst du außer flowchart auch graph verwenden.

Ein Knoten mit Text

Du kannst auch einen vom id abweichenden Text für das Kästchen festlegen. Wenn du dies mehrmals ausführst, übernimmt das System den zuletzt für diesen Knoten angegebenen Text. Wenn später außerdem eine Verbindungslinie für den Knoten definiert wird, kann die Textdefinition weggelassen werden; beim Rendern des Kästchens wird der zuvor definierte Text verwendet.

Code
                            
Kopieren
Einbetten
--- title: Node with text --- flowchart LR id1[This is the text in the box]

Unicode-Text

Schließe den Unicode-Text in doppelte Anführungszeichen ein.

Code
                            
Kopieren
Einbetten
flowchart LR id["This ❤ Unicode"]

Markdown-Format

Schließe den Markdown-Text in doppelte Anführungszeichen und Backticks ein

Code
                            
Kopieren
Einbetten
flowchart LR markdown["`This **is** _Markdown_`"] newLines["`Line1 Line 2 Line 3`"] markdown --> newLines

Richtung

Deklariert die Richtung des Flussdiagramms

Gibt an, dass das Flussdiagramm von oben nach unten angeordnet ist (TD oder TB)

Code
                            
Kopieren
Einbetten
flowchart TD Start --> Stop

Die Richtungen des Flussdiagramms umfassen:

  • TB - von oben nach unten
  • TD - von oben nach unten (identisch mit "von oben nach unten")
  • BT - von unten nach oben
  • RL - von rechts nach links
  • LR - von links nach rechts

Knotenform

Abgerundetes Rechteck

Code
                            
Kopieren
Einbetten
flowchart LR id1(This is the text in the box)

Stadionform

Code
                            
Kopieren
Einbetten
flowchart LR id1([This is the text in the box])

Unterprogramm

Code
                            
Kopieren
Einbetten
flowchart LR id1[[This is the text in the box]]

Datenbank

Code
                            
Kopieren
Einbetten
flowchart LR id1[(Database)]

Kreis

Code
                            
Kopieren
Einbetten
flowchart LR id1((This is the text in the circle))

Asymmetrische Form

Code
                            
Kopieren
Einbetten
flowchart LR id1>This is the text in the box]

Raute

Code
                            
Kopieren
Einbetten
flowchart LR id1{This is the text in the box}

Sechseck

Code
                            
Kopieren
Einbetten
flowchart LR id1{{This is the text in the box}}

Parallelogramm

Code
                            
Kopieren
Einbetten
flowchart TD id1[/This is the text in the box/]

Umgekehrtes Parallelogramm

Code
                            
Kopieren
Einbetten
flowchart TD id1[\This is the text in the box\]

Trapez

Code
                            
Kopieren
Einbetten
flowchart TD A[/ProcessOn\]

Umgekehrtes Trapez

Code
                            
Kopieren
Einbetten
flowchart TD B[\ProcessOn/]

Doppelkreis

Code
                            
Kopieren
Einbetten
flowchart TD id1(((This is the text in the circle)))

Erweiterung der Knotenformen im Mermaid-Flussdiagramm

Mermaid führt 30 neue Formen ein, um die Flexibilität und Präzision bei der Erstellung von Flussdiagrammen zu erhöhen. Diese neuen Formen bieten mehr Optionen, um Prozesse, Entscheidungen, Ereignisse, Datenspeicher sowie andere Elemente im Flussdiagramm anschaulich darzustellen, wodurch Klarheit und semantische Bedeutung verbessert werden.

Neue Syntax zur Formdefinition

Mermaid unterstützt jetzt eine allgemeine Syntax zur Definition von Formtypen, um der wachsenden Anzahl von Formen gerecht zu werden. Diese Syntax ermöglicht es dir, einem Knoten in einem klaren und flexiblen Format eine bestimmte Form zuzuweisen.

                            
Kopieren
Einbetten
A@{ shape: rect }

Diese Syntax erstellt Knoten A als Rechteck. Er wird genauso gerendert wie [A] oder A.

Vollständige Liste der Knotenformen

Im Folgenden findest du eine vollständige Liste der neu eingeführten Knotenformen mit ihrer jeweiligen Bedeutung, Kurzbezeichnung und ihrem Alias:

Semantischer Name Diagrammsyntax Syntax-Kurzbezeichnung Syntax-Alternative Detaillierte Beschreibung
Karte Notched Rectangle notch-rect card, notched-rectangle Stellt eine Karte dar
Sortieren Hourglass hourglass collate Stellt eine Sortieroperation dar
Kommunikationsverbindung Lightning Bolt bolt com-link, lightning-bolt Kommunikationsverbindung
Kommentar Curly Brace brace brace-l, comment Kommentar hinzufügen
Kommentar rechts Curly Brace brace-r Kommentar hinzufügen
Kommentar mit geschweiften Klammern auf beiden Seiten Curly Braces braces Kommentar hinzufügen
Dateneingabe oder -ausgabe Lean Right lean-r in-out, lean-right Stellt Eingabe oder Ausgabe dar
Dateneingabe oder -ausgabe Lean Left lean-l lean-left, out-in Stellt Ausgabe oder Eingabe dar
Datenbank Cylinder cyl cylinder, database, db Datenbankspeicher
Entscheidung Diamond diam decision, diamond, question Entscheidungsschritt
Verzögerung Half-Rounded Rectangle delay half-rounded-rectangle Stellt eine Verzögerung dar
Direktzugriffsspeicher Horizontal Cylinder h-cyl das, horizontal-cylinder Direktzugriffsspeicher
Plattenspeicher Lined Cylinder lin-cyl disk, lined-cylinder Plattenspeicher
Anzeige Curved Trapezoid curv-trap curved-trapezoid, display Stellt dar, dass Informationen auf Geräten wie Bildschirmen oder Terminals angezeigt werden
Aufteilungsverarbeitung Divided Rectangle div-rect div-proc, divided-process, divided-rectangle Form für die Aufteilungsverarbeitung
Dokument Document doc document Stellt ein Dokument dar
Ereignis Rounded Rectangle rounded event Stellt ein Ereignis dar
Extrahieren Triangle tri extract, triangle Extraktionsprozess
Verzweigung/Zusammenführung Filled Rectangle fork join Verzweigung oder Zusammenführung im Flussdiagramm
Interner Speicher Window Pane win-pane internal-storage, window-pane Interner Speicher
Verbindungspunkt Filled Circle f-circ filled-circle, junction Verbindungspunkt
Dokument mit Linie Lined Document lin-doc lined-document Dokument mit Linie
Linien-/Schattenprozess Lined Rectangle lin-rect lin-proc, lined-process, lined-rectangle, shaded-process Prozessform mit Linie
Schleifenbegrenzung Trapezoidal Pentagon notch-pent loop-limit, notched-pentagon Schritt der Schleifenbegrenzung
Manuelle Datei Flipped Triangle flip-tri flipped-triangle, manual-file Manuelle Dateioperation
Manuelle Eingabe Sloped Rectangle sl-rect manual-input, sloped-rectangle Schritt der manuellen Eingabe
Manuelle Operation Trapezoid Base Top trap-t inv-trapezoid, manual, trapezoid-top Stellt eine manuelle Aufgabe dar
Mehrere Dokumente Stacked Document docs documents, st-doc, stacked-document 多个文档
Mehrere Prozesse Stacked Rectangle st-rect processes, procs, stacked-rectangle 多个进程
Unregelmäßige Form Odd odd Unregelmäßige Form
Lochstreifen Flag flag paper-tape Lochstreifen
Vorbereitungsbedingung Hexagon hex hexagon, prepare Vorbereitungs- oder Bedingungsschritt
Vorrangige Aktion Trapezoid Base Bottom trap-b priority, trapezoid, trapezoid-bottom Vorrangige Aktion
Verarbeitung Rectangle rect proc, process, rectangle Standard-Verarbeitungsform
Start Circle circle circ Startpunkt
Start Small Circle sm-circ small-circle, start Kleiner Kreis als Startpunkt
Stopp Double Circle dbl-circ double-circle Stellt einen Stopppunkt dar
Stopp Framed Circle fr-circ framed-circle, stop Stellt einen Stopppunkt dar
Daten speichern Bow Tie Rectangle bow-rect bow-tie-rectangle, stored-data Daten speichern
Unterprogramm Framed Rectangle fr-rect framed-rectangle, subproc, subprocess, subroutine Unterprogramm, Subroutine
Zusammenfassung Crossed Circle cross-circ crossed-circle, summary Zusammenfassung
Markiertes Dokument Tagged Document tag-doc tagged-document Markiertes Dokument
Standardprozess Tagged Rectangle tag-rect tag-proc, tagged-process, tagged-rectangle 已标准进程
Endpunkt Stadium stadium pill, terminal Endpunkt
Textblock Text Block text Textblock

Im Folgenden findest du ein Beispiel für einen Flussdiagramm-Code, der die neu eingeführten Formen verwendet:

Code
                            
Kopieren
Einbetten
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"}

Prozess

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: rect, label: "This is a process" }

Ereignis

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: rounded, label: "This is an event" }

Unterprozess

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: subproc, label: "This is a subprocess" }

Datenbank (Zylinder)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: cyl, label: "Database" }

Start (Kreis)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: circle, label: "Start" }

Unregelmäßige Form

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: odd, label: "Odd shape" }

Entscheidung (Raute)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: diamond, label: "Decision" }

Vorbereitungsbedingung (Sechseck)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: hex, label: "Prepare conditional" }

Dateneingabe/-ausgabe (nach rechts geneigt)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: lean-r, label: "Input/Output" }

Dateneingabe/-ausgabe (nach links geneigt)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: lean-l, label: "Input/Output" }

Vorrangige Aktion (Trapez)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: trap-b, label: "Priority action" }

Manuelle Operation (umgekehrtes Trapez)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: trap-t, label: "Manual operation" }

Stopp (Doppelkreis)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: dbl-circ, label: "Stop" }

Textblock

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: text, label: "This is a text block" }

Karte (Rechteck mit Kerbe)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: notch-rect, label: "Card" }

Prozess mit Linie/Schatten

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: lin-rect, label: "Lined process" }

Start (kleiner Kreis)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: sm-circ, label: "Small start" }

Stopp (Kreis mit Rahmen)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: framed-circle, label: "Stop" }

Verzweigung/Zusammenführung (langes Rechteck)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: fork, label: "Fork or Join" }

Sortieren (Sanduhr)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: hourglass, label: "Collate" }

Kommentar (geschweifte Klammern)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: comment, label: "Comment" }

Kommentar rechts (rechte geschweifte Klammer)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: brace-r, label: "Comment" }

Kommentar (auf beiden Seiten mit Klammern)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: braces, label: "Comment" }

Kommunikationsverbindung (Blitz)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: bolt, label: "Communication link" }

Dokument

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: doc, label: "Document" }

Verzögerung (halb abgerundetes Rechteck)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: delay, label: "Delay" }

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

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: das, label: "Direct access to storage" }

Plattenspeicher (Zylinder mit Rille)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: lin-cyl, label: "Disk storage" }

Anzeige (Anzeigeform)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: curv-trap, label: "Display" }

Aufteilungsverarbeitung (geteiltes Rechteck)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: div-rect, label: "Divided process" }

Extrahieren (kleines Dreieck)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: tri, label: "Extract" }

Interner Speicher (Fensterbereich)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: win-pane, label: "Internal storage" }

Verbindungspunkt (ausgefüllter Kreis)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: f-circ, label: "Connect" }

Dokument mit Linie

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: lin-doc, label: "Lined document" }

Schleifenbegrenzung (Fünfeck mit Kerbe)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: notch-pent, label: "Loop limit" }

Manuelle Datei (umgedrehtes Dreieck)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: flip-tri, label: "Manual file" }

Manuelle Eingabe (rechtwinkliges Trapez)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: sl-rect, label: "Manual input" }

Mehrere Dokumente (gestapelte Dokumente)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: docs, label: "Multi-document" }

Mehrere Prozesse (gestapelte Rechtecke)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: processes, label: "Multiple processes" }

Lochstreifen (Fahne)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: flag, label: "Paper tape" }

Daten speichern (Schleifenrechteck)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: bow-rect, label: "Data stored" }

Zusammenfassung (Kreis mit Kreuz)

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: cross-circ, label: "Summary" }

Markiertes Dokument

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: tag-doc, label: "Tagged document" }

Markierter Prozess

Code
                            
Kopieren
Einbetten
flowchart TD A@{ shape: tag-rect, label: "Tagged process" }

Besondere Formen im Mermaid-Flussdiagramm

Mermaid führt außerdem Bilder ein, um dein Flussdiagramm zu verbessern. Sie ermöglichen es dir, Bilder direkt in das Flussdiagramm einzubinden, wodurch mehr visueller Kontext und Klarheit entsteht.

Bildform

Du kannst image verwenden, um ein Bild in ein Flussdiagramm einzufügen. Die Syntax zur Definition eines Bildes lautet wie folgt:

                            
Kopieren
Einbetten
flowchart TD A@{ img: "https://www.processon.com/image.png", label: "Image Label", pos: "t", w: 60, h: 60, constraint: "off" }

Parameter

  • img: Die URL-Adresse des anzuzeigenden Bildes.
  • label: Das mit dem Bild verknüpfte Textlabel, das eine beliebige Zeichenkette sein kann. Wenn es nicht definiert ist, wird kein Label angezeigt.
  • pos: Die Position des Labels. Wenn sie nicht definiert ist, befindet sich das Label standardmäßig am unteren Rand des Bildes.
  • w: Die Breite des Bildes. Wenn sie nicht definiert ist, wird standardmäßig die natürliche Breite des Bildes verwendet.
  • h: Die Höhe des Bildes. Wenn sie nicht definiert ist, wird standardmäßig die natürliche Höhe des Bildes verwendet.
  • constraint: Legt fest, ob das Bild die Knotengröße einschränkt. Diese Einstellung stellt außerdem sicher, dass das Bild sein ursprüngliches Seitenverhältnis beibehält und die Höhe an die Breite angepasst wird. Wenn sie nicht definiert ist, ist der Standardwert off.

Bilder verleihen deinem Flussdiagramm zusätzliche Flexibilität und visuelle Attraktivität und machen es informativer und ansprechender.

Verbindungen zwischen Knoten

Knoten können über Verbindungslinien und Pfeile verbunden werden. Es gibt verschiedene Linktypen, und es kann auch eine Zeichenkette an einen Link angehängt werden.

Link mit Pfeil

Code
                            
Kopieren
Einbetten
flowchart LR A-->B

Ein offener Link

Code
                            
Kopieren
Einbetten
flowchart LR A --- B

Link mit Text

Code
                            
Kopieren
Einbetten
flowchart LR A-- This is the text! ---B

oder

Code
                            
Kopieren
Einbetten
flowchart LR A --- | This is the text| B

Link mit Pfeil und Text

Code
                            
Kopieren
Einbetten
flowchart LR A-->|text|B

oder

Code
                            
Kopieren
Einbetten
flowchart LR A-- text -->B

Gestrichelter Link

Code
                            
Kopieren
Einbetten
flowchart LR A-.->B;

Gestrichelter Link mit Text

Code
                            
Kopieren
Einbetten
flowchart LR A-. text .->B;

Dicker Link

Code
                            
Kopieren
Einbetten
flowchart LR A ==> B

Dicker Link mit Text

Code
                            
Kopieren
Einbetten
flowchart LR A == |text| ==> B

Unsichtbarer Link

Code
                            
Kopieren
Einbetten
flowchart LR A ~~~ B

Verkettete Verbindung von Links

Code
                            
Kopieren
Einbetten
flowchart LR A -- text --> B -- text2 --> C

Du kannst auch mehrere Knotenlinks in derselben Zeile deklarieren, wie unten gezeigt:

Code
                            
Kopieren
Einbetten
flowchart LR a --> b & c--> d

Du kannst auch eine Abhängigkeit beschreiben, wie im folgenden Code:

Code
                            
Kopieren
Einbetten
flowchart LR a --> b & c--> d & e--> f

Wenn du dasselbe Diagramm mit der grundlegenden Syntax beschreibst, sind 8 Zeilen erforderlich. Beachte, dass eine übermäßige Verwendung dieser Methode das Lesen von Flussdiagrammen im Markdown-Format erschweren kann.

Code
                            
Kopieren
Einbetten
flowchart TB a --> b a --> c b --> d b --> e c --> d c --> e d --> f e --> f

ID zu einer Verbindungslinie hinzufügen

Mermaid unterstützt jetzt das Hinzufügen einer ID zu Verbindungslinien, ähnlich wie das Anhängen von IDs und Metadaten an Knoten. Diese Funktion legt die Grundlage für erweiterte Stil-, Klassen- und Animationsfunktionen für Verbindungslinien.

Syntax:

Um einer Verbindungslinie eine ID hinzuzufügen, stelle der Verbindungslinien-Syntax die ID voran, unmittelbar gefolgt vom Zeichen @. Zum Beispiel:

Code
                            
Kopieren
Einbetten
flowchart LR A e1@--> B

In diesem Beispiel ist e1 die ID der Verbindungslinie, die A und B verbindet. Du kannst diese ID in nachfolgenden Definitions- oder Stil-Anweisungen genauso verwenden wie einen Knoten.

Animation aktivieren

Nachdem du einer Verbindungslinie eine ID hinzugefügt hast, kannst du die Animation der Verbindungslinie aktivieren, indem du ihre Eigenschaften definierst:

Code
                            
Kopieren
Einbetten
flowchart LR A e1@==> B e1@{ animate: true }

Dies teilt Mermaid mit, dass die Verbindungslinie e1 animiert ist.

Animationstyp auswählen

In der ersten Version werden zwei Animationsgeschwindigkeiten unterstützt: fast und slow. Die Auswahl eines bestimmten Animationstyps ist eine einfache Möglichkeit, die Animation zu aktivieren und die Animationsgeschwindigkeit auf einmal festzulegen.

Code
                            
Kopieren
Einbetten
flowchart LR A e1@--> B e1@{ animation: fast }

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

Animieren mit der classDef-Anweisung

Du kannst eine Verbindungslinie auch animieren, indem du ihr eine Klasse zuweist und dann die Animationseigenschaften in einer classDef-Anweisung definierst. Zum Beispiel:

Code
                            
Kopieren
Einbetten
flowchart LR A e1@--> B classDef animate stroke-dasharray: 9,5,stroke-dashoffset: 900,animation: dash 25s linear infinite; class e1 animate

In diesem Code:

  • e1@--> 创建了一个 ID 为 e1 的连接线
  • classDef animate definiert eine Klasse namens animate mit Stil- und Animationseigenschaften.
  • class e1 animate wendet die Klasse animate auf die Verbindungslinie e1 an.

Hinweis zum Escapen von Kommas: Denke beim Festlegen der Eigenschaft stroke-dasharray daran, das Komma als , zu escapen, da das Komma in den Stildefinitionen von Mermaid als Trennzeichen verwendet wird.

Neuer Pfeiltyp

Unterstützt neue Pfeiltypen

  • Verbindungslinie mit gefülltem Kreis
  • Verbindungslinie mit Kreuzmarkierung

Verbindungslinie mit gefülltem Kreis

Code
                            
Kopieren
Einbetten
flowchart LR A --o B

Verbindungslinie mit Kreuzmarkierung

Code
                            
Kopieren
Einbetten
flowchart LR A --x B

Mehrdirektionaler Pfeil

Du kannst mehrdirektionale Pfeile verwenden, zum Beispiel:

Code
                            
Kopieren
Einbetten
flowchart LR A o--o B B <--> C C x--x D

Länge der Verbindungslinie

Jeder Knoten im Flussdiagramm wird abhängig von den mit ihm verbundenen Knoten einer Ebene im gerenderten Diagramm zugewiesen, d. h. einer vertikalen oder horizontalen Ebene (je nach Richtung des Flussdiagramms). Standardmäßig kann ein Link beliebig viele Ebenen überspannen, aber du kannst durch Hinzufügen zusätzlicher Bindestriche in der Verbindungsdefinition verlangen, dass eine bestimmte Verbindung länger ist als andere.

In diesem Beispiel werden der Verbindung von Knoten B zu Knoten E zwei zusätzliche Bindestriche hinzugefügt, sodass sie zwei Ebenen mehr überspannt als ein normaler Link:

Code
                            
Kopieren
Einbetten
flowchart TD A[Start] --> B{Is it?} B -->|Yes| C[OK] C --> D[Rethink] D --> B B ---->|No| E[End]
Hinweis: Eine Verbindung kann länger sein als die vom Rendering-Modul angeforderte Anzahl von Ebenen, um anderen Anforderungen gerecht zu werden.

Wenn das Verbindungslabel in der Mitte der Verbindung geschrieben wird, müssen auf der rechten Seite der Verbindung zusätzliche Bindestriche hinzugefügt werden. Dieses Beispiel ist gleichwertig zum vorherigen Beispiel:

Code
                            
Kopieren
Einbetten
flowchart TD A[Start] --> B{Is it?} B -->|Yes| C[OK] C --> D[Rethink] D --> B B -- No ----> E[End]

Bei gepunkteten Linien oder dicken Links sind die hinzuzufügenden Zeichen das Gleichheitszeichen oder der Punkt, wie in der folgenden Tabelle gezeigt:

Länge 1 2 3
Normale Verbindung --- ---- -----
Normale Verbindung mit Pfeil --> ---> ---->
Dicke Verbindung === ==== =====
Dicke Verbindung mit Pfeil ==> ===> ====>
Gepunktete Linie -.- -..- -...-
Gepunktete Linie mit Pfeil -.- -..-> -...->

Sonderzeichen

Du kannst Text in Anführungszeichen setzen, um problematischere Zeichen zu rendern. Wie im folgenden Beispiel gezeigt:

Code
                            
Kopieren
Einbetten
flowchart LR id1["This is the (text) in the box"]

Entity-Kodierung zum Escapen von Zeichen

Zeichen können mit der im Beispiel gezeigten Syntax escaped werden.

Code
                            
Kopieren
Einbetten
flowchart LR A["A double quote:#quot;"] --> B["A dec char:#9829;"]

Die angegebenen Zahlen sind dezimal, daher kann # als #35 kodiert werden. Die Verwendung von HTML-Zeichennamen wird ebenfalls unterstützt.

Untergraph

                            
Kopieren
Einbetten
subgraph title graph definition end

Hier ist ein Beispiel:

Code
                            
Kopieren
Einbetten
flowchart TB c1-->a2 subgraph one a1-->a2 end subgraph two b1-->b2 end subgraph three c1-->c2 end

Du kannst auch eine id für den Untergraphen festlegen.

Code
                            
Kopieren
Einbetten
flowchart TB c1-->a2 subgraph ide1 [one] a1-->a2 end

Flussdiagramm

Bei Diagrammen vom Typ Flussdiagramm kannst du wie im folgenden Flussdiagramm auch Verbindungslinien zu und von Untergraphen festlegen.

Code
                            
Kopieren
Einbetten
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

Richtung des Untergraphen

Bei Verwendung des Diagrammtyps Flussdiagramm kannst du mit einer Richtungsanweisung die Rendering-Richtung des Untergraphen festlegen, wie unten gezeigt:

Code
                            
Kopieren
Einbetten
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

Einschränkung

Wenn ein Knoten des Untergraphen mit dem Äußeren verbunden ist, wird die Richtung des Untergraphen ignoriert. Andernfalls erbt der Untergraph die Richtung des übergeordneten Diagramms:

Code
                            
Kopieren
Einbetten
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-Zeichenkette

Markdown-Zeichenketten verbessern Flussdiagramme und Mindmaps durch einen flexibleren Zeichenkettentyp, der Textformatierungsoptionen wie Fett und Kursiv unterstützt und Text innerhalb von Labels automatisch umbrechen kann.

Code
                            
Kopieren
Einbetten
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
  • Um Text fett zu machen, verwende zwei Sternchen (**) vor und nach dem Text.
  • Für Kursiv wird ein einzelnes Sternchen (*) vor und nach dem Text verwendet.
  • Bei herkömmlichen Zeichenketten musst du ein <br>-Tag hinzufügen, damit der Text im Knoten umgebrochen wird. Markdown-Zeichenketten brechen jedoch bei zu langem Text automatisch um, und du kannst einfach einen Zeilenumbruch statt eines <br>-Tags verwenden, um eine neue Zeile zu beginnen.

Diese Funktion gilt für Knotenlabels, Verbindungslinien-Labels und Untergraphen-Labels

Der automatische Umbruch kann durch Verwendung einer bestimmten Syntax deaktiviert werden

Code
                            
Kopieren
Einbetten
--- config: markdownAutoWrap: false --- graph LR

Kommentar

In einem Flussdiagramm können Kommentare eingegeben werden, die der Editor ignoriert. Ein Kommentar muss eine eigene Zeile einnehmen und mit einem doppelten Prozentzeichen (%%) beginnen. Jeder Text vom Kommentarbeginn bis zur nächsten Zeile wird als Kommentar betrachtet, einschließlich jeglicher Diagrammsyntax.

Code
                            
Kopieren
Einbetten
flowchart LR %% this is a comment A -- text --> B{node} A -- text --> B -- text2 --> C

Stil und Klasse

Link-Stil

Der Link-Stil kann festgelegt werden. Zum Beispiel möchtest du vielleicht einen Link gestalten, der im Ablauf rückwärts verläuft. Da Links im Gegensatz zu Knoten keine ID haben, muss auf andere Weise entschieden werden, welcher Stil für den Link verwendet werden soll. Verwende die Reihenfolgennummer bei der Definition des Links oder verwende den Standardwert, um ihn auf alle Links anzuwenden.

                            
Kopieren
Einbetten
linkStyle 3 stroke:#ff3,stroke-width:4px,color:red;

Du kannst mehreren Links auch Stile hinzufügen, indem du die Linknummern in einer einzigen Anweisung durch Kommas trennst:

                            
Kopieren
Einbetten
linkStyle 1,2,7 color:blue;

Kurvenstil der Verbindungslinie festlegen

Wenn die Standardmethode deine Anforderungen nicht erfüllt, kannst du den Kurvenstil für Verbindungslinien zwischen Elementen festlegen. Verfügbare Kurvenstile sind basis, bumpX, bumpY, cardinal, catmullRom, linear, monotoneX, monotoneY, natural, step, stepAfter und stepBefore.

Im folgenden Beispiel verwendet ein Diagramm von links nach rechts den Kurvenstil stepBefore.

                            
Kopieren
Einbetten
%%{ init: { 'flowchart': { 'curve': 'stepBefore' } } }%% graph LR

Knotenstil festlegen

Für Knoten kann ein bestimmter Stil festgelegt werden, zum Beispiel ein dickerer Rahmen oder eine andere Hintergrundfarbe.

Code
                            
Kopieren
Einbetten
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

Klasse

Bequemer als jedes Mal einen Stil zu definieren, ist es, eine Stilklasse zu definieren und diese Klasse an Knoten anzuhängen, die ein anderes Aussehen benötigen.

Die Klassendefinition sieht wie folgt aus:

                            
Kopieren
Einbetten
classDef className fill:pink,stroke:#333,stroke-width:4px;

Darüber hinaus kannst du in einer Anweisung Stile für mehrere Klassen definieren:

                            
Kopieren
Einbetten
classDef firstClassName,secondClassName font-size:12pt;

Das Anhängen einer Klasse an einen Knoten erfolgt wie folgt:

                            
Kopieren
Einbetten
class nodeId1 className;

Du kannst eine Klasse auch in einer Anweisung an eine Knotenliste anhängen:

                            
Kopieren
Einbetten
class nodeId1,nodeId2 className;

Zum Hinzufügen einer Klasse kannst du mit dem Operator ::: den Klassennamen an einen Knoten anhängen, wie unten gezeigt:

Code
                            
Kopieren
Einbetten
flowchart LR A:::someclass --> B classDef someclass fill:#f96

Diese Form kann beim Deklarieren mehrerer Links zwischen Knoten verwendet werden:

Code
                            
Kopieren
Einbetten
flowchart LR A:::foo & B:::bar --> C:::foobar classDef foo stroke:#f00 classDef bar stroke:#0f0 classDef foobar stroke:#00f

  • In Diagrammdeklarationen können Anweisungen jetzt auch ohne Semikolon enden. Ab Version 0.2.16 ist das Semikolon am Ende einer Diagrammanweisung nur noch optional. Daher ist die folgende Diagrammdeklaration genauso gültig wie die alte Diagrammdeklaration.
  • Zwischen Knoten und Links ist ein Leerzeichen erlaubt. Zwischen einem Knoten und seinem Text sowie zwischen einem Link und seinem Text sollte jedoch kein Leerzeichen stehen. Die alte Diagrammdeklaration ist weiterhin gültig, daher ist diese neue Funktion optional und dient der Verbesserung der Lesbarkeit.

Im Folgenden findest du die neue Deklaration der Verbindungslinie, die genauso gültig ist wie die alte Deklaration der Verbindungslinie.

Code
                            
Kopieren
Einbetten
flowchart LR A[Hard edge] -->|Link text| B(Round edge) B --> C{Decision} C -->|One| D[Result one] C -->|Two| E[Result two]