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