Freigeben über


Imperative codebasierte Validierung

Die imperative codebasierte Validierung stellt eine einfache Möglichkeit für eine Aktivität dar, eine Eigenvalidierung bereitzustellen. Dies ist für Aktivitäten verfügbar, die von CodeActivity, AsyncCodeActivity und NativeActivity abgeleitet werden. Der Überprüfungscode, der alle Überprüfungsfehler oder Warnungen bestimmt, wird der Aktivität hinzugefügt.

Verwenden von codebasierter Validierung

Die codebasierte Überprüfung wird von Aktivitäten unterstützt, die von CodeActivity, AsyncCodeActivity und NativeActivity abgeleitet sind. Der Validierungscode kann in der CacheMetadata Überschreibung platziert werden, und Validierungsfehler oder Warnungen können dem Metadatenargument hinzugefügt werden. Im folgenden Beispiel wird der Metadaten ein Überprüfungsfehler hinzugefügt, wenn der Cost Wert größer als der Priceist.

Hinweis

Beachten Sie, dass es sich bei Cost und Price nicht um Argumente für die Aktivität handelt, sondern um Eigenschaften, die zur Entwurfszeit festgelegt werden. Aus diesem Grund können ihre Werte in der CacheMetadata Überschreibung validiert werden. Der Wert der Daten, die über ein Argument fließen, kann zur Entwurfszeit nicht überprüft werden, da die Daten erst zur Laufzeit fließen, aber Aktivitätsargumente können überprüft werden, um sicherzustellen, dass sie mithilfe der RequiredArgument Attribut- und Überladungsgruppen gebunden sind. In diesem Beispielcode wird das RequiredArgument Attribut für das Description Argument angezeigt, und wenn es nicht gebunden ist, wird ein Überprüfungsfehler generiert. Erforderliche Argumente werden in "Erforderliche Argumente" und "Überladungsgruppen" behandelt.

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

Standardmäßig wird der Metadaten beim AddValidationError Aufrufen ein Überprüfungsfehler hinzugefügt. Zum Hinzufügen einer Überprüfungswarnung verwenden Sie die AddValidationError-Überladung, die ein ValidationError akzeptiert, und spezifizieren Sie, dass das ValidationError eine Warnung darstellt, indem Sie die IsWarning Eigenschaft als Warnung festlegen.

Die Überprüfung erfolgt, wenn ein Workflow im Workflow-Designer geändert wird und alle Überprüfungsfehler oder Warnungen im Workflow-Designer angezeigt werden. Die Überprüfung erfolgt auch zur Laufzeit, wenn ein Workflow aufgerufen wird und wenn Validierungsfehler auftreten, wird eine InvalidWorkflowException von der Standardüberprüfungslogik ausgelöst. Weitere Informationen zum Aufrufen der Überprüfung und zum Zugreifen auf Validierungswarnungen oder -fehler finden Sie unter "Aufrufen der Aktivitätsüberprüfung".

Ausnahmen, die von CacheMetadata ausgelöst werden, werden nicht als Validierungsfehler behandelt. Diese Ausnahmen werden im Aufruf von Validate nicht verarbeitet und müssen vom Aufrufer behandelt werden.

Die codebasierte Überprüfung ist nützlich, um die Aktivität zu überprüfen, die den Code enthält, aber keine Einblicke in die anderen Aktivitäten im Workflow hat. Die Überprüfung deklarativer Einschränkungen bietet die Möglichkeit, die Beziehungen zwischen einer Aktivität und anderen Aktivitäten im Workflow zu überprüfen und wird im Thema "Deklarative Einschränkungen" behandelt.