0

我正在尝试制作一个状态机,我想在其中构建重试和最大尝试功能。让我解释一下,到目前为止我有这个:在此处输入图像描述

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

  1. 我是否正确设置了重试机制?
  2. 3 次尝试后,我想回到 SAVED 状态(并暂停状态机)。是否有可能以花哨的方式做到这一点(例如使用弹簧状态机),还是我必须使用某种缓存手动做到这一点?

谢谢你的帮助

4

1 回答 1

1

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

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

我在ssm-sample3中创建了一个示例,它展示了如何extended state variables和不同guards,并且actions可以用来驱动这个特定的流程。

不幸的是,电流中存在一个错误,1.1.1.RELEASE它阻止您直接从 aAWAITING_VALIDATION转换到HAS_ERRORjunction 和循环,直到您暂停VALID使用具有保护的匿名转换(这就是为什么 sample 具有TMP不需要的虚拟状态1.2.x)。

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

莱米知道这是否有帮助。

于 2016-11-13T18:50:58.353 回答