Bagikan melalui


Validasi Imperatif Code-Based

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 Code-Based

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

Nota

Perhatikan bahwa Cost dan Price bukan argumen untuk aktivitas, tetapi merupakan properti yang diatur pada waktu desain. Itulah sebabnya nilai mereka dapat divalidasi dalam CacheMetadata override. Nilai data yang mengalir melalui argumen tidak dapat divalidasi pada waktu desain karena data tidak mengalir sampai runtime, tetapi argumen aktivitas dapat divalidasi untuk memastikan bahwa mereka terikat dengan menggunakan RequiredArgument atribut dan grup kelebihan beban. Contoh kode ini melihat RequiredArgument atribut dari Description argumen, dan jika tidak terikat, maka kesalahan validasi akan 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 AddValidationError overload 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 runtime ketika alur kerja dipanggil dan jika ada kesalahan validasi yang terjadi, dilemparkan InvalidWorkflowException oleh logika validasi default. Untuk informasi selengkapnya tentang memanggil validasi dan mengakses peringatan atau kesalahan validasi apa pun, lihat Memanggil Validasi Aktivitas.

Pengecualian apa pun yang dilemparkan dari CacheMetadata tidak diperlakukan sebagai kesalahan validasi. Pengecualian ini akan terlepas 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 aktivitas dan aktivitas lain dalam alur kerja, dan tercakup dalam topik Batasan Deklaratif .