【问题标题】:PlantUML: control arrow shape and directionPlantUML:控制箭头的形状和方向
【发布时间】:2019-11-15 20:30:58
【问题描述】:

使用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”转换有关
  • “正在启动”和“运行”状态未对齐

正如documentation 所描述的,您通过写成-left->-l-> 而不仅仅是--> 来对箭头方向产生一些影响。

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

【问题讨论】:

    标签: graphviz statechart plantuml


    【解决方案1】:

    为未来的读者回答最初的问题:

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

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

    (source)

    【讨论】:

      【解决方案2】:

      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 第 14.2.4.9 节第 329 页

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

      【讨论】:

      • 也许我还没有看到重点,但在我看来,您只是简化模型以避免所描述的问题。在我的情况下,我需要 Powered --&gt; Starting 转换,因为它告诉我从“Powered”中包含的 any 状态我可以再次进入“Starting”(例如,通过错误)。因此,对于工作示例 +1,但我怀疑这种方法是否适用于更复杂的模型。
      • @frans 我调整了我的答案以包括致命错误处理。
      • 您可以考虑使用 Umple。请参阅此示例:cruise.eecs.uottawa.ca/umpleonline/?example=manualexamples/…
      猜你喜欢
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      相关资源
      最近更新 更多