PlantUML:控制箭头形状和方向

fra*_*ans 3 graphviz statechart plantuml

使用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
Run Code Online (Sandbox Code Playgroud)

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

这是给定状态图呈现的内容: 在此处输入图片说明

正如你所看到的图表绘制有点草率

  • “关机”过渡箭头不直
  • 初始/结束状态交换
  • 从“Powered”到“Starting”的箭头看起来像是以某种方式连接到“Power Off”转换
  • “启动”和“运行”状态未对齐

正如文档所描述的那样,您可以通过书写-left->-l->简称而不是仅仅对箭头方向产生一些影响-->

有没有影响的方式方法如何,并在那里箭头画出?我真的很想只绘制水平垂直的 直线

geb*_*ebi 13

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

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

为了使所有线条笔直(但不一定是水平或垂直的),您可以使用skinparam linetype polyline.

来源


Pau*_*ulH 5

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

\n\n

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

\n\n
@startuml\n\nstate Powered {\n  [*] --> Starting\n  Starting --> Operational\n}\n[*]\xc2\xa0--> Powered : Power On\nPowered --> [*]\xc2\xa0: Power Off\nPowered --> Powered : Reset\nPowered --> Powered : Fatal Error\n\n@enduml\n
Run Code Online (Sandbox Code Playgroud)\n\n

在此输入图像描述

\n\n

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

\n\n

或者这两个语句:

\n\n
Powered --> Powered : Reset\nPowered --> Powered : Fatal Error\n
Run Code Online (Sandbox Code Playgroud)\n\n

可以合并到:

\n\n
Powered --> Powered : Reset, Fatal Error\n
Run Code Online (Sandbox Code Playgroud)\n\n

请参阅OMG UML 2.5 格式规范第 14.2.4.9 节第 329 页

\n\n
[<trigger> [\xe2\x80\x98,\xe2\x80\x99 <trigger>]* [\xe2\x80\x98[\xe2\x80\x98 <guard>\xe2\x80\x99]\xe2\x80\x99] [\xe2\x80\x98/\xe2\x80\x99 <behavior-expression>]]\n
Run Code Online (Sandbox Code Playgroud)\n