Magazine Internet

[WF4] Ajouter des variables lors du design

Publié le 02 février 2010 par Jeremy.jeanson

Voici une petite extension de ma classe VariableHelper qui permet d’ajouter une variable à une activité durant le Design du Workflow.

Comme dans mon précédent post on passe par le ModeItem du designer d’activité pour trouver le conteneur de variables de l’activité et y ajouter notre variable (j’utilise aussi ma méthode de recherche de variable accessible GetVariables() ).

L’argument variableName de la méthode AddVariable() est en fait le nom initialement souhaiter. Si l’activité à déjà accès à une variable de même nom, il cherchera un autre nom disponible (ex :variableName + “1”).

C#

internal static class VariablesHelper
{
    // Nom de la propriété "Varaibles" (Collection des varaibles d'une séquence
    public const String VariablesPropertyName = "Variables";

 
    #region "Manipulation de variables"

    /// <summary>
    /// Ajout d'une variable à un ModelItem
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="modelItem"></param>
    /// <param name="variableName"></param>
    /// <returns></returns>
    public static Variable<T> AddVariable<T>(ModelItem modelItem, String variableName)
    {
        return AddVariable<T>(modelItem, variableName, default(T));
    }

    /// <summary>
    /// Ajout d'une variable à un ModelItem en spécifiant une valeur par défaut
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="variableName"></param>
    /// <param name="defaultValue"></param>
    /// <returns></returns>
    public static Variable<T> AddVariable<T>(ModelItem modelItem, String variableName, T defaultValue)
    {
        Int32 i = 1;
        String variableToAddName;
        // Retrouver le liste des variables accessible via le ModelItem
        List<Variable> variables = GetVariables(modelItem);

        try
        {
            // Recherche d'un nom de variable disponible
            do
            {
                variableToAddName = String.Concat(variableName, i.ToString());
                i++;
            }
            while (variables.Any(c => c.Name == variableToAddName));

            // Test du conteneur de variables de la séquence courante            
            if (modelItem.Properties
                .Any(c =>
                    c.Name == VariablesHelper.VariablesPropertyName
                    & c.PropertyType == typeof(Collection<Variable>)))
            {
                // Création d'une nouvelel variable
                Variable<T> variable = new Variable<T>(variableToAddName, defaultValue);

                // Ajout de la nouvelle variable
                modelItem.Properties[VariablesHelper.VariablesPropertyName].Collection.Add(variable);

                // Retourner la varariable créé
                return variable;
            }
            else
            {
                return null;
            }
        }
        catch (Exception ex)
        {
            Trace.TraceError(ex.Message);
            return null;
        }
        finally
        {
            // Libération des ressoruces
            variables = null;
            variableToAddName = null;
        }
    }

    #endregion
}

Vous pourriez être intéressé par :

Retour à La Une de Logo Paperblog

Ces articles peuvent vous intéresser :

  • [WF4] Ajouter des activités?

    [WF4] Ajouter activités?

    Dans ma série WF4 ou l’engouasse du designer : “Comment ajouter des activités à un Workflow?”. Contrairement à WF3 qui ajoute les activités les unes à la suite... Lire la suite

    Par  Jeremy.jeanson
    INTERNET, PROGRAMMATION
  • [WF4] Ajouter un Workflow?

    [WF4] Ajouter Workflow?

    WF4 est un peut déroutant quand on lui demande ce que l’on a pu faire des centaines de fois avec WF3. Par exemple, quand on veut ajouter un nouveau Workflow à u... Lire la suite

    Par  Jeremy.jeanson
    INTERNET, PROGRAMMATION
  • [WF4] La gestion des variables

    [WF4] gestion variables

    Avec WF4 arrive une fonctionnalité très intéressante : les variables. Le principe est simple, on va pouvoir avoir des variables comprises dans un certain scope... Lire la suite

    Par  Jeremy.jeanson
    INTERNET, PROGRAMMATION
  • [WF4] Pas de warning dans un Worklow?!!!

    [WF4] warning dans Worklow?!!!

    Le titre peut sembler alarmiste,… c’est normal! Que l’on soit dans un Flowchart ou dans une Sequence, la compilation donnera toujours le message “Build... Lire la suite

    Par  Jeremy.jeanson
    INTERNET, PROGRAMMATION
  • [WF4] Attention au refactoring!

    Comme pour WF3 avec XOML, WF4 ne permet pas pour le moment d’utiliser le refactoring correctement dans les Workflow XAML. Exemple : Si vous utiliser une variabl... Lire la suite

    Par  Jeremy.jeanson
    INTERNET, PROGRAMMATION
  • [WF4] L’explorateur de type

    [WF4] L’explorateur type

    Petite note au sujet de l’explorateur de type. Celui-ci sert à utiliser des types autres que ceux proposer d’origine dans les vues variables et arguments des... Lire la suite

    Par  Jeremy.jeanson
    INTERNET, PROGRAMMATION
  • [WF4] Pas facile d’ajouter des contraintes à une activité

    De WF3 à WF4 pas mal de choses on été changées pour faciliter la vie des développeurs, mais certain points peuvent sembler obscures… comme les contraintes. Lire la suite

    Par  Jeremy.jeanson
    INTERNET, PROGRAMMATION

A propos de l’auteur


Jeremy.jeanson 1573 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte