Partager via


Gestionnaire de propriété XPath arbitraire (exemple BizTalk Server)

Le gestionnaire de propriétés XPath arbitraires (exemple BizTalk Server) montre comment écrire un composant de pipeline personnalisé pour promouvoir des propriétés spécifiques sur un document XML soumis à BizTalk Server. Vous pouvez utiliser la fonctionnalité contenue dans l'exemple pour créer des composants Standard, Assembleur et Désassembleur personnalisés pour évaluer des expressions XPath.

Fonctions de l'exemple

L'exemple inclut un document XML de bon de commande à traiter, DocInstance.xml. L'exemple utilise les étapes suivantes pour traiter DocInstance.xml :

  1. DocInstance.xml est récupéré par un port de réception BizTalk Server et traité par un composant de pipeline personnalisé appelé Gestionnaire de propriétés XPath arbitraires.

  2. Le composant gestionnaire de propriétés XPath arbitraire promeut tous les <éléments Price> et <Quantity> avec une expression XPath arbitraire telle que définie dans le schéma po. L'expression XPath contient également la position construct à utiliser avec des éléments enfants ambigus de l'élément racine du document de bon de commande.

  3. Le composant Gestionnaire de propriété XPath arbitraire détermine le type de message et le promeut dans le contexte du message.

  4. Ensuite, le composant envoie le document XML avec les éléments promus à une orchestration pour un traitement supplémentaire.

  5. L'orchestration accède aux éléments promus dans le document de bon de commande et calcule le nombre total d'articles du bon de commande.

  6. L'orchestration crée un document de bon de commande contenant les informations du bon de commande d'origine ainsi que le total mis à jour.

  7. Le nouveau document de bon de commande est écrit dans un fichier du répertoire \Output.

Accès à l'exemple

<Chemin d’accès> d’exemples\Pipelines\ArbitraireXPathPropertyHandler

Le tableau suivant présente les fichiers de cet exemple et décrit leur fonction.

Fichier(s) Description
ArbitraryXPathPropertyHandler.sln Fichier de solution du composant de pipeline personnalisé.
ArbitraryXPathPropertyHandler.resX Fichier de ressources.
ArbitraryXPathPropertyHandlerComp.cs Implémentation du composant principal.
AssemblyInfo.cs Informations de l'assembly.
Cleanup.bat Exemple de fichier de nettoyage.
PromotingMap.cs Promotion de propriétés comme implémentation du mappage des types CLR natifs.
PropertyAttributes.cs Attributs personnalisés, descripteur de propriété et implémentation d'ICustomTypePropertyDescriptor.
SchemaMap.cs Mappage de schéma à partir du type de message à IDocumentSpec pour résoudre l'ambiguïté de schéma.
Setup.bat Création et configuration de l'exemple de composant de pipeline.
VirtualStream.cs Implémentation du flux virtuel.
SeekableReadOnlyStream.cs Implémentation du flux en lecture seule et identifiable.
ArbitraryXPathSample.sln Exemple de fichier de solution de l'orchestration.
CalculateTotalAmount.odx Exemple d'orchestration.
PODocument.xsd Schéma de bon de commande.
DocInstance.xml Exemple d'instance de bon de commande.

Génération et initialisation de cet exemple

Cet exemple est conçu pour s’exécuter dans un environnement BizTalk Server avec SQL Server en cours d’exécution sur le même ordinateur. Si votre environnement ne correspond pas à cette configuration, vous devez modifier le gestionnaire de propriétés XPath arbitraires (BizTalk Server Sample) pour qu’il pointe vers le bon SQL Server ordinateur.

Important

Setup.bat suppose que votre répertoire d'installation de Microsoft Windows est C:\Windows. Si votre installation Windows se trouve dans un autre répertoire, vous devez modifier le fichier ArbitraryXPathPropertyHandler.csproj pour refléter l'emplacement de l'assembly Microsoft.BizTalk.Component.Utilities dans le GAC. Dans l’élément Reference, remplacez <SYSTEMROOT> par l’emplacement où Windows est installé (par exemple, C :\WINNT\).

<Reference  
  Name = "Microsoft.BizTalk.Component.Utilities"  
  AssemblyName = "Microsoft.BizTalk.Component.Utilities"  
  HintPath = "<SYSTEMROOT>\assembly\GAC\Microsoft.BizTalk.Component.Utilities\3.0.1.0__31bf3856ad364e35\Microsoft.BizTalk.Component.Utilities.dll"  
