Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Walidacja oparta na kodzie imperatywnym umożliwia aktywności dostarczenie walidacji na swój temat i jest dostępna dla aktywności pochodzących z CodeActivity, AsyncCodeActivity i NativeActivity. Kod weryfikacji określający wszelkie błędy weryfikacji lub ostrzeżenia są dodawane do działania.
Korzystanie z weryfikacji Code-Based
Walidacja oparta na kodzie jest obsługiwana przez działania pochodzące z CodeActivity, AsyncCodeActivity i 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 / Notatka
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 . Dane przepływające przez argument nie mogą być weryfikowane w czasie projektowania, ponieważ przepływ danych następuje dopiero podczas wykonywania, ale argumenty działania można zweryfikować przy użyciu atrybutu RequiredArgument i grup przeciążeniowych, aby upewnić się, że są one prawidłowo powiązane. Ten przykładowy kod sprawdza atrybut RequiredArgument dla argumentu Description i 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 przeciążenia AddValidationError, które przyjmuje parametr ValidationError, i określ, że ValidationError reprezentuje ostrzeżenie, ustawiając właściwość IsWarning.
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 odbywa się również w czasie wykonywania, gdy wywoływany jest przepływ pracy, a jeśli wystąpią jakiekolwiek błędy walidacji, są InvalidWorkflowException zgłaszane 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 wyrzucane przez CacheMetadata nie są traktowane jako błędy weryfikacji. Te wyjątki wydostaną się z wywołania Validate i muszą być obsługiwane przez element 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 .