Freigeben über


Aufgabe 1: Definieren der Workflowparameter

Ein Workflow und eine Hostanwendung können mithilfe von Parametern Daten austauschen. Auf der Workflowseite ist ein Parameter eine Eigenschaft, die in der Workflowklasse definiert wird. Wird für die Eigenschaft eine festgelegte Methode definiert, kann die Hostanwendung diese Eigenschaft vor Ausführung des Workflows festlegen, indem während des CreateWorkflow-Methodenaufrufs eine Parameterauflistung übergeben wird. Sollen Parameter nach Ende der Ausführung einer Hostanwendung an diese zurückgegeben werden, kann eine get-Methode für die Eigenschaft definiert werden. Die Hostanwendung kann daraufhin auf das WorkflowCompletedEventArgs-Objekt zugreifen, das an das WorkflowCompleted-Ereignis übergeben wird. Das WorkflowCompletedEventArgs-Objekt enthält alle Eigenschaften, die in dem Workflow mit den get-Methoden definiert sind.

In dieser Aufgabe erstellen Sie eine Ganzzahleigenschaft mit dem Namen Amount. Diese Eigenschaft wird an den Workflow übergeben, wenn die Spesenabrechnung eingereicht wird. Der Workflow verarbeitet den Betrag und kommuniziert bezüglich Zustimmung oder Ablehnung mit dem Workflow. Anschließend wird die Result-Zeichenfolgeneigenschaft festgelegt, auf die die Hostanwendung beim Beenden der Workflowausführung zugreifen kann.

Hinweis

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

Definieren der Workfloweigenschaften

Führen Sie diese Schritte aus, um eine Ganzzahleigenschaft für die Summe und eine Zeichenfolgeneigenschaft für das Ergebnis zu definieren.

So definieren Sie die Amount-Workfloweigenschaft:

  1. Deklarieren Sie in der ExpenseReportWorkflow-Klasse ein private Int32-Feld mit dem Namen reportAmount.

    private int reportAmount = 0;
    
  2. Erstellen Sie eine public Int32-Eigenschaft in der ExpenseReportWorkflow-Klasse, und erstellen Sie eine set-Methode, mit der das im vorherigen Schritt erstellte reportAmount-Feld festgelegt wird.

    public int Amount
    {
        set
        {
            this.reportAmount = value;
        }
    }
    

So definieren Sie die Result-Workfloweigenschaft:

  1. Deklarieren Sie in der ExpenseReportWorkflow-Klasse ein private String-Feld mit dem Namen reportResult.

    private string reportResult = "";
    
  2. Erstellen Sie eine public String-Eigenschaft in der ExpenseReportWorkflow-Klasse und eine get-Methode, mit der der Wert des im vorherigen Schritt erstellten reportResult-Felds zurückgegeben wird.

    public string Result
    {
        get
        {
            return this.reportResult;
        }
    }
    

Ändern der Windows Form-Anwendung

Anschließend ändern Sie die Windows Form-Anwendung, um die Amount-Eigenschaft von ExpenseReportWorkflow festzulegen und die Result-Eigenschaft nach dem Beenden der Workflowausführung abzurufen. Beim Erstellen des Workflows wird die Amount-Eigenschaft festgelegt, und beim Auslösen des WorkflowCompleted-Ereignisses wird die Result-Eigenschaft abgerufen.

So legen Sie die Amount-Workfloweigenschaft fest:

  1. Erstellen Sie in der submitButton_Click-Methode in der MainForm-Klasse eine generische Dictionary-Auflistung des Object-Typs mit der Bezeichnung properties, der String für den Schlüssel verwendet.

    Hinweis

    Dieser Code muss vor dem Aufrufen der CreateWorkflow-Methode hinzugefügt werden.

    // Construct workflow parameters
    Dictionary<string, object> properties = new Dictionary<string, object>();
    
  2. Rufen Sie die in der soeben erstellten properties-Auflistung definierte Add-Methode auf. Übergeben Sie dabei die Zeichenfolge "Amount" als ersten Parameter und die in einen Int32-Wert konvertierte Text-Eigenschaft des amount TextBox-Steuerelements.

    Beim Start des Workflows verwendet WorkflowRuntime diese Informationen, um die Amount-Eigenschaft des Workflows festzulegen.

    properties.Add("Amount", Int32.Parse(this.amount.Text));
    
  3. Ändern Sie den CreateWorkflow-Methodenaufruf in der nächsten Zeile durch Übergeben der Eigenschaftenauflistung als den zweiten Parameter.

    workflowInstance = workflowRuntime.CreateWorkflow(type, properties);
    

So rufen Sie die Result-Workfloweigenschaft ab:

  1. Fügen Sie in der workflowRuntime_WorkflowCompleted-Methode in der MainForm-Klasse eine If-Anweisung hinzu, um zu überprüfen, ob InvokeRequired für das TextBox-Steuerelement für Ergebnisse true ergibt.

  2. Rufen Sie in der true-Verzweigung der If-Anweisung die Invoke-Methode aus dem TextBox-Steuerelement für Ergebnisse auf, und übergeben Sie einen neuen generischen EventHandler des WorkflowCompletedEventArgs-Typs mit der Bezeichnung workflowRuntime.WorkflowCompleted.

    Übergeben Sie dem Ereignishandler als Parameter sender und die lokale e-Variable.

  3. Legen Sie in der else-Verzweigung der If-Anweisung die Text-Eigenschaft des result TextBox-Steuerelements entsprechend dem "Result"-Schlüssel der im e-Parameter definierten OutputParameters-Auflistung fest.

    Stellen Sie sicher, dass Sie die ToString-Methode aufrufen, damit der Wert in eine Zeichenfolge konvertiert wird.

  4. Löschen Sie das amount TextBox-Steuerelement durch Festlegen der Text-Eigenschaft auf String.Empty.

  5. Deaktivieren Sie das approveButton-Steuerelement und das rejectButtonButton-Steuerelement durch Festlegen der Enabled-Eigenschaften auf false.

    else
    {
        this.result.Text = e.OutputParameters["Result"].ToString();
    
        // Clear fields
        this.amount.Text = string.Empty;
    
        // Disable buttons
        this.approveButton.Enabled = false;
        this.rejectButton.Enabled = false;
    
    }
    

Kompilieren des Codes

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

In Aufgabe 2: Definieren der IExpenseReportService-Schnittstelle erstellen Sie die Schnittstelle, die dem Workflow und der Hostanwendung die Kommunikation ermöglicht.

Siehe auch

Aufgaben

Aufgabe 2: Definieren der IExpenseReportService-Schnittstelle

Referenz

CreateWorkflow
WorkflowCompleted
WorkflowCompletedEventArgs
OutputParameters

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.