WorkflowRuntime.StartRuntime Methode

Definition

Startet die Workflowruntime-Engine und die Workflowruntime-Engine-Dienste.

public:
 void StartRuntime();
public void StartRuntime ();
member this.StartRuntime : unit -> unit
Public Sub StartRuntime ()

Ausnahmen

Für WorkflowRuntime ist mehr als ein CommitWorkBatch-Dienst für den Workflow registriert.

- oder -

Für WorkflowRuntime ist mehr als ein Planungsdienst registriert.

- oder -

Für WorkflowRuntime ist mehr als ein Persistenzdienst registriert.

Beispiele

Das folgende Codebeispiel zeigt, wie Sie die WorkflowRuntime-Funktionalität eines Workflowhosts verwenden können. Der Code ruft StartRuntime auf, nachdem WorkflowRuntime eine WorkflowRuntime-Instanz erstellt und AddService aufgerufen hat, um der Laufzeit Dienste hinzuzufügen. Außerdem wird StartRuntime aufgerufen, bevor weitere Verarbeitungsschritte erfolgen.

Dieses Codebeispiel ist Teil des Beispiels Zum 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

Diese Methode überprüft, ob ein gültiger Satz von Basisdiensten vorhanden ist, und startet anschließend alle Dienste, die von der WorkflowRuntimeService-Klasse abgeleitet werden. Es muss nur einen der folgenden Kerndienste vorhanden sein: einen Workflowdienst CommitWorkBatch , der von der WorkflowCommitWorkBatchService Basisklasse abgeleitet ist, und ein Planerdienst, der von der WorkflowSchedulerService Basisklasse abgeleitet ist. Wenn einer oder beide kernigen Dienste fehlen, stellt die Workflowlaufzeit-Engine den entsprechenden Standarddienst bereit: DefaultWorkflowCommitWorkBatchService für den Workflowdienst CommitWorkBatch und DefaultWorkflowSchedulerService für den Planerdienst. Ein Persistenzdienst ist optional, aber es darf jeweils nur ein Persistenzdienst vorhanden sein. Nach der Validierung der Dienstkonfiguration ruft StartRuntime für alle Dienste Start auf, die von der WorkflowRuntimeService-Klasse abgeleitet sind. Zuletzt legt die Workflowruntime-Engine IsStarted fest und löst das Started-Ereignis aus.

Sie können Basisdienste nicht hinzufügen oder entfernen, nachdem die Workflowruntime-Engine gestartet wurde. Bei Basisdiensten handelt es sich um Dienste, die von den Klassen WorkflowSchedulerService, WorkflowCommitWorkBatchService, WorkflowPersistenceService oder TrackingService abgeleitet sind. Wenn Sie StartRuntime aufrufen, während die Workflowruntime-Engine ausgeführt wird, wird keine Aktion ausgeführt.

Gilt für: