如何表示在状态机中嵌套替代的序列图?

How can i represents a sequence diagram that has nested alternative in State machine?

提问人:perpetter 提问时间:9/23/2023 最后编辑:perpetter 更新时间:9/25/2023 访问量:76

问:

我创建了一个序列图,该图有一个 alt,治疗师可以选择控制录像机或与一对夫妇交谈,其中有两个 alt,其中第一个 alt 是与 A 交谈或与 B 交谈,第二个 alt 是对 A 的控制或对 B 的控制

时序图:enter image description here

参考

enter image description here

状态机:

enter image description here

我不确定,我如何为状态机创建一个循环,我尝试在 Greeting B 之后创建一个新状态,我称之为 session,这个想法是,在其他每个状态之后,都可以进入会话状态,然后从那里转到其他状态,代表某种循环。

但是我遇到了这个问题,我在序列图中做了两行新行,这样我就可以在问候后进入另一个状态,当我处于与 B 交谈的状态时,我可以返回会话,使用输入 replyB,但如果我现在在会话中并想去与 A 交谈,我不知道使用什么输入以及如何

enter image description here

状态机上的更新:

enter image description here

UML 状态机 序列图

评论

1赞 qwerty_so 9/24/2023
在我看来,这就像一个业务流程。在那里,我会使用活动来代替。

答:

1赞 Christophe 9/24/2023 #1

序列图对实例之间的交互方案进行建模。状态图记录了实例、类或系统的状态,以及如何从一种状态过渡到另一种状态。因此,没有将序列转换为状态的技巧。这完全取决于状态图的重点和相关的状态。

我没有你的场景的全貌,但如果状态图是针对 的,你可以想象状态:Therapist

  • 与 A 交谈
  • 与 B 对话
  • 控制 A
  • 控制 B
  • 分析
  • 分析 B

探索仍然存在,是什么触发了状态的变化?收到的消息是一个很好的触发器,但发送的消息并不能说明是什么事件使治疗师发送了消息。

在任何情况下,状态必须具有不同的名称(因此没有两个状态)。s1

分叉用于并行状态,例如,当将控制权交给具有正交区域的复合状态时。这里似乎不需要。决策节点用于替代方案,例如,当相同的传出转换可以根据某些条件达到几种状态之一时。语义类似于 ,但恕我直言,最好在状态图中避免使用它们,并保留在活动图中。alt

评论

0赞 perpetter 9/25/2023
我还没有弄清楚循环伙伴,你能帮忙吗
1赞 Christophe 9/26/2023
状态图中没有等价的 a。状态图不用于对算法进行建模。循环通常是当一种状态转换回以前的状态时。如果要使它依赖于某些条件,则需要添加一个带有循环条件的决策节点。(顺便说一句,原则上,在 SO 上,您不应该从根本上编辑一个问题来提出新问题,而是提出一个新问题)loop