如何修正PlantUML线路路径

问题描述 投票:0回答:6

我使用以下代码创建了此图。但正如您所看到的,从(取消订单)和(下订单)到(出版商)的线路决定采取一条非常圆形的路径来获取它们,而不是直接向右然后向下到达出版商。我尝试使用“-down”等手动方向命令,但它们似乎都没有帮助。有人知道如何解决这个问题吗?

这是我的代码。我很感激任何帮助。谢谢你。

@startUML EBook Use Case Diagram
left to right direction
Actor Customer as customer
Actor EBook as ebook
Actor Publisher as publisher
rectangle "Book Catalogue" {
    together {
        Actor "Book Database" as bookLog
        (Retrieve Information) as getBook
        customer -- getBook
        getBook -- ebook
        getBook -- bookLog

        (Update Catalogue) as updateCatalogue
        ebook -- updateCatalogue
        updateCatalogue -- bookLog
    }

    together {
        (Place Order) as order
        customer -- order
        order -- ebook
        order--publisher

        (Cancel Order) as cancelOrder
        customer -- cancelOrder
        cancelOrder -- ebook
        cancelOrder--publisher
    }
}

(Ship To EBook) as shipEBook
shipEBook -- publisher
(Ship To Customer) as shipCustomer
customer -- shipCustomer
ebook -- shipEBook
shipCustomer -- ebook

(Return to EBook) as returnCustomer
(Returnto Publisher) as returnPublisher
customer -- returnCustomer
returnCustomer -- ebook
ebook -- returnPublisher
returnPublisher -- publisher

@endUML
uml graphviz diagram sequence-diagram plantuml
6个回答
67
投票

您可以尝试下面列出的一些技巧。布局本身由 GraphViz(点布局 iirc)执行,GraphViz 有时只是这样做。图形布局是一个 NP 完全问题,因此算法通常采用苛刻的捷径。

我见过或使用过的典型解决方法包括:

  • 添加隐藏线
    a -[hidden]- b
  • 延长线的长度
    a --- b
    (更多的破折号,更长的线)
  • 指定线条的首选方向 (
    a -left- b
    )
  • 交换关联结束 (
    a -- b
    b -- a
    )
  • 改变定义的顺序(顺序确实很重要......有时)
  • 添加背景/边框颜色设置为透明的空节点

因此,如果你真的想要一个漂亮的布局,你需要付出一些努力,但请记住,布局仍然很脆弱——如果你添加/删除项目,你可能需要再次重做.


51
投票

尝试@Peter Uhnak 建议的选项以及线型:

skinparam linetype polyline
skinparam linetype ortho

提供更好的线路选择。 使用正交 - (这里)

你会得到-


33
投票

要使布局中的连接不那么重要,请使用

[norank]
,例如
a -[norank]-> b


21
投票

如果有人想知道更具体的、可能更无用的答案,这就是我最后所做的。

    order -down- publisher
    publisher -[hidden]up- order

因此出于某种原因添加重复的命令可以解决这个问题。


3
投票

所有这些好的答案都在半官方的 Hitchhiker’s Guide to PlantUML 中编译和引用。请参阅布局部分

不确定 3 年前情况如何,但现在可能是 PlantUML 调整比 SO 更好的起点。


0
投票

@startuml

!定义 RECTANGLE 类 !define DECISION 决策 !定义箭头-

|首页| --|绿色咖啡厅的处理、接收和使用材料| :处理(5 分钟) |绿色咖啡厅的处理、接收和使用材料| --[<>|Transportar a el área de producción|] : 运输(10 分钟) |[<>|运输 a el área de producción|] --|Limpieza y separación del grano| :处理(10 分钟) |林皮扎与格拉诺分离| --[<>|Despulpado (seco o húmedo)|] : Proceso(10 分钟) [<>|Despulpado (seco o húmedo)|] --|Seco| :Se pasa a secar(20 分钟) [<>|Despulpado (seco o húmedo)|] --|Húmedo| :Dos lavados y secado al aire caliente(30 分钟)

|山科| --|验证者| :验证(30 分钟) |胡梅多| --|验证者| :验证(30 分钟)

|验证器| --[<>|Semilla mala y muda que Sirva para|]:Proceso(30 分钟) [<>|Semilla mala y muda que Sirva para|] --|Semilla buena| : 参加考试(60 分钟)

|塞米拉·布埃纳| --|学生| :Tueste(180-240C) |学生| --|Enfriado reposado y mezclado| :处理(15 分钟) |Enfriado reposado y mezclado| --|Pre molido 筒仓的 Almacenamiento| :处理(30 分钟) |Pre molido 筒仓的 Almacenamiento | --|Molido del Cafe tostado| :处理(45 分钟) |莫利多德尔咖啡馆托斯塔多| --|恩瓦萨多| :处理(20 分钟) |恩瓦萨多| --|Almacenamiento| :处理(10 分钟) |阿尔玛森尼恩托| --|展览| :处理(10 分钟)

|展览| --|鳍| : 鳍

@enduml

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