Java >> Java opplæring >  >> Tag >> Spring

Veiledning til vårnettflyt

1. Oversikt

Spring Web Flow bygger på Spring MVC og tillater implementering av flyter i en nettapplikasjon. Den brukes til å lage sekvenser av trinn som veileder brukere gjennom en prosess eller forretningslogikk.

I denne raske opplæringen skal vi gå gjennom et enkelt eksempel på en brukeraktiveringsflyt . Brukeren blir presentert for en side og klikker på Aktiver for å fortsette eller på Avbryt knappen for å avbryte aktiveringen.

Ikke at antagelsen her er at vi allerede har en Spring MVC-nettapplikasjon som er satt opp.

2. Oppsett

La oss starte med å legge til Spring Web Flow-avhengigheten i pom.xml :

<dependency>
 <groupId>org.springframework.webflow</groupId>
 <artifactId>spring-webflow</artifactId>
 <version>2.5.0.RELEASE</version>
</dependency>

Den nyeste versjonen av Spring Web Flow finner du i Central Maven Repository.

3. Opprette en flyt

La oss nå lage en enkel flyt. Som nevnt tidligere, er flyt en sekvens av trinn som guider en bruker gjennom en prosess. For øyeblikket kan dette bare gjøres ved hjelp av XML-basert konfig.

Hvert trinn i flyten kalles en stat .

For dette enkle eksempelet bruker vi en visningstilstand . En visningstilstand er et trinn i flyten som gjengir en matchende visning. visningstilstanden refererer til en side i appen (WEB-INF/visning), med ID-en til visningstilstanden er navnet på siden den refererer til.

Vi kommer også til å bruke en overgang element. En overgang element brukes til å håndtere hendelser som oppstår i en bestemt stat .

For denne eksempelflyten setter vi opp tre visningstilstanderaktiveringen , suksess , og feil .

Prosessen for denne flyten er ganske grei. Utgangspunktet er aktiveringen utsikt. Hvis en aktiver hendelsen utløses, bør den gå over til suksessen utsikt. Hvis avbryt hendelsen utløses, bør den gå over til feilen utsikt. overgangen element håndterer knappen klikk-hendelsen som skjer i visningstilstanden:

<view-state id="activation">
 <transition on="activate" to="success"/>
 <transition on="cancel" to="failure"/>
</view-state>

<view-state id="success" />

<view-state id="failure" />

Den første aktiveringssiden, som refereres til av ID-en aktivering og ligger i WEB-INF/view/activation.jsp , er en enkel side som har to knapper, aktiver og avbryt . Ved å klikke på knappene med utløses overgangene våre for enten å sende brukeren til vellykket visningstilstand (WEB-INF/view/success.jsp ) eller feilen visningstilstand (WEB-INF/view/failure.jsp):

<body>
 <h2>Click to activate account</h2>

 <form method="post" action="${flowExecutionUrl}">
 <input type="submit" name="_eventId_activate" value="activate" />
 <input type="submit" name="_eventId_cancel" value="cancel" />
 </form>
</body>

Vi bruker flowExecutionUrl for å få tilgang til den kontekstrelative URI for gjeldende flytkjøring visningstilstand .

4. Konfigurere flyten

Deretter vil vi konfigurere Spring Web Flow i vårt nettmiljø. Vi vil gjøre dette ved å sette opp en Flow Registry and Flow Builder-tjeneste.

Flow-registeret lar oss spesifisere plasseringen av strømmene våre og også spesifisere en Flow Builder-tjeneste hvis en blir brukt.

Flow Builder-tjenesten hjelper oss med å tilpasse tjenester og innstillinger som brukes til å bygge flyter.

En av tjenestene vi kan tilpasse er view-factory-creator . view-factory-creator lar oss tilpasse ViewFactoryCreator brukt av Spring Web Flow. Siden vi bruker Spring MVC, kan vi konfigurere Spring Web Flow til å bruke visningsløseren i vår MVC-konfigurasjoner.

Slik konfigurerer vi Spring Web Flow for vårt eksempel:

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

Vi kan også bruke XML for den konfigurasjonen:

<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
 <property name="flowRegistry" ref="activationFlowRegistry"/>
</bean>

<flow:flow-builder-services id="flowBuilderServices"
 view-factory-creator="mvcViewFactoryCreator"/>

<bean id="mvcViewFactoryCreator" 
 class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
 <property name="viewResolvers" ref="jspViewResolver"/>
</bean>

<flow:flow-registry id="activationFlowRegistry" 
 flow-builder-services="flowBuilderServices">
 <flow:flow-location id="activationFlow" path="/WEB-INF/flows/activation-flow.xml"/>
</flow:flow-registry>

<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
 <property name="flowExecutor" ref="activationFlowExecutor"/>
</bean>
<flow:flow-executor id="activationFlowExecutor" 
 flow-registry="activationFlowRegistry"/>

5. Navigere i strømmene

For å navigere gjennom flytene, start opp nettappen og gå til http://localhost:8080/{context-path}/activationFlow. For å starte appen, distribuer den på en applikasjonsserver, for eksempel Tomcat eller Jetty.

Dette sender oss til startsiden av flyten, som er aktiveringen side spesifisert i flytkonfigurasjonen vår:

Du kan klikke på aktiver knappen for å gå til suksesssiden:

Eller avbryt knappen for å gå til feilsiden:

6. Konklusjon

I denne artikkelen brukte vi et enkelt eksempel som en veiledning for hvordan du bruker Spring Web Flow.

Du kan finne den fullstendige kildekoden og alle kodebitene for denne artikkelen på GitHub.


Java Tag