Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La validación imperativa basada en código proporciona una manera sencilla de proporcionar validación sobre sí misma y está disponible para las actividades que derivan de CodeActivity, AsyncCodeActivityy NativeActivity. El código de validación que determina los errores o advertencias de validación se agregan a la actividad.
Usar validación basada en código
La validación basada en código es compatible con las actividades que derivan de CodeActivity, AsyncCodeActivityy NativeActivity. El código de la validación se puede colocar en el reemplazo de CacheMetadata, mientras que los errores o advertencias de validación se pueden agregar al argumento de metadatos. En el ejemplo siguiente, si Cost
es mayor que Price
, se agrega un error de validación a los metadatos.
Nota:
Tenga en cuenta que Cost
y Price
no son argumentos para la actividad, pero son propiedades que se establecen en tiempo de diseño. Por eso sus valores se pueden validar en la invalidación de CacheMetadata. El valor de los datos que fluyen a través de un argumento no se puede validar en tiempo de diseño porque los datos no fluyen hasta el tiempo de ejecución, pero se pueden validar los argumentos de actividad para asegurar que están enlazados utilizando el RequiredArgument
atributo y los grupos de sobrecarga. Este código de ejemplo ve el RequiredArgument
atributo para el Description
argumento y, si no está enlazado, se genera un error de validación. Los argumentos necesarios se tratan en Argumentos necesarios y Grupos de sobrecarga.
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.
}
}
De forma predeterminada, se agrega un error de validación a los metadatos cuando se llama a AddValidationError. Para agregar una advertencia de validación, use la sobrecarga de AddValidationError que toma una clase ValidationError y especifica que ValidationError representa una advertencia al establecer la propiedad IsWarning.
La validación se produce cuando se modifica un flujo de trabajo en el diseñador de flujos de trabajo y se muestran los errores o advertencias de validación en el diseñador de flujos de trabajo. La validación también se produce en tiempo de ejecución cuando se invoca un flujo de trabajo y, si se produce algún error de validación, se lanza una InvalidWorkflowException por la lógica de validación predeterminada. Para obtener más información sobre cómo invocar la validación y acceder a las advertencias o errores de validación, consulte Invocación de la validación de la actividad.
Las excepciones que se inician desde CacheMetadata no se tratan como errores de validación. Estas excepciones escaparán de la llamada al método Validate y serán administradas por el autor de la llamada.
La validación basada en código es útil para validar la actividad que contiene el código, pero no tiene visibilidad de las demás actividades del flujo de trabajo. La validación de restricciones declarativas proporciona la capacidad de validar las relaciones entre una actividad y otras actividades del flujo de trabajo y se trata en el tema Restricciones declarativas .