Menegaskan

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

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, dalam Aturan 2, jika kondisi mengevaluasi ke true, semua instans A akan memperbarui statusnya. Faktanya, jika ada beberapa instans B, instans A akan diperbarui setiap kali kondisi dievaluasi menjadi true untuk suatu 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 Komposer Aturan Bisnis. Proses pemanggilan dilakukan dengan menyeret metode konstruktor objek yang ingin Anda buat dari tampilan Kelas .NET di Facts Explorer ke bagian aksi. Komposer Aturan Bisnis kemudian menerjemahkan metode konstruktor ke dalam panggilan CreateObject dalam definisi aturan.

TypedXmlDocument

Ketika TypedXmlDocument diverifikasi, Mesin Aturan Bisnis membuat instans turunan TypedXmlDocument berdasarkan penyeleksi yang ditentukan dalam aturan.

Selektor dan bidang adalah ekspresi XPath. Anda dapat menganggap selektor sebagai cara untuk mengisolasi simpul dokumen XML dan bidang untuk mengidentifikasi item tertentu dalam selektor. 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 XPath untuk semua simpul, dan properti Bidang XPath untuk simpul apa pun yang tidak berisi simpul anak. Atau, Anda dapat memasukkan ekspresi XPath Anda sendiri untuk XPath Selector dan XPath Field 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 direferensikan melalui XPaths.

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 XPath yang membuatnya. Menggunakan ekspresi XPath yang berbeda, bahkan jika mengarah ke simpul yang sama, menghasilkan TypedXmlDocument yang unik.

Mesin aturan secara asli mendukung tipe skalar .NET dasar, serta objek untuk tipe 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 XPath, 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 tipe di Business Rule Composer. Pengecualian dilemparkan jika konversi tidak dimungkinkan. Jenis bool dan double hanya dapat diambil sebagai jenis, string, atau objek masing-masing.

TypedDataTable

Ketika TypedDataTable dikonfirmasi, semua DataRows yang terkandung dalam DataTable secara otomatis dimasukkan ke dalam engine 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"  

Nota

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

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

ID Pelanggan JudulKontak
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 Judul Kontak
001 Manajer Pembelian
002 Petugas Pasokan
003 Petugas Pasokan

Nota

TypedDataRows juga dapat langsung dimasukkan 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, nama DataTable menggantikan TypedDataTable pertama. Semua TypedDataRow yang terkait dengan TypedDataTable pertama dicabut, dan TypedDataTable kedua ditetapkan.

Koneksi Data

Seperti halnya TypedDataTable, menggeser tabel atau kolom sebagai argumen aturan dalam Komposer Aturan Bisnis menghasilkan aturan yang dibangun berdasarkan TypedDataRows yang dikembalikan, bukan terhadap 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, menunjukkan jumlah instans yang dihasilkan yang dibuat di mesin untuk setiap entitas yang dinyatakan, 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 1-N TypedXmlDocument(s): Berdasarkan pemilihan binding yang dibuat dan konten dokumen JenisDokumen.Selector
TypedDataTable 1-N BarisDataDiketik:

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

Lihat Juga

Fungsi Kontrol Mesin