Mencabut

Anda dapat menggunakan fungsi Cabut untuk menghapus objek dari memori kerja Mesin Aturan Bisnis. Paragraf berikut menjelaskan perilaku yang terkait dengan penarikan kembali entitas dari berbagai jenis dari memori kerja mesin aturan logika.

Objek .NET

Objek .NET dicabut dalam kebijakan dengan menggunakan fungsi Cabut . Fungsi ini tersedia di Komposer Aturan Bisnis sebagai item kosakata Functions : seret kelas (bukan rakitan atau metode) ke dalam parameter Cabut .

Nota

Jika Anda menyeret metode ke fungsi Retract , mesin mencoba untuk menarik kembali objek yang dikembalikan oleh metode .

Menarik kembali objek .NET menghapusnya dari memori kerja mesin aturan dan memiliki dampak berikut:

  • Aturan yang menggunakan objek dalam predikat akan memiliki tindakannya dihapus dari agenda (jika memang ada di agenda).

  • Tindakan pada agenda yang menggunakan objek dihapus dari agenda.

    Nota

    Tindakan lain yang lebih tinggi pada agenda mungkin telah dijalankan sebelum fungsi Pencabutan dipanggil.

  • Objek tidak lagi dievaluasi oleh mesin.

TypedXmlDocument

Anda dapat mencabut TypedXmlDocument asli yang dimasukkan ke dalam mesin atau mencabut salah satu TypedXmlDocument turunan yang dibuat dari simpul XmlDocument induk.

Dengan menggunakan XML berikut sebagai contoh, Anda dapat mencabut TypedXmlDocument yang terkait dengan pesanan atau satu atau kedua TypedXmlDocument yang terkait dengan baris pesanan.

<order>  
   <orderline customer="Joe" linenumber="001">  
      <product name="router" quantity="10" cost="550" />  
   </orderline>  
   <orderline customer="Jane" linenumber="002">  
      <product name="switch" quantity="1" cost="300" />  
   </orderline>  
</order>  

Untuk menarik kembali objek pesanan, Anda akan menyeret simpul atas untuk skema di panel fakta Skema XML. Simpul ini berakhiran ".xsd" dan mewakili simpul akar dokumen (bukan node elemen dokumen); ini memiliki pemilih "/" yang mengacu pada TypedXmlDocument awal. Ketika TypedXmlDocument induk dicabut, semua instans TypedXmlDocument yang terkait dengan TypedXmlDocument (semua TypedXmlDocuments dibuat dengan memanggil fungsi Assert berdasarkan pemilih yang digunakan dalam kebijakan) dihapus dari memori kerja.

Untuk menarik kembali hanya satu TypedXmlDocument individu (yang merupakan orderline), Anda dapat menyeret node ini dari panel Skema XML ke dalam fungsi Tarik Kembali. Penting untuk dicatat bahwa semua TypedXmlDocumentdikaitkan dengan TypedXmlDocument tingkat atas yang awalnya dinyatakan, dan bukan dengan TypedXmlDocument yang muncul di atasnya dalam hierarki pohon XML. Misalnya, produk berupa TypedXmlDocument yang berada di bawah objek orderline; karena itu, produk ini akan dikaitkan dengan TypedXmlDocument pesanan, dan bukan dengan TypedXmlDocument orderline. Dalam kebanyakan kasus, perbedaan ini tidak penting. Namun, jika Anda mencabut objek pesanan, objek garis pesanan dan objek produk juga akan dicabut. Jika Anda menarik kembali objek baris pesanan, hanya objek tersebut yang dicabut, dan bukan objek produk.

Mesin hanya berfungsi dengan dan melacak instans objek (TypedXmlDocuments) yang dibuatnya ketika TypedXmlDocument awalnya ditegaskan. Jika Anda membuat simpul tambahan—misalnya, simpul saudara ke simpul yang dipilih melalui pemilih dalam kebijakan—simpul ini tidak dievaluasi dalam aturan kecuali TypedXmlDocuments dibuat dan dinyatakan untuk node tersebut. Penentuan TypedXmlDocuments tingkat bawah baru ini mengakibatkan evaluasi dalam aturan, tetapi TypedXmlDocument tingkat atas tidak mengetahui keberadaan mereka. Ketika TypedXmlDocument tingkat atas dicabut, TypedXmlDocument yang baru dan ditegaskan secara independen tidak dicabut secara otomatis. Akibatnya, jika simpul baru dibuat, biasanya paling mudah untuk menarik kembali dan menegaskan ulang keseluruhan XmlDocument.

Kelas TypedXmlDocument mendukung sejumlah metode berguna yang dapat dipanggil dalam anggota .NET kustom sebagai bagian dari tindakan. Ini termasuk kemampuan untuk mendapatkan XmlNode yang terkait dengan TypedXmlDocument atau TypedXmlDocument induk.

TypedDataTable

Anda dapat mencabut TypedDataRow individu-individu atau seluruh TypedDataTable. Jika Anda menghapus tabel, semua baris yang terkandung di dalamnya akan dihapus dari memori kerja.

Untuk mencabut seluruh TypedDataTable , Anda perlu menggunakan fungsi pembantu untuk mengakses properti Induk di TypedDataRow, misalnya:

Retract(MyHelper.GetTypedDataTable(TypedDataRow))  

Dalam tindakan sebelumnya, Anda akan menyeret tabel ke TypedDataRow. Di GetTypedDataTable Anda akan mengembalikan nilai TypedDataRow.Parent.

Seperti Dokumen TypedXmls, jika Anda menegaskan tambahan TypedDataRow baru untuk DataTable yang sama setelah menegaskan TypedDataTable, mereka diperlakukan sebagai entitas individual dan pencabutan TypedDataTable tidak akan menyebabkan pencabutan TypedDataRow tambahan ini. Hanya TypedDataRowyang terkandung dalam TypedDataTable saat ditegaskan yang dicabut.

Koneksi Data

Saat DataConnection dicabut, semua TypedDataRow yang diambil dari database melalui kueri yang dibangun oleh DataConnection dihapus dari memori kerja. DataConnection itu sendiri juga dicabut, yang berarti bahwa tidak ada lagi TypedDataRow yang akan diperoleh melalui DataConnection (yaitu, dengan menggunakan DataConnection dalam predikat atau tindakan lain).

Saat menggunakan DataConnection, setiap operasi penarikan pada individual TypedDataRow membuat mesin berada dalam kondisi tidak konsisten. Oleh karena itu, operasi tidak diizinkan pada TypedDataRow yang bersifat individu dan terkait dengan DataConnection. Jika Anda menyeret tabel (menggunakan parameter DataConnection ) ke fungsi Cabut , Anda akan mencabut DataConnection.

Lihat Juga

Fungsi Kontrol Mesin