Vorgehensweise: Erstellen einer Aktivität

Dieses Thema gilt für Windows Workflow Foundation 4.

Aktivitäten sind die wichtigsten Einheiten für das Verhalten in WF. Die Ausführungslogik einer Aktivität kann in verwaltetem Code oder mithilfe anderer Aktivitäten implementiert werden. In diesem Thema wird veranschaulicht, wie eine einfache Aktivität mit Code erstellt wird, um die Ausführungslogik sowie eine Aktivität zu implementieren, deren Implementierung mit anderen Aktivitäten definiert wird. Diese Aktivitäten werden in den folgenden Themen (Vorgehensweise: Erstellen eines Workflows und Vorgehensweise: Ausführen eines Workflows) verwendet.

So erstellen Sie das Workflow-Aktivitätsbibliothekprojekt

  1. Öffnen Sie Visual Studio 2010, und wählen Sie im Menü Datei die Optionen Neu, Projekt aus.

  2. Erweitern Sie in der Liste Installierte Vorlagen den Knoten Andere Projekttypen, und wählen Sie Visual Studio-Projektmappen aus.

  3. Wählen Sie in der Liste Visual Studio-Projektmappen die Option Leere Projektmappe aus. Stellen Sie sicher, dass in der Dropdownliste mit der .NET Framework-Version .NET Framework 4 ausgewählt ist. Geben Sie im Feld Name die Bezeichnung GettingStartedTutorial ein, und klicken Sie anschließend auf OK.

  4. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf GettingStartedTutorial, zeigen Sie auf Hinzufügen, und wählen Sie die Option Neues Projekt aus.

    Dd489453.Tip(de-de,VS.100).gifTipp:
    Wenn das Fenster Projektmappen-Explorer nicht angezeigt wird, wählen Sie im Menü Ansicht die Option Projektmappen-Explorer aus.

  5. Wählen Sie in der Liste Installierte Vorlagen die Option Visual C# und anschließend Workflow (oder Visual Basic, Workflow) aus. Stellen Sie sicher, dass in der Dropdownliste mit der .NET Framework-Version .NET Framework 4 ausgewählt ist. Wählen Sie aus der Liste Workflow die Option Aktivitätsbibliothek aus. Behalten Sie die Standardeinstellungen bei, und klicken Sie anschließend auf OK.

    Dd489453.note(de-de,VS.100).gifHinweis:
    In Abhängigkeit davon, welche Programmiersprache als die primäre Sprache in Visual Studio konfiguriert ist, befindet sich der Visual C#- oder der Visual Basic-Knoten möglicherweise nicht unter dem Knoten Andere Sprachen in der Liste Installierte Vorlagen.

  6. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Activity1.xaml, und wählen Sie dann Löschen aus. Klicken Sie zur Bestätigung auf OK.

So erstellen Sie die ReadInt-Aktivität

  1. Wählen Sie im Menü Projekt die Option Neues Element hinzufügen aus.

  2. Wählen Sie in der Liste Installierte Vorlagen die Option Workflow aus. Wählen Sie aus der Liste Workflow die Option Codeaktivität aus.

  3. Geben Sie in das Feld Name den Text ReadInt ein, und klicken Sie auf Hinzufügen.

  4. Ersetzen Sie die vorhandene ReadInt-Definition durch die folgende Definition.

    Public NotInheritable Class ReadInt
        Inherits NativeActivity(Of Integer)
    
        <RequiredArgument()>
        Property BookmarkName() As InArgument(Of String)
    
        Protected Overrides Sub Execute(ByVal context As NativeActivityContext)
            Dim name As String
            name = BookmarkName.Get(context)
    
            If name = String.Empty Then
                Throw New ArgumentException("BookmarkName cannot be an Empty string.",
                    "BookmarkName")
            End If
    
            context.CreateBookmark(name, New BookmarkCallback(AddressOf OnReadComplete))
        End Sub
    
        ' NativeActivity derived activities that do asynchronous operations by calling 
        ' one of the CreateBookmark overloads defined on System.Activities.NativeActivityContext 
        ' must override the CanInduceIdle property and return True.
        Protected Overrides ReadOnly Property CanInduceIdle As Boolean
            Get
                Return True
            End Get
        End Property
    
        Sub OnReadComplete(ByVal context As NativeActivityContext, ByVal bookmark As Bookmark, ByVal state As Object)
            Result.Set(context, Convert.ToInt32(state))
        End Sub
    
    End Class
    
    public sealed class ReadInt : NativeActivity<int>
    {
        [RequiredArgument]
        public InArgument<string> BookmarkName { get; set; }
    
        protected override void Execute(NativeActivityContext context)
        {
            string name = BookmarkName.Get(context);
    
            if (name == string.Empty)
            {
                throw new ArgumentException("BookmarkName cannot be an Empty string.",
                    "BookmarkName");
            }
    
            context.CreateBookmark(name, new BookmarkCallback(OnReadComplete));
        }
    
        // NativeActivity derived activities that do asynchronous operations by calling 
        // one of the CreateBookmark overloads defined on System.Activities.NativeActivityContext 
        // must override the CanInduceIdle property and return true.
        protected override bool CanInduceIdle
        {
            get { return true; }
        }
    
        void OnReadComplete(NativeActivityContext context, Bookmark bookmark, object state)
        {
            this.Result.Set(context, Convert.ToInt32(state));
        }
    }
    
    Dd489453.note(de-de,VS.100).gifHinweis:
    Die ReadInt-Aktivität wird von der NativeActivity anstelle der CodeActivity abgeleitet. Dies ist die Standardeinstellung für ein Aktivitätsprojekt, das auf einer Codeaktivität basiert. CodeActivity kann verwendet werden, wenn die Aktivität ein einziges Ergebnis bereitstellt, das durch das Result-Argument verfügbar gemacht wird. Die CodeActivity unterstützt jedoch nicht die Verwendung von Lesezeichen, deshalb wird NativeActivity verwendet.

