Anleitung zum Spring Web Flow

1. Übersicht

Spring Web Flow baut auf Spring MVC auf und ermöglicht die Implementierung von Flows innerhalb 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 wir ein einfaches Beispiel für einen Benutzeraktivierungsablauf durchgehen . Dem Benutzer wird eine Seite angezeigt, und er klickt auf die Schaltfläche Aktivieren , um fortzufahren, oder auf die Schaltfläche Abbrechen , um die Aktivierung abzubrechen.

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

2. Setup

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

 org.springframework.webflow spring-webflow 2.5.0.RELEASE 

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

3. Erstellen eines Flusses

Lassen Sie uns nun einen einfachen Ablauf erstellen. Wie bereits erwähnt, ist der Ablauf eine Folge von Schritten, die einen Benutzer durch einen Prozess führen. Derzeit ist dies nur mit der XML-basierten Konfiguration möglich.

Jeder Schritt im Fluss wird als Zustand bezeichnet .

Für dieses einfache Beispiel verwenden wir einen Ansichtsstatus . Ein Ansichtsstatus ist ein Schritt im Ablauf, der eine übereinstimmende Ansicht rendert. Der Ansichtsstatus bezieht sich auf eine Seite in der App ( WEB-INF / Ansicht), wobei die ID des Ansichtsstatus der Name der Seite ist, auf die er verweist.

Wir werden auch ein Übergangselement verwenden. Ein Übergangselement wird zum Behandeln von Ereignissen verwendet, die in einem bestimmten Zustand auftreten .

Für dieses Beispiel fließt, werden wir drei einrichten View-Staaten den - Aktivierung , Erfolg und Misserfolg .

Der Prozess für diesen Ablauf ist ziemlich einfach. Ausgangspunkt ist die Aktivierungsansicht . Wenn ein Aktivierungsereignis ausgelöst wird, sollte es in die Erfolgsansicht übergehen . Wenn das Abbruchereignis ausgelöst wird, sollte es in die Fehleransicht übergehen . Das Übergangselement behandelt das Schaltflächenklickereignis, das im Ansichtsstatus auftritt:

Die erste Aktivierungsseite, auf die durch die ID- Aktivierung verwiesen wird und die sich in WEB-INF / view / activity.jsp befindet , ist eine einfache Seite mit zwei Schaltflächen: Aktivieren und Abbrechen . Durch Klicken auf die Buttons mit Trigger unsere Übergänge entweder den Benutzer zum Erfolg senden Ansichtszustand ( WEB-INF / view / success.jsp ) oder den Ausfall Ansichtszustand ( WEB-INF / view / failure.jsp):

Click to activate account

Wir verwenden die flowExecutionUrl, um auf den kontextbezogenen URI für den aktuellen Ansichtsstatus der Flussausführung zuzugreifen .

4. Konfigurieren des Flusses

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

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

Mit dem Flow Builder-Dienst können wir Dienste und Einstellungen anpassen, die zum Erstellen von Flows verwendet werden.

Einer der Dienste, die wir anpassen können, ist der View-Factory-Creator . Mit dem View-Factory-Creator können wir den von Spring Web Flow verwendeten ViewFactoryCreator anpassen . Da wir Spring MVC verwenden, können wir Spring Web Flow so konfigurieren, dass der Ansichtsauflöser 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 zu // localhost: 8080 / {context-path} / activityFlow. Stellen Sie die App zum Starten auf einem Anwendungsserver wie Tomcat oder Jetty bereit.

Dies sendet uns zur ersten Seite des Flusses, der Aktivierungsseite, die in unserer Flusskonfiguration angegeben ist:

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

Oder die Schaltfläche Abbrechen , um zur Fehlerseite zu gelangen:

6. Fazit

In diesem Artikel haben wir ein einfaches Beispiel als Leitfaden zur Verwendung von Spring Web Flow verwendet.

Den vollständigen Quellcode und alle Codefragmente für diesen Artikel finden Sie auf GitHub.