Nous allons créer un projet BizTalk de test nommé PipelineComponentTester de type
Empty Biztalk Server Project. Puis on lui ajoute un pipeline de réception que l'on appelle
TestReceiverPipeline.btp. Un pipeline est un composant de traitement des messages en entrée ou en sortie de BizTalk. Il existe différentes étapes de traitement dans un pipeline de réception :
- Décodage: utilisée par exemple pour dézipper un message reçu.
- Désassemblage: utilisée pour construire un ou plusieurs nouveaux messages et si nécessaire les transformer en XML.
- Validation: utilisée par exemple pour vérifier qu'un message respecte bien un XSD donné.
- Resolve Party: utilisée par exemple pour identifier quel est le partenaire qui a émis un message donné.
Maintenant il faut référencer le composant que nous avons créé afin de l'avoir dans la toolbox de Visual Studio :
PS : Toutes les assembly doivent être signées.
Pour tester le composant il faut l'installer dans le GAC ou le répertoire BizTalk
%programfiles%\Microsoft BizTalk Server 2006\Pipeline Components\. Pour automatiser cette opération nous allons mettre
copy $(TargetFileName) "%programfiles%\Microsoft BizTalk Server 2006\Pipeline Components\" dans la section
Build Events des propriétés des projets BizTalk :
Il faut aussi ajouter le ficher pdb si nous sommes en mode debug afin de pouvoir faire du pas à pas depuis Visual Studio.
Nous pouvons enfin tester notre composant en mode design et vérifier qu'on peut lui passer des schémas en paramètre :
Pour tester le composant au runtime il faut préciser dans l'onglet
Debug des propriétés de notre projet de test de s'exécuter avec l'application
%Program Files%\Microsoft BizTalk Server 2006\SDK\Utilities\PipelineTools\Pipeline.exe qui prend en paramètre
"C:\temp\BiztalkSolution\PipelineComponentTester\TestReceivePipeline.btp" -d "C:\temp\personnes.xml" -m "C:\temp\Resultat.xml".
Si vous ne déployez les assemblies que dans le répertoire
%programfiles%\Microsoft BizTalk Server 2006\Pipeline Components\ (en omettant la copie dans le GAC) alors au prochain démarrage de Visual Studio 2005 le composant perd ses paramètres :
Pour palier à ce problème nous allons aussi copier les dlls dans le GAC en ajoutant les instructions suivantes dans le prebuild :
"%programfiles%\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" -uf $(TargetName) et celles-ci dans le post build:
"%programfiles%\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" -if $(TargetFileName).
Ensuite dans le projet de test il faut référencer la version du composant de désassemblage qui est dans le GAC :
Une fois toutes ces étapes accomplies on peut enfin tester le composant au runtime. Dans notre cas on lui donne le document suivant en entrée :
<?xml version="1.0" encoding="UTF-8"?>
<Personnes xmlns="http://www.thb.com/schemas/0">
<Personne>
<ns:Nom xmlns:ns="http://www.thb.com/schemas/1">Nom1</ns:Nom>
<Prenom>Prenom1</Prenom>
<Adresse>Adresse1</Adresse>
<Ville>Ville1</Ville>
<Pays>Pays1</Pays>
<Sexe>M</Sexe>
</Personne>
<Personne>
<ns:Nom xmlns:ns="http://www.thb.com/schemas/1">Nom2</ns:Nom>
<Prenom>Prenom2</Prenom>
<Adresse>Adresse2</Adresse>
<Ville>Ville2</Ville>
<Pays>Pays2</Pays>
<Sexe>F</Sexe>
</Personne>
</Personnes>
La sortie est conforme à nos attentes :
<?xml version="1.0" encoding="UTF-8"?>
<Personnes xmlns="http://www.thb.com/schemas/0">
<Personne>
<Guid>146789e8-c181-4d81-a996-d1ef8300e96d</Guid>
<Prenom>Prenom1</Prenom>
<Adresse>Adresse1</Adresse>
<Guid>94664e24-e463-497c-9aa1-cd047b930307</Guid>
<Pays>Pays1</Pays>
<Sexe>M</Sexe>
</Personne>
<Personne>
<Guid>b409cf80-ee84-4976-bb60-53baee65a6f1</Guid>
<Prenom>Prenom2</Prenom>
<Adresse>Adresse2</Adresse>
<Guid>090d995a-516e-4dac-88a7-b415644d6d14</Guid>
<Pays>Pays2</Pays>
<Sexe>F</Sexe>
</Personne>
</Personnes>