如何重新排列 UML 状态图中的块

问题描述

我刚刚创建了一个状态图,现在我正在努力处理块的位置。我的目标是将状态 1、2、4、5 置于“向下”行中,并将状态 3 置于状态 1 的右侧。

查看我的 UML 代码以及当前(左)和想要(右)设计的附加屏幕截图

UML 代码

@startuml diagramStackO
scale 400 width
[*]    -down->  State1
State1 -down->  State2
State1 -right-> State3
State2 -up->    State3
State2 -down->  State4
State4 -->      State5
State5 -->      [*]
@enduml

屏幕截图(左:当前右:它应该是什么样子)

enter image description here

解决方法

我的第一个建议是忽略它并继续......在 PlantUML 中调整图表以使其“恰到好处”,即使是小事,也会占用大量时间。

但是,作为一个花费太多时间来使图表恰到好处的人,我会想到两件事。

使用 ortho

第一个是添加skinparam linetype ortho。这是最少的工作,但也带来了最少的改进:

@startuml
skinparam linetype ortho

[*]    -down->  State1
State1 -down->  State2
State1 -right-> State3
State2 -up->    State3
State2 -down->  State4
State4 -->      State5
State5 -->      [*]
@enduml

使用隐藏容器

另一个是添加一个隐藏的容器,它一点更多的工作,但不是太多,我认为。

要获得您想要的垂直对齐,需要将状态组合在一起:

我们现在需要做的就是隐藏容器:

我用来实现这个效果的代码是:

@startuml
skinparam {
    shadowing false

    state {
        BackgroundColor<<HIDDEN>> hidden
        BorderColor<<HIDDEN>> hidden
    }
}


state " " as _ <<HIDDEN>> {
    state State1
    state State2
    state State4
    state State5
}


[*]    -down->  State1
State1 -down->  State2
State1 -right-> State3
State2 -right->    State3
State2 -down->  State4
State4 -->      State5
State5 -->      [*]
@enduml

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...