Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsqu’un message est construit, une représentation du message se trouve dans la base de données MessageBox et une autre représentation est en mémoire sur l’ordinateur. Si vous effectuez l’attribution de message en passant une référence de message à un objet .NET ou à un assembly externe, puis l’objet .NET ou l’assembly externe modifie la représentation en mémoire sur l’ordinateur, le moteur d’orchestration BizTalk n’est pas conscient de la modification.
En outre, le moteur d’orchestration n’invalide pas la partie des données du message qui se trouvent dans la représentation dans la base de données MessageBox. Les données de partie de message ont les modes de représentation suivants :
Représentation de l'objet XmlDocument
Représentation d’objet
Représentation de flux
Représentation sous-jacente
La façon dont les données de partie de message sont représentées en mémoire dépend de la construction du message et si le type est une classe .NET ou un schéma XSD (XML Schema Definition Language). Toutefois, la représentation UnderlyingPart est toujours un flux pointant vers la base de données MessageBox. Étant donné que les messages dans BizTalk Server sont immuables une fois que le message est validé dans la base de données MessageBox, le moteur d’orchestration utilise la représentation dans la base de données MessageBox pour référencer les données de partie de message.
Remarque
Un message construit peut déjà avoir une représentation dans la base de données MessageBox si vous affectez des parties à partir d’un message déjà validé.
Par exemple, le code suivant envoie les données de UnderlyingPart issues de la représentation dans la base de données 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);
Au lieu d’utiliser le code utilisateur précédent, vous pouvez utiliser du code similaire à ce qui suit pour renvoyer un document XmlDocument à une variable 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
}