Baca dalam bahasa Inggris

Bagikan melalui


Assert

Pernyataan adalah proses menambahkan instans objek ke dalam memori kerja mesin Aturan Bisnis. Mesin memproses setiap instans sesuai dengan kondisi dan tindakan yang ditulis terhadap jenis instans, menggunakan fase tindakan resolusi konflik pencocokan.

Topik berikut menjelaskan perilaku yang dihasilkan dari penggunaan fungsi Assert untuk berbagai jenis fakta.

Objek .NET

Setiap objek ditegaskan ke dalam memori kerja sebagai instans terpisah. Ini berarti bahwa instans dianalisis oleh setiap predikat yang mereferensikan jenis objek (misalnya, IF Object.Property = 1). Ini juga tersedia untuk tindakan aturan yang mereferensikan jenis, tergantung pada hasil kondisi aturan.

Pertimbangkan contoh berikut.

Aturan 1

IF A.Value = 1  
THEN A.Status = "good"  

Aturan 2

IF B.Value = 1  
THEN A.Status = "good"  

Di Aturan 1, hanya instans A yang memiliki Nilai 1 yang akan memperbarui properti Status mereka. Namun, di Aturan 2, jika kondisi dievaluasi ke true, semua instans A akan memperbarui statusnya. Bahkan, jika ada beberapa instans B, instans A akan diperbarui setiap kali kondisi dievaluasi ke true untuk instans B.

Untuk menegaskan objek .NET dari dalam aturan, Anda dapat menambahkan fungsi Assert bawaan sebagai tindakan aturan. Perhatikan bahwa mesin aturan memiliki fungsi CreateObject , tetapi tidak ditampilkan sebagai fungsi terpisah di Business Rule Composer. Pemanggilannya dibangun dengan menyeret metode konstruktor objek yang ingin Anda buat dari tampilan Kelas .NET dari Penjelajah Fakta ke panel tindakan. Komposer Aturan Bisnis kemudian menerjemahkan metode konstruktor ke dalam panggilan CreateObject dalam definisi aturan.

TypedXmlDocument

Ketika TypedXmlDocument dinyatakan, Mesin Aturan Bisnis membuat instans TypedXmlDocument turunan berdasarkan pemilih yang ditentukan dalam aturan.

Pemilih dan bidang adalah ekspresi JalurX. Anda dapat menganggap pemilih sebagai cara untuk mengisolasi simpul dokumen XML, dan bidang sebagai mengidentifikasi item tertentu dalam pemilih. Semua bidang di dalam satu pemilih dikelompokkan bersama sebagai objek oleh mesin. Saat Anda memilih simpul di bawah tab Skema XML di Facts Explorer, Komposer Aturan Bisnis secara otomatis mengisi properti Pemilih JalurX untuk semua simpul, dan properti Bidang JalurX untuk simpul apa pun yang tidak berisi simpul anak. Atau, Anda dapat memasukkan ekspresi JalurX Anda sendiri untuk Pemilih JalurX dan Bidang JalurX jika perlu.

Jika pemilih cocok dengan beberapa bagian dokumen XML, beberapa objek jenis ini ditegaskan ke dalam atau dicabut dari memori kerja mesin aturan. Asumsikan Anda memiliki XML berikut.

<root>  
   <order customer="Joe">  
      <item name="router" quantity="10" cost="550" />  
      <item name="switch" quantity="3" cost="300" />  
   </order>  
   <order customer="Jane">  
      <item name="switch" quantity="1" cost="300" />  
      <item name="cable" quantity="23" cost="9.99" />  
   </order>  
</root>  

Jika Anda menggunakan pemilih /root/order (atau //order), dua objek ditambahkan ke memori kerja.

1)

<order customer="Joe">  
   <item name="router" quantity="10" cost="550" />  
   <item name="switch" quantity="3" cost="300" />  
</order>  

2)

<order customer="Jane">  
   <item name="switch" quantity="1" cost="300" />  
   <item name="cable" quantity="23" cost="9.99" />  
</order>  

Dalam setiap pemilih, bidang individual disebut oleh JalurX.

