1概要

Spring Web FlowはSpring MVC上に構築されており、Webアプリケーション内にフローを実装することができます。プロセスやビジネスロジックを通じてユーザーを導く一連のステップを作成するために使用されます。

このクイックチュートリアルでは、

ユーザーアクティベーションフローの簡単な例

について説明します。ユーザーにページが表示され、続行するには[アクティブ化]ボタンをクリックし、アクティブ化をキャンセルするには[キャンセル]ボタンをクリックします。

ここでの仮定は、すでにセットアップ済みのSpring MVC Webアプリケーションがあるということではありません。


2セットアップ

Spring Web Flow依存関係を

pom.xml

に追加することから始めましょう:

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

Spring Web Flowの最新バージョンはhttps://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22org.springframework.webflow%22%20AND%20a%3A%22springにあります。 -webflow%22[Central Mavenリポジトリ]。


3フローを作成する

それでは単純なフローを作成しましょう。前述したように、フローはプロセスを通してユーザーをガイドする一連のステップです。 ** 現在のところ、これはXMLベースの設定を使用してのみ実行できます。

  • フローの各ステップは




    state ** .と呼ばれます。

この簡単な例では、

view-state

を使用します。

view-state

は、一致するビューをレンダリングするフロー内のステップです。

view-state

はアプリ内のページ(

WEB-INF/view)を参照し、

view-state__のIDは参照するページの名前です。

また、

transition

要素も使用します。

transition

要素は、特定の

state

内で発生するイベントを処理するために使用されます。

このフロー例では、3つの

view-states



activation



success

、および

failure

を設定します。

この流れのためのプロセスはかなり簡単です。出発点は

activation

ビューです。

activate

イベントが発生すると、

success

ビューに遷移します。

cancel

イベントが発生すると、

failure

ビューに遷移するはずです。

transition

要素は、__view-stateで発生するボタンクリックイベントを処理します。

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

<view-state id="success"/>

<view-state id="failure"/>

最初のアクティベーションページは、ID

activation

で参照され、

WEB-INF/view/activation.jsp

にあります。2つのボタン

activate



cancel

がある単純なページです。ボタンをクリックしてトランジションをトリガーすると、ユーザーは成功

view-state



WEB-INF/view/success.jsp

)または失敗

view-state

(__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>

現在のフロー実行

view-state

のコンテキスト相対URIにアクセスするために

flowExecutionUrl

を使用しています。

** 4フローの設定

次に、Spring Web FlowをWeb環境に構成します。これを行うには、Flow RegistryとFlow Builder Serviceを設定します。

Flow Registryを使用すると、フローの場所を指定したり、Flow Builder Serviceが使用されている場合はそれを指定したりできます。

Flow Builderサービスは、フローの構築に使用されるサービスと設定をカスタマイズするのに役立ちます。

私たちがカスタマイズできるサービスの一つは

view-factory-creator

です。

view-factory-creator

を使用すると、Spring Web Flowで使用される

ViewFactoryCreator

をカスタマイズできます。 Spring MVCを使用しているので、Spring MVC設定でビューリゾルバを使用するようにSpring Web Flowを設定できます。

この例でSpring Web Flowを構成する方法は次のとおりです。

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

その設定にXMLを使用することもできます。

<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フローをナビゲートする

フローをナビゲートするには、Webアプリケーションを起動してhttp://localhost:8080/%7Bコンテキストパス%7D/activationFlowに移動します。アプリを起動するには、https://www.baeldung.com/tomcat-deploy-war[Tomcat]またはhttps://www.baeldung.com/deploy-to-jetty[]のようなアプリケーションサーバーにアプリをデプロイします。桟橋]。

これにより、フローの最初のページ、つまりフロー設定で指定された

activation

ページに移動します。

リンク:/uploads/activate-account-1.png%20719w[]

成功ページを表示するには、

activate

ボタンをクリックしてください。


/uploads/activation-successful-1-1.png%20717w

または

cancel

ボタンを押して失敗ページに進みます。


6. 結論

この記事では、Spring Web Flowの使用方法のガイドとして簡単な例を使用しました。

これに関する完全なソースコードとすべてのコードスニペットを見つけることができます。
記事

https://github.com/eugenp/tutorials/tree/master/spring-mvc-webflow

[over
GitHubで。