在 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
中的第一个(较旧的)订单
客户可以立即或稍后为订单付款。当订单是稍后付款时,我想在 activity 图中画一个符号,表示客户必须在两天内付款。如果客户在两天内没有付款,系统会将订单标记为已取消。
在这张附图中,第一个泳道用于演员 Customer,第二个泳道用于演员 System。我创建了一个 时间事件 表示客户必须在 48 小时内付款的符号。然后,我将 merge/branch 节点放在客户泳道上,表示客户是必须付款的参与者。
关于我当前的图表,我想到的问题是有人可能会误解时间事件符号。有人可能会将此符号理解为系统将始终等待 48 小时,然后再将订单标记为 已取消 或 等待发货。实际上,只要客户付款,系统就会将订单标记为等待发货。但是,如果客户在 48 小时后仍未付款,系统会将订单标记为 已取消。
如何画一个更好的图表来表示上面的描述?
根据 @qwerty_so's comment,我决定使用可中断区域。该区域的中断触发是系统接受支付。这是新图表。
编辑
根据
我还修改了图表,使可中断区域的信号来自接受时间事件操作而不是接受事件操作。
图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 中的第一个(较旧的)订单