DOT格式的UML状态图中的子状态

问题描述 投票:1回答:1

我正在尝试使用DOT格式生成基本的UML状态图。这是我目前的档案:

digraph {
compound=true;
node [shape=Mrecord]
rankdir="LR"

subgraph cluster0
    {
    label = "D"
B [label = "B"]
C [label = "C"]
}
A [label = "A|entry / EnterA\nexit / ExitA"]

A -> B [   style="solid",label="X" ];
A -> C [   style="solid",label="X" ]; 
}

通过Erdos graphing engine运行它,它看起来非常像我想要的除了我无法弄清楚如何使超级D具有圆角和水平线和进入/退出条件,如状态A。

有没有办法将这些东西添加到DOT子图中?

附: Graphviz说“The record-based shape has largely been superseded and greatly generalized by HTML-like labels”,但是当我尝试这个时,大多数引擎给了我一个非常可怕的图表,其中过渡箭头甚至没有接近触及状态,这就是为什么我正在做“过时的”基于记录的形状而不是HTML。

uml dot
1个回答
1
投票

一个子图可以有style = rounded属性,所以我想这就是你想要的(也把html标签作为奖励):

digraph {
  compound=true;
  node [shape=Mrecord]
  rankdir="LR"

  subgraph cluster0 {
    label = "D"
    style = rounded 
    B [label = "B"]
    C [label = "C"]
  }
  A [label = <<table cellborder="0" style="rounded">
        <tr><td>A</td></tr>
        <hr/>
        <tr><td>entry / EnterA<br/>exit / ExitA</td></tr>
        </table>> 
     margin=0 shape=none]
  A -> B [style="solid" label="X"];
  A -> C [style="solid" label="X"]; 
}

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.