Menguji aturan menggunakan Microsoft Rules Composer

Berlaku pada: Azure Logic Apps (Standar)

Panduan ini menunjukkan cara menguji ruleset dengan menggunakan Microsoft Rules Composer dan menyertakan contoh output untuk pengujian aturan.

Mengapa aturan pengujian bertahap?

Saat Anda membangun set aturan untuk mengintegrasikan logika bisnis dengan alur kerja aplikasi logika Standar Anda, uji aturan Anda secara bertahap, atau setidaknya sebelum Anda menggunakan aturan di aplikasi Anda. Dengan demikian, Anda dapat mengonfirmasi bahwa setiap aturan berfungsi seperti yang Anda harapkan, atau menemukan dan memperbaiki masalah lebih cepat ketika aturan Anda kurang kompleks dan lebih mudah dipelajari.

Jika Anda menunggu untuk menguji semua aturan Anda pada saat yang sama, terutama ketika aturan Anda panjang atau kompleks, Anda mungkin mendapatkan lebih banyak kesalahan dari yang diharapkan, yang membutuhkan waktu lebih lama untuk diatasi dan lebih sulit untuk di-debug.

Prasyarat

  • Unduh dan instal Microsoft Rules Composer.

  • File XML yang berisi kumpulan aturan yang ingin Anda kerjakan dan fakta yang ingin Anda uji.

    Untuk menambahkan fakta, tentukan nilainya dalam file XML yang Anda referensikan dari jendela Pilih Fakta yang terbuka setelah Anda memilih Aturan Pengujian dalam langkah-langkah berikut. Anda mungkin ingin membuat pembuat fakta untuk menambahkan fakta .NET. Untuk informasi selengkapnya, lihat Membangun pembuat dan pengambil fakta.

Menguji versi aturan

  1. Buka Microsoft Rules Composer. Di jendela RuleSet Explorer , pilih versi ruleset yang ingin Anda uji, yang membuka jendela informasi versi.

  2. Dari menu pintasan versi ruleset, pilih Uji Ruleset.

    Dalam kotak Pilih Fakta yang muncul, jendela atas memperlihatkan jenis fakta yang diacu oleh aturan-aturan.

  3. Untuk menambahkan instans fakta, di bawah Dokumen XML atau Kelas .NET, pilih jenis fakta yang sesuai, lalu pilih Tambahkan Instans.

    Catatan

    Jika Anda memasukkan kelas turunan ke dalam aturan, tetapi aturan ditulis langsung terhadap anggota kelas dasar, maka yang dinyatakan adalah instans kelas dasar, dan kondisi dievaluasi terhadap instans kelas dasar.

  4. Untuk menghapus instans fakta, pilih jenis fakta yang sesuai, lalu pilih Hapus Instans.

  5. Untuk menambahkan pembuat fakta yang Anda buat, di jendela Pembuat Fakta, pilih Tambahkan.

  6. Setelah siap, pilih Uji.

    Jendela Output menunjukkan output jejak pengujian ruleset.

  7. Buka menu pintasan untuk jendela output pengujian, dan pilih opsi untuk menyimpan, menghapus, memilih, atau menyalin teks output sehingga Anda dapat meninjau hasilnya.

    Tabel berikut ini menjelaskan perintah jendela Output yang bisa Anda gunakan untuk bekerja dengan teks output:

    Tugas Perintah pintasan
    Hapus semua teks dari jendela Output. Hapus Semua
    Salin teks yang dipilih di jendela Output ke clipboard. Menyalin
    Pilih semua teks di jendela Output. Pilih Semua
    Simpan teks yang terkandung dalam jendela Output ke file tertentu. Simpan sebagai Berkas

Output pengujian pelacakan set aturan

Bagian ini menjelaskan informasi pelacakan dan aktivitas yang disertakan dengan trace saat Anda menguji set aturan menggunakan Microsoft Rules Composer. Output pelacakan dapat mencakup jenis pernyataan berikut:

  • Aktivitas informasi
  • Evaluasi kondisi
  • Pembaruan agenda
  • Aturan diaktifkan

Aktivitas Berbasis Fakta

Aktivitas ini menunjukkan perubahan pada fakta dalam memori kerja mesin. Contoh berikut menunjukkan contoh entri aktivitas fakta:

FACT ACTIVITY 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: MyTest.test
Object Instance Identifier: 872

Tabel berikut ini menjelaskan informasi dalam entri ini:

