draw.io 中的 Mermaid 已更新,支持 ELK 布局
Mermaid 是一种基于文本的语法,可用于描述图表,并自动将其整齐地排列在图表画布上。您可以在 draw.io 中通过“排列”>“插入”>“Mermaid”(位于 draw.io 菜单栏)或“+”>“Mermaid”(位于工具栏)输入 Mermaid 图表描述。draw.io 已更新至 Mermaid 版本 10.9.1,以支持新的 ELK 自动布局。

draw.io 中的文本转图表工具
draw.io 内置了多种文本转图表工具:


使用 Mermaid 语法生成的示例甘特图
这些文本转图表功能中,有些会在绘图画布上生成图像形式的图表,有些则会使用 draw.io 形状自动布局图表,并允许您继续向图表中添加 draw.io 形状和连接线。
使用 Mermaid 语法生成图表时,您可以选择首选的输出格式,但某些图表类型(如上面的甘特图)只会生成图像。
在 draw.io 中插入美人鱼图
下面用 Mermaid 语法描述了一个咖啡机调试流程示例。
graph TD
A(Coffee machine <br>not working) --> B{Machine has power?}
B -->|No| H(Plug in and turn on)
B -->|Yes| C{Out of beans or water?} -->|Yes| G(Refill beans and water)
C -->|No| D{Filter warning?} -->|Yes| I(Replace or clean filter)
D -->|No| F(Send for repair)将此美人鱼图添加到 draw.io。
如果您使用的是简易模式或Sketch 编辑器主题,请从菜单中选择“排列”>“插入”>“美人鱼”,或者从工具栏中选择“+”>“美人鱼”。

请使用 Mermaid 语法在大文本框中输入图表的文字描述。
从下拉列表中,选择是要插入 draw.io 形状的图表(图表),还是作为单个图像(图像),然后单击“插入”。

图表(默认):使用 draw.io 形状插入 Mermaid 图表时,您可以连接其他形状和连接线,并设置图表样式。要更改 Mermaid 的原始语法,请先删除之前插入的形状,然后重复上述步骤重新输入图表的 Mermaid 描述。

图片:要将美人鱼图生成为绘图画布上的单个 SVG 图像,请在“插入”之前从下拉列表中选择“图像”。将鼠标悬停在 SVG 图像上,即可在工具提示中看到美人鱼语法。请注意,您无法编辑或设置此 SVG 图像版本中各个形状或连接线的样式。

要更改以图像形式添加的 Mermaid 图表,请双击绘图画布上的 SVG,然后编辑 Mermaid 语法以重新生成图像。
适用于大型流程图的全新 ELK 布局
Mermaid 9.4 版本中引入的全新 ELK 布局选项,可以生成大型复杂流程图的更紧凑版本。
在 Mermaid 图表文本描述的顶部添加以下渲染器指令:
%%{init: {"flowchart": {"defaultRenderer": "elk"}} }%%例如,要使用 ELK 渲染器命令布局上面所示的 Mermaid 示例图,插入 Mermaid 对话框如下所示。

点击“插入”,即可生成美人鱼示意图,并使用 draw.io 形状绘制。

虽然这个例子很小很简单,但对于具有复杂决策和许多分支的大型流程,使用此 ELK 渲染器选项可能会显示得更好。
注意:由于这是 Mermaid 开发人员的一项实验性功能,目前仅支持流程图布局。
大型美人鱼流程图(含和不含麋鹿)
下面展示的是一个较为复杂的 draw.io 流程图模板,已使用 Mermaid 语法进行了文字描述,并以图片形式插入。左侧的精简版本使用了新的 ELK 渲染器指令,而右侧的版本则没有。

使用 ELK 渲染器指令后,此流程图的 Mermaid 代码如下所示。
%%{init: {"flowchart": {"defaultRenderer": "elk"}} }%%graph TD
A[\Replenish Value Add stock/] --->C
B(Order product with Value Add) --->C
C{Frequent process?} --->|Yes|D
C --->|No|F
D{New template?} --->|Yes|E
D --->|No|G
E(Create work order template) --->G
F(Create work order) --->H
G(Copy template to work order) --->I
H(Add materials to work order processes) --->J
I(Adjust material quantities) --->J
J(Monitor work orders) --->K
K{Material quantities in stock?} --->|No|L
K --->|Yes|M
L(Procure materials) --->M
M(Change status to In Progress) --->N
N{External Vendor to perform step?} --->|Yes|O
N --->|No|P
O(Add vendor costs) --->Q
P[\Perform work order step/] --->R
Q([Ship materials to Vendor]) --->S --->X
R{Additional processing required?} --->|Yes|N
R--->|No|T
S[\Perform work order step/] --->U
T(Receive final stock) --->V
U(Receive product from vendor) --->W
V(Ship product on order) --->Y
W{Partial quantity received?} --->|Yes|X
W --->|No|Z
X[Create work order backorder] ---> J
Y(Change status to complete) --->AA
Z(Pay vendor invoice) --->R
AA([Finish])