sirena 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/workflows/build_deploy.yml +59 -0
- data/.github/workflows/links.yml +85 -0
- data/.github/workflows/rake.yml +15 -0
- data/.github/workflows/release.yml +27 -0
- data/.gitignore +68 -0
- data/.rspec +3 -0
- data/.rubocop.yml +14 -0
- data/.rubocop_todo.yml +70 -0
- data/ARCHITECTURE.md +744 -0
- data/Gemfile +12 -0
- data/LICENSE +25 -0
- data/README.adoc +357 -0
- data/Rakefile +11 -0
- data/docs/.gitignore +1 -0
- data/docs/Gemfile +13 -0
- data/docs/_config.yml +182 -0
- data/docs/_diagram_types/architecture-diagram.adoc +314 -0
- data/docs/_diagram_types/block-diagram.adoc +345 -0
- data/docs/_diagram_types/c4-diagram.adoc +559 -0
- data/docs/_diagram_types/class-diagram.adoc +816 -0
- data/docs/_diagram_types/er-diagram.adoc +719 -0
- data/docs/_diagram_types/error-diagram.adoc +114 -0
- data/docs/_diagram_types/examples/flowchart-examples.adoc +29 -0
- data/docs/_diagram_types/flowchart.adoc +488 -0
- data/docs/_diagram_types/gantt-chart.adoc +502 -0
- data/docs/_diagram_types/git-graph.adoc +600 -0
- data/docs/_diagram_types/index.adoc +192 -0
- data/docs/_diagram_types/info-diagram.adoc +103 -0
- data/docs/_diagram_types/kanban-diagram.adoc +262 -0
- data/docs/_diagram_types/mindmap.adoc +603 -0
- data/docs/_diagram_types/packet-diagram.adoc +378 -0
- data/docs/_diagram_types/pie-chart.adoc +335 -0
- data/docs/_diagram_types/quadrant-chart.adoc +406 -0
- data/docs/_diagram_types/radar-chart.adoc +528 -0
- data/docs/_diagram_types/requirement-diagram.adoc +416 -0
- data/docs/_diagram_types/sankey-diagram.adoc +357 -0
- data/docs/_diagram_types/sequence-diagram.adoc +664 -0
- data/docs/_diagram_types/state-diagram.adoc +658 -0
- data/docs/_diagram_types/timeline.adoc +352 -0
- data/docs/_diagram_types/treemap-diagram.adoc +462 -0
- data/docs/_diagram_types/user-journey.adoc +602 -0
- data/docs/_features/index.adoc +129 -0
- data/docs/_guides/cli-reference.adoc +203 -0
- data/docs/_guides/index.adoc +56 -0
- data/docs/_guides/installation.adoc +100 -0
- data/docs/_guides/quick-start.adoc +132 -0
- data/docs/_pages/comparison.adoc +441 -0
- data/docs/_pages/compatibility.adoc +300 -0
- data/docs/_pages/index.adoc +39 -0
- data/docs/_references/index.adoc +103 -0
- data/docs/_tutorials/index.adoc +57 -0
- data/docs/index.adoc +166 -0
- data/docs/lychee.toml +54 -0
- data/examples/.gitignore +10 -0
- data/examples/README.adoc +196 -0
- data/examples/README.md +64 -0
- data/examples/architecture/01-basic-services.mmd +9 -0
- data/examples/architecture/01-basic-services.svg +37 -0
- data/examples/architecture/02-service-groups.mmd +16 -0
- data/examples/architecture/02-service-groups.svg +55 -0
- data/examples/architecture/README.adoc +79 -0
- data/examples/block/01-basic-blocks.mmd +13 -0
- data/examples/block/01-basic-blocks.svg +44 -0
- data/examples/block/02-block-shapes.mmd +13 -0
- data/examples/block/02-block-shapes.svg +47 -0
- data/examples/block/README.adoc +85 -0
- data/examples/c4/01-context-diagram.mmd +10 -0
- data/examples/c4/01-context-diagram.svg +45 -0
- data/examples/c4/02-container-diagram.mmd +24 -0
- data/examples/c4/02-container-diagram.svg +105 -0
- data/examples/c4/README.adoc +92 -0
- data/examples/class_diagram/01-basic-classes.mmd +61 -0
- data/examples/class_diagram/01-basic-classes.svg +117 -0
- data/examples/class_diagram/02-relationships.mmd +61 -0
- data/examples/class_diagram/02-relationships.svg +129 -0
- data/examples/class_diagram/README.adoc +93 -0
- data/examples/er_diagram/01-basic-entities.mmd +64 -0
- data/examples/er_diagram/01-basic-entities.svg +5 -0
- data/examples/er_diagram/02-cardinality.mmd +57 -0
- data/examples/er_diagram/02-cardinality.svg +125 -0
- data/examples/er_diagram/README.adoc +88 -0
- data/examples/error/01-basic-error.mmd +1 -0
- data/examples/error/01-basic-error.svg +13 -0
- data/examples/error/02-error-display.mmd +1 -0
- data/examples/error/02-error-display.svg +13 -0
- data/examples/error/README.adoc +71 -0
- data/examples/error_message_example.svg +13 -0
- data/examples/flowchart/00-original.mmd +13 -0
- data/examples/flowchart/00-original.svg +5 -0
- data/examples/flowchart/01-basic-flow.mmd +7 -0
- data/examples/flowchart/01-basic-flow.svg +52 -0
- data/examples/flowchart/01-basic-flow.yml +13 -0
- data/examples/flowchart/02*.svg +87 -0
- data/examples/flowchart/02-node-shapes.mmd +9 -0
- data/examples/flowchart/02-node-shapes.svg +33 -0
- data/examples/flowchart/03-edge-types.mmd +7 -0
- data/examples/flowchart/03-edge-types.svg +53 -0
- data/examples/flowchart/04-subgraphs.mmd +9 -0
- data/examples/flowchart/04-subgraphs.svg +33 -0
- data/examples/flowchart/05-styling.mmd +9 -0
- data/examples/flowchart/05-styling.svg +33 -0
- data/examples/flowchart/06-complex-flow.mmd +8 -0
- data/examples/flowchart/06-complex-flow.svg +59 -0
- data/examples/flowchart/README.adoc +167 -0
- data/examples/gantt/01-simple-timeline.* +14 -0
- data/examples/gantt/01-simple-timeline.mmd +6 -0
- data/examples/gantt/01-simple-timeline.svg +26 -0
- data/examples/gantt/02-task-dependencies.mmd +6 -0
- data/examples/gantt/02-task-dependencies.svg +26 -0
- data/examples/gantt/README.adoc +86 -0
- data/examples/git_graph/01-linear-history.mmd +12 -0
- data/examples/git_graph/01-linear-history.svg +26 -0
- data/examples/git_graph/02-branching.mmd +12 -0
- data/examples/git_graph/02-branching.svg +26 -0
- data/examples/git_graph/README.adoc +73 -0
- data/examples/info/02-showinfo.mmd +1 -0
- data/examples/info/02-showinfo.svg +10 -0
- data/examples/info/README.adoc +58 -0
- data/examples/info_showinfo_example.svg +10 -0
- data/examples/kanban/01-simple-board.mmd +8 -0
- data/examples/kanban/01-simple-board.svg +43 -0
- data/examples/kanban/02-workflow.mmd +8 -0
- data/examples/kanban/02-workflow.svg +43 -0
- data/examples/kanban/README.adoc +79 -0
- data/examples/mindmap/01-simple-tree.mmd +19 -0
- data/examples/mindmap/01-simple-tree.svg +61 -0
- data/examples/mindmap/02-knowledge-map.mmd +19 -0
- data/examples/mindmap/02-knowledge-map.svg +61 -0
- data/examples/mindmap/README.adoc +77 -0
- data/examples/packet/01-basic-packet.* +17 -0
- data/examples/packet/01-basic-packet.mmd +4 -0
- data/examples/packet/01-basic-packet.svg +82 -0
- data/examples/packet/README.adoc +58 -0
- data/examples/pie/01-simple-chart.mmd +5 -0
- data/examples/pie/01-simple-chart.svg +17 -0
- data/examples/pie/02-labeled-slices.mmd +6 -0
- data/examples/pie/02-labeled-slices.svg +19 -0
- data/examples/pie/README.adoc +75 -0
- data/examples/quadrant/01-basic-quadrant.mmd +13 -0
- data/examples/quadrant/01-basic-quadrant.svg +33 -0
- data/examples/quadrant/02-positioned-items.mmd +14 -0
- data/examples/quadrant/02-positioned-items.svg +35 -0
- data/examples/quadrant/README.adoc +84 -0
- data/examples/radar/01-simple-radar.* +5 -0
- data/examples/radar/01-simple-radar.mmd +3 -0
- data/examples/radar/01-simple-radar.svg +25 -0
- data/examples/radar/02-multiple-curves.mmd +4 -0
- data/examples/radar/02-multiple-curves.svg +43 -0
- data/examples/radar/README.adoc +75 -0
- data/examples/requirement/01-basic-requirements.mmd +23 -0
- data/examples/requirement/01-basic-requirements.svg +49 -0
- data/examples/requirement/02-risk-levels.mmd +23 -0
- data/examples/requirement/02-risk-levels.svg +49 -0
- data/examples/requirement/README.adoc +85 -0
- data/examples/sankey/01-simple-flow.mmd +7 -0
- data/examples/sankey/01-simple-flow.svg +34 -0
- data/examples/sankey/02-multi-stage.mmd +11 -0
- data/examples/sankey/02-multi-stage.svg +44 -0
- data/examples/sankey/README.adoc +74 -0
- data/examples/sequence/01-basic-sequence.mmd +27 -0
- data/examples/sequence/01-basic-sequence.svg +5 -0
- data/examples/sequence/02-activations.mmd +17 -0
- data/examples/sequence/02-activations.svg +78 -0
- data/examples/sequence/README.adoc +86 -0
- data/examples/state_diagram/01-simple-states.mmd +29 -0
- data/examples/state_diagram/01-simple-states.svg +5 -0
- data/examples/state_diagram/02-composite.mmd +19 -0
- data/examples/state_diagram/02-composite.svg +81 -0
- data/examples/state_diagram/README.adoc +90 -0
- data/examples/timeline/01-simple-timeline.mmd +11 -0
- data/examples/timeline/01-simple-timeline.svg +36 -0
- data/examples/timeline/02-periods.mmd +15 -0
- data/examples/timeline/02-periods.svg +47 -0
- data/examples/timeline/README.adoc +78 -0
- data/examples/treemap/01-basic-treemap.mmd +12 -0
- data/examples/treemap/01-basic-treemap.svg +59 -0
- data/examples/treemap/README.adoc +59 -0
- data/examples/user_journey/01-simple-journey.mmd +23 -0
- data/examples/user_journey/01-simple-journey.svg +5 -0
- data/examples/user_journey/02-multi-actor.mmd +18 -0
- data/examples/user_journey/02-multi-actor.svg +129 -0
- data/examples/user_journey/README.adoc +81 -0
- data/examples/xychart/01-line-chart.mmd +5 -0
- data/examples/xychart/01-line-chart.svg +43 -0
- data/examples/xychart/02-bar-chart.mmd +7 -0
- data/examples/xychart/02-bar-chart.svg +48 -0
- data/examples/xychart/README.adoc +80 -0
- data/exe/sirena +7 -0
- data/lib/sirena/cli.rb +138 -0
- data/lib/sirena/commands/batch.rb +117 -0
- data/lib/sirena/commands/render.rb +80 -0
- data/lib/sirena/commands/types.rb +29 -0
- data/lib/sirena/commands/version.rb +24 -0
- data/lib/sirena/diagram/architecture.rb +46 -0
- data/lib/sirena/diagram/base.rb +61 -0
- data/lib/sirena/diagram/block.rb +81 -0
- data/lib/sirena/diagram/c4.rb +328 -0
- data/lib/sirena/diagram/class_diagram.rb +385 -0
- data/lib/sirena/diagram/er_diagram.rb +238 -0
- data/lib/sirena/diagram/error.rb +38 -0
- data/lib/sirena/diagram/flowchart.rb +160 -0
- data/lib/sirena/diagram/gantt.rb +71 -0
- data/lib/sirena/diagram/git_graph.rb +36 -0
- data/lib/sirena/diagram/info.rb +38 -0
- data/lib/sirena/diagram/kanban.rb +178 -0
- data/lib/sirena/diagram/mindmap.rb +54 -0
- data/lib/sirena/diagram/packet.rb +79 -0
- data/lib/sirena/diagram/pie.rb +115 -0
- data/lib/sirena/diagram/quadrant.rb +138 -0
- data/lib/sirena/diagram/radar.rb +52 -0
- data/lib/sirena/diagram/requirement.rb +133 -0
- data/lib/sirena/diagram/sankey.rb +217 -0
- data/lib/sirena/diagram/sequence.rb +242 -0
- data/lib/sirena/diagram/state_diagram.rb +237 -0
- data/lib/sirena/diagram/timeline.rb +171 -0
- data/lib/sirena/diagram/treemap.rb +84 -0
- data/lib/sirena/diagram/user_journey.rb +149 -0
- data/lib/sirena/diagram/xy_chart.rb +76 -0
- data/lib/sirena/diagram.rb +8 -0
- data/lib/sirena/diagram_registry.rb +101 -0
- data/lib/sirena/engine.rb +292 -0
- data/lib/sirena/parser/architecture.rb +41 -0
- data/lib/sirena/parser/base.rb +41 -0
- data/lib/sirena/parser/block.rb +72 -0
- data/lib/sirena/parser/c4.rb +53 -0
- data/lib/sirena/parser/class_diagram.rb +63 -0
- data/lib/sirena/parser/er_diagram.rb +40 -0
- data/lib/sirena/parser/error.rb +49 -0
- data/lib/sirena/parser/flowchart.rb +71 -0
- data/lib/sirena/parser/gantt.rb +60 -0
- data/lib/sirena/parser/git_graph.rb +95 -0
- data/lib/sirena/parser/grammars/architecture.rb +145 -0
- data/lib/sirena/parser/grammars/block.rb +190 -0
- data/lib/sirena/parser/grammars/c4.rb +226 -0
- data/lib/sirena/parser/grammars/class_diagram.rb +284 -0
- data/lib/sirena/parser/grammars/common.rb +84 -0
- data/lib/sirena/parser/grammars/er_diagram.rb +114 -0
- data/lib/sirena/parser/grammars/error.rb +40 -0
- data/lib/sirena/parser/grammars/flowchart.rb +298 -0
- data/lib/sirena/parser/grammars/gantt.rb +252 -0
- data/lib/sirena/parser/grammars/git_graph.rb +167 -0
- data/lib/sirena/parser/grammars/info.rb +58 -0
- data/lib/sirena/parser/grammars/kanban.rb +83 -0
- data/lib/sirena/parser/grammars/mindmap.rb +115 -0
- data/lib/sirena/parser/grammars/packet.rb +73 -0
- data/lib/sirena/parser/grammars/pie.rb +128 -0
- data/lib/sirena/parser/grammars/quadrant.rb +199 -0
- data/lib/sirena/parser/grammars/radar.rb +150 -0
- data/lib/sirena/parser/grammars/requirement.rb +188 -0
- data/lib/sirena/parser/grammars/sankey.rb +104 -0
- data/lib/sirena/parser/grammars/sequence.rb +247 -0
- data/lib/sirena/parser/grammars/state_diagram.rb +172 -0
- data/lib/sirena/parser/grammars/timeline.rb +142 -0
- data/lib/sirena/parser/grammars/treemap.rb +120 -0
- data/lib/sirena/parser/grammars/xy_chart.rb +120 -0
- data/lib/sirena/parser/info.rb +49 -0
- data/lib/sirena/parser/kanban.rb +97 -0
- data/lib/sirena/parser/mindmap.rb +106 -0
- data/lib/sirena/parser/packet.rb +76 -0
- data/lib/sirena/parser/pie.rb +49 -0
- data/lib/sirena/parser/quadrant.rb +57 -0
- data/lib/sirena/parser/radar.rb +104 -0
- data/lib/sirena/parser/requirement.rb +70 -0
- data/lib/sirena/parser/sankey.rb +64 -0
- data/lib/sirena/parser/sequence.rb +51 -0
- data/lib/sirena/parser/state_diagram.rb +69 -0
- data/lib/sirena/parser/timeline.rb +57 -0
- data/lib/sirena/parser/transforms/architecture.rb +97 -0
- data/lib/sirena/parser/transforms/block.rb +254 -0
- data/lib/sirena/parser/transforms/c4.rb +347 -0
- data/lib/sirena/parser/transforms/class_diagram.rb +352 -0
- data/lib/sirena/parser/transforms/er_diagram.rb +169 -0
- data/lib/sirena/parser/transforms/error.rb +58 -0
- data/lib/sirena/parser/transforms/flowchart.rb +293 -0
- data/lib/sirena/parser/transforms/gantt.rb +215 -0
- data/lib/sirena/parser/transforms/git_graph.rb +160 -0
- data/lib/sirena/parser/transforms/info.rb +58 -0
- data/lib/sirena/parser/transforms/kanban.rb +176 -0
- data/lib/sirena/parser/transforms/mindmap.rb +227 -0
- data/lib/sirena/parser/transforms/packet.rb +63 -0
- data/lib/sirena/parser/transforms/pie.rb +143 -0
- data/lib/sirena/parser/transforms/quadrant.rb +177 -0
- data/lib/sirena/parser/transforms/radar.rb +126 -0
- data/lib/sirena/parser/transforms/requirement.rb +272 -0
- data/lib/sirena/parser/transforms/sankey.rb +122 -0
- data/lib/sirena/parser/transforms/sequence.rb +342 -0
- data/lib/sirena/parser/transforms/state_diagram.rb +292 -0
- data/lib/sirena/parser/transforms/timeline.rb +177 -0
- data/lib/sirena/parser/transforms/treemap.rb +81 -0
- data/lib/sirena/parser/transforms/xy_chart.rb +132 -0
- data/lib/sirena/parser/treemap.rb +98 -0
- data/lib/sirena/parser/user_journey.rb +120 -0
- data/lib/sirena/parser/xy_chart.rb +114 -0
- data/lib/sirena/parser.rb +8 -0
- data/lib/sirena/renderer/architecture.rb +251 -0
- data/lib/sirena/renderer/base.rb +251 -0
- data/lib/sirena/renderer/block.rb +286 -0
- data/lib/sirena/renderer/c4.rb +490 -0
- data/lib/sirena/renderer/class_diagram.rb +499 -0
- data/lib/sirena/renderer/er_diagram.rb +417 -0
- data/lib/sirena/renderer/error.rb +131 -0
- data/lib/sirena/renderer/flowchart.rb +301 -0
- data/lib/sirena/renderer/gantt.rb +331 -0
- data/lib/sirena/renderer/git_graph.rb +368 -0
- data/lib/sirena/renderer/info.rb +93 -0
- data/lib/sirena/renderer/kanban.rb +295 -0
- data/lib/sirena/renderer/mindmap.rb +396 -0
- data/lib/sirena/renderer/packet.rb +239 -0
- data/lib/sirena/renderer/pie.rb +235 -0
- data/lib/sirena/renderer/quadrant.rb +292 -0
- data/lib/sirena/renderer/radar.rb +323 -0
- data/lib/sirena/renderer/requirement.rb +371 -0
- data/lib/sirena/renderer/sankey.rb +255 -0
- data/lib/sirena/renderer/sequence.rb +424 -0
- data/lib/sirena/renderer/state_diagram.rb +328 -0
- data/lib/sirena/renderer/timeline.rb +304 -0
- data/lib/sirena/renderer/treemap.rb +152 -0
- data/lib/sirena/renderer/user_journey.rb +331 -0
- data/lib/sirena/renderer/xy_chart.rb +452 -0
- data/lib/sirena/renderer.rb +8 -0
- data/lib/sirena/svg/circle.rb +41 -0
- data/lib/sirena/svg/document.rb +103 -0
- data/lib/sirena/svg/element.rb +65 -0
- data/lib/sirena/svg/ellipse.rb +33 -0
- data/lib/sirena/svg/group.rb +71 -0
- data/lib/sirena/svg/line.rb +49 -0
- data/lib/sirena/svg/path.rb +76 -0
- data/lib/sirena/svg/polygon.rb +43 -0
- data/lib/sirena/svg/polyline.rb +35 -0
- data/lib/sirena/svg/rect.rb +57 -0
- data/lib/sirena/svg/style.rb +44 -0
- data/lib/sirena/svg/text.rb +72 -0
- data/lib/sirena/svg.rb +19 -0
- data/lib/sirena/text_measurement.rb +71 -0
- data/lib/sirena/theme/builtin/dark.yml +70 -0
- data/lib/sirena/theme/builtin/default.yml +80 -0
- data/lib/sirena/theme/builtin/high_contrast.yml +70 -0
- data/lib/sirena/theme/builtin/light.yml +70 -0
- data/lib/sirena/theme/color_palette.rb +48 -0
- data/lib/sirena/theme/effect_styles.rb +28 -0
- data/lib/sirena/theme/registry.rb +41 -0
- data/lib/sirena/theme/shape_styles.rb +28 -0
- data/lib/sirena/theme/spacing_config.rb +24 -0
- data/lib/sirena/theme/typography.rb +30 -0
- data/lib/sirena/theme.rb +69 -0
- data/lib/sirena/transform/architecture.rb +273 -0
- data/lib/sirena/transform/base.rb +199 -0
- data/lib/sirena/transform/block.rb +215 -0
- data/lib/sirena/transform/c4.rb +288 -0
- data/lib/sirena/transform/class_diagram.rb +296 -0
- data/lib/sirena/transform/er_diagram.rb +204 -0
- data/lib/sirena/transform/error.rb +39 -0
- data/lib/sirena/transform/flowchart.rb +161 -0
- data/lib/sirena/transform/gantt.rb +253 -0
- data/lib/sirena/transform/git_graph.rb +283 -0
- data/lib/sirena/transform/info.rb +39 -0
- data/lib/sirena/transform/kanban.rb +180 -0
- data/lib/sirena/transform/mindmap.rb +251 -0
- data/lib/sirena/transform/packet.rb +185 -0
- data/lib/sirena/transform/pie.rb +62 -0
- data/lib/sirena/transform/quadrant.rb +167 -0
- data/lib/sirena/transform/radar.rb +227 -0
- data/lib/sirena/transform/requirement.rb +233 -0
- data/lib/sirena/transform/sankey.rb +212 -0
- data/lib/sirena/transform/sequence.rb +143 -0
- data/lib/sirena/transform/state_diagram.rb +228 -0
- data/lib/sirena/transform/timeline.rb +139 -0
- data/lib/sirena/transform/treemap.rb +120 -0
- data/lib/sirena/transform/user_journey.rb +207 -0
- data/lib/sirena/transform/xy_chart.rb +273 -0
- data/lib/sirena/transform.rb +8 -0
- data/lib/sirena/version.rb +5 -0
- data/lib/sirena.rb +328 -0
- data/lib/tasks/benchmark.rake +532 -0
- data/lib/tasks/examples.rake +468 -0
- data/lib/tasks/generate_mermaid_fixtures.rake +363 -0
- data/lib/tasks/mermaid_fixtures.rake +46 -0
- data/scripts/extract_mermaid_tests.rb +493 -0
- data/scripts/rename_to_sirena.rb +73 -0
- data/sirena.gemspec +47 -0
- metadata +529 -0
|
@@ -0,0 +1,664 @@
|
|
|
1
|
+
= Sequence diagrams
|
|
2
|
+
:toc:
|
|
3
|
+
:toclevels: 3
|
|
4
|
+
|
|
5
|
+
== Overview
|
|
6
|
+
|
|
7
|
+
Sequence diagrams in Sirena represent interactions between participants over time. They show how processes operate with one another and in what order, making them ideal for documenting system interactions, API calls, and message flows.
|
|
8
|
+
|
|
9
|
+
Sequence diagrams are useful for:
|
|
10
|
+
|
|
11
|
+
* Documenting API interactions and request/response flows
|
|
12
|
+
* Visualizing authentication and authorization processes
|
|
13
|
+
* Mapping multi-system communication patterns
|
|
14
|
+
* Showing temporal relationships between components
|
|
15
|
+
* Illustrating concurrent and asynchronous operations
|
|
16
|
+
|
|
17
|
+
== Syntax specification
|
|
18
|
+
|
|
19
|
+
=== Diagram declaration
|
|
20
|
+
|
|
21
|
+
Sequence diagrams are declared using the `sequenceDiagram` keyword:
|
|
22
|
+
|
|
23
|
+
[source,mermaid]
|
|
24
|
+
----
|
|
25
|
+
sequenceDiagram
|
|
26
|
+
<diagram-content>
|
|
27
|
+
----
|
|
28
|
+
|
|
29
|
+
=== Participants
|
|
30
|
+
|
|
31
|
+
Participants can be declared explicitly or implicitly:
|
|
32
|
+
|
|
33
|
+
[source,mermaid]
|
|
34
|
+
----
|
|
35
|
+
sequenceDiagram
|
|
36
|
+
participant Alice
|
|
37
|
+
participant Bob
|
|
38
|
+
Alice->>Bob: Hello
|
|
39
|
+
----
|
|
40
|
+
|
|
41
|
+
==== Participant aliases
|
|
42
|
+
|
|
43
|
+
Participants can have aliases for cleaner syntax:
|
|
44
|
+
|
|
45
|
+
[source,mermaid]
|
|
46
|
+
----
|
|
47
|
+
sequenceDiagram
|
|
48
|
+
participant A as Alice
|
|
49
|
+
participant B as Bob
|
|
50
|
+
A->>B: Hello
|
|
51
|
+
----
|
|
52
|
+
|
|
53
|
+
==== Actor syntax
|
|
54
|
+
|
|
55
|
+
The `actor` keyword creates participant boxes with a stick figure icon:
|
|
56
|
+
|
|
57
|
+
[source,mermaid]
|
|
58
|
+
----
|
|
59
|
+
sequenceDiagram
|
|
60
|
+
actor Alice
|
|
61
|
+
actor Bob
|
|
62
|
+
Alice->>Bob: Hello
|
|
63
|
+
----
|
|
64
|
+
|
|
65
|
+
=== Messages
|
|
66
|
+
|
|
67
|
+
Messages connect participants and represent communication:
|
|
68
|
+
|
|
69
|
+
[cols="2,2,3"]
|
|
70
|
+
|===
|
|
71
|
+
|Syntax |Style |Description
|
|
72
|
+
|
|
73
|
+
|`A->>B: text`
|
|
74
|
+
|Solid arrow
|
|
75
|
+
|Synchronous message with arrowhead
|
|
76
|
+
|
|
77
|
+
|`A-->>B: text`
|
|
78
|
+
|Dotted arrow
|
|
79
|
+
|Response or return message
|
|
80
|
+
|
|
81
|
+
|`A->B: text`
|
|
82
|
+
|Solid line
|
|
83
|
+
|Async message without arrowhead
|
|
84
|
+
|
|
85
|
+
|`A-->B: text`
|
|
86
|
+
|Dotted line
|
|
87
|
+
|Async response without arrowhead
|
|
88
|
+
|
|
89
|
+
|`A-xB: text`
|
|
90
|
+
|Solid with cross
|
|
91
|
+
|Message with cross ending
|
|
92
|
+
|
|
93
|
+
|`A--xB: text`
|
|
94
|
+
|Dotted with cross
|
|
95
|
+
|Response with cross ending
|
|
96
|
+
|
|
97
|
+
|`A-)B: text`
|
|
98
|
+
|Solid with open arrow
|
|
99
|
+
|Async message with open arrow
|
|
100
|
+
|
|
101
|
+
|`A--)B: text`
|
|
102
|
+
|Dotted with open arrow
|
|
103
|
+
|Async response with open arrow
|
|
104
|
+
|
|
105
|
+
|`A<<->>B: text`
|
|
106
|
+
|Bidirectional solid
|
|
107
|
+
|Bidirectional synchronous message
|
|
108
|
+
|
|
109
|
+
|`A<<-->>B: text`
|
|
110
|
+
|Bidirectional dotted
|
|
111
|
+
|Bidirectional async message
|
|
112
|
+
|===
|
|
113
|
+
|
|
114
|
+
=== Activation
|
|
115
|
+
|
|
116
|
+
Activation boxes show when a participant is actively processing:
|
|
117
|
+
|
|
118
|
+
[source,mermaid]
|
|
119
|
+
----
|
|
120
|
+
sequenceDiagram
|
|
121
|
+
Alice->>+Bob: Request
|
|
122
|
+
Bob-->>-Alice: Response
|
|
123
|
+
----
|
|
124
|
+
|
|
125
|
+
The `+` symbol activates a participant, and `-` deactivates it.
|
|
126
|
+
|
|
127
|
+
Explicit activation syntax:
|
|
128
|
+
|
|
129
|
+
[source,mermaid]
|
|
130
|
+
----
|
|
131
|
+
sequenceDiagram
|
|
132
|
+
Alice->>Bob: Request
|
|
133
|
+
activate Bob
|
|
134
|
+
Bob-->>Alice: Response
|
|
135
|
+
deactivate Bob
|
|
136
|
+
----
|
|
137
|
+
|
|
138
|
+
=== Notes
|
|
139
|
+
|
|
140
|
+
Notes provide additional context and can be positioned relative to participants:
|
|
141
|
+
|
|
142
|
+
[source,mermaid]
|
|
143
|
+
----
|
|
144
|
+
Note left of Alice: Left note
|
|
145
|
+
Note right of Bob: Right note
|
|
146
|
+
Note over Alice: Note over one participant
|
|
147
|
+
Note over Alice,Bob: Note spanning participants
|
|
148
|
+
----
|
|
149
|
+
|
|
150
|
+
=== Loops
|
|
151
|
+
|
|
152
|
+
Loops represent repeated interactions:
|
|
153
|
+
|
|
154
|
+
[source,mermaid]
|
|
155
|
+
----
|
|
156
|
+
loop Loop label
|
|
157
|
+
Alice->>Bob: Message
|
|
158
|
+
end
|
|
159
|
+
----
|
|
160
|
+
|
|
161
|
+
=== Conditional blocks
|
|
162
|
+
|
|
163
|
+
==== Alt (alternative paths)
|
|
164
|
+
|
|
165
|
+
The `alt` block represents conditional execution:
|
|
166
|
+
|
|
167
|
+
[source,mermaid]
|
|
168
|
+
----
|
|
169
|
+
alt Condition description
|
|
170
|
+
Alice->>Bob: Message if true
|
|
171
|
+
else Another condition
|
|
172
|
+
Alice->>Bob: Message if second condition
|
|
173
|
+
else
|
|
174
|
+
Alice->>Bob: Default message
|
|
175
|
+
end
|
|
176
|
+
----
|
|
177
|
+
|
|
178
|
+
==== Opt (optional)
|
|
179
|
+
|
|
180
|
+
The `opt` block represents optional execution:
|
|
181
|
+
|
|
182
|
+
[source,mermaid]
|
|
183
|
+
----
|
|
184
|
+
opt Optional condition
|
|
185
|
+
Alice->>Bob: Optional message
|
|
186
|
+
end
|
|
187
|
+
----
|
|
188
|
+
|
|
189
|
+
==== Par (parallel)
|
|
190
|
+
|
|
191
|
+
The `par` block represents parallel execution:
|
|
192
|
+
|
|
193
|
+
[source,mermaid]
|
|
194
|
+
----
|
|
195
|
+
par Parallel task 1
|
|
196
|
+
Alice->>Bob: Message 1
|
|
197
|
+
and Parallel task 2
|
|
198
|
+
Alice->>Charlie: Message 2
|
|
199
|
+
end
|
|
200
|
+
----
|
|
201
|
+
|
|
202
|
+
==== Critical (critical region)
|
|
203
|
+
|
|
204
|
+
The `critical` block represents critical sections:
|
|
205
|
+
|
|
206
|
+
[source,mermaid]
|
|
207
|
+
----
|
|
208
|
+
critical Critical operation
|
|
209
|
+
Alice->>Bob: Critical message
|
|
210
|
+
option Error handling
|
|
211
|
+
Bob->>Alice: Error response
|
|
212
|
+
end
|
|
213
|
+
----
|
|
214
|
+
|
|
215
|
+
==== Break
|
|
216
|
+
|
|
217
|
+
The `break` block represents breaking out of a flow:
|
|
218
|
+
|
|
219
|
+
[source,mermaid]
|
|
220
|
+
----
|
|
221
|
+
break Break condition
|
|
222
|
+
Alice->>Bob: Break message
|
|
223
|
+
end
|
|
224
|
+
----
|
|
225
|
+
|
|
226
|
+
=== Boxes
|
|
227
|
+
|
|
228
|
+
Boxes group related participants:
|
|
229
|
+
|
|
230
|
+
[source,mermaid]
|
|
231
|
+
----
|
|
232
|
+
box "Box Label"
|
|
233
|
+
participant A
|
|
234
|
+
participant B
|
|
235
|
+
end
|
|
236
|
+
----
|
|
237
|
+
|
|
238
|
+
Boxes can have background colors:
|
|
239
|
+
|
|
240
|
+
[source,mermaid]
|
|
241
|
+
----
|
|
242
|
+
box rgb(255,240,240) "Red Box"
|
|
243
|
+
participant A
|
|
244
|
+
end
|
|
245
|
+
----
|
|
246
|
+
|
|
247
|
+
=== Sequence numbers
|
|
248
|
+
|
|
249
|
+
Sequence numbers can be enabled:
|
|
250
|
+
|
|
251
|
+
[source,mermaid]
|
|
252
|
+
----
|
|
253
|
+
sequenceDiagram
|
|
254
|
+
autonumber
|
|
255
|
+
Alice->>Bob: First message
|
|
256
|
+
Bob->>Alice: Second message
|
|
257
|
+
----
|
|
258
|
+
|
|
259
|
+
== Examples
|
|
260
|
+
|
|
261
|
+
=== Basic sequence diagram
|
|
262
|
+
|
|
263
|
+
.Simple message exchange
|
|
264
|
+
[example]
|
|
265
|
+
====
|
|
266
|
+
[source,mermaid]
|
|
267
|
+
----
|
|
268
|
+
sequenceDiagram
|
|
269
|
+
Alice->>Bob: Hello Bob
|
|
270
|
+
Bob-->>Alice: Hello Alice
|
|
271
|
+
----
|
|
272
|
+
|
|
273
|
+
This creates a simple sequence diagram with two participants exchanging messages.
|
|
274
|
+
====
|
|
275
|
+
|
|
276
|
+
=== Sequence with activation
|
|
277
|
+
|
|
278
|
+
.Request-response with activation
|
|
279
|
+
[example]
|
|
280
|
+
====
|
|
281
|
+
[source,mermaid]
|
|
282
|
+
----
|
|
283
|
+
sequenceDiagram
|
|
284
|
+
participant User
|
|
285
|
+
participant WebApp
|
|
286
|
+
participant API
|
|
287
|
+
participant Database
|
|
288
|
+
|
|
289
|
+
User->>+WebApp: Request Product Page
|
|
290
|
+
WebApp->>+API: GET /api/product/123
|
|
291
|
+
API->>+Database: SELECT * FROM products WHERE id=123
|
|
292
|
+
Database-->>-API: Product Data
|
|
293
|
+
API-->>-WebApp: JSON Response
|
|
294
|
+
WebApp-->>-User: Render Product Page
|
|
295
|
+
----
|
|
296
|
+
|
|
297
|
+
This example demonstrates:
|
|
298
|
+
|
|
299
|
+
* Multiple participants
|
|
300
|
+
* Activation boxes showing processing time
|
|
301
|
+
* Nested activations
|
|
302
|
+
* Request-response patterns
|
|
303
|
+
====
|
|
304
|
+
|
|
305
|
+
=== Loop and conditional example
|
|
306
|
+
|
|
307
|
+
.Complex flow with loops and conditionals
|
|
308
|
+
[example]
|
|
309
|
+
====
|
|
310
|
+
[source,mermaid]
|
|
311
|
+
----
|
|
312
|
+
sequenceDiagram
|
|
313
|
+
participant User
|
|
314
|
+
participant System
|
|
315
|
+
participant Database
|
|
316
|
+
|
|
317
|
+
User->>+System: Login Request
|
|
318
|
+
|
|
319
|
+
loop Retry up to 3 times
|
|
320
|
+
System->>+Database: Verify Credentials
|
|
321
|
+
Database-->>-System: Result
|
|
322
|
+
|
|
323
|
+
alt Valid Credentials
|
|
324
|
+
System-->>User: Success
|
|
325
|
+
else Invalid Credentials
|
|
326
|
+
System-->>User: Error
|
|
327
|
+
end
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
System-->>-User: Final Response
|
|
331
|
+
----
|
|
332
|
+
|
|
333
|
+
This shows:
|
|
334
|
+
|
|
335
|
+
* Loop blocks for repeated actions
|
|
336
|
+
* Alt/else blocks for conditional logic
|
|
337
|
+
* Nested control structures
|
|
338
|
+
====
|
|
339
|
+
|
|
340
|
+
=== Notes and documentation
|
|
341
|
+
|
|
342
|
+
.Sequence with notes
|
|
343
|
+
[example]
|
|
344
|
+
====
|
|
345
|
+
[source,mermaid]
|
|
346
|
+
----
|
|
347
|
+
sequenceDiagram
|
|
348
|
+
participant User
|
|
349
|
+
participant Cache
|
|
350
|
+
participant API
|
|
351
|
+
|
|
352
|
+
Note over User,API: First request - cache miss
|
|
353
|
+
|
|
354
|
+
User->>+Cache: Check Cache
|
|
355
|
+
Cache-->>-User: Cache Miss
|
|
356
|
+
|
|
357
|
+
User->>+API: GET /data
|
|
358
|
+
API-->>-User: Data Response
|
|
359
|
+
|
|
360
|
+
User->>+Cache: Store in Cache
|
|
361
|
+
Cache-->>-User: Cached
|
|
362
|
+
|
|
363
|
+
Note right of Cache: Data now cached
|
|
364
|
+
|
|
365
|
+
Note over User,API: Second request - cache hit
|
|
366
|
+
|
|
367
|
+
User->>+Cache: Check Cache
|
|
368
|
+
Cache-->>-User: Cache Hit (Fast)
|
|
369
|
+
----
|
|
370
|
+
|
|
371
|
+
This demonstrates:
|
|
372
|
+
|
|
373
|
+
* Notes over multiple participants
|
|
374
|
+
* Notes to the left/right of participants
|
|
375
|
+
* Using notes to explain flow sections
|
|
376
|
+
====
|
|
377
|
+
|
|
378
|
+
=== Participant boxes
|
|
379
|
+
|
|
380
|
+
.Grouping participants in boxes
|
|
381
|
+
[example]
|
|
382
|
+
====
|
|
383
|
+
[source,mermaid]
|
|
384
|
+
----
|
|
385
|
+
sequenceDiagram
|
|
386
|
+
box "Frontend"
|
|
387
|
+
participant User
|
|
388
|
+
participant WebApp
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
box "Backend Services"
|
|
392
|
+
participant API
|
|
393
|
+
participant Database
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
User->>WebApp: Click Button
|
|
397
|
+
WebApp->>API: API Request
|
|
398
|
+
API->>Database: Query
|
|
399
|
+
Database-->>API: Result
|
|
400
|
+
API-->>WebApp: Response
|
|
401
|
+
WebApp-->>User: Update UI
|
|
402
|
+
----
|
|
403
|
+
|
|
404
|
+
This shows:
|
|
405
|
+
|
|
406
|
+
* Grouping related participants in boxes
|
|
407
|
+
* Visual organization of system layers
|
|
408
|
+
* Clear separation of concerns
|
|
409
|
+
====
|
|
410
|
+
|
|
411
|
+
=== Parallel execution
|
|
412
|
+
|
|
413
|
+
.Concurrent operations
|
|
414
|
+
[example]
|
|
415
|
+
====
|
|
416
|
+
[source,mermaid]
|
|
417
|
+
----
|
|
418
|
+
sequenceDiagram
|
|
419
|
+
participant User
|
|
420
|
+
participant App
|
|
421
|
+
participant Service1
|
|
422
|
+
participant Service2
|
|
423
|
+
|
|
424
|
+
User->>App: Request Data
|
|
425
|
+
|
|
426
|
+
par Fetch User Profile
|
|
427
|
+
App->>Service1: Get Profile
|
|
428
|
+
Service1-->>App: Profile Data
|
|
429
|
+
and Fetch User Posts
|
|
430
|
+
App->>Service2: Get Posts
|
|
431
|
+
Service2-->>App: Posts Data
|
|
432
|
+
end
|
|
433
|
+
|
|
434
|
+
App-->>User: Combined Response
|
|
435
|
+
----
|
|
436
|
+
|
|
437
|
+
This demonstrates:
|
|
438
|
+
|
|
439
|
+
* Parallel execution using `par` blocks
|
|
440
|
+
* Multiple concurrent operations
|
|
441
|
+
* Joining results after parallel execution
|
|
442
|
+
====
|
|
443
|
+
|
|
444
|
+
=== Comprehensive example with multiple features
|
|
445
|
+
|
|
446
|
+
.Real-world authentication flow
|
|
447
|
+
[example]
|
|
448
|
+
====
|
|
449
|
+
[source,mermaid]
|
|
450
|
+
----
|
|
451
|
+
sequenceDiagram
|
|
452
|
+
autonumber
|
|
453
|
+
actor User
|
|
454
|
+
participant WebApp
|
|
455
|
+
participant API
|
|
456
|
+
participant Database
|
|
457
|
+
participant Cache
|
|
458
|
+
|
|
459
|
+
User->>+WebApp: Request Product Page
|
|
460
|
+
WebApp->>+Cache: Check Cache
|
|
461
|
+
Cache-->>-WebApp: Cache Miss
|
|
462
|
+
|
|
463
|
+
WebApp->>+API: GET /api/product/123
|
|
464
|
+
API->>+Database: SELECT * FROM products WHERE id=123
|
|
465
|
+
Database-->>-API: Product Data
|
|
466
|
+
API-->>-WebApp: JSON Response
|
|
467
|
+
|
|
468
|
+
WebApp->>+Cache: Store in Cache
|
|
469
|
+
Cache-->>-WebApp: Cached
|
|
470
|
+
|
|
471
|
+
WebApp-->>-User: Render Product Page
|
|
472
|
+
|
|
473
|
+
Note over User,Cache: Subsequent request will hit cache
|
|
474
|
+
|
|
475
|
+
User->>+WebApp: Refresh Page
|
|
476
|
+
WebApp->>+Cache: Check Cache
|
|
477
|
+
Cache-->>-WebApp: Cache Hit
|
|
478
|
+
WebApp-->>-User: Render Product Page (Fast)
|
|
479
|
+
----
|
|
480
|
+
|
|
481
|
+
This comprehensive example includes:
|
|
482
|
+
|
|
483
|
+
* Sequence numbers with `autonumber`
|
|
484
|
+
* Actor notation for human users
|
|
485
|
+
* Activation boxes
|
|
486
|
+
* Notes explaining behavior
|
|
487
|
+
* Caching pattern
|
|
488
|
+
* Multiple system interactions
|
|
489
|
+
====
|
|
490
|
+
|
|
491
|
+
== Features
|
|
492
|
+
|
|
493
|
+
=== Participant declaration
|
|
494
|
+
|
|
495
|
+
Participants can be declared in any order:
|
|
496
|
+
|
|
497
|
+
[source,mermaid]
|
|
498
|
+
----
|
|
499
|
+
sequenceDiagram
|
|
500
|
+
participant Alice
|
|
501
|
+
participant Bob
|
|
502
|
+
participant Charlie
|
|
503
|
+
----
|
|
504
|
+
|
|
505
|
+
Or defined implicitly when first used:
|
|
506
|
+
|
|
507
|
+
[source,mermaid]
|
|
508
|
+
----
|
|
509
|
+
sequenceDiagram
|
|
510
|
+
Alice->>Bob: Hello
|
|
511
|
+
Bob->>Charlie: Hi Charlie
|
|
512
|
+
----
|
|
513
|
+
|
|
514
|
+
=== Special characters in names
|
|
515
|
+
|
|
516
|
+
Participants can have spaces and special characters when quoted:
|
|
517
|
+
|
|
518
|
+
[source,mermaid]
|
|
519
|
+
----
|
|
520
|
+
sequenceDiagram
|
|
521
|
+
participant "User Service"
|
|
522
|
+
participant "Payment API"
|
|
523
|
+
"User Service"->>"Payment API": Process payment
|
|
524
|
+
----
|
|
525
|
+
|
|
526
|
+
=== Message text
|
|
527
|
+
|
|
528
|
+
Messages support long text that will be wrapped:
|
|
529
|
+
|
|
530
|
+
[source,mermaid]
|
|
531
|
+
----
|
|
532
|
+
sequenceDiagram
|
|
533
|
+
Alice->>Bob: Extremely long message text that will be wrapped automatically to fit within the diagram boundaries
|
|
534
|
+
----
|
|
535
|
+
|
|
536
|
+
=== Nested activation
|
|
537
|
+
|
|
538
|
+
Activations can be nested for complex call stacks:
|
|
539
|
+
|
|
540
|
+
[source,mermaid]
|
|
541
|
+
----
|
|
542
|
+
sequenceDiagram
|
|
543
|
+
A->>+B: Request
|
|
544
|
+
B->>+C: Sub-request
|
|
545
|
+
C-->>-B: Sub-response
|
|
546
|
+
B-->>-A: Response
|
|
547
|
+
----
|
|
548
|
+
|
|
549
|
+
=== Multiple control structures
|
|
550
|
+
|
|
551
|
+
Control structures can be combined and nested:
|
|
552
|
+
|
|
553
|
+
[source,mermaid]
|
|
554
|
+
----
|
|
555
|
+
sequenceDiagram
|
|
556
|
+
loop Retry
|
|
557
|
+
alt Success
|
|
558
|
+
A->>B: Success path
|
|
559
|
+
else Failure
|
|
560
|
+
opt Log error
|
|
561
|
+
A->>Logger: Log
|
|
562
|
+
end
|
|
563
|
+
end
|
|
564
|
+
end
|
|
565
|
+
----
|
|
566
|
+
|
|
567
|
+
== Limitations
|
|
568
|
+
|
|
569
|
+
=== Currently not supported
|
|
570
|
+
|
|
571
|
+
The following Mermaid sequence diagram features are not yet supported in Sirena:
|
|
572
|
+
|
|
573
|
+
* Styling with custom CSS classes
|
|
574
|
+
* Click events and links
|
|
575
|
+
* Background colors for messages
|
|
576
|
+
* Custom line styles
|
|
577
|
+
* Rect (background highlighting)
|
|
578
|
+
* Links on participants
|
|
579
|
+
|
|
580
|
+
=== Known issues
|
|
581
|
+
|
|
582
|
+
* Very long participant names may cause layout issues
|
|
583
|
+
* Deeply nested control structures may not render optimally
|
|
584
|
+
* Complex parallel blocks may have spacing inconsistencies
|
|
585
|
+
|
|
586
|
+
== Best practices
|
|
587
|
+
|
|
588
|
+
=== Keep participants minimal
|
|
589
|
+
|
|
590
|
+
Limit the number of participants to maintain readability:
|
|
591
|
+
|
|
592
|
+
[source,mermaid]
|
|
593
|
+
----
|
|
594
|
+
%% Good - 4 participants
|
|
595
|
+
sequenceDiagram
|
|
596
|
+
User->>API->>Database->>Cache
|
|
597
|
+
|
|
598
|
+
%% Less readable - too many
|
|
599
|
+
sequenceDiagram
|
|
600
|
+
A->>B->>C->>D->>E->>F->>G->>H
|
|
601
|
+
----
|
|
602
|
+
|
|
603
|
+
=== Use meaningful names
|
|
604
|
+
|
|
605
|
+
Choose descriptive participant names:
|
|
606
|
+
|
|
607
|
+
[source,mermaid]
|
|
608
|
+
----
|
|
609
|
+
%% Good
|
|
610
|
+
sequenceDiagram
|
|
611
|
+
participant UserService
|
|
612
|
+
participant PaymentGateway
|
|
613
|
+
|
|
614
|
+
%% Less clear
|
|
615
|
+
sequenceDiagram
|
|
616
|
+
participant A
|
|
617
|
+
participant B
|
|
618
|
+
----
|
|
619
|
+
|
|
620
|
+
=== Group related interactions
|
|
621
|
+
|
|
622
|
+
Use boxes to group related participants:
|
|
623
|
+
|
|
624
|
+
[source,mermaid]
|
|
625
|
+
----
|
|
626
|
+
sequenceDiagram
|
|
627
|
+
box "Frontend"
|
|
628
|
+
participant UI
|
|
629
|
+
participant WebApp
|
|
630
|
+
end
|
|
631
|
+
box "Backend"
|
|
632
|
+
participant API
|
|
633
|
+
participant DB
|
|
634
|
+
end
|
|
635
|
+
----
|
|
636
|
+
|
|
637
|
+
=== Add notes for clarity
|
|
638
|
+
|
|
639
|
+
Use notes to explain complex interactions:
|
|
640
|
+
|
|
641
|
+
[source,mermaid]
|
|
642
|
+
----
|
|
643
|
+
sequenceDiagram
|
|
644
|
+
A->>B: Request
|
|
645
|
+
Note right of B: This validates the request before processing
|
|
646
|
+
B->>C: Process
|
|
647
|
+
----
|
|
648
|
+
|
|
649
|
+
=== Use activation consistently
|
|
650
|
+
|
|
651
|
+
Always pair activation and deactivation:
|
|
652
|
+
|
|
653
|
+
[source,mermaid]
|
|
654
|
+
----
|
|
655
|
+
sequenceDiagram
|
|
656
|
+
A->>+B: Request
|
|
657
|
+
B-->>-A: Response
|
|
658
|
+
----
|
|
659
|
+
|
|
660
|
+
== Related documentation
|
|
661
|
+
|
|
662
|
+
* <<index.adoc#,Diagram types overview>>
|
|
663
|
+
* <<flowchart.adoc#,Flowchart diagrams>>
|
|
664
|
+
* link:https://mermaid.js.org/syntax/sequenceDiagram.html[Official Mermaid sequence diagram documentation]
|