WorkflowRuntime.AddService(Object) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Adds the specified service to the workflow run-time engine.
public:
void AddService(System::Object ^ service);
public void AddService (object service);
member this.AddService : obj -> unit
Public Sub AddService (service As Object)
Parameters
- service
- Object
An object that represents the service to add.
Exceptions
service
is a null reference (Nothing
in Visual Basic).
The WorkflowRuntime is disposed.
service
is already registered with the workflow run-time engine.
-or-
service
is a core service and the workflow run-time engine is already running (IsStarted is true
).
Examples
The following code example demonstrates how to use WorkflowRuntime functionality from a workflow host. It provides example of how to use the AddService method to add an ExternalDataExchangeService and SqlWorkflowPersistenceService to the workflow run-time engine.
This code example is part of the Cancelling a Workflow sample.
static void Main()
{
string connectionString = "Initial Catalog=SqlPersistenceService;Data Source=localhost;Integrated Security=SSPI;";
using (WorkflowRuntime workflowRuntime = new WorkflowRuntime())
{
ExternalDataExchangeService dataService = new ExternalDataExchangeService();
workflowRuntime.AddService(dataService);
dataService.AddService(expenseService);
workflowRuntime.AddService(new SqlWorkflowPersistenceService(connectionString));
workflowRuntime.StartRuntime();
workflowRuntime.WorkflowCompleted += OnWorkflowCompleted;
workflowRuntime.WorkflowTerminated += OnWorkflowTerminated;
workflowRuntime.WorkflowIdled += OnWorkflowIdled;
workflowRuntime.WorkflowAborted += OnWorkflowAborted;
Type type = typeof(SampleWorkflow1);
WorkflowInstance workflowInstance = workflowRuntime.CreateWorkflow(type);
workflowInstance.Start();
waitHandle.WaitOne();
workflowRuntime.StopRuntime();
}
}
Shared Sub Main()
Dim connectionString As String = "Initial Catalog=SqlPersistenceService;Data Source=localhost;Integrated Security=SSPI;"
Using workflowRuntime As New WorkflowRuntime()
Dim dataService As New ExternalDataExchangeService()
workflowRuntime.AddService(dataService)
dataService.AddService(expenseService)
workflowRuntime.AddService(New SqlWorkflowPersistenceService(connectionString))
AddHandler workflowRuntime.WorkflowCompleted, AddressOf OnWorkflowCompleted
AddHandler workflowRuntime.WorkflowTerminated, AddressOf OnWorkflowTerminated
AddHandler workflowRuntime.WorkflowIdled, AddressOf OnWorkflowIdled
AddHandler workflowRuntime.WorkflowAborted, AddressOf OnWorkflowAborted
Dim workflowInstance As WorkflowInstance
workflowInstance = workflowRuntime.CreateWorkflow(GetType(SampleWorkflow))
workflowInstance.Start()
waitHandle.WaitOne()
workflowRuntime.StopRuntime()
End Using
End Sub
Remarks
You can configure the workflow run-time engine by adding core services. Core services are those that derive from any of the following service base classes: the WorkflowSchedulerService class, the WorkflowCommitWorkBatchService class, the WorkflowPersistenceService class, and the TrackingService class. Core services can only be added when the workflow run-time engine is not running; that is, when IsStarted is false
. The WorkflowRuntime can also be used as a storage container for other services that can be used by other workflows or by applications running on a host. If you add a non-core service that derives from the WorkflowRuntimeService class after the workflow run-time engine has been started, AddService calls the Start method implemented by that service.
Note
AddService enforces the restriction that no two services of the same Type can be added to the WorkflowRuntime. However, you can add multiple services that derive from the same base class. There can be only one service derived from each of the following service base classes in the WorkflowRuntime: the WorkflowSchedulerService class, the WorkflowCommitWorkBatchService class, and the WorkflowPersistenceService class. If you add multiple services derived from one of these classes, for example two persistence services, StartRuntime throws an InvalidOperationException.