3

使用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)创建图形输出)

这是给定状态图呈现的内容: 在此处输入图像描述

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

  • “关机”过渡箭头不直
  • 初始/结束状态被交换
  • 从“Powered”到“Starting”的箭头看起来好像与“Power Off”过渡有关
  • “启动”和“运行”状态未对齐

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

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

4

2 回答 2

17

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

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

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

来源

于 2019-11-15T12:30:58.100 回答
5

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 格式规范第 14.2.4.9 节第 329 页

[<trigger> [‘,’ <trigger>]* [‘[‘ <guard>’]’] [‘/’ <behavior-expression>]]
于 2016-06-21T11:58:04.093 回答