Barang Deskripsi
Pengidentifikasi Instans Mesin Aturan Pengidentifikasi unik untuk instansi RuleEngine yang menyediakan lingkungan eksekusi untuk penyalaan aturan.
Nama Ruleset Nama aturan.
Operasi Jenis operasi berikut dapat terjadi dalam aktivitas fakta:

- Penegasan: Fakta ditambahkan ke memori kerja. Catatan: Jika jenis untuk fakta yang ditegaskan tidak cocok dengan jenis apa pun yang digunakan dalam ruleset, fungsi Assert menunjukkan kesalahan "Assert – Fact Unrecognized".

- Pembaruan: Aturan memperbarui fakta, yang kemudian harus dimasukkan kembali ke dalam mesin untuk evaluasi ulang, berdasarkan data dan status baru.

- Tarik Kembali: Fakta dihapus dari memori kerja.
Jenis Objek Jenis fakta untuk aktivitas tertentu: - TypedXmlDocument

Pernyataan ditampilkan untuk instans TypedXmlDocument induk dan anak.
Pengidentifikasi Instans Objek ID instans unik untuk referensi fakta.

Evaluasi kondisi

Aktivitas ini menunjukkan hasil dari mengevaluasi predikat individu. Contoh berikut menunjukkan entri evaluasi kondisi sampel:

CONDITION EVALUATION TEST (MATCH) 1/07/2023 5:33:13 PM
Rule Engine Instance Identifier: f1dd3ff2-b4a8-4fe1-8d46-4d9b3e2502d3
Ruleset Name: LoanProcessing
Test Expression: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:Root.EmploymentType/TimeInMonths >= 18
Left Operand Value: 31
Right Operand Value: 18
Test Result: True

Tabel berikut ini menjelaskan informasi dalam entri ini:

Barang Deskripsi
Ekspresi Uji Ekspresi unary atau biner sederhana dalam aturan.
Nilai Operand Kiri Nilai istilah di sisi kiri ekspresi.
Nilai Operand Kanan Nilai istilah di sisi kanan ekspresi.
Hasil Pengujian Hasil dari evaluasi, yaitu True atau False.

Pembaruan agenda

Aktivitas ini menunjukkan aturan yang ditambahkan ke agenda mesin aturan untuk eksekusi berikutnya. Contoh berikut menunjukkan contoh entri pembaruan agenda:

AGENDA UPDATE 1/07/2023 5:33:13 PM
Rule Engine Instance Identifier: f1dd3ff2-b4a8-4fe1-8d46-4d9b3e2502d3
Ruleset Name: LoanProcessing
Operation: Add
Rule Name: Employment Status Rule
Conflict Resolution Criteria: 0

Tabel berikut ini menjelaskan informasi dalam entri ini:

Barang Deskripsi
Operasi Operasi yang menambahkan atau menghapus aturan dari agenda.
Nama Aturan Nama untuk aturan yang ditambahkan atau dihapus dari agenda.
Kriteria Resolusi Konflik Prioritas aturan, yang menentukan urutan relatif ketika tindakan dijalankan dan di mana tindakan berprioritas lebih tinggi dijalankan terlebih dahulu.

Aturan diaktifkan

Aktivitas ini menunjukkan eksekusi tindakan aturan. Contoh berikut menunjukkan entri aturan yang diaktifkan:

RULE FIRED 1/07/2023 5:33:13 PM
Rule Engine Instance Identifier: f1dd3ff2-b4a8-4fe1-8d46-4d9b3e2502d3
Ruleset Name: LoanProcessing
Rule Name: Residency Status Rule
Conflict Resolution Criteria: 10

Memperbarui fungsi

Contoh ini menunjukkan contoh aturan "InventoryCheck" dan aturan "Kirim" dalam aturan sampel bernama "Order." Ketika aturan pertama kali diperiksa, kondisi yang terkait dengan aturan "Kirim" dievaluasi ke False. Namun, ketika aturan "InventoryCheck" diaktifkan, bidang InventoryAvailable pada Pesanan diubah, dan perintah Perbarui dikeluarkan ke mesin untuk "Objek pesanan", menyebabkan evaluasi ulang untuk aturan "Kapal". Kali ini, kondisi dievaluasi menjadi True, dan aturan "Ship" diaktifkan.

Catatan

Jika aturan Anda salah ditulis, penerusan rantai dengan fungsi Pembaruan dapat menyebabkan perulangan tak terbatas. Dalam peristiwa ini, ketika Anda menguji set aturan di Microsoft Rules Composer, Anda mendapatkan pesan kesalahan dengan teks "Mesin aturan mendeteksi perulangan eksekusi."

