Baca dalam bahasa Inggris

Bagikan melalui


Mencabut

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

Objek .NET

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

Catatan

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

Mencabut objek .NET akan menghapusnya dari memori kerja mesin aturan dan memiliki dampak berikut:

  • Aturan yang menggunakan objek dalam predikat memiliki tindakan yang dihapus dari agenda (jika ada dalam agenda).

  • Tindakan pada agenda yang menggunakan objek dihapus dari agenda.

    Catatan

    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 ditegaskan ke dalam mesin atau mencabut salah satu TypedXmlDocument turunanyang dibuat dari simpul XmlDocument induk.

Dengan menggunakan XML berikut sebagai contoh, Anda dapat mencabut TypedXmlDocument yang terkait dengan urutan atau satu atau kedua TypedXmlDocumentyang terkait dengan orderline.

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

Untuk mencabut hanya TypedXmlDocument turunan individual (yang merupakan garis urutan), Anda dapat menyeret simpul ini dari panel Skema XML ke fungsi Pencabutan . 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 adalah TypedXmlDocument di bawah objek orderline; oleh karena itu, itu akan dikaitkan dengan pesanan TypedXmlDocument, dan bukan dengan orderline TypedXmlDocument. Dalam kebanyakan kasus, perbedaan ini tidak penting. Namun, jika Anda mencabut objek pesanan, orderline dan objek produk juga dicabut. Jika Anda mencabut objek orderline, 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 ditegaskan untuk simpul tersebut. Menegaskan TypedXmlDocuments baru tingkat bawah ini menyebabkan mereka dievaluasi dalam aturan, tetapi TypedXmlDocument tingkat atas tidak memiliki pengetahuan tentang mereka. Ketika TypedXmlDocument tingkat atas dicabut, isl TypedXmlDocuments baru yang ditegaskan secara independen tidak dicabut secara otomatis. Akibatnya, jika simpul baru dibuat, biasanya paling mudah untuk mencabut dan menegaskan kembali XmlDocument lengkap.

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 TypedDataRowindividu atau seluruh TypedDataTable. Jika Anda mencabut tabel, semua baris yang berisi dicabut 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 halnya TypedXmlDocuments, jika Anda menegaskan tambahan, TypedDataRows baru untuk DataTable yang sama setelah menegaskan TypedDataTable, mereka diperlakukan sebagai entitas individual dan mencabut TypedDataTable tidak menghasilkan pencabutan TypedDataRowtambahan ini. Hanya TypedDataRowyang terkandung dalam TypedDataTable saat ditegaskan yang dicabut.

Koneksi Data

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

Saat menggunakan DataConnection, setiap operasi pencabutan pada TypedDataRow individu menempatkan mesin ke dalam keadaan tidak konsisten. Oleh karena itu, operasi tidak diizinkan pada TypedDataRowindividu yang terkait dengan DataConnection. Jika Anda menyeret tabel (menggunakan parameter DataConnection ) ke dalam fungsi Cabut , Anda akan mencabut DataConnection.

Lihat juga

Fungsi Kontrol Mesin