Skip to content

headingNumber: true

序列图

序列图是用来描述对象之间消息顺序的图(详细可以参见 维基百科

Mermaid 可以用来生成序列图,下面是个完整的例子:

null

语法

参与者

参与者的定义可以和首个例子中隐式的声明定义,这样参与者或者执行者会在源代码定义中按照顺序渲染。

有时候想显示参与者为不同的顺序,而不是和上述例子中一样顺序输出。那么你可以如下显示声明参与者的顺序:

null

别名

每个执行者可以使用 id 然后带上对应的别名,方便记忆和整理。

null

信息

信息可以使用虚线以及实线来链接和标注,具体的语法参见:

[Actor][Arrow][Actor]:Message text

目前,有六个类型的箭头样式可以使用:

类型描述
->没有箭头实线
-->没有箭头的虚线
->>带箭头的实线
-->>带箭头的虚线
-x带交叉箭头的实线(异步)
--x带交叉箭头的虚线(异步)

激活

同时,支持描述是否激活(activate)制定的参与者。描述是否激活可以这样子定义:

Warning 译者注:这里的表述可能会有些混淆,根据 MSDN 的描述是「执行匹配项」

null

也可以使用 +/- 用于简化的描述,如下:

null

同个参与者可以堆叠「激活」,参见:

null

标注

序列图中支持标注定义,它基本的语法是 Note [ right of | left of | over ] [Actor]: Text in note content

类似以下的样子:

null

也可以同时在两个参与者同时显示标注,例如:

null

循环

同时也支持如何在图表中描述循环,它使用标注定义:

loop Loop text
... statements ...
end

参见下面的例子:

null

分支(Alt)

支持在图表中描述选择,它使用标注定义:

alt Describing text
... statements ...
else
... statements ...
end

或者描述以下是可选的(没有 else 语句):

opt Describing text
... statements ...
end

下面是具体的例子:

null

样式化

序列图支持多种节点样式的自定义,下面是具体的样式类。

已经使用的样式类

样式类描述
actor序列图中执行者的边框样式
text.actor序列图中执行者的文本样式
actor-line执行者中的直线样式
messageLine0实线信息线的样式
messageLine1虚线信息线的样式
messageText信息链接文案的样式
labelBox循环框的样式
labelText循环框的文本样式
loopText循环框的内部文本样式
loopLine定义循环框的行样式
note标注框的样式
noteText标注框的文本样式

样式例子

css
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;
    stroke: #CCCCFF;
    fill: #fff5ad;
}

.noteText {
    fill:black;
    stroke:none;
    font-family: 'trebuchet ms', verdana, arial;
    font-size:14px;
}

配置

我们可以调整序列图的间距等配置。使用 mermaid.sequenceConfig 或者在命令行下使用 json 格式文件进行配置。如何使用命令行下的配置可以参见 mermaidCLI 页面,mermaid.sequenceConfig 可以使用 JSON 字符串或者对应的对象。

javascript
mermaid.sequenceConfig = {
    diagramMarginX:50,
    diagramMarginY:10,
    boxTextMargin:5,
    noteMargin:10,
    messageMargin:35,
    mirrorActors:true
};

可以使用的配置参数

参数描述默认值
mirrorActor关闭或者打开参与者是否在覆盖在图中(不占用位置)false
bottomMarginAdj调整图的下部边距,因为可能设置的样式边框过粗会超出边距,因此在实际情况中需要做适当的调整1

版权声明