Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
La validation impérative basée sur le code fournit un moyen simple pour une activité de fournir une validation sur elle-même et est disponible pour les activités qui dérivent de CodeActivity, AsyncCodeActivityet NativeActivity. Le code de validation permettant d'identifier les erreurs ou avertissements de validation est ajouté à l'activité.
Utilisation de la validation basée sur le code
La validation basée sur le code est prise en charge par les activités qui dérivent de CodeActivity, AsyncCodeActivityet NativeActivity. Le code de validation peut être placé dans la substitution CacheMetadata, et des erreurs de validation ou des avertissements peuvent être ajoutés dans l'argument des métadonnées. Dans l’exemple suivant, si la Cost valeur est supérieure à la Pricevaleur , une erreur de validation est ajoutée aux métadonnées.
Remarque
Notez que Cost et Price ne sont pas des arguments à l’activité, mais sont des propriétés définies au moment du design. C'est pourquoi leurs valeurs peuvent être validées dans la substitution CacheMetadata. La valeur des données qui transitent par un argument ne peut pas être validée au moment de la conception, car les données ne circulent pas tant que l’exécution n’est pas effectuée, mais les arguments d’activité peuvent être validés pour s’assurer qu’ils sont liés à l’aide de l’attribut RequiredArgument et des groupes de surcharge. Cet exemple de code voit l’attribut RequiredArgument de l’argument Description et s’il n’est pas lié, une erreur de validation est générée. Les arguments obligatoires sont abordés dans les arguments obligatoires et les groupes de surcharge.
public sealed class CreateProduct : CodeActivity
{
public double Price { get; set; }
public double Cost { get; set; }
// [RequiredArgument] attribute will generate a validation error
// if the Description argument is not set.
[RequiredArgument]
public InArgument<string> Description { get; set; }
protected override void CacheMetadata(CodeActivityMetadata metadata)
{
base.CacheMetadata(metadata);
// Determine when the activity has been configured in an invalid way.
if (this.Cost > this.Price)
{
// Add a validation error with a custom message.
metadata.AddValidationError("The Cost must be less than or equal to the Price.");
}
}
protected override void Execute(CodeActivityContext context)
{
// Not needed for the sample.
}
}
Par défaut, une erreur de validation est ajoutée aux métadonnées quand elle AddValidationError est appelée. Pour ajouter un avertissement de validation, utilisez la surcharge AddValidationError qui accepte un ValidationError, puis spécifiez que le ValidationError représente un avertissement en définissant la propriété IsWarning.
La validation se produit lorsqu’un flux de travail est modifié dans le concepteur de flux de travail et que toutes les erreurs de validation ou avertissements sont affichés dans le concepteur de flux de travail. La validation se produit également au moment de l'exécution lorsqu'un flux de travail est appelé et, si des erreurs de validation se produisent, une InvalidWorkflowException est levée par la logique de validation par défaut. Pour plus d’informations sur l’appel de la validation et l’accès à des avertissements ou erreurs de validation, consultez Appel de validation d’activité.
Toutes les exceptions qui sont générées à partir de CacheMetadata ne sont pas traitées comme des erreurs de validation. Ces exceptions ne seront pas détectées par l'appel à Validate et doivent être gérées par l'appelant.
La validation basée sur le code est utile pour valider l’activité qui contient le code, mais elle n’a pas de visibilité sur les autres activités du flux de travail. La validation des contraintes déclaratives permet de valider les relations entre une activité et d’autres activités dans le flux de travail, et est abordée dans la rubrique Contraintes déclaratives .