我正在开发一个系统 (B),该系统与另一个系统 (C) 通信并在终端 (A) 的持续循环中显示计算值。(A) 要求 (B) 报告一个变量x
。(B) 这样做没有阻塞,因此 (B) 可以继续处理 (C)。稍后,(A) 要求 (B) 也报告变量y
,这将由 (B) 以相同的方式提供服务。
对于文档,我需要创建一个plantuml
描述该过程的 UML 序列图(使用 )。我现在的问题是如何正确建模。(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 更明确。但是这两个选项中的任何一个是否正确地表示了手头的过程?