Bagikan melalui


Validasi Berbasis Kode Imperatif

Validasi berbasis kode imperatif menyediakan cara sederhana bagi aktivitas untuk memberikan validasi tentang dirinya sendiri, dan tersedia untuk aktivitas yang berasal dari CodeActivity, AsyncCodeActivity, dan NativeActivity. Kode validasi yang menentukan kesalahan validasi atau peringatan ditambahkan ke aktivitas.

Menggunakan Validasi Berbasis Kode

Validasi berbasis kode didukung oleh aktivitas yang berasal dari CodeActivity, AsyncCodeActivity, dan NativeActivity. Kode validasi dapat ditempatkan dalam pengambilalihan CacheMetadata, dan kesalahan validasi atau peringatan dapat ditambahkan ke argumen metadata. Dalam contoh berikut, jika Cost lebih besar dari Price, kesalahan validasi ditambahkan ke metadata.

Catatan

Perhatikan bahwa Cost dan Price bukan merupakan argumen untuk aktivitas, tetapi merupakan properti yang diatur pada waktu desain. Itulah sebabnya nilainya dapat divalidasi dalam pengambilalihan CacheMetadata. Nilai data yang mengalir melalui argumen tidak dapat divalidasi pada waktu desain karena data tidak mengalir hingga run time, tetapi argumen aktivitas dapat divalidasi untuk memastikan bahwa data terikat dengan menggunakan atribut RequiredArgument dan grup kelebihan beban. Contoh kode ini melihat atribut RequiredArgument untuk argumen Description, dan jika tidak terikat maka kesalahan validasi dihasilkan. Argumen yang diperlukan tercakup dalam Argumen yang Diperlukan dan Grup Kelebihan Beban.

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

Secara default, kesalahan validasi ditambahkan ke metadata saat AddValidationError dipanggil. Untuk menambahkan peringatan validasi, gunakan kelebihan beban AddValidationError yang mengambil ValidationError, dan tentukan bahwa ValidationError mewakili peringatan dengan mengatur properti IsWarning.

Validasi terjadi ketika alur kerja dimodifikasi di perancang alur kerja dan kesalahan validasi atau peringatan ditampilkan di perancang alur kerja. Validasi juga terjadi pada durasi saat alur kerja dipanggil dan jika terjadi kesalahan validasi, InvalidWorkflowException diterapkan oleh logika validasi default. Untuk mengetahui informasi selengkapnya tentang memanggil validasi dan mengakses peringatan atau kesalahan validasi apa pun, lihat Memanggil Validasi Aktivitas.

Setiap pengecualian yang diterapkan dari CacheMetadata tidak diperlakukan sebagai kesalahan validasi. Pengecualian ini akan lolos dari panggilan ke Validate dan harus ditangani oleh pemanggil.

Validasi berbasis kode berguna untuk memvalidasi aktivitas yang berisi kode, tetapi tidak memiliki visibilitas ke dalam aktivitas lain dalam alur kerja. Validasi batasan deklaratif memberikan kemampuan untuk memvalidasi hubungan antara satu aktivitas dan aktivitas lain dalam alur kerja, dan tercakup dalam topik Batasan Deklaratif.