Guide du flux Web de printemps

Guide du flux Web de printemps

1. Vue d'ensemble

Spring Web Flow s'appuie sur Spring MVC et permet d'implémenter des flux dans une application Web. Il est utilisé pour créer des séquences d'étapes qui guident les utilisateurs à travers un processus ou une logique métier.

Dans ce rapide didacticiel, nous allons passer en revuea simple example of a user activation flow. L'utilisateur reçoit une page et clique sur le boutonActivate pour continuer ou sur le boutonCancel pour annuler l'activation.

Cela ne veut pas dire que nous avons déjà une application Web Spring MVC déjà configurée.

2. Installer

Commençons par ajouter la dépendance Spring Web Flow dans lespom.xml:


    org.springframework.webflow
    spring-webflow
    2.5.0.RELEASE

La dernière version de Spring Web Flow se trouve dans le fichierCentral Maven Repository.

3. Créer un flux

Créons maintenant un flux simple. Comme indiqué précédemment, le flux est une séquence d’étapes guidant un utilisateur tout au long d’un processus. Currently, this can only be done using XML-based config.

Chaque étape du flux est appelée un *Etat*.

Pour cet exemple simple, nous utiliserons unview-state. Unview-state est une étape du flux qui restitue une vue correspondante. Leview-state fait référence à une page de l'application (WEB-INF/view), avec l'id duview-state étant le nom de la page à laquelle il se réfère .__

Nous utiliserons également un élémenttransition. A transition element is used for handling events that occur within a particular state.

Pour cet exemple de flux, nous allons configurer troisview-states - lesactivation,success etfailure.

Le processus pour ce flux est assez simple. Le point de départ est la vueactivation. Si un événementactivate est déclenché, il doit passer à la vuesuccess. Si l'événementcancel est déclenché, il doit passer à la vuefailure. L'élémenttransition gère l'événement de clic de bouton qui se produit dans leview-state:


    
    




La page d'activation initiale, qui est référencée par l'idactivation et située dansWEB-INF/view/activation.jsp, est une page simple qui a deux boutons,activate etcancel. Cliquer sur les boutons avec déclenchent nos transitions pour envoyer soit l'utilisateur au succèsview-state (WEB-INF/view/success.jsp) ou à l'échecview-state (WEB-INF/view/failure.jsp):


    

Click to activate account

Nous utilisons lesflowExecutionUrl pour accéder à l'URI relative au contexte pour l'exécution du flux en coursview-state.

4. Configuration du flux

Nous allons ensuite configurer Spring Web Flow dans notre environnement Web. Nous y parviendrons en mettant en place un service Flow Registry et Flow Builder.

Le registre de flux nous permet de spécifier l'emplacement de nos flux et également de spécifier un service Flow Builder, le cas échéant.

Le service Flow Builder nous aide à personnaliser les services et les paramètres utilisés pour créer des flux.

L'un des services que nous pouvons personnaliser est leview-factory-creator. Lesview-factory-creator nous permettent de personnaliser lesViewFactoryCreator utilisés par Spring Web Flow. Comme nous utilisons Spring MVC, nous pouvons configurer Spring Web Flow pour utiliser le résolveur de vues dans nos configurations Spring MVC.

Voici comment nous allons configurer Spring Web Flow pour notre exemple:

@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;
    }
}

Nous pouvons également utiliser XML pour cette configuration:


    





    



    



    

5. Naviguer dans les flux

Pour parcourir les flux, démarrez l'application Web et accédez àhttp://localhost:8080/%7Bcontext-path%7D/activationFlow. Pour démarrer l'application, déployez-la sur un serveur d'applications, tel queTomcat ouJetty.

Cela nous renvoie à la page initiale du flux, qui est la pageactivation spécifiée dans notre configuration de flux:

image

 

Vous pouvez cliquer sur le boutonactivate pour accéder à la page de réussite:

imageOu le boutoncancel pour accéder à la page d'échec:

image

6. Conclusion

Dans cet article, nous avons utilisé un exemple simple pour vous guider dans l'utilisation de Spring Web Flow.

Vous pouvez trouver le code source complet et tous les extraits de code pour cet articleover on GitHub.