Bagikan melalui


Referensi Pesan dalam Kode Pengguna

Saat pesan dibuat, representasi pesan ada di database MessageBox dan representasi lain ada di memori di komputer. Jika Anda membuat penetapan pesan dengan meneruskan referensi pesan ke objek .NET atau ke rakitan eksternal, dan kemudian objek .NET atau rakitan eksternal memodifikasi representasi dalam memori di komputer, BizTalk Orchestration Engine tidak mengetahui modifikasi.

Selain itu, mesin orkestrasi tidak membatalkan data bagian pesan yang ada di representasi dalam database MessageBox. Data bagian pesan memiliki mode representasi berikut:

  • Representasi XmlDocument

  • Representasi objek

  • Representasi aliran data

  • Representasi Bagian Dasar

    Bagaimana data bagian pesan diwakili dalam memori tergantung pada konstruksi pesan dan apakah jenisnya adalah kelas .NET atau skema bahasa definisi Skema XML (XSD). Namun, representasi UnderlyingPart selalu merupakan aliran yang menunjuk ke database MessageBox. Karena pesan di BizTalk Server tidak dapat diubah setelah pesan diterapkan ke database MessageBox, mesin orkestrasi menggunakan representasi dalam database MessageBox untuk mereferensikan data bagian pesan.

Nota

Pesan yang dibangun mungkin sudah memiliki representasi dalam database MessageBox apabila Anda menetapkan bagian dari pesan yang sudah diterima.

Misalnya, kode berikut mengirimkan data UnderlyingPart dari representasi di database MessageBox:

// In this example, assume m1 is committed to the MessageBox  
Construct m2 {   
               m2 = m1; // m2’s part data representation is the UnderlyingPart data of m1  
               m2(myContextProperty) = “123”; // m2’s part data representation is still the UnderlyingPart data of m1  
               A.test(m2.part); // orchestration engine does not invalidate the UnderlyingPart MessageBox representation  
             }  
Send(p.o, m2);  

Alih-alih menggunakan kode pengguna sebelumnya, Anda dapat menggunakan kode yang mirip dengan yang berikut ini untuk mengembalikan dokumen XmlDocument ke variabel Message XLANG:

Void A.test(ref XmlDocument xd) {…}  
XmlDocument B.test(XmlDocument xd) {…}  
construct m2 {  
               m2 = m1;  
               m2(myContextProperty) = “123”; // m2’s part data representation is the UnderlyingPart data of m1  
               A.test(ref m2.part); // orchestration engine has enough information to know it has to invalidate the UnderlyingPart MessageBox representation  
               // or  
               m2.part = B.test(m2.part); // orchestration engine has enough information to know it has to invalidate the UnderlyingPart MessageBox representation  
             }