Gids voor Spring Web Flow

1. Overzicht

Spring Web Flow bouwt voort op Spring MVC en maakt het mogelijk om stromen binnen een webapplicatie te implementeren. Het wordt gebruikt voor het maken van stappenreeksen die gebruikers door een proces of een bepaalde bedrijfslogica leiden.

In deze korte tutorial zullen we het doornemen een eenvoudig voorbeeld van een gebruikersactiveringsstroom. De gebruiker krijgt een pagina te zien en klikt op het Activeren knop om door te gaan of op de annuleren knop om de activering te annuleren.

Niet dat de aanname hier is dat we al een Spring MVC-webapplicatie hebben.

2. Installatie

Laten we beginnen met het toevoegen van de Spring Web Flow-afhankelijkheid aan het pom.xml:

 org.springframework.webflow spring-webflow 2.5.0.RELEASE 

De nieuwste versie van Spring Web Flow is te vinden in de Central Maven Repository.

3. Een stroom creëren

Laten we nu een eenvoudige stroom maken. Zoals eerder vermeld, is flow een reeks stappen die een gebruiker door een proces leidt. Momenteel kan dit alleen worden gedaan met behulp van op XML gebaseerde configuratie.

Elke stap in de stroom wordt een staat.

Voor dit eenvoudige voorbeeld gebruiken we een view-state. EEN view-state is een stap in de stroom die een passend beeld oplevert. De view-state verwijst naar een pagina in de app (WEB-INF / weergave), met de id van de view-state zijnde de naam van de pagina waarnaar het verwijst.

We zullen ook een overgang element. EEN overgang element wordt gebruikt voor het afhandelen van gebeurtenissen die binnen een bepaald staat.

Voor deze voorbeeldstroom stellen we er drie in view-staten - de activering, succes, en mislukking.

Het proces voor deze stroom is vrij eenvoudig. Het uitgangspunt is het activering visie. Als een activeren gebeurtenis wordt geactiveerd, moet deze overgaan naar de succes visie. Als het annuleren gebeurtenis wordt geactiveerd, moet deze overgaan naar de mislukking visie. De overgang element verwerkt de knopklikgebeurtenis die plaatsvindt in het kijkstatus:

De eerste activeringspagina, waarnaar wordt verwezen door de id activering en gevestigd in WEB-INF / view / activatie.jsp, is een eenvoudige pagina met twee knoppen, activeren en annuleren. Door op de knoppen te klikken, worden onze overgangen geactiveerd om de gebruiker naar het succes te sturen view-state (WEB-INF / view / success.jsp) of het falen view-state (WEB-INF / view / failure.jsp):

Klik om account te activeren

We gebruiken de flowExecutionUrl om toegang te krijgen tot de contextafhankelijke URI voor de huidige stroomuitvoering view-state.

4. Configureren van de stroom

Vervolgens gaan we Spring Web Flow configureren in onze webomgeving. We zullen dit doen door een Flow Registry en Flow Builder-service op te zetten.

Met het Flow Registry kunnen we de locatie van onze stromen specificeren en ook een Flow Builder-service specificeren als deze wordt gebruikt.

De Flow Builder-service helpt ons services en instellingen aan te passen die worden gebruikt om stromen te bouwen.

Een van de services die we kunnen aanpassen, is de view-factory-creator. De view-factory-creator stelt ons in staat om de ViewFactoryCreator gebruikt door Spring Web Flow. Omdat we Spring MVC gebruiken, kunnen we Spring Web Flow configureren om de view resolver te gebruiken in onze Spring MVC-configuraties.

Hier is hoe we Spring Web Flow configureren voor ons voorbeeld:

@Configuration openbare klasse WebFlowConfig breidt AbstractFlowConfiguration uit {@Autowired privé WebMvcConfig webMvcConfig; @Bean openbare FlowDefinitionRegistry flowRegistry () {return getFlowDefinitionRegistryBuilder (flowBuilderServices ()) .addFlowLocation ("/ WEB-INF / flows / activatie-flow.xml", "activatieFlow") .build (); } @Bean openbare FlowExecutor flowExecutor () {retourneer getFlowExecutorBuilder (flowRegistry ()). Build (); } @Bean openbare FlowBuilderServices flowBuilderServices () {retourneer getFlowBuilderServicesBuilder () .setViewFactoryCreator (mvcViewFactoryCreator ()) .setDevelopmentMode (true) .build (); } @Bean openbare MvcViewFactoryCreator mvcViewFactoryCreator () {MvcViewFactoryCreator factoryCreator = nieuwe MvcViewFactoryCreator (); factoryCreator.setViewResolvers (Collections.singletonList (this.webMvcConfig.viewResolver ())); factoryCreator.setUseSpringBeanBinding (true); terugkeer factoryCreator; }}

We kunnen ook XML gebruiken voor die configuratie:

5. Navigeren door de stromen

Om door de stromen te navigeren, start u de webapp en gaat u naar // localhost: 8080 / {context-path} / activatieFlow. Om de app op te starten, implementeert u deze op een applicatieserver, zoals Tomcat of Jetty.

Dit stuurt ons naar de eerste pagina van de stroom, de activering pagina gespecificeerd in onze stroomconfiguratie:

U kunt op het activeren knop om naar de succespagina te gaan:

Of de annuleren knop om naar de storingspagina te gaan:

6. Conclusie

In dit artikel hebben we een eenvoudig voorbeeld gebruikt als richtlijn voor het gebruik van Spring Web Flow.

Je kunt de volledige broncode en alle codefragmenten voor dit artikel vinden op GitHub.