循环的活动图迭代固定次数,如果迭代结束则指向不同的活动

问题描述

我开发了以下活动图。

客户被要求付款,如果他在 5 天内没有付款,公司会打电话给客户并了解他是否还需要上课。但是,我想重复我们检查是否在 5 天内收到付款并致电客户进行更新的循环,因为公司会容忍 3 次,否则预订将被取消。但是,我不确定如何在我的活动图上可视化这一点。

enter image description here

解决方法

遵循您的初步尝试

一种简单的方法是在您的 Payment received witin 5 days / No 分支上添加一个新的决策节点:Customer already contacted 3 times,其中 No 将继续调用初始流程,而 Yes 将导致Cancel booking

enter image description here

这假设您有一个计数器,记录每个付款请求的调用次数。

在您的叙述中,我们看到第一个调用和后续调用之间存在差异。在我看来,这种差异应该在 Contact client by phone 内处理,不需要任何特殊照顾。但是,如果活动在初始调用和为提醒采取的操作之间差异更大,您可能需要考虑更复杂的分支。但原则是相同的:您将使用几个决策节点来检查调用计数器。

另一种方法

实际上没有循环。拨打电话的人不是在等待付款到达的监控来拨打第二个电话。原则上,payment request received 会立即通向决策节点,不会卡在那里 5 天。 5 天对于人类读者来说是可以的,但充满了歧义。例如,您是否还会在每次通话后等待 5 天?如果第 6 天收到付款,但来电者没有在第 5 天立即致电,等等...

要解决此类计时问题,您最好使用其他 SO answer from qwerty_so 中所述的计时事件。这使您可以清楚地显示正常流程,并隔离时间驱动的活动。

顺便说一句,由于我们看到实际上活动与付款请求的状态相关,您可以用状态图优雅地补充您的活动图。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...