Проблема в том, что ваш узел использует конструктор состояния для воссоздания состояния каждый раз, когда вы извлекаете его из хранилища. Как часть построения состояния, Instant.now()
вызывается снова и присваивается nextActivityTime
, что продвигает запланированное событие в будущее.
Вместо этого вы должны определить ваш SchedulableState
следующим образом:
class MySchedulableState(val now: Instant) : SchedulableState {
override val participants = listOf<Party>()
val nextActivityTime = Instant.ofEpochMilli(now.toEpochMilli() + 100)
override fun nextScheduledActivity(thisStateRef: StateRef, flowLogicRefFactory: FlowLogicRefFactory): ScheduledActivity? {
return ScheduledActivity(flowLogicRefFactory.create("com.template.ScheduledFlow", thisStateRef), nextActivityTime)
}
}
Обратите внимание, как мы передаем текущее время в конструкторе. Это значение не будет меняться при каждом восстановлении состояния (обратите внимание, что оно должно быть val
, чтобы гарантировать его сериализацию).