Мне нужно создать 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()
...
}
Мне нужно создать квест с состоянием AWAITING, затем мне нужно изменить и сохранить его в базе данных, когда пользователь использует действие обновления. Как это сделать? И как я могу прослушать обратный вызов onSuccess этой операции?