我正在处理一个系统(B),该系统与另一个系统(C)通信,并在终端(A)上展示不断循环计算的值。 (A)要求(B)报告一个变量x
。 (B)无阻塞回复,以使(B)能够继续处理(C)。后来,(A)还要求(B)报告变量y
,以同样的方式提供服务。
为了文档化,我需要创建一个UML序列图(使用plantuml
)来描述这个过程。我现在的问题是如何正确地建模。即使循环没有完成,(B)和(C)之间的通信也可以继续进行。但是我该如何正确地建模呢?
以下是选项1,仅使用循环中的异步回复:
@startuml
A ->> B: report x
loop
B -->> A: x
end loop
B -> C: foo
C --> B: bar
A ->> B: report y
loop
B -->> A: y
end loop
B -> C: qux
C --> B: baz
@enduml
选项2适用于在流程后期变为真的条件:
@startuml
A ->> B: report x
loop until reporting x ends
B -->> A: x
end loop
B -> C: foo
C --> B: bar
A ->> B: report y
loop until reporting y ends
B -->> A: y
end loop
B -> C: qux
C --> B: baz
B -->> A: end reporting x
B -->> A: end reporting y
@enduml
选项 2 更加明确。但是这两个选项中的任何一个是否正确地表示了手头的过程呢?
<<ref>>
片段会有同样的缺点,对吗?所以我猜我不能在单个页面上技术上正确地表达它。因此,我考虑使用注释,并且如果需要的话,在一个单独的线程中描述x和y的报告的第二个图表。 - undefined