Ověřování na základě imperativního kódu

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í ověřování založeného na kódu

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í. Pokud je v Cost následujícím příkladu větší než Price, přidá se do metadata chyba ověření.

Poznámka:

Všimněte si, že Cost a Price nejsou argumenty pro aktivitu, ale jsou vlastnosti, které jsou nastaveny v době návrhu. Proto je možné jejich hodnoty ověřit v přepsání CacheMetadata . Hodnotu dat procházejících 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 vázány 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 do metadat AddValidationError při zavolání přidá chyba ověření. Chcete-li přidat upozornění ověření, použijte AddValidationError přetížení, které přebírá ValidationError, a určete, že ValidationError představuje upozornění nastavením IsWarning vlastnosti.

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. Při vyvolání pracovního postupu a pokud dojde k nějakým chybám ověření, InvalidWorkflowException vyvolá se také ověření za běhu, 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šechny výjimky, které jsou vyvolány 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í .