Рубрики
Без рубрики

Руководство по потоку пружинного полотна

Узнайте, как использовать библиотеку Spring WebFlow, правильно настроить ее и интегрировать с Spring MVC.

Автор оригинала: baeldung.

1. Обзор

Spring Web Flow основан на Spring MVC и позволяет реализовывать потоки в веб-приложении. Он используется для создания последовательностей шагов, которые направляют пользователей через процесс или некоторую бизнес-логику.

В этом кратком руководстве мы рассмотрим простой пример потока активации пользователя . Пользователь получает страницу и нажимает на кнопку Активировать , чтобы продолжить, или на кнопку Отменить , чтобы отменить активацию.

Не то чтобы здесь предполагалось, что у нас уже есть настроенное веб-приложение Spring MVC.

2. Настройка

Давайте начнем с добавления зависимости Spring Web Flow в pom.xml :


    org.springframework.webflow
    spring-webflow
    2.5.0.RELEASE

Последнюю версию Spring Web Flow можно найти в Центральном репозитории Maven .

3. Создание потока

Давайте теперь создадим простой поток. Как уже говорилось ранее, поток-это последовательность шагов, которая ведет пользователя через процесс. В настоящее время это можно сделать только с помощью конфигурации на основе XML.

Каждый шаг в потоке называется состоянием |.

Для этого простого примера мы будем использовать view-state . состояние представления -это шаг в потоке, который отображает соответствующее представление. view-state ссылается на страницу в приложении ( WEB-INF/view), с идентификатором viewstate , являющимся именем страницы, на которую он ссылается.

Мы также будем использовать элемент transition . Элемент transition используется для обработки событий, происходящих в определенном состоянии .

Для этого примера потока мы настроим три состояния представленияактивация , успех и сбой .

Процесс для этого потока довольно прост. Отправной точкой является представление activation . Если инициируется событие activate , оно должно перейти в представление success/|. Если событие cancel инициировано, оно должно перейти в представление failure . Элемент transition обрабатывает событие нажатия кнопки, которое происходит в состоянии представления :


    
    




Начальная страница активации, на которую ссылается идентификатор activation и которая находится в WEB-INF/view/activation.jsp , представляет собой простую страницу с двумя кнопками activate и cancel . Нажатие кнопок с триггером наших переходов либо отправляет пользователя в состояние success viewstate ( WEB-INF/view/success.jsp ), либо в состояние failure view-state ( WEB-INF/view/failure.jsp):


    

Click to activate account

Мы используем flowExecutionUrl для доступа к URI, относящемуся к контексту, для текущего выполнения потока viewstate .

4. Настройка потока

Затем мы настроим Spring Web Flow в нашей веб-среде. Мы сделаем это, настроив реестр потоков и службу построителя потоков.

Реестр потоков позволяет нам указать местоположение наших дефектов, а также указать службу построителя потоков, если она используется.

Служба Flow Builder помогает нам настраивать службы и параметры, используемые для построения потоков.

Одним из сервисов, которые мы можем настроить, является view-factory-creator . view-factory-creator позволяет нам настроить ViewFactoryCreator , используемый Spring Web Flow. Поскольку мы используем Spring MVC, мы можем настроить Spring Web Flow для использования распознавателя представлений в наших конфигурациях Spring MVC.

Вот как мы настроим Spring Web Flow для нашего примера:

@Configuration
public class WebFlowConfig extends AbstractFlowConfiguration {

    @Autowired
    private WebMvcConfig webMvcConfig;

    @Bean
    public FlowDefinitionRegistry flowRegistry() {
        return getFlowDefinitionRegistryBuilder(flowBuilderServices())
          .addFlowLocation("/WEB-INF/flows/activation-flow.xml", "activationFlow")
          .build();
    }

    @Bean
    public FlowExecutor flowExecutor() {
        return getFlowExecutorBuilder(flowRegistry()).build();
    }

    @Bean
    public FlowBuilderServices flowBuilderServices() {
        return getFlowBuilderServicesBuilder()
          .setViewFactoryCreator(mvcViewFactoryCreator())
          .setDevelopmentMode(true).build();
    }

    @Bean
    public MvcViewFactoryCreator mvcViewFactoryCreator() {
        MvcViewFactoryCreator factoryCreator = new MvcViewFactoryCreator();
        factoryCreator.setViewResolvers(
          Collections.singletonList(this.webMvcConfig.viewResolver()));
        factoryCreator.setUseSpringBeanBinding(true);
        return factoryCreator;
    }
}

Мы также можем использовать XML для этой конфигурации:


    





    



    



    

5. Навигация по потокам

Чтобы перемещаться по потокам, запустите веб-приложение и перейдите в http://localhost:8080/{контекст-путь}/activationFlow . Чтобы запустить приложение, разверните его на сервере приложений, например Tomcat или Jetty .

Это отправит нас на начальную страницу потока, которая является страницей активации , указанной в нашей конфигурации потока:

Вы можете нажать на кнопку активировать , чтобы перейти на страницу успеха:

Или кнопку отмена , чтобы перейти на страницу сбоя:

6. Заключение

В этой статье мы использовали простой пример в качестве руководства по использованию Spring Web Flow.

Вы можете найти полный исходный код и все фрагменты кода для этой статьи на GitHub.