Anleitung zum Spring Web Flow

Anleitung zum Spring Web Flow

1. Überblick

Spring Web Flow baut auf Spring MVC auf und ermöglicht die Implementierung von Flows in einer Webanwendung. Es wird zum Erstellen von Abfolgen von Schritten verwendet, die Benutzer durch einen Prozess oder eine Geschäftslogik führen.

In diesem kurzen Tutorial werden wira simple example of a user activation flow durchgehen. Dem Benutzer wird eine Seite angezeigt, und er klickt auf die SchaltflächeActivate, um fortzufahren, oder auf die SchaltflächeCancel, um die Aktivierung abzubrechen.

Nicht, dass wir hier davon ausgehen, dass wir eine bereits eingerichtete Spring MVC-Webanwendung haben.

2. Konfiguration

Beginnen wir mit dem Hinzufügen der Spring Web Flow-Abhängigkeit zupom.xml:


    org.springframework.webflow
    spring-webflow
    2.5.0.RELEASE

Die neueste Version von Spring Web Flow finden Sie inCentral Maven Repository.

3. Flow erstellen

Erstellen wir jetzt einen einfachen Ablauf. Wie bereits erwähnt, besteht der Ablauf aus einer Abfolge von Schritten, die einen Benutzer durch einen Prozess führen. Currently, this can only be done using XML-based config.

Jeder Schritt im Fluss wird als a bezeichnet *Zustand*.

In diesem einfachen Beispiel verwenden wirview-state. Aview-state ist ein Schritt im Ablauf, der eine übereinstimmende Ansicht darstellt. view-state bezieht sich auf eine Seite in der App (WEB-INF/view),, wobei die ID vonview-state der Name der Seite ist, auf die sie verweist .__

Wir werden auch eintransition-Element verwenden. A transition element is used for handling events that occur within a particular state.

Für diesen Beispielfluss richten wir dreiview-states ein - dieactivation,success undfailure.

Der Prozess für diesen Ablauf ist ziemlich einfach. Ausgangspunkt ist die Ansicht vonactivation. Wenn einactivate-Ereignis ausgelöst wird, sollte es in diesuccess-Ansicht übergehen. Wenn das Ereigniscancelausgelöst wird, sollte es in die Ansichtfailureübergehen. Dastransition-Element behandelt das Schaltflächenklickereignis, das inview-state: auftritt


    
    




Die anfängliche Aktivierungsseite, auf die durch die IDactivation verwiesen wird und die sich inWEB-INF/view/activation.jsp befindet, ist eine einfache Seite mit zwei Schaltflächen,activate undcancel. Klicken Sie auf die Schaltflächen, um unsere Übergänge auszulösen und den Benutzer entweder zum Erfolgview-state (WEB-INF/view/success.jsp) oder zum Fehlerview-state (WEB-INF/view/failure.jsp): zu senden


    

Click to activate account

Wir verwendenflowExecutionUrl, um auf den kontextbezogenen URI für die aktuelle Flussausführungview-state zuzugreifen.

4. Flow konfigurieren

Als Nächstes konfigurieren wir Spring Web Flow in unserer Webumgebung. Dazu richten wir einen Flow Registry- und einen Flow Builder-Dienst ein.

In der Flow-Registrierung können wir den Speicherort unserer Flows sowie einen Flow Builder-Service angeben, falls einer verwendet wird.

Der Flow Builder-Dienst hilft uns beim Anpassen von Diensten und Einstellungen, die zum Erstellen von Flows verwendet werden.

Einer der Dienste, die wir anpassen können, istview-factory-creator. Mitview-factory-creator können wir die von Spring Web Flow verwendetenViewFactoryCreator anpassen. Da wir Spring MVC verwenden, können wir Spring Web Flow so konfigurieren, dass der View Resolver in unseren Spring MVC-Konfigurationen verwendet wird.

So konfigurieren wir Spring Web Flow für unser Beispiel:

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

Wir können auch XML für diese Konfiguration verwenden:


    





    



    



    

5. Navigieren in den Flows

Um durch die Flows zu navigieren, starten Sie die Web-App und gehen Sie zuhttp://localhost:8080/%7Bcontext-path%7D/activationFlow. Stellen Sie die App zum Starten auf einem Anwendungsserver bereit, z. B.Tomcat oderJetty.

Dies sendet uns zur ersten Seite des Flusses, bei der es sich um dieactivation-Seite handelt, die in unserer Flusskonfiguration angegeben ist:

image

 

Sie können auf die Schaltflächeactivate klicken, um zur Erfolgsseite zu gelangen:

imageoder Klicken Sie auf die Schaltflächecancel, um zur Fehlerseite zu gelangen:

image

6. Fazit

In diesem Artikel haben wir ein einfaches Beispiel als Leitfaden für die Verwendung von Spring Web Flow verwendet.

Sie finden den vollständigen Quellcode und alle Codefragmente für diesen Artikelover on GitHub.