Pages

lundi 17 juin 2013

XML Message Debatching in Biztalk (Use a Helper DLL and Xpath Looping) : Part 1


Bonjour ,

que pensez vous si on essais de Splitter un Message Biztalk  en plusieurs Sous-Messages ?

il y  a beaucoup  de Méthodes différentes a c'elles si  :) (Normale)  .

le but de ce tutoriel est faire en sorte de manipuler le Message Biztalk  dans une orchestration  et on utilisant une DLL (Helper Class Library).

le Tutorial sera repartie en 3 partie :


  • Part 1  :  création de notre DLL Helper qui permet de manipuler le message a splitter .
  • Part 2  : Création du projet Biztalk est l'orchestration qui Splittera le Message .


Let's Gooooooooooooooooooooo....

Part 1: XML Message Debatching in Biztalk : Création de la DLL ,Helper  

Objectifs :
  • splitter un Message XML  en n Sous-Messages XML
voici un exemple de message Xml en Imput : 



<Books>
    <Book Id="1" Title="El Coran" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0" />
    <Book Id="2" Title="El Sunna El Nabawiya" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
    <Book Id="3" Title="L'histoire du prophète mohamed" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
    <Book Id="4" Title="l'histoire du prophète adam" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
    <Book Id="5" Title="Apprendre Biztalk en 5 jours" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
    <Book Id="6" Title="Comment devenir un expert Microsoft" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
    <Book Id="7" Title="Biztalk MCTS Guide" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
    <Book Id="8" Title="Biztalk pour les nuls" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
    <Book Id="9" Title="Asp.net  pour les nuls" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
    <Book Id="10" Title="L'histoire du prophète Jésus" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
</Books>

Ps: la version du framework serait 2.0 sans utilisation du Linq, on utilisera que XmlDocument .
cette version et compatible avec la version de Biztalk Server 2006  sans problème .


notre Class comportera 2 methodes  static :
  • public  static List Split(XmlDocument OrignBooks, int NbrMAx)
    
    
  • private static XmlDocument  GetBooks(int PosStart, int PosEnd, XmlDocument OrignBooks)
voila le Méthode qui fait le Split :


public  static List<XmlDocument>  Split(XmlDocument OrignBooks, int NbrMAx)
        {
            List<XmlDocument> OutListBooks = new List<XmlDocument>();

            int BookCount = OrignBooks.SelectSingleNode("Books").ChildNodes.Count;

            int steps = BookCount / NbrMAx;
            int Pos = 0;


            if (BookCount < NbrMAx)
                steps = 1;

            if (BookCount - ((NbrMAx - 1) * steps) >= NbrMAx)
                steps++;

            for (int i = 0; i < NbrMAx - 1; i++)
            {
                XmlDocument Part = GetBooks(Pos, Pos + steps, OrignBooks);
                if (Part != null)
                    OutListBooks.Add(Part);
                Pos += steps;
            }

            XmlDocument Last = GetBooks(Pos, BookCount, OrignBooks);

            if (Last != null)
            {
                OutListBooks.Add(Last);
            }

            return   OutListBooks;
        }




voila la Méthode qui retourne une partie du Message XML selon la position de début et de fin.



 private static XmlDocument  GetBooks(int PosStart, int PosEnd, XmlDocument OrignBooks)
        {


            XmlDocument newBooks = new XmlDocument();
            XmlElement root = newBooks.CreateElement("Books");
            newBooks.AppendChild(root);
            XmlNodeList NLBook = null;

            XmlNamespaceManager nsmgr = new XmlNamespaceManager(OrignBooks.NameTable);
            nsmgr.AddNamespace("btns", "http://www.barigo.co/Blog/Bizalk/Split/2013-1.0");

            string query = String.Format("//Books/btns:Book[position() > {0} and position() <= {1}]", PosStart, PosEnd);

            NLBook = OrignBooks.SelectNodes(query, nsmgr);

            if (NLBook.Count > 0)
            {
                XmlNode targetNode = null;
                foreach (XmlNode c in NLBook)
                {
                    targetNode = newBooks.ImportNode(c, true);
                    root.AppendChild(targetNode);
                }


                return newBooks;
            }

            return null;

        }


voici les étapes a suivre pour créer votre projet de Class Libray en C# avec Visual Studio:




Etape 1: Démarrer Microsoft Visual Studio 

Etape  2: dans le Menu Bar, appuyez sur Fichier -> Nouveau Projet Project... 

Etape 3: dans la liste a gauche , appuyez sur  Windows au dessous de Visual C#.

Etape  4: dans la liste a droite , appuyez sur ClassLibrary /bibliothèque de Class

Etape 5: Changer le Nom  et tapez SplitHelper et appuyez  sur  OK  

Etape 6: puis OK.


Lorsque vous cliquez sur OK, Visual Studio va créer un espace de noms avec le nom que vous venez d'utiliser.

ajouter les deux méthodes au dessus  (Split et GetBooks) a votre Code , puis faire un Build en Mode Release pour optimiser les performances.

en ce moment vous disposer de votre Class Helper Qui permet de faire le Split de votre Message(Books) en  n Sous-Message .

exemple :

si on appel la méthode split avec un Nbr=3.

vous aurez 3 fichiers splitter  comme suite :

Fichier XML 1:


<Books>
    <Book Id="1" Title="El Coran" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0" />
    <Book Id="2" Title="El Sunna El Nabawiya" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
    <Book Id="3" Title="L'histoire du prophète mohamed" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
</Books>

Fichier XML 2: 
<Books>
    <Book Id="4" Title="l'histoire du prophète adam" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
    <Book Id="5" Title="Apprendre Biztalk en 5 jours" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
    <Book Id="6" Title="Comment devenir un expert Microsoft" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
</Books>

Fichier XML 3:
 
<Books>
    <Book Id="7" Title="Biztalk MCTS Guide" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
    <Book Id="8" Title="Biztalk pour les nuls" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
    <Book Id="9" Title="Asp.net  pour les nuls" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
    <Book Id="10" Title="L'histoire du prophète Jésus" xmlns="http://www.barigo.co/Blog/Bizalk/Split/2013-1.0"  />
</Books>


j'ai expert donné un exemple de Fichier XML avec Namespace (très important)  , car si vous n'avez pas de Namespace dans votre noeud XML , par défaut vous pouvez ignorer ces deux lignes :

 XmlNamespaceManager nsmgr = new XmlNamespaceManager(OrignBooks.NameTable);
            nsmgr.AddNamespace("btns", "http://www.barigo.co/Blog/Bizalk/Split/2013-1.0");

Dans l'attente de vos commentaires :) ...

a Suivre dans la deuxiéme partie du Tutorial  ....

NEXT : Part 2: XML Message Debatching in Biztalk : Création de l'orchestration qui fait le Splitte .


Read More


vendredi 14 juin 2013

Comparison of business integration software




if you need to choose the best Business Integration Platform, I recommend you this link, it will give you a clear idea about the various existing solutions on the IT market.

PS: dont forget to choose Biztalk :)  ,you'll not regret
Read More