Guia do Spring Web Flow
1. Visão geral
O Spring Web Flow baseia-se no Spring MVC e permite implementar fluxos dentro de um aplicativo Web. É usado para criar sequências de etapas que orientam os usuários através de um processo ou alguma lógica de negócios.
Neste tutorial rápido, vamos passar pora simple example of a user activation flow. O usuário é apresentado a uma página e clica no botãoActivate para continuar ou no botãoCancel para cancelar a ativação.
Não que a suposição aqui seja que já temos um aplicativo Web Spring MVC já configurado.
2. Configuração
Vamos começar adicionando a dependência Spring Web Flow empom.xml:
org.springframework.webflow
spring-webflow
2.5.0.RELEASE
A versão mais recente do Spring Web Flow pode ser encontrada emCentral Maven Repository.
3. Criando um Fluxo
Vamos agora criar um fluxo simples. Como afirmado anteriormente, o fluxo é uma sequência de etapas que guia um usuário através de um processo. Currently, this can only be done using XML-based config.
Cada etapa do fluxo é chamada de *Estado*.
Para este exemplo simples, usaremos umview-state. Umview-state é uma etapa no fluxo que renderiza uma visualização correspondente. Oview-state se refere a uma página no aplicativo (WEB-INF/view), com o id deview-state sendo o nome da página à qual ele se refere .__
Também usaremos um elementotransition. A transition element is used for handling events that occur within a particular state.
Para este exemplo de fluxo, vamos configurar trêsview-states - oactivation,success efailure.
O processo para esse fluxo é bastante direto. O ponto de partida é a visualização deactivation. Se um eventoactivate for disparado, ele deve fazer a transição para a visualizaçãosuccess. Se o eventocancel for disparado, ele deve fazer a transição para a visualizaçãofailure. O elementotransition lida com o evento de clique do botão que acontece noview-state:
A página de ativação inicial, que é referida pelo idactivation e localizada emWEB-INF/view/activation.jsp, é uma página simples que possui dois botões,activateecancel. Clicar nos botões com acionar nossas transições para enviar o usuário paraview-state (WEB-INF/view/success.jsp) de sucesso ouview-state (WEB-INF/view/failure.jsp): de falha
Click to activate account
Estamos usandoflowExecutionUrl para acessar o URI relativo ao contexto para a execução do fluxo atualview-state.
4. Configurando o Fluxo
Em seguida, configuraremos o Spring Web Flow em nosso ambiente da web. Faremos isso configurando um serviço Flow Registry e Flow Builder.
O Flow Registry nos permite especificar a localização de nossos fluxos e também especificar um Serviço do Flow Builder, se um estiver sendo usado.
O Serviço Flow Builder nos ajuda a personalizar os serviços e configurações usados para criar fluxos.
Um dos serviços que podemos personalizar é oview-factory-creator. Oview-factory-creator nos permite personalizar oViewFactoryCreator usado pelo Spring Web Flow. Como estamos usando o Spring MVC, podemos configurar o Spring Web Flow para usar o resolvedor de exibição em nossas configurações do Spring MVC.
Aqui está como vamos configurar o Spring Web Flow para nosso exemplo:
@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;
}
}
Também podemos usar XML para essa configuração:
5. Navegando nos Fluxos
Para navegar pelos fluxos, inicie o aplicativo da web e vá parahttp://localhost:8080/%7Bcontext-path%7D/activationFlow. Para iniciar o aplicativo, implante-o em um servidor de aplicativos, comoTomcat ouJetty.
Isso nos envia para a página inicial do fluxo, que é a páginaactivation especificada em nossa configuração de fluxo:
Você pode clicar no botãoactivate para ir para a página de sucesso:
6. Conclusão
Neste artigo, usamos um exemplo simples como um guia sobre como usar o Spring Web Flow.
Você pode encontrar o código-fonte completo e todos os trechos de código deste artigoover on GitHub.