使用状态机重试和最大尝试

Retry and max attemps with state machine

我正在尝试制作一个状态机,我想在其中构建重试和最大尝试次数功能。让我解释一下,到目前为止我有这个:

从SAVED,我想去VALIDATED,虽然如果有错误,它必须去AWAITING_VALIDATION状态。 3 分钟后,再次尝试进入 VALIDATED 状态。

  1. 我是否正确设置了重试机制?
  2. 尝试 3 次后,我想返回 SAVED 状态(并暂停状态机)。是否可以在花哨的 waty 中执行此操作(例如使用 spring 状态机),或者我是否必须使用某种缓存手动执行此操作?

感谢您的帮助

可能有很多方法可以使用不同的机器配置来完成这些事情,但话说回来,这是一个如此清晰的问题,我想花一些时间在上面。

你很接近,你错过了一些事情(我会说技巧)来实现这一点。答案是使用 extended state variables 将内存添加到机器中。这些变量通常用于限制需要说明的数量,以表示机器需要做什么。您需要 3 个循环,并且您可能会创建更多状态来表示每个循环和转换(使用特定的守卫)到需要的那些。但是,如果您需要更多循环,例如 10 或 20 或 100+,这将简单地分解状态配置。

我在 ssm-sample3 中创建了一个示例,它展示了如何使用 extended state variables 以及不同的 guardsactions 来驱动这个特定的流程。

不幸的是,当前 1.1.1.RELEASE 中存在一个错误,它阻止您直接从 AWAITING_VALIDATION 过渡到 HAS_ERROR 结点和循环,直到您暂停到 VALID 使用一个有守卫的匿名转换(这就是为什么样本有一个虚拟 TMP 状态,1.2.x 不需要)。

这可能是我想作为示例或常见问题解答添加到我们的参考文档中的内容。

Lemmy 知道这是否有帮助。