Aturan Pemeriksaan Inventaris

IF Inventory.AllocateInventory == True
THEN Order.InventoryAvailable == True
Update(Order)

Aturan pengiriman

IF Order.InventoryAvailable == True
THEN Shipment.ShipOrder

Hasil

RULE ENGINE TRACE for RULESET: Order 3/17/2023 10:31:17 AM
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Assert
Object Type: TestClasses.Order
Object Instance Identifier: 448
CONDITION EVALUATION TEST (MATCH) 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Test Expression: TestClasses.Order.inventoryAvailable == True
Left Operand Value: null
Right Operand Value: True
Test Result: False
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Assert
Object Type: TestClasses.Shipment
Object Instance Identifier: 447
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Assert
Object Type: TestClasses.Inventory
Object Instance Identifier: 446
CONDITION EVALUATION TEST (MATCH) 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Test Expression: TestClasses.Inventory.AllocateInventory == True
Left Operand Value: True
Right Operand Value: True
Test Result: True
AGENDA UPDATE 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Add
Rule Name: InventoryCheck
Conflict Resolution Criteria: 0
RULE FIRED 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Rule Name: InventoryCheck
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Update
Object Type: TestClasses.Order
Object Instance Identifier: 448
CONDITION EVALUATION TEST (MATCH) 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Test Expression: TestClasses.Order.inventoryAvailable == True
Left Operand Value: True
Right Operand Value: True
Test Result: True
AGENDA UPDATE 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Add
Rule Name: Ship
Conflict Resolution Criteria: 0
RULE FIRED 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Rule Name: Ship
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Retract
Object Type: TestClasses.Order
Object Instance Identifier: 448
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Retract
Object Type: TestClasses.Shipment
Object Instance Identifier: 447
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Retract
Object Type: TestClasses.Inventory
Object Instance Identifier: 446

Contoh output jejak pengujian ruleset

Bagian ini menyediakan contoh yang menampilkan output pengujian ruleset untuk berbagai jenis fakta.

Jenis fakta Kelas .NET

Contoh ini adalah aturan sampel bernama "TestRule1" dalam set aturan bernama "LoanProcessing":

IF test.get_ID > 0
THEN <do something>

Hasil

RULE ENGINE TRACE for RULESET: LoanProcessing 3/16/2023 9:50:28 AM
FACT ACTIVITY 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: MyTest.test
Object Instance Identifier: 872
CONDITION EVALUATION TEST (MATCH) 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Test Expression: MyTest.test.get_ID > 0
Left Operand Value: 100
Right Operand Value: 0
Test Result: True
AGENDA UPDATE 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Add
Rule Name: TestRule1
Conflict Resolution Criteria: 0
RULE FIRED 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Rule Name: TestRule1
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Retract
Object Type: MyTest.test
Object Instance Identifier: 872

Jenis fakta TypedXmlDocument

Contoh ini menunjukkan bahwa entitas TypedXmlDocument dengan jenis dokumen bernama Microsoft.Samples.BizTalk.LoansProcessor.Case dinyatakan ke dalam mesin aturan. Berdasarkan Pemilih XPath yang ditentukan dalam aturan, mesin membuat dan menegaskan entitas turunan TypedXmlDocument dengan nama jenis Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType, berdasarkan jenis dokumen dan string pemilih. Entitas turunan TypedXmlDocument ini bernilai True dalam kondisi ini, menyebabkan pembaruan agenda dan pemicu aturan. Entitas induk dan turunan TypedXmlDocument kemudian ditarik kembali.

Contoh ini menunjukkan aturan sampel bernama "TestRule1" dalam set aturan bernama "LoanProcessing":

IF Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType.TimeInMonths >= 4
THEN <do something>

Hasil

RULE ENGINE TRACE for RULESET: LoanProcessing 3/17/2023 9:23:05 AM
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case
Object Instance Identifier: 858
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType
Object Instance Identifier: 853
CONDITION EVALUATION TEST (MATCH) 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Test Expression: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType.TimeInMonths >= 4
Left Operand Value: 6
Right Operand Value: 4
Test Result: True
AGENDA UPDATE 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Add
Rule Name: TestRule1
Conflict Resolution Criteria: 0
RULE FIRED 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Rule Name: TestRule1
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Retract
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case
Object Instance Identifier: 858
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Retract
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType
Object Instance Identifier: 853