WorkflowRuntime.AddService(Object) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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).
WorkflowRuntime wird verworfen.
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.