Freigeben über


Aufgabe 3: Erstellen einer Workflowhost-Konsolenanwendung

Im Rahmen der vorherigen Aufgabe haben Sie einen sequenziellen Workflow erstellt, der für den Rest des Lernprogramms verwendet wird. In diesem Schritt erstellen Sie eine Konsolenanwendung, die zum Hosten des Windows Workflow Foundation-Laufzeitmoduls verwendet wird. Die verbleibenden Übungen und Aufgaben in diesem Lernprogramm bauen auf dieser Hostanwendung auf, indem zusätzliche Funktionen in Windows Workflow Foundation überlagert werden.

Hinweis

Sie werden aufgefordert, die Übungen der Reihe nach auszuführen. Dies ist jedoch nicht erforderlich. Sie können durch Öffnen des Beispielprojekts bei dieser Übung beginnen und mit den Schritten im folgenden Abschnitt fortfahren.

So erstellen Sie die Hostingklasse:

  1. Erstellen Sie eine neue Quelldatei mit dem Namen Program.

    Weisen Sie der Datei die Erweiterung .vb zu, wenn Sie eine Visual Basic-Anwendung erstellen, oder .cs, wenn Sie eine C#-Anwendung erstellen.

  2. Fügen Sie die folgenden Direktiven zum Importieren der Typen hinzu, die für die Hostinganwendung erforderlich sind.

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Threading;
    using System.Workflow.Runtime;
    using System.Workflow.Runtime.Hosting;
    
  3. Erstellen Sie im Microsoft.Samples.Workflow.Tutorials.Hosting-Namespace eine neue Klasse mit dem Namen Program.

    Namespace Microsoft.Samples.Workflow.Tutorials.Hosting
        Class Program
        End Class
    End Namespace
    
    namespace Microsoft.Samples.Workflow.Tutorials.Hosting
    {
        class Program
        {
        }
    }
    
  4. Erstellen Sie in der Program-Klasse ein AutoResetEvent-Feld mit dem Namen waitHandle.

    Dieses Objekt wird zum Herunterfahren der Anwendung verwendet, wenn die Ausführung des Workflows beendet ist.

    static AutoResetEvent waitHandle = new AutoResetEvent(false);
    
  5. Erstellen Sie in der Program-Klasse die Main-Methode, von der ein Array von String-Objekten, die als args bezeichnet werden, als Parameter verwendet wird.

    Shared Sub Main(ByVal args As String())
    End Sub
    
    static void Main(string[] args)
    {
    }
    
  6. Erstellen Sie eine lokale Variable vom Typ WorkflowRuntime mit dem Namen workflowRuntime.

  7. Starten Sie das Windows Workflow Foundation-Laufzeitmodul, indem Sie die StartRuntime-Methode aufrufen, die im workflowRuntime-Objekt definiert wurde.

  8. Fügen Sie dem durch das workflowRuntime-Objekt ausgelösten WorkflowCompleted-Ereignis einen Ereignishandler hinzu.

    WorkflowRuntime workflowRuntime = new WorkflowRuntime();
    workflowRuntime.StartRuntime();
    workflowRuntime.WorkflowCompleted += new
        EventHandler<WorkflowCompletedEventArgs>
        (workflowRuntime_WorkflowCompleted);
    
  9. Erstellen Sie ein neues Type-Objekt mit der Bezeichnung type, und legen Sie seinen Wert dem Type für den sequenziellen Workflow entsprechend fest, der in der vorherigen Aufgabe erstellt wurde.

  10. Rufen Sie die CreateWorkflow-Methode auf, die im workflowRuntime-Objekt definiert wurde, und geben Sie das Type-Objekt ein, das im vorherigen Schritt abgerufen wurde.

    Von dieser Methode wird ein WorkflowInstance-Objekt zurückgegeben, das im nächsten Schritt verwendet wird.

  11. Rufen Sie die Start-Methode auf, die im WorkflowInstance-Objekt definiert wurde, das im vorherigen Schritt erstellt wurde.

    Type type = typeof(HostingWorkflows);
    WorkflowInstance workflowInstance = workflowRuntime.CreateWorkflow(type);
    workflowInstance.Start();
    
  12. Rufen Sie die im waitHandle-Objekt definierte WaitOne-Methode auf.

    Diese Methode wird nicht zurückgegeben, solange der Workflow ausgeführt wird.

  13. Rufen Sie die im workflowRuntime-Objekt definierte StopRuntime-Methode auf.

    Durch Aufrufen dieser Methode wird gewährleistet, dass die Verarbeitung durch das Workflow-Laufzeitmodul abgeschlossen und dieses ordnungsgemäß heruntergefahren wird.

    waitHandle.WaitOne();
    workflowRuntime.StopRuntime();
    
  14. Definieren Sie in der Program-Klasse eine neue statische Methode mit dem Namen workflowRuntime_WorkflowCompleted.

    In dieser Methode werden ein Object-Typ mit dem Namen sender und ein WorkflowCompletedEventArgs-Objekt mit dem Namen e als Parameter verwendet.

  15. Rufen Sie in der workflowRuntime_WorkflowCompleted-Methode die im waitHandle-Objekt definierte Set-Methode auf.

    Wird der Workflow nicht mehr ausgeführt, wird das workflowRuntime_WorkflowCompleted-Ereignis ausgelöst. Wird die Set-Methode auf dem waitHandle-Objekt aufgerufen, wird die in der Main-Methode aufgerufene WaitOne-Methode zurückgegeben und die Anwendung geschlossen.

    static void workflowRuntime_WorkflowCompleted(object sender,
        WorkflowCompletedEventArgs e)
    {
        waitHandle.Set();
    }
    

So fügen Sie dem Projekt eine Programmquelldatei hinzu:

  1. Fügen Sie in die in Aufgabe 1: Erstellen der Workflowhost-Projektdatei erstellte HostingWorkflows-Projektdatei einen neuen Compile Knoten in den ItemGroup-Knoten ein, den Sie in Aufgabe 2: Erstellen eines sequenziellen Workflows erstellt haben.

  2. Fügen Sie dem Compile-Knoten ein Include-Attribut hinzu.

    Weisen Sie diesem Attribut bei Verwendung von C# den Wert "Program.cs" oder zum Erstellen eines Visual Basic-Projekts den Wert "Program.vb" zu.

    <Compile Include="Program.vb" />
    
    <Compile Include="Program.cs" />
    

Kompilieren des Codes

Informationen zum Kompilieren des Codes finden Sie unter Kompilieren des Codes.

Unter Übung 2: Ausführen eines Workflows erhalten Sie Informationen zu den verschiedenen Möglichkeiten zum Starten oder Beenden eines Workflows.

Siehe auch

Referenz

WorkflowRuntime
WorkflowInstance

Konzepte

Erstellen einer Workflowhostanwendung

Weitere Ressourcen

Übung 2: Ausführen eines Workflows

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.