WF(Windows Workflow Foundation)チュートリアル 前編
Vista時代のプログラミングモデル .NET Framework 3.0入門 (5)
ダウンロード サンプルファイル (9.1 KB)
.NET Framework 3.0を構成する「Windows Workflow Foundation(WF)」は、ワークフローをWindows上で扱うためのフレームワークです。ワークフローは大きく「シーケンシャルワークフロー」と「ステートマシンワークフロー」の2つに分けられますが、前編となる本稿では、主に前者についてサンプルを交えながら紹介します。
はじめに
.NET Framework 3.0入門として、前回までGUIまわりのWPF、XAML、通信関係のWCFと解説してきました。今回は、業務に必要なワークフローの構築をサポートする「Windows Workflow Foundation(WF)」を紹介します。
対象読者
本記事は、C#でのプログラミングを行ったことがある方を対象としています。
サンプルを動作させるための環境設定等は『WPF(Windows Presentation Foundation)+XAML入門 前編』をご覧ください。
WF登場の歴史的経緯
WF(Windows Workflow Foundation)は、ワークフローをWindows上で扱うためのフレームワークです。
ワークフローという言葉は、通常のプログラミングではあまり扱わない言葉かもしれません。ワーク(Work;仕事)とフロー(Flow;流れ)を組み合わせたもの、というのが基本的な意味で、さまざまな処理を組み合わせて流れを作り出していくモデルであると言えます。なお、ワークフローの中の処理のことをアクティビティと呼びます。
例えば、よく引き合いに出されるのは会社内での購入申請や休暇申請などの際に行う処理です。これを擬似的なプログラムで表せば、次のようになるでしょう。
購入申請(申請者 , 購入金額){
switch(申請者.役職){
case 社長:
return 許可;
case マネージャ:
if(購入金額 > マネージャ.裁量上限)
return 社長の決裁();
else
return 許可;
case 社員:
if(購入金額 > 社員.裁量上限)
return マネージャの決裁();
else
return 許可;
}
}
ここでは
- 社長であれば無条件で購入許可
- 社員の場合はそれぞれの裁量に任された金額以内であればそのまま許可が下りる
- マネージャか社員の場合に、裁量を超える場合は上長の許可を得る
というルールをコード化しています。
このソースコードはそれなりに分かりやすいものではありますが、以下の図のようにすれば、直感的に理解できるのではないでしょうか。

これは単なるフローチャートですが、もしこのようなモデルを直接コンピュータが実行することができれば、モデルからソースコードへと落とし込む作業が無くなり、煩雑な条件の見落としなどもなくなるでしょう。また、さまざまな条件が可視化されているため、見通しがよく、後になって設計を変更する場合にも変更しやすいでしょう。
ワークフローを使用することのメリットはさまざまですが、いくつかを挙げてみましょう。
- 可視化
- ドメイン固有言語(Domain-Specific Language:DSL)である
- 再利用性
- 監視
このように、適用分野によってはメリットの大きいワークフローですが、Microsoft社のBizTalkなどのエンタープライズ向けプロダクトや、社内システムなど特定分野向けの商用製品がほとんどで、プログラミングの際に汎用的に使用可能なワークフローライブラリはあまりありませんでした。.NET Framework 3.0で導入されたWFは、ワークフローを.NET Framework上で取り扱うためのフレームワークです。
WFは既にWindows SharePoint Services 3.0/SharePoint Server 2007において、ワークフローのためのフレームワークとして用いられており、BizTalk Serverの将来のバージョンでも使用される予定です。
この記事は参考になりましたか?
- Vista時代のプログラミングモデル .NET Framework 3.0入門連載記事一覧
-
- WF(Windows Workflow Foundation)チュートリアル 後編
- WF(Windows Workflow Foundation)チュートリアル 中編
- WF(Windows Workflow Foundation)チュートリアル 前編
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 土井 毅(ドイ ツヨシ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
