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