如何识别从同一激活栏实例化的动作不是同时发生的? (顺序图)

时间:2019-07-06 15:36:04

标签: uml sequence-diagram

UML

我正在查看与所附快照类似的序列图,对象A在同一激活条上实例化了3个动作,并且对象B也通过相同的激活条收到了

所以我可以说这三个功能是一个接一个地执行吗?由于它们是实心箭头,所以我不确定我的理解是正确的。

请告知,谢谢。

1 个答案:

答案 0 :(得分:1)

  

我能说这三个功能一个接一个地执行吗?由于它们是实心箭头

箭头指示同步消息,因此第二条消息不能在功能A 执行结束之前发送,第一条消息不能在功能B执行结束之前发送对象A 生命线上的 ExecutionSpecification 不能在执行 C 函数结束之前结束。

  

对象A在同一激活条上实例化了3个动作

所有这三个消息都可以在对象

的生命线上从相同的 ExecutionSpecification 开始
  

对象B通过相同的激活栏收到的3个动作...

这是无效的, ExecutionSpecification 表示一个动作/行为的执行,因此在 Object B <>的生命线上需要三个 ExecutionSpecification / em>,您不能只有一个。

有效图可以是:

enter image description here

或还显示回报:

enter image description here

function_c返回时不会立即调用它们function_b,对 object a 的执行在引入延迟之前执行了“某些操作”,并且在执行延迟之后进行了“某些操作”) )


根据您的评论:

  

根据要求,这3个功能应由objectB同时执行。那意味着我应该使用线形箭头而不是实心箭头?如果功能是同时执行的,我可以在objectB上使用相同的ExecutionSpecification吗?

如果使用异步调用(打开的箭头),则不会返回任何消息,因此 object a 无法知道执行何时结束,因此可以立即发送下一条消息。

这3个功能应该由对象b 同时执行的事实是另一回事,异步调用可以由接收者依次执行,而接收者执行并发执行的事实却不是暗示发起呼叫,但是是的,您可以使用发起呼叫。

您仍然必须在对象 b 上使用3个 ExecutionSpecification ,要显示并发执行,只需使用组合片段“ par” 。 >

例如:

enter image description here