Procédure : créer une activité
Cette rubrique s'applique à Windows Workflow Foundation 4.
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 montre comment créer une activité simple à l'aide de code pour implémenter sa logique d'exécution ainsi qu'une activité dont l'implémentation est définie à l'aide d'autres activités. Ces activités sont utilisées dans les rubriques Procédure : créer un workflow et Procédure : exécuter un workflow suivantes.
Pour créer le projet de bibliothèque d'activités
Ouvrez Visual Studio 2010 et choisissez Nouveau, Projet dans le menu Fichier.
Dans la liste Modèles installés, développez le nœud Autres types de projets et sélectionnez Solutions Visual Studio.
Dans la liste Solutions Visual Studio, sélectionnez Nouvelle solution. Dans la liste déroulante de la version du .NET Framework, vérifiez que .NET Framework 4 est sélectionné. Dans la zone Nom, tapez GettingStartedTutorial et cliquez sur OK.
Cliquez avec le bouton droit sur GettingStartedTutorial dans l'Explorateur de solutions, puis choisissez Ajouter, Nouveau projet.
Conseil : Si la fenêtre Explorateur de solutions n'est pas affichée, sélectionnez Explorateur de solutions dans le menu Affichage. Dans la liste Modèles installés, sélectionnez Visual C#, Workflow (ou Visual Basic, Workflow). Dans la liste déroulante des versions du .NET Framework, vérifiez que .NET Framework 4 est sélectionné. Sélectionnez Bibliothèque d'activités dans la liste Workflow. Conservez les paramètres par défaut, puis cliquez sur OK.
Remarque : En fonction du langage de programmation qui est configuré comme langage principal dans Visual Studio, le nœud Visual C# ou Visual Basic peut se trouver sous le nœud Autres langages dans la liste Modèles installés. Cliquez avec le bouton droit sur Activity1.xaml dans l'Explorateur de solutions et sélectionnez Supprimer. Pour confirmer, cliquez sur OK.
Pour créer l'activité ReadInt
Dans le menu Projet, choisissez Ajouter un nouvel élément.
Dans la liste Modèles installés, sélectionnez Workflow. Sélectionnez Activité de code dans la liste Workflow.
Dans la zone Nom, tapez ReadInt, puis cliquez sur Ajouter.
Remplacez la définition
ReadInt
existante par la définition suivante.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)); } }
Remarque : L'activité ReadInt
dérive de NativeActivity au lieu de CodeActivity, qui est la valeur par défaut pour un projet d'activité basé sur une activité de code. CodeActivity peut être utilisé si l'activité fournit un résultat unique, exposé via l'argument Result, mais CodeActivity ne prenant pas en charge l'utilisation de signets, NativeActivity est utilisé.
Pour créer l'activité Prompt
Appuyez sur F6 pour générer le projet. L'activité
ReadInt
dans ce projet est ainsi utilisée pour générer l'activité personnalisée de cette étape.Dans le menu Projet, choisissez Ajouter un nouvel élément.
Dans la liste Modèles installés, sélectionnez Workflow. Sélectionnez Activité dans la liste Workflow.
Dans la zone Nom, tapez Prompt, puis cliquez sur Ajouter.
Dans l'Explorateur de solutions, double-cliquez sur Prompt.xaml pour l'afficher dans le concepteur, si ce n'est pas déjà fait.
Pour afficher le volet Arguments, dans la partie inférieure gauche du concepteur d'activités, cliquez sur Arguments.
Cliquez sur Créer un argument.
Tapez BookmarkName dans la zone Nom, sélectionnez In dans la liste déroulante Direction, choisissez String dans la liste déroulante Type d'argument et appuyez sur ENTRÉE pour enregistrer l'argument.
Cliquez sur Créer un argument.
Tapez Result dans la zone Nom située sous l'argument
BookmarkName
récemment 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.Cliquez sur Créer un argument.
Tapez Text dans la zone Nom, sélectionnez In dans la liste déroulante Direction, sélectionnez String 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.Cliquez sur Arguments dans la partie inférieure gauche du concepteur d'activités pour fermer le volet Arguments.
Faites glisser une activité Sequence de la section Flux de contrôle de la Boîte à outils et déposez-la sur le concepteur d'activités.
Conseil : Si la fenêtre Boîte à outils n'est pas affichée, sélectionnez Boîte à outils dans le menu Affichage. Faites glisser une activité WriteLine de la section Primitives de la Boîte à outils et déposez-la dans l'activité Sequence.
Liez l'argument Text de l'activité WriteLine à l'argument Text de l'activité Prompt en tapant Text dans la zone Entrer une expression VB de la fenêtre Propriétés, et appuyez deux fois sur la touche TAB pour masquer la fenêtre des membres de la liste IntelliSense et enregistrer la valeur de propriété en déplaçant la sélection hors de la propriété. Cette propriété peut également être définie en tapant Text dans la zone Entrer une expression VB sur l'activité elle-même.
Conseil : Si la Fenêtre Propriétés n'est pas affichée, sélectionnez Fenêtre Propriétés dans le menu Affichage. Faites glisser une activité ReadInt de la section ActivityLibrary1 de la Boîte à outils et déposez-la dans l'activité Sequence afin qu'elle suive l'activité WriteLine.
Liez l'argument BookmarkName de l'activité ReadInt à l'argument BookmarkName de l'activité Prompt en tapant BookmarkName dans la zone Entrer une expression VB à droite de l'argument BookmarkName dans la Fenêtre Propriétés, et appuyez deux fois sur la touche TAB pour fermer la fenêtre des membres de la liste IntelliSense et enregistrer la propriété.
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, et appuyez deux fois sur la touche TAB.
Appuyez sur F6 pour générer la solution.
Voir aussi
Tâches
Référence
Concepts
Conception et implémentation d'activités personnalisées