PlantUML:控制箭头形状和方向

PlantUML: control arrow shape and direction

我用 PlantUML 为我的文档创建了一个小状态图:

@startuml

state Powered {
    [*]      -d->    Starting
    Powered  -r->    Starting : Some error
    Starting -d->    Operational
}
[*]     -d->   Powered  : Power On
Powered -u->   [*]      : Power Off
Powered -d->   Powered  : Reset

@enduml

(顺便说一句:Pl​​antUML 是一个非常 的好工具,可以从嵌入的嵌入标记文档(如 asciidoc 或 reStructuredText)中创建图形输出)

这是给定状态图呈现的内容:

正如你所见,图表绘制得有点草率

正如 documentation 描述的那样 通过写 -left->-l-> 而不只是 -->.

有没有办法影响 howwhere 箭头的绘制方式?我真的很想只绘制 水平垂直 直线 线。

PlantUML 并未设计为在施加多个方向时提供漂亮的直箭头。使用默认布局为我提供了最清晰和最易读的结果。

这是一个具有相同含义但没有布局问题的示例:

@startuml

state Powered {
  [*] --> Starting
  Starting --> Operational
}
[*] --> Powered : Power On
Powered --> [*] : Power Off
Powered --> Powered : Reset
Powered --> Powered : Fatal Error

@enduml

编辑:我还将您的 Powered --> Starting : Fatal Error 转换更改为:Powered --> Powered : Fatal Error,这更好地表达了从 Powered 内的任何状态,致命错误事件将在 Starting 子状态重新启动。

或者两个语句:

Powered --> Powered : Reset
Powered --> Powered : Fatal Error

可以合并到:

Powered --> Powered : Reset, Fatal Error

参见 OMG UML 2.5 format specification 第 329 页第 14.2.4.9 节

[<trigger> [‘,’ <trigger>]* [‘[‘ <guard>’]’] [‘/’ <behavior-expression>]]

为未来的读者回答原始问题:

为了只绘制水平或垂直直线,可以使用skinparam linetype ortho

为了让所有的线都笔直(但不一定是水平或垂直的)你可以使用skinparam linetype polyline

(source)