特集

Windows Workflow Foundation概説

巷で話題のWFの可能性を探ろう!

株式会社アークウェイ 黒石 高広
2006/04/05

Page1 Page2 Page3

5. WFのアーキテクチャから特徴を探る

 図7にWFのアーキテクチャを図示する。

図7 WFアーキテクチャ
WFアーキテクチャの特徴は拡張性と柔軟性にある。

 このWFアーキテクチャには、いくつか特筆すべき特徴が含まれている。キーワードは「拡張性」と「柔軟性」である。

●アクティビティによる機能拡張

 まずは、WFアーキテクチャ(図7)の1番上にある「ワークフロー・モデル(Workflow Model)」の層を見てほしい。この層はワークフローのデザインを行うために提供される層である。

 ワークフローの実行単位であるアクティビティには、標準でシーケンシャル・ワークフロー用やステートマシン・ワークフロー用などがあるが、それら以外にカスタム・アクティビティを開発し、ワークフローに組み込むことができる。

 また、windowsworkflow.netというWebサイトでは、メール送信アクティビティやFTPアクティビティ、Amazon Webサービス・アクティビティなどの多くのアクティビティが公開されている。このようなWebサイトなどから入手したアクティビティをワークフローに組み込むことで簡単に機能拡張していくことも可能である。

●ルール・エンジンによるビジネス・ルールの実行

 WFアーキテクチャ(図7)の上から2番目に「ランタイム(Runtime)」という層があるが、これはWFの実行制御をつかさどる中核の層である。この中の「ルール(Rules)」に注目してみる。これはルール・エンジンと呼ばれる機能であり、ワークフロー内のビジネス・ルールを制御する機能である。

 WFでは、例えば「書籍代が1万円以上であれば上司の承認が必要」といったビジネス・ルールを外部のXMLファイルやデータベース内に格納することが可能である。つまりルール・エンジンは、通常のアプリケーション開発ではif文などの条件式としてアプリケーションに埋め込まれてしまうビジネス・ルールを外部に定義することで、ワークフローの柔軟性を高める仕組みを提供する。

●サービスによる機能拡張

 WFアーキテクチャ(図7)の上から3番目には「ホスティング(Hosting)」という層がある。ホスティングは、最下層のホスト・プロセス上にワークフロー・インスタンスをホストさせる層である。ワークフローをホスト・プロセス上にホストする際には、「永続化(Persistence)」や「トランザクション(Transaction)」、「トラッキング(Tracking)」などのサービスを追加することが可能である。

 ワークフロー実行時に永続化サービスを追加した例を、以下のコード4に示す。コード3のサンプル・コードと比較して見ていただきたい。

class Program
{
  static AutoResetEvent waitHandle = new AutoResetEvent(false);

  static void Main()
  {
    try
    {
      WorkflowRuntime workflowRuntime = new WorkflowRuntime();

      workflowRuntime.AddService(
        new SqlWorkflowPersistenceService(
          "Initial Catalog=SqlPersistenceService;Data Source=localhost;Integrated Security=SSPI;"));
      workflowRuntime.WorkflowCompleted += OnWorkflowCompleted;
      workflowRuntime.WorkflowIdled += OnWorkflowIdled;
    }
    ……中略……
  }
  ……中略……
}
コード4 WFにサービスを追加した例
ワークフローを実行するランタイムに対して、サービスを追加する。この例では、ワークフローの状態をSQL Serverに退避させる「永続化」サービスを追加している。このようにワークフローの実態に関係なくサービスを追加し、側面的(アスペクチャル)な機能を追加することが可能である。なお、ワークフロー実行の処理はコード3とあまり変わらないためここでは省略している。

 そもそもワークフローの状態を一度データベースなどに退避させる「永続化」や、ワークフロー実行の経過をデータベースに記録するといった「トラッキング」は、ワークフローの定義とは「別の関心」である。

 WFでは、これらをサービスという形でワークフロー実行時に追加できることで、ワークフローのデザイン時の関心と実行時の関心を分離できるように設計されている。またサービスは独自に開発することもできるので、さまざまなサービスを後から開発・追加してワークフローを拡張していくことも可能となる。

●ホスティング先を選択可能

 WFアーキテクチャ(図7)の最下部には「ホスト・プロセス(Host Process)」がある。これはワークフロー実行時にワークフローをインスタンス化するプロセスを示している。

 コード1〜3で示したWFのサンプル・プログラムは、コンソール・アプリケーションをホスト・プロセスとした例であったが、コンソール・アプリケーションだけでなく、WindowsフォームやASP.NETのWebフォーム、Webサービスなどをホスト・プロセスとすることが可能である。

 このようにいろいろな実行環境下にホスティング可能なことがWFの特徴として挙げられる。これは、WFだけでなくWPFやWCFなどのWinFX技術の大きな特徴の1つでもある。

 以上のようにWFのアーキテクチャを見るだけでも拡張性や柔軟性を考慮されたワークフロー基盤であることがご理解いただけたと思う。そのほかにどのようなことが可能になるか、さらなる可能性を探っていこう。

6. WFのさらなる可能性

 いままでに説明した以外に、WFではどのようなことが実現できるのだろうか? 現時点ではまだ謎に包まれた部分も多いが、いくつか取り上げていこう。

●Office12、Windows SharePoint Serviceとの連携

 Officeの次期バージョンであるOffice 12とWindows SharePoint Service(WSS)でもWF対応が計画されている。残念ながら現時点では詳細が発表されていないので、どのような形でサポートされるか明言できないが、電子文書とワークフロー技術を組み合わせたアプリケーション基盤の提供が期待される。

●BizTalkとの連携

 WFは、BizTalk Serverのオーケストレーション機能を開発していたチームによって開発されている。BizTalk Serverの将来のバージョンでは、オーケストレーション機能がWFに置き換わっていくことが計画されている。

●Windows Communication Foundationとの連携

 WCFはWinFXの通信基盤で、当然のことだがWFとの連携も可能となる。現在、非常に注目を集めているサービス指向アーキテクチャ(SOA)の基盤としてもWFによるビジネス・プロセスの実行とWCFによるサービスとの通信が実現されると期待される。

7. まとめ

 このようにWFは拡張性と柔軟性に優れた、非常に大きな可能性を秘めたワークフロー基盤技術であることを理解していただけたことと思う。

 いままでのワークフロー技術は、ワークフロー・パッケージを開発している企業や、一部の専門技術者による狭い世界の技術であり、ほかではつぶしの利きづらいものでもあった。これらがマイクロソフトの基盤技術として1つに統合され、アプリケーションの開発基盤として無償で利用できることには非常に大きな意義がある。

 またWFだけでなく、WPFやWCFなどを含むWinFX技術の登場は、.NETアプリケーション開発者にとってインパクトの非常に大きい変化の波である。WFだけでなく、WinFXという大きな変化の波を、楽しんで乗りこなしてみてはいかがだろうか。End of Article

 

 INDEX
  [特集] Windows Workflow Foundation概説
  巷で話題のWFの可能性を探ろう!
    1. 巷で話題のWindows Workflow Foundationって何?
    2. WFの基本的な動作を探る
  3. WFのアーキテクチャから特徴を探る
 


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間