Walidacja oparta na kodzie imperatywnym
Walidacja oparta na kodzie imperatywnego umożliwia działanie w celu zapewnienia weryfikacji samego siebie i jest dostępne dla działań pochodzących z CodeActivity, AsyncCodeActivityi NativeActivity. Kod weryfikacji określający wszelkie błędy weryfikacji lub ostrzeżenia są dodawane do działania.
Korzystanie z weryfikacji opartej na kodzie
Walidacja oparta na kodzie jest obsługiwana przez działania pochodzące z CodeActivitysystemów , AsyncCodeActivityi NativeActivity. Kod weryfikacji można umieścić w przesłonięciu CacheMetadata , a błędy weryfikacji lub ostrzeżenia można dodać do argumentu metadanych. W poniższym przykładzie, jeśli wartość Cost
jest większa niż Price
, do metadanych zostanie dodany błąd weryfikacji.
Uwaga
Należy pamiętać, że Cost
i Price
nie są argumentami działania, ale są właściwościami ustawionymi w czasie projektowania. Dlatego ich wartości można zweryfikować w zastąpieniu CacheMetadata . Wartość danych przepływających przez argument nie może być weryfikowana w czasie projektowania, ponieważ dane nie przepływają do czasu wykonywania, ale argumenty działań można zweryfikować, aby upewnić się, że są one powiązane przy użyciu atrybutów RequiredArgument
i grup przeciążeń. Ten przykładowy kod widzi RequiredArgument
atrybut argumentu Description
, a jeśli nie jest powiązany, zostanie wygenerowany błąd weryfikacji. Wymagane argumenty są omówione w sekcji Wymagane argumenty i grupy przeciążenia.
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.
}
}
Domyślnie do metadanych jest dodawany błąd weryfikacji, gdy AddValidationError jest wywoływany. Aby dodać ostrzeżenie dotyczące walidacji, użyj AddValidationError przeciążenia, które przyjmuje ValidationError, i określ, że ValidationError reprezentuje ostrzeżenie, ustawiając IsWarning właściwość .
Walidacja występuje, gdy przepływ pracy jest modyfikowany w projektancie przepływu pracy, a wszelkie błędy weryfikacji lub ostrzeżenia są wyświetlane w projektancie przepływu pracy. Walidacja występuje również w czasie wykonywania, gdy jest wywoływany przepływ pracy i jeśli wystąpią jakiekolwiek błędy walidacji, jest InvalidWorkflowException zgłaszany przez domyślną logikę walidacji. Aby uzyskać więcej informacji na temat wywoływania walidacji i uzyskiwania dostępu do wszelkich ostrzeżeń lub błędów walidacji, zobacz Wywoływanie walidacji działania.
Wszelkie wyjątki, CacheMetadata z których pochodzą, nie są traktowane jako błędy weryfikacji. Te wyjątki unikną połączenia Validate z elementem wywołującym i muszą być obsługiwane przez obiekt wywołujący.
Walidacja oparta na kodzie jest przydatna do sprawdzania poprawności działania zawierającego kod, ale nie ma wglądu w inne działania w przepływie pracy. Walidacja ograniczeń deklaratywnych zapewnia możliwość weryfikowania relacji między działaniem a innymi działaniami w przepływie pracy i jest omówiona w temacie Deklaratywne ograniczenia .