特集Windows Workflow Foundation概説巷で話題のWFの可能性を探ろう!株式会社アークウェイ 黒石 高広 |
|
1. 巷(ちまた)で話題のWindows Workflow Foundationって何?
|
「Windows Workflow Foundation」(以下、WF)*1は、2005年9月に開催されたPDC(Professional Developers Conference)で発表されたマイクロソフトの次世代ワークフロー基盤のことである。
ワークフローとは、業務や処理の流れを図示・ルール化したもので、古くからプログラムの処理ロジックを表現する1つの手段として多用されてきた。このようなワークフローの容易な開発と実行をサポートするWFが、Windows Communication Foundation(以下、WCF)やWindows Presentation Foundation(以下、WPF)と一緒に、Windows Vistaに搭載されるWinFX*2の一部として提供される予定である。
*1 発表当初はWWFと略されていたが、WWFは世界自然保護基金の団体名称となるため、現在ではWFと呼称されることが一般的だ。 |
*2 WinFXは次期WindowsクライアントOSのWindows Vistaに搭載される新APIセットで、次世代アプリケーションの開発・実行基盤である。 |
しかし、なぜいまこのようなワークフロー技術が必要とされるのだろうか? また、WFの登場によってわれわれ.NET開発者はどのような恩恵を受けられるのだろうか?
本稿では、WF登場の意義やWFが持つ特徴と可能性について探っていく。
2. マイクロソフトのワークフロー技術の歴史からその意義を探る
まずは、マイクロソフトの現在のワークフロー技術をふかんし、なぜWFが生まれたのか、その意義について探っていこう。
現在、マイクロソフトは、いくつかの製品に対してすでにワークフロー技術を組み込んでいる。具体的には次の2つの製品機能である。
●BizTalk Serverのオーケストレーション機能
BizTalk Serverは、主にEAIやBtoBでのメッセージ交換を行う製品であり、そのメッセージのフローをオーケストレーションというワークフロー機能で記述することができる。
●OfficeとExchange Server/SQL Serverを組み合わせたワークフロー
Office XPとExchange ServerやSQL Server、スクリプト技術を組み合わせてワークフローを構築することも可能である。残念ながら認知度が低いことや、技術情報があまり多くないこともあり、利用実績は少ない。
このように現状では、ワークフロー技術は各製品の一機能として個別に実装されている。しかも、それら個別のワークフロー技術は互換性があるわけではなく、ノウハウも共有できないという問題も抱えているのだ。そのような状況の中で、「ワークフロー技術をWindowsの基盤(Foundation)技術として統合しよう」とする機運が高まり、登場したのがWFなのである。
WFの登場にはこのような背景がある。前置きはこのぐらいにして、さっそくWFの世界に触れてみよう。
3. Windows Workflow Foundation概要
読者の皆さんは、ワークフローというと何を思い浮かべるだろうか? 大半の読者は、例えば次のようなものを思い浮かべると思う。
- 「ECサイト上で注文を受けた際にクレジットカードの与信チェックや注文商品の在庫確認などを行う」というワークフロー
- 「出張申請を提出すると上司が承認する」というワークフロー
マイクロソフトが公開しているWFの資料の中では、
- 前者をシステム・ワークフロー
- 後者をヒューマン・ワークフロー
と呼んでいる。
では、WFはどちらのワークフローに対応した技術なのだろうか? その疑問に答えると、WFは両方のワークフローに対応するといえる(より正確に言うと、WFはワークフロー基盤として両方のワークフローに対応可能な仕組みや機能を提供する、といえる)。WFでは、それらの異なった性質を持つワークフローを実現するために、次の2種類のワークフロー機能を提供する。
- シーケンシャル・ワークフロー(Sequential Workflow)
- ステートマシン・ワークフロー(State Machine Workflow)
●シーケンシャル・ワークフロー
シーケンシャル・ワークフローは、UMLのアクティビティ図と同じような感じでワークフローを記述できる。図1にシーケンシャル・ワークフローのデザイン画面を示す。
なお以降の画面はVisual Studio 2005 Team SuitesにWF Beta 2をインストールしてキャプチャを行っている(WFのインストールなどについての詳細は後述)。
図1 シーケンシャル・ワークフローのデザイン画面 |
シーケンシャル・ワークフローでは、処理が上から下に順番に実行されるようなシステム・ワークフローの記述に主に利用される。 |
シーケンシャル・ワークフローは、開始状態()からワークフローを開始し、アクティビティという単位で処理を実行しながら、ワークフローの処理を行っていく。この図に示されているように条件分岐も記述できるし、ほかにも繰り返し処理や並行処理、Webサービスの実行なども記述可能である。
●ステートマシン・ワークフロー
ステートマシン・ワークフローは、UMLの状態遷移図のイメージでワークフローを記述できる。
図2にステートマシン・ワークフローのデザイン画面を示す。
図2 ステートマシン・ワークフローのデザイン画面 |
ステートマシン・ワークフローでは、イベント発生のたびに状態が遷移していくワークフローを記述することができる。例えば、上司に承認されたら承認待ち文書から承認済み文書へ状態が遷移しメールで通知されるようなヒューマン・ワークフローの記述に利用することができる。 |
ステートマシン・ワークフローを利用すると、ワークフローの状態と状態同士の関連を表現することができる。ステートマシン・ワークフローはイベント駆動で実行され、ワークフローが処理される。
この図2に示したステートマシン・ワークフローは、WFに付属している電話の自動応答システムのサンプルである。ステートマシン・ワークフローの実行イメージをつかみやすいように、このワークフローの実行画面を図3に示す。
図3 ステートマシン・ワークフローの実行サンプル |
この画面は電話に見立てたサンプルアプリケーションである。[Start Phone Session]ボタンをクリックするとワークフローが起動し、番号のボタンを押すたびに、ワークフローの状態が遷移し、応答のメッセージが切り替わっていく。 |
このように、WFではワークフローの種類に応じて、シーケンシャル・ワークフローやステートマシン・ワークフローを選択することで、さまざまなタイプのワークフローに対応できる。
それでは、WFは実際にどのように動作するのだろうか? WFのサンプルをいくつか示しながら、基本的な動作を探っていこう。
INDEX | ||
[特集] Windows Workflow Foundation概説 | ||
巷で話題のWFの可能性を探ろう! | ||
1. 巷で話題のWindows Workflow Foundationって何? | ||
2. WFの基本的な動作を探る | ||
3. WFのアーキテクチャから特徴を探る | ||
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|