Share via


Kesin Kod Temelli Doğrulama

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

Kod Tabanlı Doğrulamayı Kullanma

Kod tabanlı doğrulama, , AsyncCodeActivityve NativeActivitykaynaklarından CodeActivitytüretilen etkinlikler tarafından desteklenir. Doğrulama kodu geçersiz kılmaya CacheMetadata yerleştirilebilir ve meta veri bağımsız değişkenine doğrulama hataları veya uyarıları eklenebilir. Aşağıdaki örnekte , değerinden CostPricebüyükse meta veriye bir doğrulama hatası eklenir.

Not

ve Price değerlerinin Cost etkinliğin bağımsız değişkenleri olmadığını, ancak tasarım zamanında ayarlanan özellikler olduğunu unutmayın. Bu nedenle değerleri geçersiz kılmada CacheMetadata doğrulanabilir. Bir bağımsız değişken üzerinden akan verilerin değeri tasarım zamanında doğrulanamıyor çünkü veriler çalışma zamanına kadar akmıyor, ancak etkinlik bağımsız değişkenleri öznitelik ve aşırı yükleme grupları kullanılarak RequiredArgument bağlanıldıklarından emin olmak için doğrulanabilir. Bu örnek kod bağımsız değişkenin RequiredArgumentDescription özniteliğini görür ve bağlı değilse 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 , alan ValidationErroraşırı yüklemeyi kullanın AddValidationError ve özelliğini ayarlayarak öğesinin ValidationError bir uyarıyı IsWarning 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.

'den CacheMetadata oluşan özel durumlar doğrulama hataları olarak değerlendirilmez. Bu özel durumlar çağrısından Validate kaçacak 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 .