Раньше, когда я использовал Spring State Machine 2.x без реактивности, мне просто нужно было расширить StateMachineInterceptorAdapter и переопределить preStateChange на получите идентификатор объекта из
заголовка сообщения, затем получите объект, обновите статус объекта и сохраните его. Примерно так:
Код: Выделить всё
public class BookingMachineInterceptor extends StateMachineInterceptorAdapter {
private final BookingRepository bookingRepository;
@Override
public void preStateChange(State state, Message message,
Transition transition, StateMachine stateMachine,
StateMachine rootStateMachine) {
Optional.ofNullable(message).ifPresent(msg -> {
Optional.ofNullable(UUID.class.cast(msg.getHeaders().get("booking_id")))
.ifPresent(bookingId -> {
Booking booking = bookingRepository.getOne(bookingId);
booking.setState(state I.getId());
bookingRepository.save(booking);
});
});
}
}
Подробнее здесь: https://stackoverflow.com/questions/772 ... te-machine