Руководство по Spring Web Flow

Руководство по Spring Web Flow

1. обзор

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

В этом кратком руководстве мы рассмотримa simple example of a user activation flow. Пользователю предоставляется страница и он нажимает кнопкуActivate, чтобы продолжить, или кнопкуCancel, чтобы отменить активацию.

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

2. Настроить

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


    org.springframework.webflow
    spring-webflow
    2.5.0.RELEASE

Последнюю версию Spring Web Flow можно найти в папкеCentral Maven Repository.

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

Давайте теперь создадим простой поток. Как указывалось ранее, поток - это последовательность шагов, которая направляет пользователя через процесс. Currently, this can only be done using XML-based config.с

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

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

Мы также будем использовать элементtransition. A transition element is used for handling events that occur within a particular state.

Для этого примера потока мы установим триview-states -activation,success иfailure.

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


    
    




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


    

Click to activate account

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

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

Далее мы настроим Spring Web Flow в нашей веб-среде. Мы сделаем это, настроив Flow Registry и Flow Builder Service.

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

Служба 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/%7Bcontext-path%7D/activationFlow. Чтобы запустить приложение, разверните его на сервере приложений, напримерTomcat илиJetty.

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

image

 

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

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

image

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

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

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