Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

WF(Windows Workflow Foundation)チュートリアル 前編

Vista時代のプログラミングモデル .NET Framework 3.0入門 (5)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2007/08/17 14:00

.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の将来のバージョンでも使用される予定です。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 土井 毅(ドイ ツヨシ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:Vista時代のプログラミングモデル .NET Framework 3.0入門
All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5