Création de l'activité de workflow à l'aide de la classe CodeActivity
Les activités créées en héritant de CodeActivity peuvent implémenter un comportement impératif de base en remplaçant la méthode Execute.
Utilisation de CodeActivityContext
Les fonctionnalités de l'exécution du workflow sont accessibles à partir de la méthode Execute en utilisant les membres du paramètre context
, de type CodeActivityContext. Les fonctionnalités disponibles via CodeActivityContext sont notamment :
Obtention et définition des valeurs de variables et d’arguments.
Fonctionnalités de suivi personnalisées à l'aide de Track.
Accès aux propriétés d'exécution de l'activité à l'aide de GetProperty.
Pour créer une activité personnalisée qui hérite de CodeActivity
Ouvrez Visual Studio 2010.
Sélectionnez Fichier, Nouveau et Projet. Sélectionnez Workflow 4.0 sous Visual C# dans la fenêtre Types de projet, puis le nœud v2010. Sélectionnez Bibliothèque d’activités dans la fenêtre Modèles. Nommez le nouveau projet HelloActivity.
Cliquez avec le bouton droit sur Activity1.xaml dans le projet HelloActivity et sélectionnez Supprimer.
Cliquez avec le bouton droit sur le projet HelloActivity et sélectionnez Ajouter, puis Classe. Nommez la nouvelle classe HelloActivity.cs.
Dans le fichier HelloActivity.cs, ajoutez les directives
using
suivantes.using System.Activities; using System.Activities.Statements;
Faites en sorte que la nouvelle classe hérite de CodeActivity en ajoutant une classe de base à la déclaration de classe.
class HelloActivity : CodeActivity
Ajoutez des fonctionnalités à la classe en ajoutant une méthode Execute.
protected override void Execute(CodeActivityContext context) { Console.WriteLine("Hello World!"); }
Utilisez le CodeActivityContext pour créer un enregistrement de suivi.
protected override void Execute(CodeActivityContext context) { Console.WriteLine("Hello World!"); CustomTrackingRecord record = new CustomTrackingRecord("MyRecord"); record.Data.Add(new KeyValuePair<String, Object>("ExecutionTime", DateTime.Now)); context.Track(record); }