Aracılığıyla paylaş


Zorunlu Code-Based Doğrulama

Zorunlu kod tabanlı doğrulama, bir etkinliğin kendisi hakkında doğrulama sağlaması için basit bir yol sunar ve CodeActivity, AsyncCodeActivity, ve NativeActivity 'den türetilen etkinlikler için kullanılabilir. Etkinliğe doğrulama hatalarını veya uyarılarını belirleyen doğrulama kodu eklenir.

Code-Based Doğrulamasını Kullanarak

Kod tabanlı doğrulama, CodeActivity, AsyncCodeActivity ve NativeActivity'den türetilen etkinlikler tarafından desteklenir. Doğrulama kodu, CacheMetadata geçersiz kılma fonksiyonuna yerleştirilebilir ve doğrulama hataları veya uyarıları meta verinin bağımsız değişkenine eklenebilir. Aşağıdaki örnekte, CostPrice'den büyükse, meta verilere bir doğrulama hatası eklenir.

Uyarı

Unutmayın ki Cost ve Price etkinliğin bağımsız değişkenleri değil, tasarım zamanında ayarlanan özelliklerdir. Bu nedenle değerleri geçersiz kılmada CacheMetadata doğrulanabilir. Bağımsız değişken üzerinden akan verilerin değeri çalışma zamanına kadar doğrulanamaz, çünkü veriler ancak çalışma zamanında akar. Ancak, etkinlik bağımsız değişkenleri, RequiredArgument özniteliği ve aşırı yükleme gruplarını kullanarak bağlandıklarından emin olmak için doğrulanabilir. Bu örnek kod, RequiredArgument bağımsız değişkeninin Description özniteliğini denetler ve bağlı olmadığı takdirde bir doğrulama hatası oluşturulur. Gerekli bağımsız değişkenler Gerekli Bağımsız Değişkenler ve Aşırı Yükleme Grupları'nda ele alınmıştır.

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

Varsayılan olarak, çağrıldığında AddValidationError meta veriye bir doğrulama hatası eklenir. Doğrulama uyarısı eklemek için, bir AddValidationError alan ValidationError aşırı yüklemesini kullanın ve ValidationError özelliğini ayarlayarak IsWarning öğesinin bir uyarıyı temsil ettiğini belirtin.

İş akışı tasarımcısında bir iş akışı değiştirildiğinde ve iş akışı tasarımcısında tüm doğrulama hataları veya uyarıları görüntülendiğinde doğrulama gerçekleşir. Doğrulama, bir iş akışı çağrıldığında çalışma zamanında da gerçekleşir ve herhangi bir doğrulama hatası oluşursa, varsayılan doğrulama mantığı tarafından bir InvalidWorkflowException oluşturulur. Doğrulamayı çağırma ve doğrulama uyarılarına veya hatalarına erişme hakkında daha fazla bilgi için bkz. Etkinlik Doğrulamayı Çağırma.

Özel durumlar CacheMetadata tarafından atıldığında doğrulama hataları olarak değerlendirilmez. Bu istisnalar Validate çağrısından kaçar ve çağıran tarafından işlenmelidir.

Kod tabanlı doğrulama, kodu içeren etkinliği doğrulamak için kullanışlıdır, ancak iş akışındaki diğer etkinliklere görünürlüğü yoktur. Bildirim temelli kısıtlamalar doğrulaması, bir etkinlikle iş akışındaki diğer etkinlikler arasındaki ilişkileri doğrulama olanağı sağlar ve Bildirim Kısıtlamaları konusunda ele alınmıştır .