PlantUML:泳道和重叠连接器

标签 plantuml

我正在使用 plantUML 泳道来可视化内部流程,但不幸的是,当我想显示已执行和分离的流程时遇到重叠线。

我正在使用这个:

@startuml

title something

|#dee4e8|p1|
|#c4c9cd|p2|
|#daf0fe|Backend|

|Backend|
start
    :something;
    if (open) then (yes)
        :generate open data;
        split
            #3f3:Mail to p1\nMAIL ID: **3010**|
            |p1|
            :Receive Mail **3010**;
            detach
        split again
            |Backend|
            #3f3:Mail to p2\nMAIL ID: **3006**|
            |p2|
            :Receive Mail **3006**;
            detach
        end split
    endif
    |Backend|
    #HotPink:something else>

stop

@enduml

并得到:
enter image description here

我希望与接收邮件事件建立非重叠连接,如果我在发送第二封邮件之前添加一个空事件,我会更像这样:

enter image description here

也可以按顺序执行此操作,但我不知道如何分离接收邮件事件并将“邮件到 p1/p2”相互连接,而不将其设为 if 语句。

最佳答案

您可以使用与让 if 的“else”部分出现在其他步骤下方的相同技巧。
请注意,您实际上并没有使用正确的 else 语义(这会将 else 分支放在一边),但是您的“其他内容”实际上是 endif 之后的延续,只是由于分离而没有来自电子邮件操作的链接.
您可以使用相同的技巧使 p2 出现在 p1 下方。即不是将 p2 作为拆分的一部分,而是在结束拆分之后移动它。这将使它出现在 p1 部分下方,但由于分离,将没有来自 p1 的连接器。

@startuml

title something

|#dee4e8|p1|
|#c4c9cd|p2|
|#daf0fe|Backend|

|Backend|
start
    :something;
    if (open) then (yes)
        :generate open data;
        split
            #3f3:Mail to p1\nMAIL ID: **3010**|
            |p1|
            :Receive Mail **3010**;
            detach
        split again
            |Backend|
            #3f3:Mail to p2\nMAIL ID: **3006**|
        end split
        |p2|
        :Receive Mail **3006**;
        detach
    endif
    |Backend|
    #HotPink:something else>
stop
@enduml
enter image description here

关于PlantUML:泳道和重叠连接器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51020100/

相关文章:

Plantuml 两个类之间的几个箭头

uml - PlantUML 组件图端口

plantuml - 如何在plantUML的事件图中使用别名?

doxygen - 如何解决 doxygen 错误 : problems running PlantUML?

plantuml - 如何使用可能在不同级别包含相同名称的嵌套包生成 UML 包图?

uml - 如何用PlantUML实现直接箭头?

plantuml - PlantUML 中的行距

sequence-diagram - 如何在 PlantUml 的序列图中显示广播(同时发送两条消息)

java - Plantuml 停止使用新版本的 Java 1.7.0.21

plantuml - 如何在类图中获得非线性布局?