Delen via


Procedure: Een activiteit maken

Activiteiten zijn de kerneenheid van gedrag in WF. De uitvoeringslogica van een activiteit kan worden geïmplementeerd in beheerde code of kan worden geïmplementeerd met behulp van andere activiteiten. In dit onderwerp ziet u hoe u twee activiteiten maakt. De eerste activiteit is een eenvoudige activiteit die gebruikmaakt van code om de uitvoeringslogica te implementeren. De implementatie van de tweede activiteit wordt gedefinieerd met behulp van andere activiteiten. Deze activiteiten worden gebruikt in de volgende stappen in de zelfstudie.

Het activiteitsbibliotheekproject maken

  1. Open Visual Studio en kies Nieuw>project in het menu Bestand.

  2. Selecteer in het dialoogvenster Nieuw project, onder de categorie Geïnstalleerd, Visual C#>Workflow (of Visual Basic>Workflow).

    Notitie

    Als u de categorie Werkstroomsjabloon niet ziet, moet u mogelijk het Onderdeel Windows Workflow Foundation van Visual Studio installeren. Kies de koppeling Visual Studio Installer openen aan de linkerkant van het dialoogvenster Nieuw project . Selecteer in Visual Studio Installer het tabblad Afzonderlijke onderdelen . Selecteer vervolgens onder de categorie Ontwikkelingsactiviteiten het onderdeel Windows Workflow Foundation . Kies Wijzigen om het onderdeel te installeren.

  3. Selecteer de projectsjabloon Activiteitsbibliotheek . Typ NumberGuessWorkflowActivities het vak Naam en klik op OK.

  4. Klik met de rechtermuisknop op Activity1.xaml in Solution Explorer en kies Verwijderen. Klik op OK om te bevestigen.

De ReadInt-activiteit maken

  1. Kies Nieuw item toevoegen in het menu Project .

  2. Selecteer Werkstroom in het knooppunt Geïnstalleerde>algemene items. Selecteer Codeactiviteit in de lijst Werkstroom .

  3. Typ ReadInt in het vak Naam en klik vervolgens op Toevoegen.

  4. Vervang de bestaande ReadInt definitie door de volgende definitie.

    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 (string.IsNullOrEmpty(name))
            {
                throw new ArgumentException("BookmarkName cannot be an Empty string.",
                    "context");
            }
    
            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));
        }
    }
    
    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 Exception("BookmarkName cannot be an Empty string.")
            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
    

    Notitie

    De ReadInt activiteit is afgeleid van NativeActivity<TResult> in plaats van CodeActivity, wat de standaardwaarde is voor de codeactiviteitssjabloon. CodeActivity<TResult> kan worden gebruikt als de activiteit één resultaat biedt, dat wordt weergegeven via het Result argument, maar CodeActivity<TResult> geen ondersteuning biedt voor het gebruik van bladwijzers, dus NativeActivity<TResult> wordt gebruikt.

De promptactiviteit maken

  1. Druk op Ctrl+Shift+B om het project te bouwen. Door het project te bouwen, kan de ReadInt activiteit in dit project worden gebruikt om de aangepaste activiteit te bouwen vanuit deze stap.

  2. Kies Nieuw item toevoegen in het menu Project .

  3. Selecteer Werkstroom in het knooppunt Geïnstalleerde>algemene items. Selecteer Activiteit in de lijst Werkstroom .

  4. Typ Prompt in het vak Naam en klik vervolgens op Toevoegen.

  5. Dubbelklik op Prompt.xaml in Solution Explorer om deze weer te geven in de ontwerpfunctie als deze nog niet wordt weergegeven.

  6. Klik op Argumenten in de linkerbenedenhoek van de activiteitsontwerper om het deelvenster Argumenten weer te geven.

  7. Klik op Argument maken.

  8. Typ BookmarkName in het vak Naam , selecteer In in de vervolgkeuzelijst Richting , selecteer Tekenreeks in de vervolgkeuzelijst Argumenttype en druk op Enter om het argument op te slaan.

  9. Klik op Argument maken.

  10. Typ Result in het vak Naam onder het zojuist toegevoegde BookmarkName argument, selecteer Uit in de vervolgkeuzelijst Richting , selecteer Int32 in de vervolgkeuzelijst Argumenttype en druk op Enter.

  11. Klik op Argument maken.

  12. Typ Text in het vak Naam , selecteer In in de vervolgkeuzelijst Richting , selecteer Tekenreeks in de vervolgkeuzelijst Argumenttype en druk op Enter om het argument op te slaan.

    Deze drie argumenten zijn gebonden aan de bijbehorende argumenten van de WriteLine en ReadInt activiteiten die worden toegevoegd aan de Prompt activiteit in de volgende stappen.

  13. Klik linksonder in de activiteitsontwerper op Argumenten om het deelvenster Argumenten te sluiten.

  14. Sleep een reeksactiviteit uit de sectie Controlestroom van de Werkset en zet deze neer op het neerzetactiviteitlabel van de ontwerpfunctie voor promptactiviteiten .

    Tip

    Als het werksetvenster niet wordt weergegeven, selecteert u Werkset in het menu Beeld .

  15. Sleep een WriteLine-activiteit uit de sectie Primitieven van de Werkset en zet deze neer op de drop-activiteit hier het label van de reeksactiviteit .

  16. Bind het argument Tekst van de schrijflijnactiviteit aan het tekstargument van de promptactiviteit door Text in het venster Eigenschappen een C#-expressie invoeren of typ een VB-expressievak in het venster Eigenschappen en druk twee keer op de Tab-toets. Hiermee wordt het ledenvenster van de IntelliSense-lijst gesloten en wordt de eigenschapswaarde opgeslagen door de selectie van de eigenschap te verplaatsen. Deze eigenschap kan ook worden ingesteld door in de C#-expressie Invoeren te typen Text of een VB-expressievak in te voeren voor de activiteit zelf.

    Tip

    Als het venster Eigenschappen niet wordt weergegeven, selecteert u Het venster Eigenschappen in het menu Beeld .

  17. Sleep een ReadInt-activiteit uit de sectie NumberGuessWorkflowActivities van de Werkset en zet deze neer in de reeksactiviteit , zodat deze de WriteLine-activiteit volgt.

  18. Bind het argument BookmarkName van de ReadInt-activiteit aan het argument BookmarkName van de activiteit Prompt door in het vak Een VB-expressie invoeren rechts van het argument BookmarkName in het venster Eigenschappen te typen BookmarkName en vervolgens twee keer op de Tab-toets te drukken om het venster leden van de IntelliSense-lijst te sluiten en de eigenschap op te slaan.

  19. Bind het resultaatargument van de ReadInt-activiteit aan het resultaatargument van de promptactiviteit door in het vak Een VB-expressie invoeren rechts van het argument Resultaat in het venster Eigenschappen te typen Result en druk vervolgens twee keer op de Tab-toets.

  20. Druk op Ctrl+Shift+B om de oplossing te bouwen.

Volgende stappen

Zie de volgende stap in de zelfstudie: Een werkstroom maken voor instructies over het maken van een werkstroom met behulp van deze activiteiten.

Zie ook