特集
|
|
|
4. WF (Windows Workflow Foundation)活用時の考慮点
WFはビジネス・プロセスであるワークフローの実装に特化した、モデル駆動でのワークフロー開発を可能にする新たなフレームワークであり、アプリケーション開発のさまざまな局面で活用していくことが可能だ。
WFはWPFやWCFとは異なり、既存の.NETコンポーネントとのすみ分けや相互運用などは気にせずにビジネス・ロジックを構築していく中で導入することができるが、WFを活用していくに当たって、ワークフロー・モデルの選択や適用範囲について考慮すべき点がいくつかある。
●シーケンシャル・ワークフローとステートマシン・ワークフローの使い分け
WFではシーケンシャル・ワークフローとステートマシン・ワークフローの2種類のワークフロー・モデルがサポートされていることを前回簡単に紹介した。
ワークフローは大きく分類すると、システム・ワークフローとヒューマン・ワークフローの2つのタイプに分類することができる。
システム・ワークフローは、ソフトウェアで自動的にビジネス・プロセスを実行するワークフローであり、例えば、WebのECサイトで商品の注文時に見られる、クレジット・カードの与信確認や商品在庫の確認を行うようなワークフローである。
一方、ヒューマン・ワークフローは、人が介在するビジネス・プロセスを実行するワークフローであり、例えば、従業員の出張や購買申請時に申請書を上司に承認してもらうようなワークフローである。
では、それぞれのワークフローを実現するためにシーケンシャル・ワークフローとステートマシン・ワークフローのどちらのワークフロー・モデルを使うべきか。ここではこの2つのワークフロー・モデルの特徴とその使い分けについて簡単に触れておく。
まずシーケンシャル・ワークフローは、分岐/選択/繰り返しなどを用いて構造的に処理順序が決定可能なワークフローをモデル化することを目的としたものであり、人との対話プロセスを必要とせずにビジネス・プロセスを自動化するシステム・ワークフローを表すのに適している。
たいていのシステム・ワークフローはフローチャートやUMLのアクティビティ図のようなフロー・モデルで表現可能であり、このケースではシーケンシャル・ワークフローを適用できる。
シーケンシャル・ワークフロー |
シーケンシャル・ワークフローは、人との対話プロセスを必要とせずにビジネス・プロセスを自動化するシステム・ワークフローを表すのに適している。 |
一方、ステートマシン・ワークフローは、実行パスが予測しづらいイベント駆動型のワークフローをモデル化することを目的としたものであり、特に実行プロセスに人(ユーザー)が介在するヒューマン・ワークフローを表すのに適している。
例えばUIの画面間の遷移をモデル化する場合に、その遷移工程をフローチャートやUMLのアクティビティ図で表現するよりも、状態の遷移を直接的にUMLの状態マシン図で表現する方がはるかに直感的で理解しやすい。それと同じように、WFでもユーザーとの対話によって処理フローが決定するヒューマン・ワークフローは、ステートマシン・ワークフローを用いることで素直に表現することができる。
ステートマシン・ワークフロー |
ステートマシン・ワークフローは、実行プロセスに人(ユーザー)が介在するヒューマン・ワークフローを表すのに適している。 |
●BizTalk ServerとWFのすみ分け
BizTalk Serverのオーケストレーション機能とWFのワークフロー機能は、ビジネス・プロセス/ワークフローを実行するエンジンという点で類似しているが、BizTalk ServerとWFは異なる問題領域を解決するためのテクノロジであり、うまくすみ分けることで効果的に両テクノロジを活用していくことができる。
BizTalk ServerとWFの適用範囲の比較 |
BizTalk Serverは、EAI的なビジネス・プロセスの統合、BtoB向けに特化したサービス(RossetaNetやSWIFT)への対応、BAMなどの強力なアクティビティ・トラッキングのサポートならびに高いスケーラビリティといった点で、WFにはないメリットを提供している。
BizTalk Serverとの適用範囲のすみ分けを考慮したうえで、WFを活用していくケースは以下のような場合であると考えられる。
-
アプリケーション自体でワークフローをホストしたい場合
WFはさまざまな種類のアプリケーション内でホストして実行できる。 -
ヒューマン・ワークフローを実装する場合
BizTalk Serverにもヒューマン・ワークフロー・サービスと呼ばれるものが存在しているが、その使用は推奨されていない。ヒューマン・ワークフローを実装する場合はWFが最適である。 -
クライアント・アプリケーション上でワークフローを実行したい場合
BizTalk Serverはサーバ・アプリケーションであるため、クライアント・マシン上での使用は想定されていない。WFはWPFやWindowsフォームのクライアント・アプリケーションでホストして実行することができる。
なお、ヒューマン・ワークフローと複雑なシステム統合の両方を必要とするようなシナリオでは、WFとBizTalk Serverを組み合わせることで、より効果的に対処していくことが可能になる。
BizTalk Serverについての詳細はこちらのホワイトペーパーを参照頂きたい。
5. まとめ
2回にわたり.NET Framework 3.0について、それがアプリケーション開発にもたらす価値や可能性、そして活用するに当たっての考慮点などについて簡単に紹介してきた。概要的な内容に終始したため、詳細な内容に触れられなかった点についてはご了承いただきたい。本連載の読者の皆さまが、.NET Framework 3.0をいち早く体験され、今後のシステム開発の現場で活用いただければ幸いです。
INDEX | ||
[特集] .NET Framework 3.0概説(前編) | ||
.NET Framework 3.0がソフトウェア開発にもたらす価値とは? | ||
1..NET Framework 3.0とは何か? | ||
2.WPF(Windows Presentation Foundation) | ||
3.WCF(Windows Communication Foundation)、WF(Windows Workflow Foundation) | ||
4.対応プラットフォームと開発環境 | ||
[特集] .NET Framework 3.0概説(後編) | ||
.NET Framework 3.0新技術の使い分け指針 | ||
1.WPF活用時の考慮点 | ||
2.WCF活用時の考慮点 | ||
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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|