绕过 plantUML 活动图中的活动

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

我一直在努力思考如何让这张图看起来像我喜欢的样子。这是我得到的最接近的

并且已经用这段代码实现了

@startuml
:A;
split;
  -> A to B;
  :B;
  -> B to E;
  :E;
  -> E to G;
split again;
  -> A to C;
  :C;
  ->C to D;
  :D;
  ->D to F;
  :F;
  ->F to G;
end split;
:G;
@enduml

但是它缺少从 C 到 F 的箭头,我终究无法弄清楚如何使用新语法来实现它。

我确实设法用像这样的旧语法做了类似的事情

@startuml
"A" -left->["A to B"] "B"
"A" -right->["A to C"] "C"
"B"-->["B to E"] "E"
"C"-->["C to D"] "D"
"D"-->["D to F"] "F"
"C"-->["C to F"] "F"
"F"-->["F to G"]"G"
"E"-->["E to G"] "G"
@enduml

导致这张图片

但是这个语法有旧语法的缺点,我个人发现新语法产生的“矩形”外观比旧语法的曲线更具可读性。

那么,如何在新语法中获得从 C 到 F 的箭头呢?一些问题,比如How to reference earlier activity in PlantUML UML Activity Diagram让我很接近,但它们似乎并不是我要找的。我也研究了 graphViz,但我无法弄清楚如何生成新的 plantUML 语法给我的那种干净的方形外观,所以这也是一个失败。那么,帮忙吗?

编辑:我注意到我的标签中有错误,我希望现在已经修复它并且在逻辑连接方面,两个图像现在应该是等价的。我还在油漆上添加了红色箭头和标签,以更清楚地显示我想要实现的目标。谢谢大家的困惑,现在情况应该清楚多了。

graph diagram plantuml activity-diagram
1个回答
0
投票

在活动图中,您可以使用

split
显示旁路。但是,您不能这样做,因为流中没有绕过该活动的额外活动。所以,这似乎是一个条件流程。活动图有一个语法(带有菱形节点)所以它看起来是这样的:

@startuml diagram name
:A;
split;
  -> A to B;
  :B;
  -> B to E;
  :E;
  -> E to G;
split again;
  -> A to C;
  :C;
    if (condition?) then
    :D;
    endif
  :F;
  ->F to G;
end split;
:G;
@enduml

enter image description here

如果你只是想得到一个图表,那么状态图可能更好(这是你的第二个例子,我承认我不理解旁路——它与第一个例子不一样)。 无论如何,删除

left
right
规范通常会带来更好的布局。我总是从那开始。这是你的第二个例子(更好吗?)没有那些:

@startuml
"A" -->["A to B"] "B"
"A" -->["A to C"] "C"
"B"-->["B to D"] "D"
"D"-->["D to E"] "E"
"B"-->["B to E"] "E"
"C"-->["C to F"] "F"
"F"-->["F to G"] "G"
"E"-->["E to G"] "G"
@enduml

enter image description here

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