在 activity 图表中,什么符号表示 activity 必须在两天内完成?

What notation marks that an activity must be completed within two-day time in an activity diagram?

客户可以立即或稍后为订单付款。当订单是稍后付款时,我想在 activity 图中画一个符号,表示客户必须在两天内付款。如果客户在两天内没有付款,系统会将订单标记为已取消

在这张附图中,第一个泳道用于演员 Customer,第二个泳道用于演员 System。我创建了一个 时间事件 表示客户必须在 48 小时内付款的符号。然后,我将 merge/branch 节点放在客户泳道上,表示客户是必须付款的参与者。

关于我当前的图表,我想到的问题是有人可能会误解时间事件符号。有人可能会将此符号理解为系统将始终等待 48 小时,然后再将订单标记为 已取消等待发货。实际上,只要客户付款,系统就会将订单标记为等待发货。但是,如果客户在 48 小时后仍未付款,系统会将订单标记为 已取消

如何画一个更好的图表来表示上面的描述?

根据 @qwerty_so's comment,我决定使用可中断区域。该区域的中断触发是系统接受支付。这是新图表。

编辑

根据 and @Axel Scheithauer's comments, I have cropped the more complete image of my activity diagram. An Accept Time Event Action seems to be able to have incoming edges/flows,与@bruno 的评论相反。此外,我认为不完整的屏幕截图是导致我的图表混乱的原因。

我还修改了图表,使可中断区域的信号来自接受时间事件操作而不是接受事件操作。

图1:

图2:

接受时间事件操作(例如,带有单个 TimeEvent 触发器的 AcceptEventAction)不能有输入流,所以你的图是无效的,然后没有显示你想要的。

Decision 之后的流守卫必须写在括号中 ([])。


I placed the merge/branch node on the customer swimlane to signify that the customer is the actor that must make the payment.

但这是独立于客户的系统检查,所以这是错误的/不清楚的

创建订单的两个操作不在客户泳道中的事实对我来说也是错误的/不清楚的


创建等待付款状态的订单操作后,您可以创建一个专用于客户当前订单的新计时器。如果客户在 2 天之前付款,则相应的计时器将被删除。

但这会产生很多定时器,你也可以把当前命令更多的超时时间记在一个fifo中,你就有了一个独一无二的定时器。如果客户在 2 天前付款,相应的订单将从 fifo.

中删除
  • 那个独特的计时器可以定期检查记忆的订单,但是即使没有什么必须做的,那个池也会唤醒系统。

  • 那个唯一的定时器可以在第一个订单被记忆时启动,然后当系统唤醒时它管理太旧的订单,然后如果 fifo 变空定时器停止,否则它根据延迟更新fifo
  • 中的第一个(较旧的)订单