【问题标题】:How to correct PlantUML Line Path如何更正 PlantUML 线路径
【发布时间】:2018-07-20 15:14:53
【问题描述】:

我使用以下代码创建了这个图表。但正如您所见,从 (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

【问题讨论】:

  • 你是怎么把图片弄得这么清晰的?您是先导出为 svg 然后再转换为 png 吗?
  • 嘿,我刚刚使用 vscode 植物 uml 扩展名导出到图像(可能是 png?)。我不再使用 vscode 或 plantuml,所以我帮不上什么忙,抱歉。

标签: uml graphviz diagram sequence-diagram plantuml


【解决方案1】:

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

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

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

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

【讨论】:

  • 我想指出@aSamWow 对together 的使用。我以前不知道这个命令,但我只是成功地使用它,如下所示:together group1 { class a class b } together group2 { class c class d } group1 -[hidden]- group2
  • 我不知道行长功能!非常感谢!
【解决方案2】:

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

skinparam linetype polyline
skinparam linetype ortho

为线条提供更好的选择。 使用正交 - (Here)

你会得到 -

【讨论】:

  • 好主意,它确实解决了这个问题,但正交线在植物 UML 中弄乱了标签,所以我尽量避免它们用于更复杂的图表。
  • “线型正交标签定位错误” - 请投票:github.com/plantuml/plantuml/issues/149
【解决方案3】:

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

【讨论】:

  • 我对这个答案的目标是在一个相关特征被很好地列出(并被接受为答案)的地方以最小的认知负荷记录一个未记录的 PlantUML 特征。在这个问题的上下文中,PlantUML 的用户会感谢norank
  • 我很感激。我从来不知道 norank 选项! @fkleedorfer
【解决方案4】:

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

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

所以由于某种原因,双向添加重复的命令可以解决它。

【讨论】:

  • > 出于某种原因:我想原因是每条边都增加了权重。在 Graphviz 中可以指定边的权重,但我还没有在 PlantUML 中找到一种方法。
【解决方案5】:

所有这些好的答案都在半官方Hitchhiker’s Guide to PlantUML中编译和引用。见Layout section

不确定 3 年前的情况,但现在它可能是 PlantUML 调整的一个更好的起点,而不是 SO。

【讨论】:

    猜你喜欢
    • 2014-07-04
    • 2019-03-08
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 2013-04-01
    相关资源
    最近更新 更多