Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Cuando se construye un mensaje, una representación del mensaje se encuentra en la base de datos del cuadro de mensajes y otra representación está en la memoria del equipo. Si realiza la asignación de mensajes pasando una referencia de mensaje a un objeto .NET o a un ensamblado externo y, a continuación, el objeto .NET o el ensamblado externo modifica la representación en memoria en el equipo, el motor de orquestación de BizTalk no es consciente de la modificación.
Además, el motor de orquestación no invalida la parte de los datos del mensaje que se encuentra en la representación en la base de datos MessageBox. Los datos de elementos de mensaje tienen los siguientes modos de representación:
representación de XmlDocument
Representación de objeto
Representación de flujo
Representación de Parte Subyacente
La forma en que los datos del elemento de mensaje se representan en memoria depende de la construcción del mensaje y de si el tipo es una clase .NET o un esquema del lenguaje de definición de esquemas XML (XSD). Sin embargo, la representación de UnderlyingPart siempre es una secuencia que apunta a la base de datos del buzón de mensajes. Dado que los mensajes de BizTalk Server son inmutables después de ser confirmados en la base de datos MessageBox, el motor de orquestación usa la representación en la base de datos MessageBox para hacer referencia a los datos de las partes del mensaje.
Nota:
Es posible que un mensaje construido ya tenga una representación en la base de datos MessageBox si asigna elementos de un mensaje que ya está incorporado.
Por ejemplo, el siguiente código envía los datos de UnderlyingPart desde la representación en la base de datos 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);
En lugar de usar el código de usuario anterior, puede usar código similar al siguiente para devolver un documento XmlDocument a una variable XLANG de mensaje:
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
}