Validação classe base imperativa
A validação classe base imperativa fornece uma maneira simples para uma atividade fornece validação sobre se, e está disponível para as atividades que derivam de CodeActivity, de AsyncCodeActivity, e de NativeActivity. O código de validação que determina os erros ou avisos de validação é adicionado à atividade.
Usando a validação classe base
a validação classe base é suportada por atividades que derivam de CodeActivity, de AsyncCodeActivity, e de NativeActivity. O código de validação pode ser colocado em uma substituição de CacheMetadata , e os erros ou avisos de validação podem ser adicionados ao argumento de metadados. No exemplo a seguir, se Cost
é maior do que Price
, um erro de validação é adicionado aos metadados.
Observação
Observe que Cost
e Price
não são argumentos a atividade, mas é propriedades que são definidas em tempo de design. É por isso que seus valores podem ser validados em uma substituição de CacheMetadata . O valor dos dados que correm através de um argumento não pode ser validado em tempo de design porque os dados não usam até o tempo de execução, mas os argumentos de atividade podem ser validados para garantir que estão associados usando os grupos de atributo e a sobrecarga de RequiredArgument
. Esse código de exemplo considera o atributo de RequiredArgument
para o argumento de Description
, e se não está associado em um erro de validação é gerado. Os argumentos necessários são abordados em Argumentos Necessários e 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.
}
}
Por padrão, um erro de validação é adicionado aos metadados quando AddValidationError é chamado. Para adicionar um aviso de validação, use a sobrecarga de AddValidationError que leva ValidationError, e especifica que ValidationError representa um aviso definindo a propriedade de IsWarning .
A validação ocorre quando um trabalho são alterados no designer de trabalho e todos os erros ou avisos de validação são exibidos no designer de fluxo de trabalho. Validação também ocorre em tempo de execução quando um fluxo de trabalho é chamado e se qualquer erro de validação ocorre, InvalidWorkflowException é acionada pela lógica padrão de validação. Para obter mais informações sobre como invocar a validação e acessar quaisquer avisos ou erros de validação, consulte Invocando a Validação da Atividade.
Nenhuma exceções que são geradas de CacheMetadata não são tratados como erros de validação. Essas exceções escaparão de chamada para Validate e devem ser tratadas pelo chamador.
a validação classe base é útil para validar a atividade que contém o código, mas não tem a visibilidade nas outras atividades no fluxo de trabalho. A validação declarativamente restrições fornece a capacidade para validar as relações entre uma atividade e outras atividades no fluxo de trabalho, e é abordado no tópico Restrições declarativas.