アクティビティ状態モデルについて
アクティビティがその有効期間中に移行する可能性のある状態は 6 つあります。それは、Initialized、Executing、Canceling、Closed、Compensating、および Faulting です。
Initialized 状態では、アクティビティのために ActivityExecutionContext が作成され、そのアクティビティに固有のその他の開始に関する詳細が実行されています。たとえば、SuspendActivity などの一部の Windows Workflow Foundation アクティビティは、親複合アクティビティがあるかどうかを初期化中に確認します。
アクティビティが Executing 状態に入ると、アクティビティの主要な機能が実行されます。
アクティビティは、親アクティビティによって明示的に、または、アクティビティ実行中に例外がスローされたことにより、Canceling 状態に入ります。
Closed 状態は、アクティビティの最終状態です。ここで注意しておくべきことは、アクティビティの実行が正常に完了しても、ビジネス ロジックに従って、Compensating 状態を通過しなければならないことです。そのとき、アクティビティは Closed から Compensating へ移行し、補正ロジックが完了すると、Closed に戻ります。補正の詳細については、「ワークフロー内での補正の使用」および「CompensateActivity アクティビティの使用」を参照してください。
アクティビティが Executing 状態、Canceling 状態、または Compensating 状態のときに例外がスローされた場合は、Faulting 状態に移行します。
アクティビティの各種の状態間での移行について、次のフローチャートに示します。
赤色の実線は、アクティビティの Initialized 状態から Executing 状態への移行、または Closed 状態から Compensating 状態への移行が、ワークフロー ランタイム エンジンによって行われることを示しています。
黄色の実線は、子アクティビティの Executing 状態から Closed 状態への移行が、親アクティビティによって行われることを示しています。カスタム複合アクティビティを作成する場合、自分でこれを処理する必要があります。
青色の実線は、アクティビティの Executing、Canceling、または Compensating 状態から Faulting 状態への移行が、ワークフロー ランタイム エンジンによって行われることを示しています。
黄色の破線は、アクティビティの Canceling 状態、Compensating 状態、または Faulting 状態から Closed 状態への移行が、ワークフロー ランタイム エンジンによって行われることを示しています。
メモ : |
---|
アクティビティは、Closed 状態から Executing 状態へ移行できません。その種の移行を試みると、Execute への呼び出しから例外がスローされます。 |
アクティビティが閉じるのは、すべての子アクティビティが Closed 状態または Initialized 状態のいずれかになったときだけです。これは再帰的なルールであるため、呼び出しが成功するためには、閉じようとしているアクティビティより下のツリー全体が、Closed または Initialized である必要があります。
関連項目
概念
その他の技術情報
Windows Workflow Foundation アクティビティ
Copyright © 2007 by Microsoft Corporation.All rights reserved.