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

时间:2016-11-13 12:21:50

标签: spring-statemachine

我正在尝试创建一个状态机,我想在其中构建重试和最大尝试功能。让我解释一下,到目前为止我有这个:enter image description here

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

  1. 我是否正确设置了重试机制?
  2. 经过3次尝试后,我想回到SAVED状态(并暂停状态机)。是否有可能在花哨的情况下(例如使用弹簧状态机)或者我必须使用某种缓存手动执行此操作?
  3. 感谢您的帮助

1 个答案:

答案 0 :(得分:1)

使用不同的机器配置可能有很多方法可以做这些事情,但话虽如此,这是一个明确提出的猜测,我想花一些时间在它上面。

你很亲密,你错过了一些事情(我会说技巧)来实现这一目标。答案是使用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知道这是否有帮助。