So erstellen Sie die Prompt-Aktivität

  1. Drücken Sie F6, um das Projekt zu erstellen. Auf diese Weise wird die ReadInt-Aktivität in diesem Projekt erstellt, mit der die benutzerdefinierte Aktivität aus diesem Schritt erstellt werden soll.

  2. Wählen Sie im Menü Projekt die Option Neues Element hinzufügen aus.

  3. Wählen Sie in der Liste Installierte Vorlagen die Option Workflow aus. Wählen Sie aus der Liste Workflow die Option Aktivität aus.

  4. Geben Sie Prompt in das Feld Name den Text ein, und klicken Sie auf Hinzufügen.

  5. Doppelklicken Sie im Projektmappen-Explorer auf Prompt.xaml, um die Datei im Designer anzuzeigen, falls dies nicht bereits der Fall ist.

  6. Klicken Sie links unten im Aktivitätsdesigner auf die Schaltfläche Argumente, um den Bereich Argumente anzuzeigen.

  7. Klicken Sie auf Argument erstellen.

  8. Geben Sie BookmarkName in das Feld Name ein, wählen Sie aus der Dropdownliste Richtung die Richtung In und aus der Dropdownliste Argumenttyp die Option String aus, und drücken Sie dann die EINGABETASTE, um das Argument zu speichern.

  9. Klicken Sie auf Argument erstellen.

  10. Geben Sie in das Feld Name, das unter dem neu hinzugefügten Argument BookmarkName angezeigt wird, Result ein. Wählen Sie aus der Dropdownliste Richtung die Richtung Out und aus der Dropdownliste Argumenttyp die Option Int32 aus, und drücken Sie dann die EINGABETASTE.

  11. Klicken Sie auf Argument erstellen.

  12. Geben Sie Subtotal im Feld Name ein, und wählen Sie aus der Dropdownliste Richtung die Option In aus. Wählen Sie String aus der Dropdownliste Argumenttyp aus. Drücken Sie dann die EINGABETASTE, um das Argument zu speichern.

    Diese drei Argumente werden an die entsprechenden Argumente der WriteLine-Aktivität und ReadInt-Aktivität gebunden, die der Prompt-Aktivität in den folgenden Schritten hinzugefügt werden.

  13. Klicken Sie links unten im Aktivitätsdesigner auf die Schaltfläche Argumente, um den Bereich Argumente zu schließen.

  14. Ziehen Sie eine Sequence-Aktivität aus dem Abschnitt Ablaufsteuerung der Toolbox, und legen Sie sie auf dem Aktivitätsdesigner ab.

    Dd489453.Tip(de-de,VS.100).gifTipp:
    Wenn das Fenster Toolbox nicht sichtbar ist, wählen Sie im Menü Ansicht die Option Toolbox aus.

  15. Ziehen Sie eine WriteLine-Aktivität aus dem Abschnitt Primitive der Toolbox, und legen Sie sie in der Sequence-Aktivität ab.

  16. Binden Sie das Text-Argument der WriteLine-Aktivität an das Text-Argument der Prompt-Aktivität, indem Sie im Fenster Eigenschaften im Feld VB-Ausdruck eingeben die Bezeichnung Text eingeben. Drücken Sie dann die TAB-TASTE zwei Mal, um das Fenster mit den IntelliSense-Listenmembern zu schließen, und speichern Sie den Eigenschaftswert, indem Sie die Auswahl der Eigenschaft aufheben. Diese Eigenschaft kann auch festgelegt werden, indem Sie in das Feld VB-Ausdruck eingeben der Aktivität Text eingeben.

    Dd489453.Tip(de-de,VS.100).gifTipp:
    Klicken Sie im Menü Ansicht auf Eigenschaftenfenster, falls das Fenster Eigenschaften nicht angezeigt wird.

  17. Ziehen Sie eine ReadInt-Aktivität aus dem Abschnitt ActivityLibrary1 der Toolbox, und legen Sie sie in der Sequence-Aktivität im Anschluss an die WriteLine-Aktivität ab.

  18. Binden Sie das BookmarkName-Argument der ReadInt-Aktivität an das BookmarkName-Argument der Prompt-Aktivität, indem Sie im Fenster Eigenschaften im Feld VB-Ausdruck eingeben neben dem BookmarkName-Argument die Bezeichnung BookmarkName eingeben. Drücken Sie dann die TAB-TASTE zwei Mal, um das Fenster mit den IntelliSense-Listenmembern zu schließen und die Eigenschaft zu speichern.

  19. Binden Sie das Result-Argument der ReadInt-Aktivität an das Result-Argument der Prompt-Aktivität, indem Sie im Fenster Eigenschaften im Feld VB-Ausdruck eingeben neben dem Result-Argument die Bezeichnung Result eingeben. Drücken Sie dann die TAB-TASTE zwei Mal, um das Fenster mit den IntelliSense-Listenmembern zu schließen und die Eigenschaft zu speichern.

  20. Drücken Sie F6, um die Projektmappe zu erstellen.

Siehe auch

Aufgaben

Vorgehensweise: Erstellen eines Workflows

Verweis

CodeActivity
NativeActivity

Konzepte

Entwerfen und Implementieren von benutzerdefinierten Aktivitäten

Weitere Ressourcen

Lernprogramm "Erste Schritte "