Share via


ワークフローでのワークフロー変更の使用

ワークフロー変更を使用すると、ワークフローの実行中のインスタンスに対して実行時に変更を行うことができます。このような変更の理由としては、デザイン時に設定を省略した場合、アクティビティのプロパティやバインディングに変更が生じた場合、または、ビジネス ロジックを拡張してビジネス プロセスをより完全にモデル化する必要が生じた場合などがあります。ワークフロー変更は、大規模な変更、つまり元の設計上の原則とは大きく異なるワークフローになるような変更を目的とするものではありません。このような場合は、実行中のインスタンスを変更するのではなく、新しいワークフローを設計する必要があります。

ワークフロー変更は、ワークフローの単一インスタンスに適用されます。特定のワークフロー型の実行中および将来のインスタンスすべてに反映されるような、型に基づいた変更はサポートされていません。

ワークフロー変更を使用すると、次の処理を実行できます。

  • ワークフロー構造を変更する。たとえば、アクティビティの追加、削除など。

  • フロー制御を変更する。

一般的なワークフロー変更には次のようなものがあります。

  • PolicyActivity アクティビティが使用する RuleSet を変更する。

  • RuleCondition 定義を更新して、ConditionedActivityGroupIfElseActivity などの分岐アクティビティの動作を変更する。

  • ワークフローを展開して実行を開始した後に新しいビジネス プロセスを追加する必要が発生した場合に、新しいカスタム アクティビティまたは InvokeWorkflowActivity を追加する。

  • 作成者が、ワークフロー外からワークフロー マークアップを使用して、更新されたマークアップを変更用パラメータとし、宣言的に変更を行う。

  • 新しいイベントに応答するための新しい EventDrivenActivity アクティビティを追加する。たとえば、追加の承認手順など。

実行中のワークフローに対するワークフロー変更の適用は、2 つの異なるエントリ ポイント、つまりワークフロー コード ファイル中と、ワークフロー ホストなどのワークフロー外部で可能です。ワークフロー変更の適用の詳細については、「方法 : ワークフローの変更箇所をワークフローに適用する」を参照してください。

ワークフロー変更の制限事項

ワークフロー変更には Windows Workflow Foundation による、以下のようないくつかの制限事項があり、注意が必要です。

  • アクティビティは、ワークフロー インスタンスから追加または削除できますが、既存のアクティビティのプロパティは、これらのプロパティが宣言的ルール条件またはルール セットでない限り変更できません。

  • 子アクティビティが定義の一部として組み込まれるカスタム複合アクティビティ タイプでは、子アクティビティを動的に追加することも、削除することもできません。このようなカスタム複合アクティビティは "ブラック ボックス" アクティビティであり、基本的に実行中は変更できません。

  • Initialized または Closed 状態にないアクティビティは、実行中に動的に削除できません。

ワークフロー開発者は、ワークフローのルート アクティビティに関連付けられた ActivityCondition からワークフロー変更の使用を制限できます。これは、ワークフロー ランタイムによって使用され、ワークフロー変更が特定のワークフロー インスタンスに許可されるかどうかを決定します。

カスタム複合アクティビティでは、子アクティビティの追加または削除などの変更案を検証できます。これによって、アクティビティの開発者は、ワークフローの変更案がアクティビティの意図された機能と競合するかどうかを判断できます。この機能はカスタム ActivityValidator により提供され、開発者は ValidateActivityChange メソッドをオーバーライドして、カスタム ワークフロー変更の検証ロジックを追加することができます。

関連項目

概念

方法 : ワークフローの変更箇所をワークフローに適用する

その他の技術情報

ワークフロー アクティビティの開発
ワークフローの開発

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.