Share via


Workflow Control Endpoint

This topic applies to Windows Workflow Foundation 4 (WF4).

The workflow control endpoint allows developers to call control operations to remotely control workflow instances hosted using WorkflowServiceHost. This feature can be used to programmatically perform control operations like suspend, resume, and terminate.

Ee358723.Warning(en-us,VS.100).gif Caution:
If using the workflow control endpoint within a transaction and the workflow being controlled contains a Persist activity, the workflow instance will hang until the transaction times out.

Workflow Instance Management

.NET Framework version 4 defines a new contract called IWorkflowInstanceManagement. This contract defines a series of control operations that allow you remotely control workflow instances hosted by WorkflowServiceHost. WorkflowControlEndpoint is a standard endpoint that provides an implementation of the IWorkflowInstanceManagement contract. WorkflowControlClient is a class that is used to send the control operations to the WorkflowControlEndpoint. The default binding for WorkflowControlEndpoint is NetNamedPipeBinding.

Workflow instances can be in one of the following states:

  • Active
    The state of a workflow instance before it reaches the completed state and when it is not in the suspended state. While in this state, the workflow instance runs and processes application messages.
  • Suspended
    While in this state, the workflow instance does not run even if there are activities that have not started running or have partially run.
  • Completed
    The final state of a workflow instance. The workflow instance cannot run after reaching the completed state.

IWorkflowInstanceManagement

The IWorkflowInstanceManagement interface defines a set of control operations with synchronous and asynchronous versions. The transacted versions require use of a transaction-aware binding. The following table lists the control operations supported.

Control Operation Description

Abort

Forcefully stops the execution of the workflow instance.

Cancel

Transitions a workflow instance from the active or suspended state to the completed state.

Run

Provides a workflow instance the opportunity to execute.

Suspend

Transitions a workflow instance from the active state to the suspended state.

Terminate

Transitions a workflow instance from the active or suspended state to the completed state.

Unsuspend

Transitions a workflow instance from the suspended state to the active state.

TransactedCancel

Performs the Cancel operation under a transaction (flowed in from the client or created locally). If the system maintains the durable state of the workflow instance, the workflow instance must be persisted during execution of this operation.

TransactedRun

Performs the Run operation under a transaction (flowed in from the client or created locally). If the system maintains the durable state of the workflow instance, the workflow instance must be persisted during execution of this operation.

TransactedSuspend

Performs the Suspend operation under a transaction (flowed in from the client or created locally). If the system maintains the durable state of the workflow instance, the workflow instance must be persisted during execution of this operation.

TransactedTerminate

Performs the Terminate operation under a transaction (flowed in from the client or created locally). If the system maintains the durable state of the workflow instance, the workflow instance must be persisted during execution of this operation.

TransactedUnsuspend

Performs the Unsuspend operation under a transaction (flowed in from the client or created locally). If the system maintains the durable state of the workflow instance, the workflow instance must be persisted during execution of this operation.

The IWorkflowInstanceManagement contract does not provide a means to create a new workflow instance, only to manage existing workflow instances. For more information about remotely creating a new workflow instance, see Workflow Service Host Extensibility.

WorkflowControlEndpoint

WorkflowControlEndpoint is a standard endpoint with a fixed contract, IWorkflowInstanceManagement. When added to a WorkflowServiceHost instance, this endpoint can then be used to send command operations to any workflow instance hosted by the host instance. For more information about standard endpoints, see Standard Endpoints.

WorkflowControlClient

WorkflowControlClient is a class that allows you to send control messages to a WorkflowControlEndpoint on a WorkflowServiceHost. It contains a method for each of the operations supported by the IWorkflowInstanceManagement contract except for the transacted operations. WorkflowControlClient uses the ambient transaction to determine whether a transacted operation should be used.