Windows Workflow の概要
ワークフローは "アクティビティ" と呼ばれる要素の集まりであり、これらは実際のプロセスを記述したモデルとして保存されます。 ワークフローでは、短期間だけ行われる業務や長期間にわたって行われる業務の各部分の実行順序と、それらの間の依存関係を表すことができます。 このような業務はモデルの最初から最後まで通して行われます。アクティビティには、人間によって実行されるものと、システム機能によって実行されるものがあります。
ワークフロー ランタイム エンジン
実行されるそれぞれのワークフロー インスタンスは、ホスト プロセスが次のいずれかを通して対話するプロセス内ランタイム エンジンによって作成および保持されます。
WorkflowInvoker。メソッドのようにワークフローを呼び出します。
WorkflowApplication。1 つのワークフロー インスタンスの実行に対して明示的な制御を行います。
WorkflowServiceHost。複数のインスタンスを使用する場合にメッセージ ベースの対話を行います。
これらの各クラスは、アクティビティの実行に関与する ActivityInstance として表されるコアのアクティビティ ランタイムをラップします。 実行するアプリケーション ドメイン内では、同時に複数の ActivityInstance オブジェクトを使用できます。
前述のホストと対話する 3 つのオブジェクトは、それぞれワークフロー プログラムと呼ばれるアクティビティのツリーから作成されます。 ワークフローは、これらの型を使用するか、ActivityInstance をラップするカスタムのホストを使用して、コンソール アプリケーション、フォームに基づくアプリケーション、Windows サービス、ASP.NET Web サイト、Windows Communication Foundation (WCF) サービスなどの任意の Windows プロセス内で実行できます。
ホスト プロセス内のワークフローのコンポーネント
ワークフロー コンポーネント間の対話
次の図は、ワークフロー コンポーネントが互いにどのように対話するかを示しています。
前の図では、複数のワークフロー インスタンスを呼び出すために、Invoke クラスの WorkflowInvoker メソッドが使用されています。 WorkflowInvoker は、ホストからの管理が不要の簡易なワークフローに使用されます。ホストからの管理が必要なワークフロー (Bookmark の再開など) は、代わりに Run を使用して実行する必要があります。 他のワークフロー インスタンスを呼び出す前に、現在のワークフロー インスタンスが完了するのを待機する必要はありません。ランタイム エンジンでは、複数のワークフロー インスタンスの同時実行をサポートしています。 呼び出されるワークフローは次のとおりです。
Sequence 子アクティビティを含む WriteLine アクティビティ。 親アクティビティの Variable は、子アクティビティの InArgument にバインドされます。 変数、引数、およびバインドの詳細については、「変数と引数」を参照してください。
ReadLine
という名前のカスタム アクティビティ。 OutArgument メソッドの呼び出しに対してReadLine
アクティビティの Invoke が返されます。CodeActivity 抽象クラスから派生するカスタム アクティビティ。 CodeActivity は、CodeActivityContext メソッドのパラメーターとして使用可能な Execute を使用して、ランタイム機能 (追跡やプロパティなど) にアクセスできます。 これらのランタイム機能の詳細については、「ワークフロー追跡とトレース」と「ワークフロー実行プロパティ」を参照してください。
関連項目
.NET