Sdílet prostřednictvím


Ověření imperativu Code-Based

Imperativní ověřování založené na kódu poskytuje jednoduchý způsob, jak aktivity poskytovat ověřování o sobě, a je k dispozici pro aktivity odvozené od CodeActivity, AsyncCodeActivitya NativeActivity. Ověřovací kód, který určuje chyby ověření nebo upozornění, se přidá do aktivity.

Použití validace Code-Based

Ověřování na základě kódu je podporováno aktivitami, které jsou odvozeny od CodeActivity, AsyncCodeActivitya NativeActivity. Ověřovací kód lze umístit do CacheMetadata přepsání a do argumentu metadat je možné přidat chyby ověření nebo upozornění. V následujícím příkladu, pokud je Cost větší než Price, přidá se chyba ověření do metadat.

Poznámka:

Všimněte si, že Cost a Price nejsou argumenty pro aktivitu, ale jsou vlastnosti, které jsou nastaveny v době návrhu. To je důvod, proč mohou být jejich hodnoty ověřeny v překrytí CacheMetadata. Hodnotu dat procházejícího argumentem nelze v době návrhu ověřit, protože data neprotékají do doby běhu, ale argumenty aktivity lze ověřit, aby se zajistilo, že jsou svázané pomocí RequiredArgument atributů a skupin přetížení. Tento ukázkový kód zobrazí atribut argumentu RequiredArgumentDescription a pokud není vázán, vygeneruje se chyba ověření. Požadované argumenty jsou popsány v povinných argumentech a skupinách přetížení.

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.
    }
}

Ve výchozím nastavení se při zavolání AddValidationError do metadat přidá chyba ověření. Chcete-li přidat upozornění ověření, použijte přetížení AddValidationError, které přijímá ValidationError, a určete, že ValidationError představuje upozornění nastavením vlastnosti IsWarning.

K ověření dochází, když je pracovní postup změněn v návrháři pracovního postupu a všechny chyby nebo upozornění ověření se zobrazí v návrháři pracovního postupu. K ověření dochází také za běhu při vyvolání pracovního postupu a pokud dojde k nějakým chybám ověření, InvalidWorkflowException vyvolá se výchozí logika ověření. Další informace o vyvolání ověřování a přístupu k jakýmkoli upozorněním nebo chybám ověření najdete v tématu Vyvolání ověření aktivity.

Výjimky, které jsou vyvolány z CacheMetadata, nejsou považovány za chyby ověřování. Tyto výjimky uniknou z volání a Validate musí je zpracovat volající.

Ověřování na základě kódu je užitečné pro ověřování aktivity, která obsahuje kód, ale nemá přehled o ostatních aktivitách v pracovním postupu. Ověřování deklarativních omezení umožňuje ověřit vztahy mezi aktivitou a dalšími aktivitami v pracovním postupu a je popsáno v tématu deklarativní omezení .