我一直在努力思考如何让这张图看起来像我喜欢的样子。这是我得到的最接近的
并且已经用这段代码实现了
@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 语法给我的那种干净的方形外观,所以这也是一个失败。那么,帮忙吗?
编辑:我注意到我的标签中有错误,我希望现在已经修复它并且在逻辑连接方面,两个图像现在应该是等价的。我还在油漆上添加了红色箭头和标签,以更清楚地显示我想要实现的目标。谢谢大家的困惑,现在情况应该清楚多了。
在活动图中,您可以使用
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
如果你只是想得到一个图表,那么状态图可能更好(这是你的第二个例子,我承认我不理解旁路——它与第一个例子不一样)。 无论如何,删除
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