2010-11-25 61 views
3

Je tente d'écrire une activité personnalisée en composant des activités standard, dont une activité Attribuer qui est chargée d'affecter une valeur de chaîne à un OutArgument, appelée «TextOut», que je ont défini sur mon activité personnalisée. L'idée est que l'auteur du flux de travail qui utilise cette activité personnalisée définit une variable dans le flux de travail et la mappe à l'OutArgument TextOut de mon activité personnalisée. Je voudrais y parvenir avec une approche itérative, puisque j'ai l'obligation de créer dynamiquement des branches de sélection à l'exécution. J'ai omis ce code pour simplifier ma question.Activité WF4 personnalisée avec OutArgument et affectation d'activité

Le code de l'activité est indiqué ci-dessous. Ce n'est probablement pas le cas, car cela ne fonctionne pas :) Le workflow qui utilise cette activité lance une erreur de validation: "Valeur pour un argument d'activité requis" A "n'a pas été fourni".

Je voudrais obtenir quelques conseils sur la façon de faire fonctionner mon OutArgument avec une activité Assign child (sans appeler .Set sur mon OutArgument).

public sealed class OutArgActivity : Activity 
{ 
    public OutArgument<string> TextOut { get; set; } 

    public OutArgActivity() 
    { 
     Assign assign = new Assign { 
      To = this.TextOut, 
      Value = new InArgument<string>(
       env => "this is my custom return value") 
     }; 

     Sequence sequence = new Sequence(); 
     sequence.Activities.Add(assign); 

     this.Implementation =() => sequence; 
    } 
} 

Répondre

8

Essayez d'utiliser un ArgumentReference dans votre activité Assign comme ceci:

public sealed class OutArgActivity : Activity 
{ 
    public OutArgument<string> TextOut { get; set; } 

    public OutArgActivity() 
    { 
     Assign<string> assign = new Assign<string> 
     { 
      To = new ArgumentReference<string>("TextOut"), 
      Value = new InArgument<string>(
       env => "this is my custom return value") 
     }; 

     Sequence sequence = new Sequence(); 
     sequence.Activities.Add(assign); 

     this.Implementation =() => sequence; 
    } 
} 
+0

Grande - cela fonctionne, merci! – Jaap

+0

Merci Maurice. Vous venez de sauver ma journée;). –