spring-statemachine 2.3.1 - Как получить StateMachine из StateMachineModelFactory? - PullRequest
1 голос
/ 15 октября 2019

У меня есть следующий бизнес-пример при работе с spring-statemachine 2.3.1 в проекте:

Конечный автомат определяется с помощью плагина Papyrus и загружается из файла uml с использованием UmlStateMachineModelFactory, как показанониже:

public class MyStateMachineConfig extends StateMachineConfigurerAdapter<String, String>
{
  @Override
  public void configure(StateMachineModelConfigurer<String, String> model) throws Exception
  {
    model.withModel().factory(myStateMachineModelFactory());
  }

  @Bean
  public StateMachineModelFactory<String, String> myStateMachineModelFactory()
  {
    return new UmlStateMachineModelFactory("classpath:my.uml");
  }
  ....

Мне нужно сохранить контекст конечного автомата в базе данных, используя JPA. Для этого мне нужно использовать StateMachinePersister.persist (). Этот метод использует в качестве первого входного параметра экземпляр StateMachine. Однако я не могу получить экземпляр StateMachine из моего StateMachineModelFactory. Класс StateMachineFactory имеет метод с именем getStateMachine (), а класс StateMachineModelFactory - нет.

Я не нашел ни способа получить экземпляр StateMachineFactory из экземпляра StateMachineModelFactory. Может ли кто-нибудь помочь с некоторыми предложениями, в идеале примерами? В документации есть разные примеры того, как это сделать, но нет примера для случая, когда конечный автомат загружается из файла UML.

С уважением,

Николас ДУМИНИЛ

1 Ответ

0 голосов
/ 23 октября 2019

Ваша конфигурация, которая расширяет StateMachineConfigurerAdapter, является «адаптацией» или модификацией автоматически настроенного конечного автомата Spring.

Для того, чтобы ваша конфигурация была подобрана к весне, вам нужно пометить ее как @Configuration.

Вам также необходимо включить автоматическую настройку конечного автомата, что происходит с аннотацией @EnableStateMachie.

@Configuration
@EnableStateMachine
public class MyStateMachineConfig extends StateMachineConfigurerAdapter<String, String> {

Для получения дополнительной информации см. официальную документацию . подробности.

Когда эта функция активна, вы можете внедрить StateMachine как зависимость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...