State-Diagramme¶
State-Diagramme modellieren das Verhalten eines Systems oder einer Komponente: Zustaende, Uebergaenge zwischen ihnen, Verzweigungen und parallele Regionen. Diese Seite dokumentiert die diagrammtyp-spezifischen Sollwerte fuer State-Elemente.
Organismus: state (Zustand), [*] (Initial-/Final-Pseudo-Zustand), <<choice>> (Verzweigung), <<fork>> / <<join>> (Synchronisation), <<history>> (History-Pseudo-Zustand), zusammengesetzte Zustaende (composite state mit Regionen).
Globale Typografie-, Farb- und Rendering-Defaults gelten zusaetzlich: Globale Defaults · Farb-Token: Design Tokens.
Golden Sample: state.puml
Geltende Werte¶
Geltende Atome & Molekuele¶
| Mechanismus | Soll-Wert (Light) | Soll-Wert (Dark) |
|---|---|---|
Zustand (state) |
Hintergrund Blau-Tint #D7E9F4; Rahmen Primaer #00759E; LineThickness 1; RoundCorner 16; Label #000000 |
Hintergrund Dark Blau-Grau #22303C; Rahmen Primaer (Bright Sky) #77DDFF; LineThickness 1; RoundCorner 16; Label #D7E9F4 |
| Zusammengesetzter Zustand (composite) | Gleiche Fuellung/Rahmen wie state; Header = Zustandsname; Regionen mit -- trennbar |
Gleiche Fuellung/Rahmen wie state |
Initial / Final ([*]) |
Gefuellter Knoten Dark Grey #515151 (wie Activity StartColor/EndColor) |
Gefuellter Knoten Light Grey #CCCCCC (wie Activity StartColor/EndColor) |
Choice (<<choice>>) |
Raute; Hintergrund Primary Cyan #00A5E1; Rahmen Primaer #00759E (konsistent zu Activity-diamond) |
Raute; Hintergrund Primary Cyan #00A5E1; Rahmen Primaer (Bright Sky) #77DDFF |
Fork / Join (<<fork>> / <<join>>) |
Synchronisationsbalken Valid Green #6B9714 (konsistent zu Activity BarColor) |
Synchronisationsbalken Valid Green #B9D478 |
History (<<history>>) |
Pseudo-Knoten wie Initial/Final; Dark Grey #515151 / Light Grey #CCCCCC |
Pseudo-Knoten wie Initial/Final |
| Zustands-Beschreibung / interne Aktivitaet | AttributeFontColor #000000; AttributeFontSize 11 pt (gen2 skinparam state) |
AttributeFontColor #D7E9F4; AttributeFontSize 11 pt |
| Transition (Pfeil) | Pfeilfarbe Medium Grey #7A7A7A; Pfeilstaerke 1.5; Beschriftung 11 pt (globales arrow) |
Pfeilfarbe Medium Grey #7A7A7A; Pfeilstaerke 1.5; Beschriftung 11 pt |
Notiz (note) |
Hintergrund transparent; Rahmen Medium Grey #7A7A7A; 11 pt; linksbuendig (globales note) |
Hintergrund transparent; Rahmen Medium Grey #7A7A7A; 11 pt; linksbuendig |
Info
Hinweis: Zustaende erben die globale Form-Fuellung (Blau-Tint / Dark Blau-Grau) und den Primaer-Rahmen — identisch zu class, usecase und Activity-Aktionen. Initial/Final ([*]) und History-Pseudo-Zustaende sind wie Activity Start/End dunkel bzw. hell gefuellt (Dark Grey / Light Grey), nicht Primary Cyan. Choice-Punkte nutzen wie Activity-Entscheidungen die Akzentfarbe Primary Cyan.
Theme-Implementierung (v3)
In doubleslash/v3/puml-theme-*.puml:
- stateDiagram → state (nur BackGroundColor)
- diamond (Choice)
- activityBar (Fork/Join)
Rahmen, Typografie und Transitionen kommen von globalem element bzw. arrow.
StartColor, EndColor, AttributeFontColor und AttributeFontSize per Legacy-skinparam state.
Smoke Tests: state.v3-theme-light.puml · state.v3-theme-dark.puml.
Standard-Settings¶
Diese Direktive ist kein Theme-Styling, sondern eine verbindliche Autor-Setting fuer State-Diagramme. Sie gehoert nach dem Theme-Include und vor den Zustandsdeklarationen (wie in den Golden Samples).
| Setting | Soll | Wirkung | Ausnahme |
|---|---|---|---|
hide empty description |
setzen | Zustaende ohne Beschreibungstext werden als kompakte Box gerendert (ohne leeren Beschreibungsbereich). Diagramm wirkt ruhiger und CI-konform. | show empty description, wenn der leere Beschreibungsbereich bewusst sichtbar sein soll. |
Empfohlene Reihenfolge (direkt nach !theme / !include):
hide empty description
title [Projekt] — State: [Subject]
title darf vor oder nach weiteren Direktiven stehen; hide empty description SOLL vor dem Diagramminhalt gesetzt werden.
Element-Typen (Syntax)¶
| Zweck | Empfohlenes Element / Stereotyp | Hinweis |
|---|---|---|
| Zustand im Lebenszyklus | state "Name" as Id |
Abgerundetes Rechteck; Kurzbeschriftung; optional Beschreibung im Zustandskoerper (siehe SG-45) |
| Start / Ende des Automaten | [*] |
Initial: eingehende Transition von [*]; Final: ausgehend zu [*] |
| Bedingte Verzweigung | <<choice>> |
Raute; mehrere ausgehende Transitionen mit Guard-Bedingungen |
| Parallele Aufspaltung/-fuehrung | <<fork>> / <<join>> |
Synchronisationsbalken; nicht mit Activity-fork-Syntax verwechseln |
| History-Pseudo-Zustand | <<history>> / <<deepHistory>> |
Ruecksprung in uebergeordneten Zustand; sparsam einsetzen |
| Zusammengesetzter Zustand | state Name { ... } |
Gruppiert Unterzustaende; Regionen mit -- (siehe SG-40) |
| Transition mit Bedingung | --> / --> mit Label |
Beschriftung am Pfeil; Guard in eckigen Klammern nach UML-Konvention |
| Zwischenkommentar | note left of / note right of |
Erbt globales note-Styling |
Typografie¶
| Eigenschaft | Soll-Wert | Geltung |
|---|---|---|
| FontSize (Zustands-Label) | 12 pt | Standard-Fliesstext (globales element) |
| FontSize (Zustands-Beschreibung) | 11 pt | Interne Aktivitaeten / Attribute (AttributeFontSize) |
| FontColor (Zustands-Label) | Element-Labels #000000 / #D7E9F4 |
Beschriftung auf Blau-Tint-Fuellung |
| FontColor (Zustands-Beschreibung) | #000000 / #D7E9F4 (AttributeFontColor) |
Beschreibungstext im Zustandskoerper |
| ArrowFontSize | 11 pt | Beschriftungen an Transitionen |
Konfiguration¶
[SG-38] Pseudo-Zustaende typgerecht¶
Ebene: Syntax / Diagrammstruktur
Geltung: State
Regel: Initial-, Final-, Choice-, Fork-, Join- und History-Pseudo-Zustaende SOLLTEN mit den kanonischen PlantUML-Stereotypen modelliert werden — nicht als normale state-Rechtecke.
[*] --> Idle
state choice1 <<choice>>
state fork1 <<fork>>
state join1 <<join>>
state hist1 <<history>>
Idle --> [*]
[SG-39] Layout-Richtung¶
Ebene: Page
Geltung: State
Regel: State-Diagramme SOLLEN die globale Leserichtung top to bottom beibehalten — der Zustandsfluss laeuft von oben nach unten. left to right direction SOLLTE NICHT gesetzt werden, es sei denn, das Diagramm ist bewusst kompakt und horizontal lesbar.
Globaler Default ist top to bottom — siehe Globale Defaults — Richtung.
[SG-40] Zusammengesetzte Zustaende¶
Ebene: Syntax / Diagrammstruktur
Geltung: State
Regel: Logisch zusammengehoerende Unterzustaende SOLLTEN in einem zusammengesetzten state-Block gruppiert werden. Nebenlaeufige Regionen innerhalb eines composite state DUERFEN mit -- getrennt werden.
state "Bestellung" as Bestellung {
[*] --> Entwurf
Entwurf --> Freigegeben
--
[*] --> VersandOffen
VersandOffen --> Versendet
}
[SG-45] Leere Beschreibungen ausblenden¶
Ebene: Syntax / Diagrammstruktur
Geltung: State
Regel: State-Diagramme SOLLTEN hide empty description setzen. Zustaende ohne Beschreibungstext werden als kompakte Box dargestellt; Zustaende mit expliziter Beschreibung (State : Text oder mehrzeilige Beschreibung) behalten den Beschreibungsbereich.
hide empty description