Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn eine Nachricht erstellt wird, befindet sich eine Darstellung der Nachricht in der MessageBox-Datenbank, und eine andere Darstellung befindet sich im Arbeitsspeicher auf dem Computer. Wenn Sie die Nachrichtenzuweisung vornehmen, indem Sie einen Nachrichtenverweis an ein .NET-Objekt oder eine externe Assembly übergeben und das .NET-Objekt oder die externe Assembly dann die Darstellung im Arbeitsspeicher auf dem Computer ändern, ist der BizTalk Orchestration Engine die Änderung nicht bekannt.
Darüber hinaus macht die Orchestrierungs-Engine die Nachrichtenteildaten, die in der Darstellung innerhalb der MessageBox-Datenbank gespeichert sind, nicht ungültig. Nachrichtenteildaten weisen die folgenden Darstellungsmodi auf:
XmlDocument-Darstellung
Objektdarstellung
Streamdarstellung
UnderlyingPart-Darstellung
Wie die Nachrichtenteildaten im Arbeitsspeicher dargestellt werden, hängt von der Nachrichtenkonstruktion ab und davon, ob der Typ eine .NET-Klasse oder ein XSD-Schema (XML Schema Definition Language) ist. Die UnderlyingPart-Darstellung ist jedoch immer ein Datenstrom, der auf die MessageBox-Datenbank verweist. Da Nachrichten in BizTalk Server nach dem Commit der Nachricht an die MessageBox-Datenbank unveränderlich sind, verwendet das Orchestrierungsmodul die Darstellung in der MessageBox-Datenbank, um auf Nachrichtenteildaten zu verweisen.
Hinweis
Eine erstellte Nachricht könnte möglicherweise bereits in der MessageBox-Datenbank repräsentiert sein, wenn Sie Teile aus einer Nachricht zuweisen, die bereits festgeschrieben ist.
Der folgende Code sendet beispielsweise die UnderlyingPart-Daten aus der Darstellung in der MessageBox-Datenbank:
// 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);
Anstatt den vorherigen Benutzercode zu verwenden, können Sie Code verwenden, der dem folgenden ähnelt, um ein XmlDocument-Dokument an eine Message XLANG-Variable zurückzugeben:
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
}