Я следую этому примеру здесь из doc
Вот часть конечного автомата, с которым я работаю
startWith(ACCEPTED, new myData());
when(ACCEPTED, matchEvent(someMesage.class, MyData.class,
(someMessage, myData) -> goTo(EVALUATING).replying(EVALUATING)));
onTransition(matchState(ACCEPTED,EVALUATING, () -> {
// Here I want to update the nextState data and pass it to another actor
// But the nextState data is always the unititalized object which is new Mydata() when the FSM initializes
}));
whenUnhandled(matchAnyEvent(
(state, data) -> stay().replying("received unhandled request " + state.toString())));
initialize();
}
Как мне правильнопередавать данные между различными состояниями в конечном автомате?
Как должен выглядеть вызов actor.tell для субъекта, отправляющего сообщение этому субъекту FSM
Если я отправляю следующее сообщение
MyFSM.tell(new someMessage(myData), getSelf());
Это правильно соответствует событию, и актер изменяет состояние на EVALUATING
и отправляет обратно сообщение EVALUATING
.Но то, что я действительно хочу, это изменить myData на основе этого изменения состояния и при переходе, отправить эти измененные данные другому актеру.
Но когда я отправляю сообщение типа someMessage
, я не могуотправьте существующий экземпляр myData, и он всегда неинициализируется как часть инициализации конечного автомата.
Другими словами, я пытаюсь управлять состоянием myData с помощью конечного автомата.
Как мне добиться того, чтобы он максимально использовал фреймворк?
Рабочий пример из приведенной выше информации будет действительно полезен!