/>  

Utilisez la procédure suivante pour générer et initialiser le gestionnaire de propriétés XPath arbitraires (BizTalk Server sample).

Pour créer et initialiser l'exemple

  1. Dans une fenêtre de commande, remplacez les répertoires (cd) par le dossier suivant :

    <Chemin d’accès> d’exemples\Pipelines\ArbitraireXPathPropertyHandler

  2. Exécutez le fichier Setup.bat, qui effectue les actions suivantes :

    • crée le composant de pipeline Gestionnaire de propriété XPath arbitraire ;

    • Copie le composant de pipeline généré dans le <répertoire Chemin d’installation>\Composants de pipeline.

    • crée les ports d'envoi et de réception ;

    • crée les répertoires d'entrée et de sortie utilisés dans l'exemple ;

    • Installe l’exemple BizTalk Server orchestration ArbitraireXPathSample.

    • lie les ports à l'exemple d'orchestration ;

    • démarre l'orchestration.

    Notes

    Aucune erreur ne doit être signalée lors de la création et de l'initialisation. En cas d'erreur, veillez à ce que vous ayez tous les logiciels nécessaires installés et que les outils de création Microsoft sont disponibles dans le chemin d'accès.

    Notes

    Pour annuler les modifications apportées par Setup.bat, vous devez d’abord arrêter et redémarrer le instance hôte à partir de la console Administration BizTalk Server. Ensuite, exécutez Cleanup.bat. Vous devez exécuter Cleanup.bat avant d'exécuter Cleanup.bat une seconde fois.

Exécution de cet exemple

Utilisez la procédure suivante pour exécuter le gestionnaire de propriétés XPath arbitraire (exemple BizTalk Server).

Pour exécuter l'exemple

  1. Copiez le fichier de bon de commande DocInstance.xml dans le répertoire \Input. Le fichier de bon de commande est récupéré par un port de réception qui envoie les données XML au composant de pipeline Gestionnaire de propriété XPath arbitraire.

  2. Affichez le contenu dans le répertoire \Output. Notez la création d'un fichier contenant toutes les informations du fichier DocInstance.xml qui vous avez copié dans le répertoire \Input. La différence dans le fichier est que l’élément <TotalAmount> a maintenant été rempli avec le montant total pour le bon de commande.

Commentaires

Les expressions XPath canoniques sont des expressions simples telles que « /*[nom-local()='nom-élément' et namespaceURI()='http://MyUri.org']/*[nom-local()='nom-élément']/@*[nom-local='nom-attribut'] ».

Une expression XPath arbitraire peut être complexe, par exemple « //element-name//*[local-name()='element-name' and position()=2] ». Si c’est le cas, vous recevrez une erreur d’exécution indiquant que les expressions XPath non canoniques ne sont pas prises en charge par BizTalk Server si votre schéma a un XPath non canonique utilisé dans le corps XPath ou une propriété XPath. Une solution pour la prise en charge des expressions XPath arbitraires consiste à créer des composants Désassembleur et Assembleur personnalisés prenant en charge un corps XPath arbitraire ainsi que des expressions de propriété XPath arbitraire.

Cet exemple utilise la séquence d’étapes suivante dans le composant de pipeline personnalisé lorsque IComponent.Execute est implémenté :

  1. Crée un flux virtuel identifiable sur le flux du corps du message entrant. (Comme le message entrant peut être volumineux et que le flux peut être non identifiable, il doit avoir un faible encombrement mémoire et être capable de modifier les positions de flux.)

  2. Crée un message sortant et un corps, attribue un flux virtuel au nouveau corps, clone les propriétés du corps ainsi que le contexte de message.

  3. Obtient un schéma pour le message entrant ou basé sur les schémas spécifiés au moment de la conception.

  4. Charge le flux dans un instance de System.Xml. XmlDocument.

  5. Passe en revue les propriétés promues et les champs distinctifs et les promeut ou les écrit dans le contexte de message du message sortant.

  6. Renvoie le message sortant.

  7. Écrit le message sortant dans un fichier.

Voir aussi

Pipelines (dossier d’exemples BizTalk Server)