我需要创建StateMachine来管理任务。我知道如何创建状态机,但我不会使用它。这是我的第一个状态机,也是MongoDB的第一个项目。
我的状态机:
@Configuration
@EnableStateMachine
class QuestStateMachineConfig : EnumStateMachineConfigurerAdapter<QuestState, QuestEvent>() {
@Throws(Exception::class)
override fun configure(states: StateMachineStateConfigurer<QuestState, QuestEvent>) {
states.withStates()
.initial(QuestState.AWAITING)
.state(QuestState.ASSIGNED)
.state(QuestState.MARKED_TO_REJECT)
.state(QuestState.IN_PROGRESS)
.end(QuestState.DONE)
.end(QuestState.REJECTED)
}
@Throws(Exception::class)
override fun configure(transitions: StateMachineTransitionConfigurer<QuestState, QuestEvent>) {
transitions.withExternal()
.source(QuestState.AWAITING).target(QuestState.ASSIGNED).event(QuestEvent.ASSIGN)
.and()
...
}我需要创建一个等待状态的任务,下一步,当用户使用更新操作时,我必须修改它并将其保存在数据库中。该怎么做呢?如何监听该操作的onSuccess回调?
发布于 2019-06-02 14:41:26
我需要创建一个等待状态的任务
这通常应该是在数据库中创建的实体。您可能希望使用状态机来管理此实体的状态。
要获得SM的实例,您只需注入它-由于@EnableStateMachine,您已经定义了一个实例-在启动应用程序时将创建一个SM,您可以在需要的地方注入它。
“当用户使用更新操作时,我必须修改它并将其保存在数据库中。该如何操作?”
在某些情况下,“更新操作”需要转换为“更新事件”。这里有很多选择,这取决于你的需求:
监听特定事件并对其进行反应
如何监听该操作的onSuccess回调?
有关起点,请参阅StateMachineListener,也可查看此answer。
https://stackoverflow.com/questions/56393477
复制相似问题