1

Ce article montre comment créer une activité personnalisée dans un concepteur de flux de travail réhébergé (avec Workflow Foundation 4). Dans cet exemple, un MyDelayActivity est créé en implémentant l'interface IActivityTemplateFactory et en spécifiant la valeur par défaut aux entrées Delay.Comment personnaliser l'activité dans Workflow 4 Designer ré-hébergé?

Cependant, est-il également possible de modifier les entrées de l'activité? Par exemple, disons que je souhaite ajouter une nouvelle activité StartProcess qui prend une chaîne et exécute le processus spécifié par la chaîne. Je peux implémenter ceci avec les activités natives en ajoutant une activité InvokeMethod, en spécifiant Process.Start comme méthode et une collection contenant la chaîne en tant que paramètre. Est-ce que je peux simplifier tout ceci en ayant juste une boîte StartProcess avec seulement une entrée de chaîne?

Répondre

2

Bien sûr, créez simplement l'activité pour effectuer le travail et ajoutez les propriétés InArgument pour fournir les données dont vous avez besoin. Lorsque vous déposez l'activité sur la surface de conception, vous pouvez utiliser la feuille de propriétés pour définir les arguments. Vous pouvez également créer un concepteur d'activité pour faire de même sur la surface de conception, comme par exemple l'activité WriteLine.

Exemple:

public sealed class MyWriteLine : CodeActivity 
{ 
    public InArgument<string> Text { get; set; } 

    protected override void Execute(CodeActivityContext context) 
    { 
     string text = context.GetValue(this.Text); 
     Console.WriteLine(text); 
    } 
} 
+0

hmmm .. pourriez-vous s'il vous plaît donner plus d'indications quant à l'endroit où je devrais ajouter le InArgument? –

+0

Merci! encore une question, cependant. Maintenant, MyWriteLine apparaît dans le concepteur de l'interface graphique comme une activité sans aucune entrée. Pour modifier le texte, l'utilisateur doit utiliser la feuille de propriétés. Est-il possible de faire en sorte que la représentation de l'interface graphique ait une entrée "Texte", comme le VS WriteLine normal? –

+0

Oui. Ajoutez un ActivityDesigner. Il s'agit d'un contrôle WPF sensible au flux de travail que WorkflowDesigner utilise pour rendre votre activité. Vous pouvez inclure des contrôles tels que TextBox et les transférer vers votre activité InArguments. – Maurice

0

Informations complémentaires, il y a deux didacticiels vidéo très utiles dans le site MSDN: Developing custom activities et Activity designers, et je suppose que le haut-parleur est le même Maurice que le answerer accepté :)