Flowについて書きたいと思います。Flowとは画面遷移の記載に特化したフレームワークです。従来のフレームワークでは、画面遷移を制御するためには、コントローラークラスを作成する必要がありました。ステートフルなデータを扱うためにはサーバーサイドでセッションを生成、適切なタイミングでセッションの破棄などを行う必要がありました。Webアプリケーションを作成する際、この開発コストは馬鹿になりません。ここで、例えば、ショッピングカートの機能のように複数の画面が遷移する場合を考えてみます。購入完了画面このような処理で、ステートフルなデータ、つまりショッピングカートの中身を維持するのは結構大変です。画面ごとにコントローラークラスを作成しなければならず、しかも、画面の遷移がちょっと変わっただけでも、相当なソースコードの変更が求められます。Flowは、そんなメンドクサイ画面遷移の処理から解放してくれます。Flowでは、画面遷移は全てXMLで実現をし、コントローラークラスなどは必要ありません。この画面遷移の一連の流れFlowと呼び、基本的にデータ(上記の例で言えばショッピングカートの中身)はFlowが終了するまで維持されます。画面の遷移を変更したい場合には、XMLを変更するだけでOKです。Flowですが、今となってはいささか時代遅れな感じが否めないようです。最近のWebアプリケーションの開発の潮流は、できるだけサーバーサイドでデータを持たず、ステートレスであろうとします。Tokenに代表されるような署名付きデータをクライアントのWebストレージに保存します。クライアントに表示するデータは、署名付きデータを認証キーとしてRestfulなAPIサーバーに渡して、データを取得し、画面はクライアント側で生成します。インフラ側は昨今、AWSやAzureなどに代表されるパブリッククラウドで構築されるケースがよくあると思います。Flowのように、サーバーサイドでデータを持つ前提のフレームワークでは、適用が非常に厳しいのかもしれません。Flowを採用しているからです。シングルサインオンは、一回のIDとパスワードの入力で、複数のサービスにログオンできる仕組みです。略してSSOと呼ばれることもあり、本記事でも以上は、SSOとします。Flowの恩恵に授かることは少ないですが、その真価を発揮するのは多要素認証のときです。多要素認証とは、複数の認証を組み合わせて一つの認証として、それら全ての認証にパスしないと、全体的に認証OKとしない仕組みです。昨今のシステムによく導入されているのが、ID・パスワード認証に加えて、ワンタイムパスワード認証を組み合わせるパターンです。他の認証も組み合わせて以下のようにすることも可能です。x509認証もちろん、これは極端な例ですが、このような複数の画面遷移は、先にご紹介したショッピングカートの例に似ていませんでしょうか?多要素認証にするということは、複数の画面が遷移し、認証が最後まで完了するまで、どこまでの認証が完了しているかをサーバー側にステートフルに保持しておく必要があります。Flowが大活躍します。Flowでは、XMLファイルを修正するだけでOKです。Flowへの理解は必須となります。掲示板に投稿されたメッセージを検索する簡単なアプリケーションを作成します。画面イメージ及び画面遷移は、下記の通りとします。掲示板のタイトルを入力して、「検索」をクリックすると、タイトルで検索した検索結果一覧が次の画面に表示されます。検索結果の一覧画面です。Flowに置き換えます。実装方法のご説明に入ります。Flowの2.4.4を導入します。&lt;/dependency&gt;12345&lt;dependency&gt;&lt;groupId&gt;org.springframework.webflow&lt;/groupId&gt;&lt;artifactId&gt;spring-webflow&lt;/artifactId&gt;&lt;version&gt;2.4.4.RELEASE&lt;/version&gt;&lt;/dependency&gt;準備は整いましたので、ソースコードを作成します。今回、作成するべきソースコードの一覧及びディレクトリ構成は以下のとおりです。WebFlowConfig.javaです。Flowの公式マニュアルに従って作成し、重要な部分のみソースコード内にコメントで記載しております。https://docs.spring.io/autorepo/docs/webflow/2.4.4.RELEASE/reference/html/system-setup.html掲示板のメッセージを格納するBeanです。掲示板のタイトルと本文を格納するBeanで一般的なコードですので、迷うことはないと思います。検索画面で入力された検索条件(タイトル)を格納するFormクラスです。こちらもシンプルなコードですので、特に説明は不要かと思います。検索ボタンがクリックされたときに実行される検索処理です。処理の詳細は、ソースコード内のコメントを参考にして下さい。画面遷移を定義するFlow定義ファイルです。検索条件を入力する画面のテンプレートファイルです。検索結果を表示する画面のテンプレートファイルです。これらのソースコードの作成が完了しましたら、アプリケーションを実行してみて下さい。アクセスするURLはFlow定義ファイルが配置された位置によって決まります。今回は、WebFlowConfig.javaにて、templatesというルートを設定し、そこからFlow定義ファイルまでのパスは/bbs/flow-bbs.xmlとなっております。この場合、アクセスするURLは以下のようになります。Flowはレガシーな技術ながらも、適用範囲はまだまだ色々あると思います。雑誌等の執筆依頼を受付しております。役に立たなかった1人がこの投稿は役に立ったと言っています。コメントをキャンセルメールアドレスは表示されません。Reserved.本サイトに掲載されている社名、製品名、サービス名等は各社の商標または登録商標です。プライバシーポリシーお問い合わせ。