Comment développer des Composants de Custom Pipelines
Hé oui la partie dont chaque développeur adore J .
Avant de commencer ce petit tutorial, voici quelques fonctionnalités
des Pipelines.
On distingue deux types de Pipelines :
·
Pipelines de réception
·
Pipelines d’envoi
Les Custom Pipelines sont utilisés pour réaliser une série
d'opérations de traitement sur les messages et aussi procéder a des
traitement spécifique et complexe, par exemple :
·
Crypter et décrypter des
messages
·
Signature des Message
(numériquement parlons)
·
split d’un message en plusieurs
·
changement des propriétés
de message (élément promus, entête ou pied de message)
·
etc .
En résumé avec des customs Pipelines le traitement
des messages devient EASY !!!
Cours théorique pour ceux qui aime les définitions J
Chaque
Pipelines contient des étapes et chaque
étape peut détenir plusieurs composants de pipelines.
Il existe plusieurs catégories de
composants de pipeline chacun fait un
travail spécifique lorsqu'il est employés dans les étapes prédéfinies. Ces categories
sont :
Composant
|
Etapes
|
Rôles
|
General
|
Decode, Encode, Pre-assemble, Resolve Party
or Validate
|
Prendre un message de processus
et de produire un ou pas de message.
|
Disassemble
|
Disassemble
|
Splitter ou ventiler un message et promouvoir les propriétés
personnalisées.
|
Assemble
|
Assemble
|
Utilisé pour envelopper un
message avec une en-tête.
|
allons y pour du code !!!!! .
Je vais créer un exemple de composant de pipeline général(General Component). Le scénario est très simple. Chaque fois que je reçois un message, je veux changer dans le message dans l'espace de noms.
voici a quoi ressemble le message en entrée :
<Input xmlns="http://MonEspaceDeNomAchanger">
<Nom>BARIGO</Nom>
<Prenom>Amine</Prenom>
</Input>
voici le résultat que je veux obtenir après modification :
<Input xmlns="http://EspaceDeNomModifie">
<Nom>BARIGO</Nom>
<Prenom>Amine</Prenom>
</Input>
let Start Working :) :
Étapes :
- Télécharger le Wizard des Custom Pipeline
- après l'installation du wizard ,vous allez trouver une icone avec les type de projet Biztalk :
création du pipeline apartir du wizard :
- choisissez le projet Biztalk Server Pipline Component
- tapez le nom du projet (la routine habituelle :) )
- puis remplissez les informations suivante
- nom du Composant
- Version
- la description
- puis choisir la variable(s) que le Pipelines va utiliser (dans notre cas pas de variable utilisé ).
- après avoir fini de remplir les informations pour votre Pipelines , il faut aller fouiller un peux dans le code , chercher une méthode Execute :
public Microsoft.Biztalk.Message.Interop.IBaseMessage
Execute(Microsoft.BizTalk.Component.Interop.IPipelineContext pc,
Microsoft.BizTalk.Message.Interop.IBaseMessage pInMsg)
{
//
// TODO: implement component logic
//
// this way, it's a passthrough pipeline component
Stream originalStream = pInMsg.BodyPart.GetOriginalDataStream();
if (originalStream != null)
{
XmlDocument xdoc = new XmlDocument();
xdoc.Load(originalStream);
//l'appel a cette methode procéde au changement de l'espace de Nom du Messaage
xdoc=ChangerEspaceDeNom(xdoc,"EspaceDeNomModifie");
pInMsg.BodyPart.Data = new MemoryStream();
xdoc.Save(pInMsg.BodyPart.Data);
pInMsg.BodyPart.Data.Position = 0;
}
return pInMsg;
}
- dans cette méthode on va mettre le code qui va vous servir a changer l'espace de Nom de votre message .(allezzzzzzzzzzzzz restez concentré ).
- ajouter la nouvelle méthode ChangerEspaceDeNom (il y a plusieurs methode pour modifier le NameSpace du message ).
public static System.Xml.XmlDocument ChangerEspaceDeNom(System.Xml.XmlDocument oldDoc, string EspaceDeNom)
{
try
{
oldDoc.DocumentElement.RemoveAllAttributes();
oldDoc.DocumentElement.SetAttribute("xmlns", EspaceDeNom);
System.Xml.XmlDocument newDoc = new System.Xml.XmlDocument();
newDoc.LoadXml(oldDoc.OuterXml);
return newDoc;
}
catch (Exception ex)
{
throw ex;
}
}
- après avoir fini la partie du code, je vous invite a compiler votre solutions et générer votre DLL qui va nous servir comme référence dans votre projet Biztalk (n'oublier pas de signer la DLL).
Comment Utiliser le Custom Pipeline dans le projet Biztalk :
- dans votre solutions Biztalk ajouter un nouveau élément : Receive Pipeline
- puis ajouter la référence a votre projet et dans la barre d'outils glisser votre composant dans l'etape decode :
- Builder votre projet ,puis deployer la solutions et testez :).
j’espère que ce quick tutorial vous a donner une idée sur comment créer un Custom Receive Pipeline qui permet de Changer le Namespace d'un Message Xml.