ワークフロー コントロール エンドポイント
ワークフロー コントロール エンドポイントは、開発者が管理操作を呼び出して、WorkflowServiceHost を使用してホストされているワークフロー インスタンスをリモート制御できるようにします。 この機能を使用すると、一時停止、再開、終了などの管理操作をプログラムで実行することができます。
警告
トランザクション内でワークフロー コントロール エンドポイントを使用していて、コントロールされているワークフローに Persist アクティビティが含まれている場合、ワークフロー インスタンスではトランザクションがタイムアウトするまでブロックされます。
ワークフロー インスタンスの管理
.NET Framework 4.6.1 では、IWorkflowInstanceManagement という名前の新しいコントラクトが定義されています。 このコントラクトは、WorkflowServiceHost でホストされるワークフロー インスタンスをリモート制御する一連の管理操作を定義します。 WorkflowControlEndpoint は、IWorkflowInstanceManagement コントラクトの実装を提供する標準のエンドポイントです。 WorkflowControlClient は、管理操作を WorkflowControlEndpoint に送信するために使用するクラスです。
ワークフロー インスタンスには、次の状態があります。
アクティブ
完了した状態に達する前の、一時停止の状態でないときのワークフロー インスタンスの状態です。 この状態にあるときのワークフロー インスタンスは、アプリケーション メッセージを実行し、処理します。
Suspended
この状態にある間は、まだ実行が開始されていないアクティビティや、部分的に実行されているアクティビティがある場合でも、ワークフロー インスタンスは実行されません。
完了
ワークフロー インスタンスの最終的な状態です。 この状態に達した後は、ワークフロー インスタンスは実行できません。
IWorkflowInstanceManagement
IWorkflowInstanceManagement インターフェイスでは、同期バージョンおよび非同期バージョンで、一連の管理操作が定義されます。 トランザクション処理されたバージョンでは、トランザクションに対応するバインディングを使用する必要があります。 次の表は、サポートされる管理操作の一覧を示します。
管理操作 | 説明 |
---|---|
中止 | ワークフロー インスタンスの実行を強制的に停止します。 |
キャンセル | ワークフロー インスタンスをアクティブ状態または一時停止状態から完了状態に移行します。 |
実行 | ワークフロー インスタンスに実行する機会を提供します。 |
[中断] | ワークフロー インスタンスをアクティブ状態から一時停止状態に移行します。 |
Terminate | ワークフロー インスタンスをアクティブ状態または一時停止状態から完了状態に移行します。 |
Unsuspend | ワークフロー インスタンスを一時停止状態からアクティブ状態に移行します。 |
TransactedCancel | クライアントからフローされた、またはローカルに作成されたトランザクションの下で Cancel 操作を実行します。 システムでワークフロー インスタンスの永続状態が維持される場合は、ワークフロー インスタンスが、この操作の実行中に持続している必要があります。 |
TransactedRun | クライアントからフローされた、またはローカルに作成されたトランザクションの下で Run 操作を実行します。 システムでワークフロー インスタンスの永続状態が維持される場合は、ワークフロー インスタンスが、この操作の実行中に持続している必要があります。 |
TransactedSuspend | クライアントからフローされた、またはローカルに作成されたトランザクションの下で Suspend 操作を実行します。 システムでワークフロー インスタンスの永続状態が維持される場合は、ワークフロー インスタンスが、この操作の実行中に持続している必要があります。 |
TransactedTerminate | クライアントからフローされた、またはローカルに作成されたトランザクションの下で Terminate 操作を実行します。 システムでワークフロー インスタンスの永続状態が維持される場合は、ワークフロー インスタンスが、この操作の実行中に持続している必要があります。 |
TransactedUnsuspend | クライアントからフローされた、またはローカルに作成されたトランザクションの下で Unsuspend 操作を実行します。 システムでワークフロー インスタンスの永続状態が維持される場合は、ワークフロー インスタンスが、この操作の実行中に持続している必要があります。 |
IWorkflowInstanceManagement コントラクトは、新しいワークフロー インスタンスを作成する手段を提供せず、既存のワークフロー インスタンスを管理する手段のみを提供します。 新しいワークフロー インスタンスをリモートで作成する方法の詳細については、「ワークフロー サービス ホストの拡張機能」を参照してください。
WorkflowControlEndpoint
WorkflowControlEndpoint は、固定コントラクト IWorkflowInstanceManagement を持つ標準のエンドポイントです。 WorkflowServiceHost インスタンスにこのエンドポイントが追加されると、このエンドポイントを使用して、ホスト インスタンスによってホストされる任意のワークフロー インスタンスにコマンド操作を送信できます。 標準エンドポイントの詳細については、「標準エンドポイント」を参照してください。
WorkflowControlClient
WorkflowControlClient は、WorkflowControlEndpoint の WorkflowServiceHost に制御メッセージを送信できるようにするクラスです。 このクラスには、トランザクション処理された操作を除き、IWorkflowInstanceManagement コントラクトでサポートされる各操作用のメソッドが格納されています。 WorkflowControlClient では、アンビエント トランザクションを使用して、トランザクション処理された操作を使用する必要があるかどうかが判断されます。