sequenceDiagram participant Alice participant Bob Alice->John: HelloJohn, how are you? loop Healthcheck John->John: Fight against hypochondria end Note right ofJohn: Rational thoughts <br/>prevail... John-->Alice: Great! John->Bob: How about you? Bob-->John: Jolly good!
参与者
如果不显示声明,参与者将根据第一次出现的顺序排列,如:
1 2 3
sequenceDiagram Alice->>John: HelloJohn, how are you? John-->>Alice: Great!
第一条语句出现了两个参与者角色,而在这条语句中,Alice 在 John 之前,所以图中也是这个顺序。如果不想根据第一次出现的顺序来排,可以主动声明以定义顺序:
1 2 3 4 5
sequenceDiagram participant John participant Alice Alice->>John: HelloJohn, how are you? John-->>Alice: Great!
别名
可以给角色写一个简短的别名以方便书写。
1 2 3 4 5
sequenceDiagram participant A asAlice participant J asJohn A->>J: HelloJohn, how are you? J->>A: Great!
sequenceDiagram Alice->>John: HelloJohn, how are you? %% activate 角色名 表示激活控制焦点 activate John John-->>Alice: Great! %% deactivate 角色名 表示控制焦点结束 deactivate John
使用 +/- 的更方便的写法:
1 2 3
sequenceDiagram Alice->>+John: HelloJohn, how are you? John-->>-Alice: Great!
可以嵌套:
1 2 3 4 5
sequenceDiagram Alice->>+John: HelloJohn, how are you? Alice->>+John: John, can you hear me? John-->>-Alice: HiAlice, I can hear you! John-->>-Alice: I feel great!
备注
语法:Note [ right of | left of | over ] [Actor]。
表述
含义
right of
右侧
left of
左侧
over
在当中,可以横跨多个参与者
1 2 3
sequenceDiagram participant John Note right ofJohn: Textin note
over 可用于单独一个角色上,也可以用于相邻两个角色间:
1 2 3
sequenceDiagram Alice->John: HelloJohn, how are you? Note over Alice,John: A typical interaction
循环
语法:
1 2 3 4 5 6 7 8 9 10
loop Loop text ... statements ... end sequenceDiagram Alice->John: HelloJohn, how are you? %% loop 后跟循环体说明文字 loop Every minute John-->Alice: Great! %% 标记循环结束 end
选择
语法:
1 2 3 4 5
alt Describing text ... statements ... else ... statements ... end
opt Describing text ... statements ... end sequenceDiagram Alice->>Bob: HelloBob, 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: Thanksfor asking end