Procédure : créer une activité

Les activités sont l'unité principale de comportement dans WF. La logique d'exécution d'une activité peut être implémentée en code managé ou à l'aide d'autres activités. Cette rubrique indique comment créer deux activités. La première activité est une activité simple qui utilise le code pour implémenter la logique d'exécution. L'implémentation de la deuxième activité est définie à l'aide d'autres activités. Ces activités sont utilisées dans les procédures du didacticiel.

Créer le projet de bibliothèque d’activités

  1. Ouvrez Visual Studio et choisissez Nouveau>Projet dans le menu Fichier.

  2. Dans la boîte de dialogue Nouveau projet, sous la catégorie Installé, sélectionnez Visual C#>Workflow (ou Visual Basic>Workflow).

    Remarque

    Si vous ne voyez pas la catégorie de modèle de Workflow, vous devrez peut-être installer le composant Windows Workflow Foundation de Visual Studio. Cliquez sur le lien Ouvrir Visual Studio Installer dans la partie gauche de la boîte de dialogue Nouveau projet. Dans Visual Studio Installer, sélectionnez l’onglet Composants individuels. Ensuite, sous la catégorie Activités de développement , sélectionnez le composant Windows Workflow Foundation. Choisissez Modifier pour installer le composant.

  3. Sélectionnez le modèle de projet Bibliothèque d’activités . Entrez NumberGuessWorkflowActivities dans la zone Nom, puis cliquez sur OK.

  4. Cliquez avec le bouton droit sur Activity1.xaml dans l'Explorateur de solutions, puis choisissez Supprimer. Cliquez sur OK pour confirmer.

Créer l’activité ReadInt

  1. Choisissez Ajouter un nouvel élément dans le menu Projet .

  2. Dans le nœud Installé>Éléments communs, sélectionnez Workflow. Sélectionnez Activité du code dans la liste Workflow.

  3. Entrez ReadInt dans la zone Nom, puis cliquez sur Ajouter.

  4. Remplacez la définition ReadInt existante par la définition suivante.

    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
    

    Notes

    L'activité ReadInt dérive de NativeActivity<TResult> au lieu de CodeActivity, qui est la valeur par défaut pour le modèle d'activité de code. CodeActivity<TResult> peut être utilisé si l'activité fournit un résultat unique, exposé via l'argument Result, mais CodeActivity<TResult> ne prenant pas en charge l'utilisation de signets, NativeActivity<TResult> est utilisé.

Créer l’activité Prompt

  1. Appuyez sur Ctrl+Maj+B pour générer le projet. La génération du projet permet d'utiliser l'activité ReadInt dans ce projet pour générer l'activité personnalisée de cette étape.

  2. Choisissez Ajouter un nouvel élément dans le menu Projet .

  3. Dans le nœud Installé>Éléments communs, sélectionnez Workflow. Sélectionnez Activité dans la liste Flux de travail.

  4. Entrez Prompt dans la zone Nom, puis cliquez sur Ajouter.

  5. Double-cliquez sur Prompt.xaml dans l’Explorateur de solutions pour l’afficher dans le concepteur s’il n’est pas déjà affiché.

  6. Cliquez sur Arguments dans la partie inférieure gauche du concepteur d'activités pour afficher le volet Arguments.

  7. Cliquez sur Créer un argument.

  8. Tapez BookmarkName dans la zone Nom , sélectionnez Entrée dans la liste déroulante Direction , sélectionnez Chaîne dans la liste déroulante Type d’argument, puis appuyez sur Entrée pour enregistrer l’argument.

  9. Cliquez sur Créer un argument.

  10. Tapez Result dans la zone Nom située sous l’argument BookmarkName nouvellement ajouté, sélectionnez Out dans la liste déroulante Direction, sélectionnez Int32 dans la liste déroulante Type d’argument, puis appuyez sur Entrée.

  11. Cliquez sur Créer un argument.

  12. Tapez Text dans la zone Nom , sélectionnez Entrée dans la liste déroulante Direction , sélectionnez Chaîne dans la liste déroulante Type d’argument, puis appuyez sur Entrée pour enregistrer l’argument.

    Ces trois arguments sont liés aux arguments correspondants des activités WriteLine et ReadInt ajoutées à l'activité Prompt dans les étapes suivantes.

  13. Cliquez sur Arguments dans la partie inférieure gauche du concepteur d'activités pour fermer le volet Arguments.

  14. Faites glisser une activité Sequence de la section Organigramme de la Boîte à outils et déposez-la sur l'étiquette Déposer l'activité ici du concepteur de workflow Prompt.

    Conseil

    Si la fenêtre Boîte à outils ne s'affiche pas, sélectionnez Boîte à outils dans le menu Afficher.

  15. Faites glisser une activité WriteLine à partir de la section Primitives de la Boîte à outils et déposez-la sur l’étiquette Déposer l'activité ici de l’activité Séquence.

  16. Liez l’argument Text de l’activité WriteLine à l’argument Text de l’activité Prompt en tapant Text dans l’expression Entrer une expression C# ou Entrer une zone d’expression VB dans la fenêtre Propriétés, puis appuyez deux fois sur la touche de tabulation. Cela ferme la fenêtre de liste des membres IntelliSense et enregistre la valeur de propriété en déplaçant la sélection en dehors de la propriété. Cette propriété peut également être définie en tapant Text dans la zone Entrer une expression C# ou Entrer une zone d’expression VB sur l’activité elle-même.

    Conseil

    Si la fenêtre Propriétés ne s’affiche pas, sélectionnez Fenêtre Propriétés dans le menu Afficher.

  17. Faites glisser une activité ReadInt à partir de la section NumberGuessWorkflowActivities de la Boîte à outils et déposez-la dans l’activité Séquence afin qu’elle suive l’activité WriteLine.

  18. Liez l’argument BookmarkName de l’activité ReadInt à l’argument BookmarkName de l’activité Invite en tapant BookmarkName dans la zone Entrer une expression VB à droite de l’argument BookmarkName dans la fenêtre Propriétés, puis appuyez deux fois sur la touche de tabulation pour fermer la fenêtre des membres de la liste IntelliSense et enregistrer la propriété.

  19. Liez l’argument Result de l’activité ReadInt à l’argument Result de l’activité Prompt en tapant Result dans la zone Entrer une expression VB à droite de l’argument Result dans la fenêtre Propriétés, puis appuyez deux fois sur la touche de tabulation.

  20. Appuyez sur Ctrl+Maj+B pour générer la solution.

Étapes suivantes

Pour obtenir des instructions sur la procédure de création d'un workflow à l'aide de ces activités, consultez l'étape suivante du didacticiel, Procédure : créer un workflow.

Voir aussi