1. 概要

Spring WebFlowはSpringMVCに基づいて構築されており、Webアプリケーション内にフローを実装できます。 これは、プロセスまたはいくつかのビジネスロジックを通じてユーザーをガイドする一連のステップを作成するために使用されます。

このクイックチュートリアルでは、ユーザーアクティベーションフローの簡単な例について説明します。 ユーザーにページが表示され、アクティブ化ボタンをクリックして続行するか、キャンセルボタンをクリックしてアクティブ化をキャンセルします。

ここでの前提は、SpringMVCWebアプリケーションがすでにセットアップされているということではありません。

2. 設定

SpringWebFlowの依存関係をpom.xmlに追加することから始めましょう。

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

Spring Web Flowの最新バージョンは、CentralMavenリポジトリにあります。

3. フローの作成

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

フローの各ステップは、 状態

この簡単な例では、view-stateを使用します。 view-state は、一致するビューをレンダリングするフローのステップです。 view-state は、アプリ内のページ( WEB-INF / view)、を参照します。view-stateのIDはそれが参照するページ。

transition要素も使用します。 遷移要素は、特定の状態内で発生するイベントを処理するために使用されます。

このフロー例では、3つのビューステートアクティベーション成功、および失敗を設定します。

このフローのプロセスは非常に簡単です。 開始点は、アクティベーションビューです。 activate イベントがトリガーされた場合、successビューに移行する必要があります。 キャンセルイベントがトリガーされた場合、障害ビューに移行する必要があります。 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つのボタンを持つ単純なページです。 をキャンセルをアクティブにします。 ボタンをクリックすると、遷移がトリガーされ、ユーザーが成功 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>

flowExecutionUrl を使用して、現在のフロー実行view-stateのコンテキスト相対URIにアクセスしています。

4. フローの構成

次に、SpringWebFlowをWeb環境に構成します。 これを行うには、フローレジストリとフロービルダーサービスを設定します。

フローレジストリを使用すると、フローの場所を指定したり、フロービルダーサービスを使用している場合は指定したりできます。

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

カスタマイズできるサービスの1つは、view-factory-creatorです。 view-factory-creator を使用すると、SpringWebFlowで使用されるViewFactoryCreatorをカスタマイズできます。 Spring MVCを使用しているため、SpringMVC構成でビューリゾルバーを使用するようにSpringWebFlowを構成できます。

この例では、SpringWebフローを構成する方法を次に示します。

@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 / {context-path} /ActivationFlowに移動します。 アプリを起動するには、TomcatJettyなどのアプリケーションサーバーにアプリをデプロイします。

これにより、フローの最初のページに移動します。これは、フロー構成で指定されたActivationページです。

 

アクティブ化ボタンをクリックして、成功ページに移動できます。

または、キャンセルボタンをクリックして、失敗ページに移動します。

6. 結論

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

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