Guia do Spring Web Flow

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:

image

 

Você pode clicar no botãoactivate para ir para a página de sucesso:

imageOu o botãocancel para ir para a página de falha:

image

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.