Notes
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.
L’un des messages créés par l’orchestration OrderBroker est un pour mettre à jour la base de données d’historique SQL Server. Ce message contient des champs du message de commande ainsi que le message de commande d’origine. L'ordre d'origine apparaît dans ce message sous forme de chaîne. Cela correspond au type de données de l’historique des commandes dans la base de données.
Il n’est pas possible de prendre un message, de le convertir en chaîne et de le placer dans un autre message avec une carte. L’orchestration utilise une fonction d’assistance, InsertOrderBody, pour ajouter le message d’ordre d’origine en tant que chaîne au message d’historique de base.
L’orchestration OrderBroker utilise la mappe CSR_OrderRequest_To_SQLHistoryInsert pour convertir le message de commande en message d’historique de base. Les informations d’une commande s’affichent sous forme d’attributs d’un élément OrderLog . Le message d’origine apparaît sous la forme d’un autre attribut de cet élément.
La méthode InsertOrderBody prend comme arguments le message d’ordre d’origine, le message d’historique de base et retourne le message d’historique terminé. Le code suivant montre les parties de la méthode qui insère le message sous forme de chaîne :
public static XmlDocument InsertOrderBody( XmlDocument orderDoc,
XmlDocument historyInsertDoc)
{
...
XmlNode root = historyInsertDoc.FirstChild;
//Create a new attribute.
XmlNode attr = historyInsertDoc.CreateNode(XmlNodeType.Attribute,
"OriginalMsg", root.NamespaceURI);
attr.Value = orderDoc.OuterXml;
try
{
// XPath expression not shown for formatting reasons and
// replaces ".." in the following code
XmlNode destnode = historyInsertDoc.SelectSingleNode("..");
//Add the attribute to the document.
destnode.Attributes.SetNamedItem(attr);
}
...
return historyInsertDoc;
}
Après avoir vérifié qu’elle a reçu les deux arguments, la méthode InsertOrderBody recherche le nœud racine du message de mise à jour de l’historique. Il crée ensuite un nœud contenant l’attribut OriginalMsg et affecte le message d’ordre d’origine à la valeur de l’attribut. À ce stade, le nœud existe simplement. Il ne fait pas encore partie d’un élément.
Après avoir créé le nœud d’attribut, la méthode recherche le nœud dans lequel il attachera l’attribut à l’aide d’une expression XPath. Après avoir localisé le nœud, la méthode ajoute le nœud d’attribut à la collection d’attributs du nœud.
Remarque
Bien que l’attribut OriginalMsg n’existe pas initialement dans le message d’historique de base, il est bien sûr spécifié dans le schéma. Les éléments XML que vous ajoutez à vos messages dans le code doivent être spécifiés dans les schémas de ces messages.
Voir aussi
Points forts de l’implémentation de la solution de gestion des processus métier