Udostępnij za pomocą


Weryfikacja imperatywu Code-Based

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 .