Jika Anda menggunakan pemilih /root/order/item (atau (//order/item atau //item), empat objek ditambahkan ke memori kerja mesin aturan, dua item untuk Joe dan dua item untuk Jane.

<root>  
   <order customer="Joe">  
  
   </order>  
   <order customer="Jane">  
  
   </order>  
</root>  

Setiap objek memiliki akses ke tiga bidang—@name, @quantity, dan @cost. Karena objek adalah referensi ke dalam dokumen asli, Anda dapat merujuk ke bidang induk (misalnya, ".. /@customer").

Anda dapat menggunakan beberapa pemilih dalam dokumen yang sama. Ini memungkinkan Anda untuk melihat berbagai bagian dokumen (misalnya, jika satu bagian adalah pesanan dan bagian lain berisi alamat pengiriman). Namun, perlu diingat bahwa objek yang dibuat ditentukan oleh string JalurX yang membuatnya. Menggunakan ekspresi JalurX yang berbeda, meskipun diselesaikan ke simpul yang sama, menghasilkan TypedXmlDocument yang unik.

Mesin aturan mendukung jenis skalar .NET dasar secara asli, serta objek untuk jenis referensi. Dokumen XML pada dasarnya adalah teks, tetapi berdasarkan jenis yang ditentukan ketika aturan dibuat, nilai bidang mungkin dari jenis apa pun. Selain itu, karena bidang adalah ekspresi JalurX, bidang tersebut dapat mengembalikan nodeset, dalam hal ini item pertama dalam set digunakan sebagai nilai .

Di balik layar, mesin aturan dapat mengonversi nilai bidang teks ke salah satu jenis yang didukung melalui fungsi XmlConvert . Anda dapat menentukan ini dengan mengatur jenis di Komposer Aturan Bisnis. Pengecualian dilemparkan jika konversi tidak dimungkinkan. Jenis bool dan ganda hanya dapat diambil sebagai jenis, string, atau objek masing-masing.

TypedDataTable

Ketika TypedDataTable ditegaskan, semua DataRow yang terkandung dalam DataTable secara otomatis ditegaskan ke dalam mesin sebagai TypedDataRows. Setiap kali kolom tabel atau tabel digunakan sebagai argumen aturan, ekspresi dievaluasi terhadap TypedDataRows individual, dan bukan terhadap TypedDataTable.

Misalnya, Anda memiliki aturan berikut yang dibangun terhadap tabel "Pelanggan":

IF Northwind.Customers.CustomerID = 001  
THEN Northwind.Customers.ContactTitle = "Purchasing Manager"  

Catatan

Untuk membuat aturan terhadap tabel database, Anda harus menggunakan Tabel/baris data sebagai jenis pengikatan database.

Misalkan Anda menegaskan DataTable berikut dengan tiga DataRows ke dalam mesin (sebagai TypedDataTable).

ID Pelanggan ContactTitle
001 Petugas Pasokan
002 Petugas Pasokan
003 Petugas Pasokan

Mesin menyisipkan tiga TypedDataRows: 001, 002, dan 003.

Setiap TypedDataRow dievaluasi secara independen terhadap aturan. TypedDataRow pertama memenuhi kondisi aturan dan dua kedua gagal. Hasilnya muncul sebagai berikut.

ID Pelanggan ContactTitle
001 Manajer Pembelian
002 Petugas Pasokan
003 Petugas Pasokan

Catatan

TypedDataRows juga dapat langsung ditegaskan ke dalam mesin. Ini diproses dengan cara yang sama seperti yang dijelaskan sebelumnya.

DataSetName.DataTableName dianggap sebagai pengidentifikasi unik. Oleh karena itu, jika TypedDataTable kedua dinyatakan dengan nama Himpunan Data dan nama DataTable yang sama, itu menggantikan TypedDataTable pertama. Semua TypedDataRows yang terkait dengan TypedDataTable pertama dicabut, dan TypedDataTable kedua ditegaskan.

Koneksi Data

Seperti halnya TypedDataTable, menyeret tabel atau kolom sebagai argumen aturan di Komposer Aturan Bisnis menghasilkan aturan yang dibuat terhadap TypedDataRowyang dikembalikan dibandingkan dengan DataConnection itu sendiri.

Misalkan aturan berikut dibuat dan DataConnection dinyatakan berisi SqlConnection ke Northwind.Customers:

IF Northwind.Customers.CustomerID = 001  
THEN Northwind.Customers.ContactTitle = "Purchasing Manager"  

Saat mesin mengevaluasi aturan yang digunakan di bagian TypedDataTable , mesin secara dinamis membangun kueri yang terlihat seperti:

SELECT *  
FROM Northwind.Customers  
WHERE CustomerID = 1  

Karena hanya satu baris dalam database yang memenuhi kriteria ini, hanya satu TypedDataRow yang dibuat dan ditegaskan ke dalam mesin untuk pemrosesan lebih lanjut.

Ringkasan Entitas dan Jenis Instans yang Dinyatakan

Tabel berikut ini meringkas perilaku pernyataan untuk berbagai jenis, memperlihatkan jumlah instans yang dihasilkan yang dibuat di mesin untuk setiap entitas yang ditegaskan, serta jenis yang diterapkan ke masing-masing instans tersebut untuk mengidentifikasinya.

Entitas Jumlah instans yang dinyatakan Jenis instans
Objek .NET 1 (objek itu sendiri) Kelas .NET yang Sepenuhnya Memenuhi Syarat
TypedXmlDocument TypedXmlDocument 1-N: Berdasarkan pengikatan Pemilih yang dibuat dan konten dokumen DocumentType.Selector
TypedDataTable 1-N TypedDataRow:

Satu untuk setiap DataRow di DataTable
DataSetName.DataTableName
TypedDataRow 1 (typedDataRow dinyatakan) DataSetName.DataTableName
Koneksi Data 1-N (satu untuk setiap TypedDataRow yang dikembalikan dengan mengkueri DataConnection) DataSetName.DataTableName

Lihat juga

Fungsi Kontrol Mesin