Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A validação imperativa baseada em código fornece uma maneira simples de uma atividade fornecer validação sobre si mesma e está disponível para atividades que derivam de CodeActivity, AsyncCodeActivitye NativeActivity. O código de validação que determina quaisquer erros ou avisos de validação é adicionado à atividade.
Usando a validação classe base
A validação baseada em código é suportada por atividades que derivam de CodeActivity, AsyncCodeActivitye NativeActivity. O código de validação pode ser colocado na CacheMetadata sobrescrição, e erros de validação ou avisos podem ser adicionados ao argumento de metadados. No exemplo a seguir, se Cost
for maior que Price
, um erro de validação será adicionado aos metadados.
Observação
Observe que Cost
e Price
não são argumentos para a atividade, mas são 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 fluem por um argumento não pode ser validado em tempo de design porque os dados não fluem até o momento da execução, mas os argumentos de atividade podem ser validados para garantir que estejam ligados, usando o atributo RequiredArgument
e grupos de sobrecarga. Este código de exemplo vê o RequiredArgument
atributo do Description
argumento e, se ele não estiver associado, um erro de validação será 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 fluxo de trabalho é modificado no designer de fluxo de trabalho e quaisquer erros ou avisos de validação são exibidos no designer de fluxo de trabalho. A validação também ocorre em tempo de execução quando um fluxo de trabalho é invocado e, se ocorrerem erros de validação, um InvalidWorkflowException é gerado pela lógica de validação padrão. Para obter mais informações sobre como invocar a validação e acessar quaisquer avisos ou erros de validação, consulte Invocando validação de atividade.
Quaisquer exceções geradas a partir de CacheMetadata não são tratadas como erros de validação. Essas exceções escaparão de chamada para Validate e devem ser tratadas pelo chamador.
A validação baseada em código é útil para validar a atividade que contém o código, mas não tem visibilidade das outras atividades no fluxo de trabalho. A validação de restrições declarativas fornece a capacidade de validar as relações entre uma atividade e outras atividades no fluxo de trabalho e é abordada no tópico Restrições Declarativas .