Freigeben über


WorkflowRuntime.AddService(Object) Methode

Definition

Fügt den angegebenen Dienst der Workflowruntime-Engine hinzu.

public:
 void AddService(System::Object ^ service);
public void AddService (object service);
member this.AddService : obj -> unit
Public Sub AddService (service As Object)

Parameter

service
Object

Ein Objekt, das den hinzuzufügenden Dienst darstellt.

Ausnahmen

service ist ein NULL-Verweis (Nothing in Visual Basic).

service ist bereits bei der Workflowruntime-Engine registriert.

- oder -

service ist ein Basisdienst, und die Workflowruntime-Engine wird bereits ausgeführt (IsStarted ist true).

Beispiele

Das folgende Codebeispiel zeigt, wie Sie die WorkflowRuntime-Funktionalität eines Workflowhosts verwenden können. Es wird gezeigt, wie Sie die AddService-Methode zum Hinzufügen von ExternalDataExchangeService und SqlWorkflowPersistenceService zur Workflowruntime-Engine verwenden.

Dieses Codebeispiel ist Teil des Beispiels Abbrechen eines Workflows .

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

Hinweise

Sie können die Workflowruntime-Engine konfigurieren, indem Sie Basisdienste hinzufügen. Basisdienste sind Dienste, die von einer der folgenden Dienstbasisklassen abgeleitet sind: WorkflowSchedulerService, WorkflowCommitWorkBatchService, WorkflowPersistenceService und TrackingService. Kerndienste können nur hinzugefügt werden, wenn die Workflowlaufzeit-Engine nicht ausgeführt wird. das heißt, wenn IsStarted ist false. Sie können die WorkflowRuntime auch als Speichercontainer für andere Dienste verwenden, die von anderen Workflows oder anderen Anwendungen verwendet werden können, die auf einem Host ausgeführt werden. Wenn Sie einen von der WorkflowRuntimeService -Klasse abgeleiteten Nicht-Basisdienst hinzufügen, nachdem die Workflowruntime-Engine gestartet wurde, ruft AddService die Start-Methode auf, die von diesem Dienst implementiert wird.

Hinweis

AddService erzwingt die Einschränkung, dass keine zwei Dienste vom gleichen Type zur WorkflowRuntime hinzugefügt werden können. Sie können jedoch mehrere Dienste hinzufügen, die von der gleichen Basisklasse abgeleitet werden. Es kann nur jeweils ein Dienst von den einzelnen Dienstbasisklassen unter WorkflowRuntime abgeleitet werden: WorkflowSchedulerService, WorkflowCommitWorkBatchService und WorkflowPersistenceService. Wenn Sie mehrere Dienste hinzufügen, die von einer dieser Klassen abgeleitet werden, z. B. zwei Persistenzdienste, löst StartRuntime eine InvalidOperationException aus.

Gilt für: