PlantUML:控制箭头的形状和方向

时间:2016-06-08 12:25:39

标签: 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

(顺便说一下:PlantUML是一个非常很好的工具,用于从嵌入式嵌入式标记文档(如asciidoc或reStructuredText)的文本描述创建图形输出)

这是给定状态图呈现的内容: enter image description here

正如您所看到的,图表有点草率

  • “关闭电源”转换箭头不直接
  • 交换初始/结束状态
  • 从“Powered”到“Starting”的箭头看起来像是以某种方式连接到“Power Off”过渡
  • “开始”和“操作”状态未对齐

正如documentation所描述的那样,对箭头方向有一些影响,只需简写-left->-l->而不仅仅-->

有没有办法影响如何哪里箭头的绘制方式?我真的希望只绘制水平垂直 行。

2 个答案:

答案 0 :(得分:3)

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

以下是具有相同含义的示例,但没有布局问题:

@startuml

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

@enduml

enter image description here

编辑:我还将您的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第14.2.4.9页第329页

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

答案 1 :(得分:1)

要为以后的读者回答原始问题:

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

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

source