43

我使用以下代码创建了这个图表。但正如您所见,从 (Cancel Order) 和 (Place Order) 到 (Publisher) 的行决定采用非常圆的路径来获取它们,而不是直接向右走,然后再向下到发布者。我尝试使用诸如“-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
4

5 回答 5

56

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

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

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

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

于 2018-02-11T18:58:44.320 回答
37

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

skinparam linetype polyline
skinparam linetype ortho

为线条提供更好的选择。使用邻 - (这里

你会得到 -

在此处输入图像描述

于 2018-02-15T10:18:24.860 回答
22

要使连接在布局中不那么重要,请使用[norank],例如,a -[norank]-> b

于 2020-05-14T10:36:27.167 回答
19

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

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

所以出于某种原因,以两种方式添加重复的命令可以解决它。

于 2018-02-12T05:27:33.343 回答
0

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

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

于 2021-12-28T07:42:09.370 回答