Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Faktor-faktor berikut harus dipertimbangkan saat menerapkan Business Rule Engine (BRE) dalam solusi BizTalk Server:
Jenis fakta
Mesin aturan membutuhkan lebih sedikit waktu untuk mengakses fakta .NET dibandingkan dengan waktu yang diperlukan untuk mengakses fakta XML dan database. Jika Anda memiliki pilihan untuk menggunakan fakta .NET atau XML atau database dalam kebijakan, Anda harus mempertimbangkan untuk menggunakan fakta .NET untuk meningkatkan performa.
Tabel data vs. koneksi data
Ketika ukuran himpunan data kecil (< 10 atau lebih), pengikatan TypedDataTable memberikan performa yang lebih baik daripada pengikatan DataConnection . Namun, pengikatan DataConnection berkinerja lebih baik daripada pengikatan TypedDataTable saat himpunan data besar (lebih besar dari atau sama dengan 10 baris kira-kira). Oleh karena itu, Anda harus memutuskan apakah akan menggunakan pengikatan DataConnection atau pengikatan TypedDataTable berdasarkan perkiraan ukuran himpunan data.
Pengambil Fakta
Fact retriever menerapkan metode standar yang biasa digunakan untuk menyediakan fakta yang bersifat jangka panjang dan berubah perlahan kepada mesin aturan sebelum kebijakan diterapkan. Mesin menyimpan fakta-fakta ini dan menggunakannya selama beberapa siklus eksekusi. Alih-alih mengirimkan fakta statis atau cukup statis setiap kali Anda memanggil mesin aturan, Anda harus membuat pengambil fakta yang mengirimkan fakta untuk pertama kalinya, dan kemudian memperbarui fakta dalam memori hanya ketika yang perlu.
Prioritas aturan
Pengaturan prioritas untuk aturan dapat berada di kedua sisi 0, dengan angka yang lebih besar memiliki tingkat prioritas lebih tinggi. Tindakan dijalankan secara berurutan dari prioritas tertinggi ke prioritas terendah. Ketika kebijakan menerapkan perilaku rantai terusan dengan menggunakan panggilan Assert/Update , rantai dapat dioptimalkan dengan menggunakan pengaturan prioritas. Misalnya, asumsikan bahwa Rule2 memiliki dependensi pada nilai yang ditetapkan oleh Rule1. Memberi Aturan1 prioritas yang lebih tinggi berarti bahwa Aturan2 hanya akan dijalankan setelah Aturan1 diaktifkan dan memperbarui nilai. Sebaliknya, jika Aturan2 diberi prioritas yang lebih tinggi, aturan tersebut dapat diaktifkan sekali, dan kemudian diaktifkan lagi setelah Aturan1 diaktifkan dan memperbarui fakta bahwa Aturan2 menggunakan kondisi. Meskipun ini dapat memberikan hasil yang benar, memberi Rule1 prioritas yang lebih tinggi dalam skenario ini akan memberikan performa yang lebih baik.
Memperbarui panggilan
Fungsi Pembaruan menyebabkan semua aturan menggunakan fakta yang diperbarui dievaluasi ulang. Panggilan fungsi pembaruan bisa mahal terutama jika sekumpulan aturan besar dievaluasi ulang saat memperbarui fakta. Ada situasi di mana perilaku ini dapat dihindari. Misalnya, pertimbangkan aturan berikut.
Aturan1:
IF PurchaseOrder.Amount > 5
THEN StatusObj.Flag = true; Update(StatusObj)
Aturan2:
IF PurchaseOrder.Amount <= 5
THEN StatusObj.Flag = false; Update(StatusObj)
Semua aturan kebijakan yang tersisa menggunakan StatusObj.Flag dalam kondisinya. Oleh karena itu, ketika Pembaruan dipanggil pada objek StatusObj , semua aturan akan dievaluasi ulang. Apa pun nilai bidang Jumlah , semua aturan kecuali Aturan1 atau Aturan2 dievaluasi dua kali, sekali sebelum panggilan Perbarui dan sekali setelah panggilan Perbarui .
Untuk mengurangi overhead terkait, Anda dapat mengatur nilai bidang bendera ke false sebelum memanggil kebijakan lalu hanya menggunakan Aturan1 dalam kebijakan untuk mengatur bendera. Dalam hal ini, Pembaruan akan dipanggil hanya jika nilai bidang Jumlah lebih besar dari 5, dan fungsi Pembaruan tidak dipanggil jika nilai Jumlah kurang dari atau sama dengan 5. Oleh karena itu, semua aturan kecuali Aturan1 atau Aturan2 dievaluasi dua kali hanya jika nilai bidang Jumlah lebih besar dari 5.
Penggunaan operator OR logis
Menggunakan peningkatan jumlah operator OR logis dalam kondisi menciptakan permutasi tambahan yang memperluas jaringan analisis mesin aturan. Dari sudut pandang kinerja, Anda lebih baik membagi kondisi ke dalam aturan-aturan atomik yang tidak berisi operator logis ATAU.
Pengaturan Cache
Mesin Aturan menggunakan dua cache. Yang pertama digunakan oleh layanan pembaruan dan yang kedua digunakan oleh setiap proses BizTalk. Pertama kali kebijakan digunakan, proses BizTalk meminta informasi kebijakan dari layanan pembaruan. Layanan pembaruan mengambil informasi kebijakan dari database mesin aturan, menyimpannya dalam cache dan mengembalikan informasi ke proses BizTalk. Proses BizTalk membuat objek kebijakan berdasarkan informasi tersebut dan menyimpan objek kebijakan dalam cache ketika instans mesin aturan terkait menyelesaikan eksekusi kebijakan. Ketika kebijakan yang sama dipanggil lagi, proses BizTalk menggunakan kembali objek kebijakan dari cache jika tersedia. Demikian pula, jika proses BizTalk meminta informasi tentang kebijakan dari layanan pembaruan, layanan pembaruan mencari informasi kebijakan dalam cache-nya jika tersedia. Setiap 60 detik, layanan pembaruan juga memeriksa apakah ada pembaruan pada kebijakan dalam database. Jika ada pembaruan, layanan pembaruan mengambil informasi dan menyimpan cache informasi yang diperbarui.
Ada tiga parameter penyetelan untuk mesin aturan yang terkait dengan cache ini: CacheEntries, CacheTimeout, dan PollingInterval. Anda dapat menentukan nilai untuk parameter ini baik di registri atau dalam file konfigurasi. Nilai parameter CacheEntries adalah jumlah maksimum entri dalam cache dan diatur ke nilai 32 secara default. Anda mungkin ingin meningkatkan nilai parameter CacheEntries untuk meningkatkan performa dalam skenario tertentu. Misalnya, Anda menggunakan 40 kebijakan berulang kali; Anda dapat meningkatkan nilai parameter CacheEntries menjadi 40 untuk meningkatkan performa. Ini akan memungkinkan layanan pembaruan untuk mempertahankan detail cache hingga 40 kebijakan dalam memori.
Nilai CacheTimeout adalah waktu dalam detik entri dipertahankan dalam cache layanan pembaruan. Dengan kata lain, nilai CacheTimeout mengacu pada berapa lama entri cache untuk kebijakan dipertahankan dalam cache tanpa direferensikan. Nilai default parameter CacheTimeout adalah 3600 detik, atau 1 jam. Ini berarti bahwa jika entri cache tidak dirujuk dalam satu jam, entri akan dihapus. Dalam beberapa kasus, mungkin bermanfaat untuk meningkatkan nilai parameter CacheTimeout untuk meningkatkan performa. Misalnya, jika kebijakan dipanggil setiap dua jam, performa eksekusi kebijakan akan ditingkatkan dengan meningkatkan parameter CacheTimeout ke nilai yang lebih tinggi dari dua jam.
Parameter PollingInterval dari mesin aturan menentukan waktu dalam detik untuk layanan pembaruan guna memeriksa database mesin aturan untuk pembaruan. Nilai default untuk parameter PollingInterval adalah 60 detik. Jika Anda tahu bahwa kebijakan tidak diperbarui sama sekali atau jarang diperbarui, Anda dapat mengubah parameter ini ke nilai yang lebih tinggi untuk meningkatkan performa.
Properti EfekSamping
Kelas ClassMemberBinding, DatabaseColumnBinding, dan XmlDocumentFieldBinding memiliki properti bernama SideEffects. Properti ini menentukan apakah nilai dari bidang, anggota, atau kolom terikat disimpan dalam cache. Nilai default properti SideEffects di kelas DatabaseColumnBinding dan XmlDocumentFieldBindingadalah false. Nilai default properti SideEffects di kelas ClassMemberBinding adalah true. Oleh karena itu, ketika bidang dokumen XML atau kolom tabel database diakses untuk kedua kalinya atau nanti dalam kebijakan, nilainya diambil dari cache. Namun, ketika anggota objek .NET diakses untuk kedua kalinya atau sesudahnya, nilai diperoleh dari objek .NET, dan bukan dari cache. Mengatur properti SideEffects dari .NET ClassMemberBinding ke false akan meningkatkan performa karena nilai bidang diambil dari cache sejak kedua kalinya dan seterusnya. Anda hanya dapat melakukan ini secara terprogram. Alat Penyusun Aturan Bisnis tidak mengekspos atribut SideEffects.
Instans dan selektivitas
Kelas XmlDocumentBinding, ClassBinding, dan DatabaseBinding memiliki dua properti: Instans dan Selectivity. Nilai Instans adalah jumlah instans kelas yang diharapkan dalam memori kerja. Nilai Selectivity adalah persentase instans kelas yang akan berhasil melewati kondisi aturan. Mesin aturan menggunakan nilai-nilai ini untuk mengoptimalkan evaluasi kondisi sehingga instans sekecil mungkin digunakan dalam evaluasi kondisi terlebih dahulu dan kemudian instans yang tersisa digunakan. Jika Anda memiliki pengetahuan sebelumnya tentang jumlah instans objek, mengatur properti Instans ke nilai tersebut akan meningkatkan performa. Demikian pula, jika Anda memiliki pengetahuan sebelumnya tentang persentase objek ini yang melewati kondisi, mengatur properti Selectivity ke nilai tersebut akan meningkatkan performa. Anda hanya dapat mengatur nilai untuk parameter ini secara terprogram. Alat Business Rule Composer tidak mengeksposnya.