Pages

mercredi 6 mars 2013

Retrieving Metadata for SAP Operations in Visual Studio


Hello, 

pour ceux qui veulent faire des interfaçages  du SAP et Biztalk Server , voila un lien très utiles .

a la prochaine  pour un Tutorial simple et rapide ;) .
Read More


XML to XSD - Comment générer un schéma XSD a partir d'un fichier XML?


Re-Bonjour ,

savez vous que les fichiers XML jouent un rôle essentiel dans toutes les applications.  :)

tous les fichiers XML se base sur  schéma et avant de générer un schéma il faut prendre des précautions supplémentaires pour éviter les problème majeurs dans vos applications.

Hé  Oui, j'ai fait face à des situations où  j'avais que des fichiers d'entrée et des fichiers de sortie, mais j'avais besoin du schéma pour valider mon parse de fichiers!!!!

je pense que vous êtes comme moi :) , des paresseux , pour créer un schéma manuellement car il faut énormément de temps  et il y a aussi des possibilités de faire des erreurs.


voila un exemple de fichier :


pour générer votre schéma  ,ouvrer votre invité de commande Visual studio (autant qu'administrateur) : 




puis taper la commande suivante :  
xsd votrefichier.xml 

c'est fini :) votre schéma a bien était crée dans le répertoire de base de l'installation Visual studio.

vous aurez quelque chose comme ça  :


pour plus de flexibilité de la commande xsd.exe  , veuillez vous référer a ce lien 
Read More


mardi 5 mars 2013

Comment Calculer Votre Age en C# ?(différence entre deux dates)

Bonjour ,

a chaque fois qu'on me demande tu a quel age!! je réponds je ne sais pas exactement :) .

c'est la vérité , pour donner votre age exacte il faut faire trop de calcule :( . donc mieux dire que je ne sais pas exactement lol .

passons au chose sérieuses , chaque développeur un jour ou un autre ,il aura besoin de faire des calcules entre deux dates , pour récupérer le nombre de jours ,le nombre de mois et le nombre d'années.

je suis la pour vous faciliter la vie avec un simple Copie-Coller :) !!!!!




j'ai choisie le cas de calcule d'age ,pour bien comprendre le code, mais vous pouvez changer la signature comme vous voulez , par exemple enlever le deuxième date (now) et la remplacer a l'intérieur de le méthode avec un DateTime.Now :) .

la méthode est une parmies beaucoup d'autres .

juste avant de faire appel a cette méthodes , veuillez passer les dates en respectons de la plus récente a la plus ancienne et gérer les exception :).

Télécharger le Code

n'oubliez pas de laisser vos commentaire et partager avec vos amis :) .


Read More


lundi 4 mars 2013

Biztalk : Comment Changer le NameSpace d'un Message Xml a partir d'un Custom Receive Pipeline

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 : 
  1. Télécharger le Wizard des Custom Pipeline 
  2. 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é ).

  • puis finish .

 

  • 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.


Read More