2016-03-04 92 views
0

我努力坚持我的状态机遵循可用的配方和示例。我正在使用主分支,我的状态机使用分层状态,区域和正交状态。我遵循的第一个例子是spring-statemachine-samples/persist,但它似乎只处理基本的FSM。我尝试的第二个是LocalStateMachineInterceptor但id似乎没有与分层状态一起工作。此外,我无法找到任何方式通过StateMachinePersist坚持历史状态。创建一个StateMachineInterceptor来坚持StateMachineContext

是否存在一个具有持久性的复杂FSM的例子?

+0

坚持,关于历史状态的问题。当我为它创建了一个#182并开始处理它时,我无法弄清楚如何实际使用它与持久性。由于历史状态是一个暂态和伪状态,因为它只是跟踪上一个已知状态,所以不能真正将机器重置为该状态,因为它唯一的工作是立即进入其最后已知状态。那么你是否介意通过坚持历史状态来阐述你的意思? –

+0

如果在当前状态中可用的转换之一具有_HISTORY_伪状态作为目标时恢复FSM,则触发此类事件应将FSM移至先前的状态。这是目前实施(我认为)查看存储在HistoryPseudoState中的信息,在保存/恢复时丢失 –

+0

好吧,我认为在这里还是做了一些工作,但我只是增强了坚持历史记录的功能。您可以按照#182中的更改进行操作。对不起,我原来的评论,你是“抱错了”,你是对的:)谢谢! –

回答

0

我必须说实话,当事情变得更加复杂时,持续性是样本和文档中一个相对未知的主题。这是我目前正在努力使它更容易,因为作为用户你不应该关心,因为应该有一个相对干净的API来做到这一点。所以请继续关注这些。

话虽如此,在我们弄清楚代码之前,

StateMachinePersist导致StateMachineContext,并在测试中有一些代码,即StateMachineResetTests,它显示了一些方法来做这些事情。还有一个问题gh127,我在那里写了一些关于重置机器的内部机制,这是持久性所做的。

历史状态,是的,这是我的不好,由于某种原因它已经从我的雷达中滑落。感谢您指出!为它创建了一个问题gh182