Sequence diagrams#
1. summary#
シーケンス図は、プロセスが相互にどのように動作し、どのような順序で動作するかを示す相互作用図です。
マーメイドはシーケンス図をレンダリングできます。
sequenceDiagram
Alice ->> John: Hello John, how are you?
John -->> Alice: Great!
Alice -) John: See you later!
sequenceDiagram
Alice ->> John: Hello John, how are you?
John -->> Alice: Great!
Alice -) John: See you later!
ノードに関する注意事項ですが、marmaidの言語のスクリプト方法が原因で、「end」という単語が図を壊す可能性があります。
やむを得ない場合は、括弧()、引用符 ""、または角かっこ{}、[]を使用して、単語「end」を囲む必要があります。 i.e:(end)、[end]、{end}。
2. participants#
参加者は、このページの最初の例のように暗黙的に定義できます。 参加者またはアクターは、ダイアグラムのソーステキストに表示される順序でレンダリングされます。 最初のメッセージに表示される順序とは異なる順序で参加者を表示したい場合があります。 次の手順を実行することで、アクターの出現順序を指定できます。
sequenceDiagram
participant John
participant Alice
Alice->>John: Hello John, how are you?
John-->>Alice: Great!
sequenceDiagram
participant John
participant Alice
Alice->>John: Hello John, how are you?
John-->>Alice: Great!
3. Alias#
アクターは、便利な識別子と説明ラベルを持つことができます。
sequenceDiagram
participant A as Alice
participant J as John
A->>J: Hello John, how are you?
J->>A: Great!
sequenceDiagram
participant A as Alice
participant J as John
A->>J: Hello John, how are you?
J->>A: Great!
4. Messages#
メッセージは、実線または点線で2つ表示できます。
[Actor][Arrow][Actor]:Message text
Type | Description |
---|---|
-> | Solid line without arrow |
--> | Dotted line without arrow |
->> | Solid line with arrowhead |
-->> | Dotted line with arrowhead |
-x | Solid line with a cross at the end |
--x | Dotted line with a cross at the end. |
-) | Solid line with an open arrow at the end (async) |
--) | Dotted line with a open arrow at the end (async) |
5. Activations copy#
アクターをアクティブ化および非アクティブ化することができます。 (非)アクティブ化は、専用の宣言にすることができます。
sequenceDiagram
Alice->>John: Hello John, how are you?
activate John
John-->>Alice: Great!
deactivate John
%% There is also a shortcut notation by appending +/- suffix to the message arrow:
Alice->>+John: Hello John, how are you?
John-->>-Alice: Great!
%% Activations can be stacked for same actor:
Alice->>+John: Hello John, how are you?
Alice->>+John: John, can you hear me?
John-->>-Alice: Hi Alice, I can hear you!
John-->>-Alice: I feel great!
sequenceDiagram
Alice->>John: Hello John, how are you?
activate John
John-->>Alice: Great!
deactivate John
%% There is also a shortcut notation by appending +/- suffix to the message arrow:
Alice->>+John: Hello John, how are you?
John-->>-Alice: Great!
%% Activations can be stacked for same actor:
Alice->>+John: Hello John, how are you?
Alice->>+John: John, can you hear me?
John-->>-Alice: Hi Alice, I can hear you!
John-->>-Alice: I feel great!
6. Notes#
シーケンス図にメモを追加することができます。 これは表記法によって行われます
syntax#
** Note [ right of | left of | over ] [Actor]: Text in note content **
example#
sequenceDiagram
participant John
Note right of John: Text in note
%% It is also possible to create notes spanning two participants:
Alice->John: Hello John, how are you?
Note over Alice,John: A typical interaction
sequenceDiagram
participant John
Note right of John: Text in note
%% It is also possible to create notes spanning two participants:
Alice->John: Hello John, how are you?
Note over Alice,John: A typical interaction
7-1. Loops#
- シーケンス図でループを表現することができます。 これは表記法によって行われます
example#
sequenceDiagram
Alice->John: Hello John, how are you?
loop Every minute
John-->Alice: Great!
end
7-2. Loops Alt#
-
シーケンス図で代替パスを表現することができます。 これは表記法によって行われます
-
または、オプションのシーケンスがある場合(他にない場合)。
sequenceDiagram
Alice->>Bob: Hello Bob, 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: Thanks for asking
end
sequenceDiagram
Alice->>Bob: Hello Bob, 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: Thanks for asking
end
8-1. Parallel#
並行して発生しているアクションを表示することができます。これは表記法によって行われます
sequenceDiagram
par Alice to Bob
Alice->>Bob: Hello guys!
and Alice to John
Alice->>John: Hello guys!
end
Bob-->>Alice: Hi Alice!
John-->>Alice: Hi Alice!
sequenceDiagram
par Alice to Bob
Alice->>Bob: Hello guys!
and Alice to John
Alice->>John: Hello guys!
end
Bob-->>Alice: Hi Alice!
John-->>Alice: Hi Alice!
8-2. Parallel nest#
並行して発生しているアクションを表示することができます。これは表記法によって行われます
sequenceDiagram
par Alice to Bob
Alice->>Bob: Go Help John
and Alice to John
Alice->>John: I want this done today
and John to Charlie
John->>Charlie: Can we do this today ?
and John to Diana
John->>Diana: Can you help us today ?
end
sequenceDiagram
par Alice to Bob
Alice->>Bob: Go Help John
and Alice to John
Alice->>John: I want this done today
and John to Charlie
John->>Charlie: Can we do this today ?
and John to Diana
John->>Diana: Can you help us today ?
end
9. Background Highlighting#
色付きの背景長方形を提供することにより、フローを強調表示することができます。 これは表記法によって行われます 色は、rgbおよびrgba構文を使用して定義されます。
sequenceDiagram
rect rgb(220, 220, 220)
Note right of Alice: Alice calls John
Alice->>John: Hello John, how are you ?
rect rgb(255, 200, 200)
Alice->>John: John, can you hear me ?
John-->>Alice: Hi, Alice, I can hear you!
end
John-->>Alice: I feel great !
Alice->>John: Did you want to go the game tonight?
John-->>Alice: Yeah! See you there.
end
sequenceDiagram
rect rgb(220, 220, 220)
Note right of Alice: Alice calls John
Alice->>John: Hello John, how are you ?
rect rgb(255, 200, 200)
Alice->>John: John, can you hear me ?
John-->>Alice: Hi, Alice, I can hear you!
end
John-->>Alice: I feel great !
Alice->>John: Did you want to go the game tonight?
John-->>Alice: Yeah! See you there.
end
10-1. Background Entity#
Entity codes to escape characters ここに例示されている構文を使用して文字をエスケープすることができます。
sequenceDiagram
A->>B: I #9829; you!
B->>A: I #9829; you #infin; times more!
指定された数値は基数10であるため、#は#35;としてエンコードできます。 HTML文字名の使用もサポートされています。
マークアップを定義するために改行の代わりにセミコロンを使用できるため、#59を使用する必要があります。 メッセージテキストにセミコロンを含める。
10-2. sequenceNumbers#
シーケンス図の各矢印に付けられたシーケンス番号を取得することができます。 これは、以下に示すように、mermaidをWebサイトに追加するときに構成できます。
図のように、図コードを介してオンにすることもできます。
sequenceDiagram
autonumber
Alice->>John: Hello John, how are you?
loop Healthcheck
John->>John: Fight against hypochondria
end
Note right of John: Rational thoughts!
John-->>Alice: Great!
John->>Bob: How about you?
Bob-->>John: Jolly good!
sequenceDiagram
autonumber
Alice->>John: Hello John, how are you?
loop Healthcheck
John->>John: Fight against hypochondria
end
Note right of John: Rational thoughts!
John-->>Alice: Great!
John->>Bob: How about you?
Bob-->>John: Jolly good!
11. Styling#
シーケンス図のスタイリングは、いくつかのcssクラスを定義することによって行われます。 レンダリング中に、これらのクラスはsrc / themes /sequence.scssにあるファイルから抽出されます。
Classes used#
Class | Description |
---|---|
actor | Style for the actor box at the top of the diagram. |
text.actor | Styles for text in the actor box at the top of the diagram. |
actor-line | The vertical line for an actor. |
messageLine0 | Styles for the solid message line. |
messageLine1 | Styles for the dotted message line. |
messageText | Defines styles for the text on the message arrows. |
labelBox | Defines styles label to left in a loop. |
labelText | Styles for the text in label for loops. |
loopText | Styles for the text in the loop box. |
loopLine | Defines styles for the lines in the loop box. |
note | Styles for the note box. |
noteText | Styles for the text on in the note boxes. |
Sample stylesheet#
body {
background: white;
}
.actor {
stroke: #ccccff;
fill: #ececff;
}
text.actor {
fill: black;
stroke: none;
font-family: Helvetica;
}
.actor-line {
stroke: grey;
}
.messageLine0 {
stroke-width: 1.5;
stroke-dasharray: '2 2';
marker-end: 'url(#arrowhead)';
stroke: black;
}
.messageLine1 {
stroke-width: 1.5;
stroke-dasharray: '2 2';
stroke: black;
}
#arrowhead {
fill: black;
}
.messageText {
fill: black;
stroke: none;
font-family: 'trebuchet ms', verdana, arial;
font-size: 14px;
}
.labelBox {
stroke: #ccccff;
fill: #ececff;
}
.labelText {
fill: black;
stroke: none;
font-family: 'trebuchet ms', verdana, arial;
}
.loopText {
fill: black;
stroke: none;
font-family: 'trebuchet ms', verdana, arial;
}
.loopLine {
stroke-width: 2;
stroke-dasharray: '2 2';
marker-end: 'url(#arrowhead)';
stroke: #ccccff;
}
.note {
stroke: #decc93;
fill: #fff5ad;
}
.noteText {
fill: black;
stroke: none;
font-family: 'trebuchet ms', verdana, arial;
font-size: 14px;
}
12. Configuration#
Configuration#
シーケンス図をレンダリングするためのマージンを調整することは可能ですか?
これは、jelly.sequenceConfigを定義するか、CLIによって構成でjsonファイルを使用することによって行われます。 CLIの使用方法については[mermaidCLI](https://mermaid-js.github.io/mermaid/#/mermaidCLI)ページで説明されています。 jelly.sequenceConfigは、構成パラメーターまたは対応するオブジェクトを使用してJSON文字列に設定できます。
mermaid.sequenceConfig = {
diagramMarginX: 50,
diagramMarginY: 10,
boxTextMargin: 5,
noteMargin: 10,
messageMargin: 35,
mirrorActors: true
};
Possible configuration parameters:#
Parameter | Description | Default value |
---|---|---|
mirrorActors | Turns on/off the rendering of actors below the diagram as well as above it | false |
bottomMarginAdj | Adjusts how far down the graph ended. Wide borders styles with css could generate unwanted clipping which is why this config param exists. | 1 |
actorFontSize | Sets the font size for the actor's description | 14 |
actorFontFamily | Sets the font family for the actor's description | "Open-Sans", "sans-serif" |
actorFontWeight | Sets the font weight for the actor's description | "Open-Sans", "sans-serif" |
noteFontSize | Sets the font size for actor-attached notes | 14 |
noteFontFamily | Sets the font family for actor-attached notes | "trebuchet ms", verdana, arial |
noteFontWeight | Sets the font weight for actor-attached notes | "trebuchet ms", verdana, arial |
noteAlign | Sets the text alignment for text in actor-attached notes | center |
messageFontSize | Sets the font size for actor<->actor messages | 16 |
messageFontFamily | Sets the font family for actor<->actor messages | "trebuchet ms", verdana, arial |
messageFontWeight | Sets the font weight for actor<->actor messages | "trebuchet ms", verdana, arial |