Руководство по 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, указанной в нашей конфигурации потока:
Вы можете нажать кнопкуactivate, чтобы перейти на страницу успеха:
6. Заключение
В этой статье мы использовали простой пример в качестве руководства по использованию Spring Web Flow.
Вы можете найти полный исходный код и все фрагменты кода для этой статьиover on GitHub.