|
1 | 1 | # Activity-Diagramme |
2 | 2 |
|
3 | | -**Organismus:** `partition`, `swimlane`. |
| 3 | +Activity-Diagramme modellieren die **Ablauf- und Prozesssicht**: Aktionen, ihre Reihenfolge, Entscheidungen, parallele Pfade und die Zustaendigkeit (Swimlanes / Partitions). Sie nutzen die [Activity-Beta-Syntax](https://plantuml.com/de/activity-diagram-beta) (`start`, `:Aktion;`, `if/else`, `repeat`, `fork`, `|Swimlane|`). Diese Seite dokumentiert die **diagrammtyp-spezifischen** Sollwerte fuer Activity-Elemente. |
| 4 | + |
| 5 | +**Organismus:** `:Aktion;` (Aktionsknoten), `diamond` (Entscheidungen aus `if`/`repeat`/`while`), `start` / `stop` / `end` (Start-/End-Knoten), `fork`/`join` (Synchronisationsbalken), `partition` (Gruppierung), `swimlane` (Verantwortungsspalten ueber `|Name|`). |
| 6 | + |
| 7 | +Globale Typografie-, Farb- und Rendering-Defaults gelten zusaetzlich: [Globale Defaults](../global-defaults.md) · Farb-Token: [Design Tokens](../design-tokens.md). |
4 | 8 |
|
5 | 9 | **Golden Samples:** |
6 | 10 |
|
7 | 11 | - [`activity_model.puml`](https://github.com/doubleSlashde/umltheme/blob/main/examples/gen2/remote_testing/activity_model.puml) |
8 | 12 | - [`piprocess.puml`](https://github.com/doubleSlashde/umltheme/blob/main/examples/gen2/remote_testing/piprocess.puml) |
| 13 | + |
| 14 | +=== "light" |
| 15 | + |
| 16 | + ```puml |
| 17 | + @startuml activitymodel |
| 18 | + !theme light from https://raw.githubusercontent.com/doubleSlashde/umltheme/refs/heads/main/doubleslash/v3/ |
| 19 | + |
| 20 | + title Activity-Diagramm |
| 21 | + |
| 22 | + |Swimlane 1| |
| 23 | + start |
| 24 | + :Aktion 1; |
| 25 | + :Aktion 2; |
| 26 | + note right |
| 27 | + Diese Notiz erlaeutert |
| 28 | + den Zwischenzustand |
| 29 | + end note |
| 30 | + |
| 31 | + |Swimlane 2| |
| 32 | + if (Alles OKAY?) then (nur zum Teil) |
| 33 | + :do more research; |
| 34 | + else (Ja) |
| 35 | + :do action; |
| 36 | + endif |
| 37 | + |
| 38 | + |Swimlane 1| |
| 39 | + partition Abschluss { |
| 40 | + :final execution; |
| 41 | + } |
| 42 | + stop |
| 43 | + @enduml |
| 44 | + ``` |
| 45 | + |
| 46 | +=== "dark" |
| 47 | + |
| 48 | + ```puml |
| 49 | + @startuml activitymodel |
| 50 | + !theme dark from https://raw.githubusercontent.com/doubleSlashde/umltheme/refs/heads/main/doubleslash/v3/ |
| 51 | + |
| 52 | + title Activity-Diagramm |
| 53 | + |
| 54 | + |Swimlane 1| |
| 55 | + start |
| 56 | + :Aktion 1; |
| 57 | + :Aktion 2; |
| 58 | + note right |
| 59 | + Diese Notiz erlaeutert |
| 60 | + den Zwischenzustand |
| 61 | + end note |
| 62 | + |
| 63 | + |Swimlane 2| |
| 64 | + if (Alles OKAY?) then (nur zum Teil) |
| 65 | + :do more research; |
| 66 | + else (Ja) |
| 67 | + :do action; |
| 68 | + endif |
| 69 | + |
| 70 | + |Swimlane 1| |
| 71 | + partition Abschluss { |
| 72 | + :final execution; |
| 73 | + } |
| 74 | + stop |
| 75 | + @enduml |
| 76 | + ``` |
| 77 | + |
| 78 | +## Geltende Werte |
| 79 | + |
| 80 | +### Geltende Atome & Molekuele |
| 81 | + |
| 82 | +<!-- markdownlint-disable MD060 --> |
| 83 | + |
| 84 | +| Mechanismus | Soll-Wert (Light) | Soll-Wert (Dark) | |
| 85 | +| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | |
| 86 | +| Aktion (`:Text;`) | Hintergrund Blau-Tint `#D7E9F4`; BorderThickness 0; RoundCorner 16; Label Element-Labels `#000000` | Hintergrund Dark Blau-Grau `#22303C`; BorderThickness 0; RoundCorner 16; Label Element-Labels `#D7E9F4` | |
| 87 | +| Entscheidung (`diamond`) | Hintergrund Primary Cyan `#00A5E1`; Rahmen Primaer `#00759E`; Label `#000000`; FontSize **11 pt** | Hintergrund Primary Cyan `#00A5E1`; Rahmen Primaer (Bright Sky) `#77DDFF`; Label `#000000`; FontSize **11 pt** | |
| 88 | +| Start / Stop / End | Gefuellter Knoten Dark Grey `#515151` (gen2 `StartColor`/`EndColor`) | Gefuellter Knoten Light Grey `#CCCCCC` | |
| 89 | +| Synchronisation (`fork`/`join`-Bar) | Balken Valid Green `#6B9714` (gen2 `BarColor` = Success) | Balken Valid Green `#B9D478` | |
| 90 | +| Partition (`partition`/`group`) | Rahmen Primaer `#00759E`; FontColor Primaer `#00759E`; Hintergrund Canvas (transparent); RoundCorner 16 | Rahmen Primaer (Bright Sky) `#77DDFF`; FontColor `#77DDFF`; Hintergrund Canvas (transparent); RoundCorner 16 | |
| 91 | +| Swimlane-Titel | Hintergrund Super Light Grey `#F8F8F8`; FontColor `#000000`; **16 pt**; Rahmen Light Grey `#C6C6C6`; BorderThickness 1 | Hintergrund Dark Surface `#2D2D2D`; FontColor `#D7E9F4`; **16 pt**; Rahmen Medium Light Grey `#B6B6B6`; BorderThickness 1 | |
| 92 | +| Pfeile (Kontrollfluss) | Pfeilfarbe Medium Grey `#7A7A7A`; Pfeilstaerke **1.5**; Beschriftung **11 pt** (globales `arrow`) | Pfeilfarbe Medium Grey `#7A7A7A`; Pfeilstaerke **1.5**; Beschriftung **11 pt** | |
| 93 | +| Notiz (`note`) | Hintergrund transparent; Rahmen Medium Grey `#7A7A7A`; **11 pt**; linksbuendig (globales `note`) | Hintergrund transparent; Rahmen Medium Grey `#7A7A7A`; **11 pt**; linksbuendig | |
| 94 | + |
| 95 | +Hinweis: Aktionsknoten erben die globale Form-Fuellung (Blau-Tint / Dark Blau-Grau) und den dezenten Rahmen (BorderThickness 0) — identisch zu `class`, `state`, `usecase`. Die Entscheidung (`diamond`) ist der einzige farblich hervorgehobene Akzent (Primary Cyan), damit Verzweigungen sofort lesbar sind. |
| 96 | + |
| 97 | +### Element-Typen (Syntax) |
| 98 | + |
| 99 | +| Zweck | Empfohlenes Element | Hinweis | |
| 100 | +| ------------------------ | ---------------------------------- | ------------------------------------------------------------------------------- | |
| 101 | +| Aktion / Prozessschritt | `:Text;` | Beta-Syntax; ein Schritt pro Zeile, abgeschlossen mit `;` | |
| 102 | +| Start / Ende des Flusses | `start` / `stop`/`end` | `start` einmal am Anfang; `stop` oder `end` an jedem terminierenden Pfad | |
| 103 | +| Entscheidung | `if/else/endif`, `repeat`, `while` | Wird als `diamond` gerendert (siehe [SG-36](#sg-36-entscheidungen-als-diamond)) | |
| 104 | +| Parallelitaet | `fork` / `fork again` / `end fork` | Synchronisationsbalken | |
| 105 | +| Verantwortung / Rolle | `\|Swimlane\|` | Spalte pro Rolle; Reihenfolge der Deklaration bestimmt Spaltenfolge | |
| 106 | +| Logische Gruppierung | `partition` / `group` | Rahmt zusammengehoerige Aktionen; `partition` traegt sichtbaren Titel | |
| 107 | +| Zwischenkommentar | `note left` / `note right` | Erbt globales `note`-Styling | |
| 108 | + |
| 109 | +### Typografie |
| 110 | + |
| 111 | +| Eigenschaft | Soll-Wert | Geltung | |
| 112 | +| ------------------------------- | ------------------------------------ | ---------------------------------------- | |
| 113 | +| **FontSize** (Aktion-Label) | **12 pt** | Standard-Fliesstext (globales `element`) | |
| 114 | +| **FontSize** (Diamond-Label) | **11 pt** | Beschriftung der Entscheidungsraute | |
| 115 | +| **FontSize** (Swimlane-Titel) | **16 pt** | Spaltenkopf der Swimlane | |
| 116 | +| **FontColor** (Aktion-Label) | Element-Labels `#000000` / `#D7E9F4` | Beschriftung auf Blau-Tint-Fuellung | |
| 117 | +| **FontColor** (Partition-Label) | Primaer `#00759E` / `#77DDFF` | Partition-Titel in Primaerfarbe | |
| 118 | +| **ArrowFontSize** | **11 pt** | Beschriftungen an Kontrollfluss-Pfeilen | |
| 119 | + |
| 120 | +## Konfiguration |
| 121 | + |
| 122 | +### [SG-33] Beta-Syntax verwenden |
| 123 | + |
| 124 | +**Ebene:** Syntax / Diagrammstruktur |
| 125 | +**Geltung:** Activity |
| 126 | + |
| 127 | +**Regel:** Activity-Diagramme **SOLLEN** die [Activity-Beta-Syntax](https://plantuml.com/de/activity-diagram-beta) nutzen (`start`, `:Aktion;`, `if/else`, `\|Swimlane\|`) — nicht die veraltete Syntax mit `(*)` und `-->`. Nur so greifen `activityDiagram`-Stylings korrekt. |
| 128 | + |
| 129 | +```plantuml |
| 130 | +start |
| 131 | +:Aktion; |
| 132 | +stop |
| 133 | +``` |
| 134 | + |
| 135 | +### [SG-34] Layout-Richtung |
| 136 | + |
| 137 | +**Ebene:** Page |
| 138 | +**Geltung:** Activity |
| 139 | + |
| 140 | +**Regel:** Activity-Diagramme **SOLLEN** die globale Leserichtung **top to bottom** beibehalten — der Kontrollfluss laeuft von oben nach unten, Swimlanes rendern als vertikale Spalten. `left to right direction` **SOLLTE NICHT** gesetzt werden, da es den Fluss-Lesefluss bricht. |
| 141 | + |
| 142 | +Globaler Default ist **top to bottom** — siehe [Globale Defaults — Richtung](../global-defaults.md#richtung-layout-logik). |
| 143 | + |
| 144 | +### [SG-35] Swimlanes und Partitions |
| 145 | + |
| 146 | +**Ebene:** Syntax / Diagrammstruktur |
| 147 | +**Geltung:** Activity |
| 148 | + |
| 149 | +**Regel:** Verantwortlichkeiten **SOLLTEN** ueber Swimlanes (`|Name|`) modelliert werden; thematisch zusammengehoerige Schritte **DUERFEN** zusaetzlich in einer `partition` gebuendelt werden. Swimlane-Farben **SOLLEN** dem Theme-Token folgen (Titel Super Light Grey / Dark Surface); individuelle Lane-Farben nur bei fachlicher Notwendigkeit ueber `|#Farbe|Name|`. |
| 150 | + |
| 151 | +```plantuml |
| 152 | +|Planung| |
| 153 | +:Angebot erstellen; |
| 154 | +|Entwicklung| |
| 155 | +:Umsetzung; |
| 156 | +``` |
| 157 | + |
| 158 | +### [SG-36] Entscheidungen als `diamond` |
| 159 | + |
| 160 | +**Ebene:** Stil / Rendering |
| 161 | +**Geltung:** Activity |
| 162 | + |
| 163 | +**Regel:** Entscheidungen (`if`/`repeat`/`while`) **SOLLEN** als Raute (`diamond`) dargestellt werden. Das Theme setzt dafuer `skinparam conditionStyle diamond`; in Autoren-Diagrammen ist keine zusaetzliche Direktive noetig. Die Raute nutzt als einziges Element die Akzentfarbe Primary Cyan. |
| 164 | + |
| 165 | +```plantuml |
| 166 | +skinparam conditionStyle diamond |
| 167 | +``` |
| 168 | + |
| 169 | +### [SG-37] Keine Hardcoded-Farben |
| 170 | + |
| 171 | +**Ebene:** Domain / Governance |
| 172 | +**Geltung:** Activity |
| 173 | + |
| 174 | +**Regel:** Aktionen, Entscheidungen und Partitions **SOLLEN** die Theme-Defaults nutzen. Inline-Farben (`:Aktion; #red`, `<<#blue>>`) **SOLLTEN** nur fuer bewusste fachliche Hervorhebung (z. B. kritische Pfade) eingesetzt werden — nicht zur generellen Umfaerbung. Farbwerte folgen den [Design Tokens](../design-tokens.md), nicht beliebigen Hex-Werten. |
0 commit comments