Как получить и найти текущее состояние на машине состояния Spring?

Я создаю проект, который нуждается в FSM, и я выбираю Spring State Machine, чтобы помочь мне решить проблему. Я использую JPA и пытаюсь выяснить, как запустить конечный автомат на основе моего текущего состояния, получающего состояние из репозитория JPA. Я нашел в документации такой подход: состояние машины сохраняется

Но я тоже смущаюсь в этом подходе: сохраняющаяся государственная машина

Я не пытаюсь сохранить конфигурацию всех состояний машины, но только начинаю и отправляю события, основанные на статусе моего объекта. но в обоих случаях я не знаю, как разместить репозиторий jpa, чтобы найти текущее состояние.

Теперь я пытаюсь использовать этот подход:

class StateMachineAdapter<S, E, T> { lateinit var stateMachineFactory: StateMachineFactory<S, E> lateinit var persister: StateMachinePersister<S, E, T> fun stateMachineRestore(contextObject: T): StateMachine<S, E> { val stateMachine: StateMachine<S, E> = stateMachineFactory.getStateMachine() return persister.restore(stateMachine, contextObject) } fun persist(stateMachine: StateMachine<S, E>, contestation: T) { persister.persist(stateMachine, contestation) } fun create(): StateMachine<S, E> { val stateMachine: StateMachine<S, E> = stateMachineFactory.getStateMachine() stateMachine.start() return stateMachine } } 

Я нашел этот фрагмент кода весной документации, и я подумал, что его можно заменить на JpaRepository:

 public void change(int order, String event) { Order o = jdbcTemplate.queryForObject("select id, state from orders where id = ?", new Object[] { order }, new RowMapper<Order>() { public Order mapRow(ResultSet rs, int rowNum) throws SQLException { return new Order(rs.getInt("id"), rs.getString("state")); } }); handler.handleEventWithState(MessageBuilder.withPayload(event).setHeader("order", order).build(), o.state); } 

Это действительно было неудобно делать с использованием существующей функциональности, так как есть много движущихся частей, как вы, вероятно, видели из образцов и документов.

В настоящее время я работаю над тем, чтобы пересмотреть ситуацию в следующем выпуске 1.2.8, чтобы упростить работу. Если вы захотите использовать моментальные снимки (в ветке 1.2.x) до тех пор, пока не закончится 1.2.8, начните с проверки образца образца samplejpapersist образца . Основываясь на тех же концепциях, что и хранение конфигураций, но с новыми классами persist в файлах spring-statemachine . Также проблемы вокруг этого 1.2.8 gh вопросов .

Было бы неплохо получить некоторые отзывы об этом.

Intereting Posts