Partager via


Étape 4 : Création du projet HeaderHelper

Au cours de cette étape, vous créez une bibliothèque de classes .NET. Lorsqu’une orchestration de processus privé reçoit un message entrant, la bibliothèque HeaderHelper détermine si une conversion de document est requise et, si nécessaire, effectue cette conversion. Cela permet à votre orchestration de fonctionner avec différentes versions de documents RosettaNet Implementation Framework (RNIF). En outre, lorsqu’un message de réponse 3A2 est envoyé, la bibliothèque HeaderHelper effectue une conversion de document supplémentaire avant de transmettre le message.

Pour créer le projet HeaderHelper

  1. Dans Visual Studio, dans Explorateur de solutions, cliquez avec le bouton droit sur la solution Contoso, pointez sur Ajouter, puis cliquez sur Nouveau projet.

  2. Dans la boîte de dialogue Ajouter un nouveau projet, dans le volet Types de projets, sélectionnez Visual C#.

  3. Dans le volet Modèles, sélectionnez le modèle Bibliothèque de classes.

  4. Dans la zone Nom , tapez HeaderHelper, puis cliquez sur OK pour créer le projet.

  5. Dans Explorateur de solutions, cliquez avec le bouton droit sur le fichier Class1.cs dans le projet HeaderHelper, cliquez sur Renommer, tapez HeaderHelper.cs, puis appuyez sur Entrée.

Pour créer la classe Helper

  1. Dans Explorateur de solutions, développez le projet HeaderHelper, puis double-cliquez sur le nœud HeaderHelper.cs pour ouvrir le fichier source HeaderHelper.

  2. Tapez le code suivant dans le fichier source, en remplaçant tout le code existant :

    using System;  
    using System.Xml;  
    
    namespace ContosoPriceAndAvailability  
    {  
        public class Helper  
        {  
            static public XmlDocument NormalizeHeader( XmlDocument curPip )  
            {  
                string strInput = curPip.OuterXml;  
                try  
                {  
                    XmlDocument xDoc = new XmlDocument();  
    
                    strInput = strInput.Replace("<!DOCTYPE Pip3A2PriceAndAvailabilityQuery SYSTEM \"3A2PriceAndAvailabilityQueryMessageGuideline_v1_3.dtd\"[]>",String.Empty);  
                    strInput = strInput.Replace("<Pip3A2PriceAndAvailabilityQuery>","<Pip3A2PriceAndAvailabilityQuery xmlns=\"http://schemas.microsoft.com/biztalk/btarn/2004/3A2PriceAndAvailabilityQueryMessageGuideline_v1_3.dtd\">");  
                    strInput = strInput.Replace("xml:",String.Empty);  
                    strInput = strInput.Replace("b:",String.Empty);  
                    strInput = strInput.Replace("lang:",String.Empty);  
                    strInput = strInput.Replace("ns1:",String.Empty);  
    
                    xDoc.LoadXml(strInput);  
    
                    return xDoc;  
                }  
                catch(Exception ex)  
                {  
                    System.Diagnostics.Debug.Write( ex.Message );  
                    throw ex;  
                }  
            }  
    
            static public string ReturnSCWithDocType( XmlDocument xmlDoc )  
            {  
                try  
                {  
                    string sResponse = xmlDoc.InnerXml;  
                    sResponse=sResponse.Replace("ns0:",String.Empty);  
                    xmlDoc.LoadXml(sResponse);  
                    xmlDoc.DocumentElement.RemoveAllAttributes();  
                    sResponse = xmlDoc.InnerXml;  
    
                    sResponse = sResponse.Insert(0,"<!DOCTYPE Pip3A2PriceAndAvailabilityResponse SYSTEM \"3A2PriceAndAvailabilityResponseMessageGuideline_v1_3.dtd\">");  
                    sResponse = sResponse.Replace("ns0:",String.Empty);  
                    sResponse = sResponse.Replace("b:",String.Empty);  
                    sResponse = sResponse.Replace("lang:",String.Empty);  
                    sResponse = sResponse.Replace("ns1:",String.Empty);  
    
                    return sResponse;  
                }  
                catch(Exception ex)  
                {  
                    throw ex;  
                }  
            }  
        }  
    }  
    
  3. Dans le menu Fichier , cliquez sur Enregistrer tout.

Pour créer un assembly nommé fort pour le projet HeaderHelper

  1. Dans Explorateur de solutions, cliquez avec le bouton droit sur le projet HeaderHelper, puis cliquez sur Propriétés.

  2. Dans la boîte de dialogue Pages de propriétés HeaderHelper, sélectionnez Signature dans le volet gauche du volet de propriétés HeaderHelp.

  3. Dans le volet droit, cliquez sur Signer l’assembly.

  4. Cliquez sur la zone de texte Choisir un fichier de clé de nom fort , puis sélectionnez <Parcourir> dans la liste déroulante.

  5. Dans la boîte de dialogue Sélectionner un fichier, accédez à l’emplacement de votre assembly Contoso, puis double-cliquez sur FabConPriceAvail.snk.

  6. Dans le menu Fichier , cliquez sur Enregistrer tout.

  7. Dans Explorateur de solutions, développez le projet HeaderHelper, le nœud Propriétés, puis double-cliquez sur le nœud AssemblyInfo.cs pour ouvrir le fichier source AssemblyInfo.cs.

  8. Dans le fichier source AssemblyInfo.cs, tapez le code suivant sur la ligne après l’attribut AssemblyCulture :

    [assembly: AssemblyKeyFile("../../../FabConPriceAvail.snk")]  
    
  9. Dans le menu Fichier , cliquez sur Enregistrer tout.

Pour générer et déployer le projet HeaderHelper

  1. Dans Explorateur de solutions, cliquez avec le bouton droit sur le projet HeaderHelper, puis cliquez sur Générer.

  2. Démarrez une invite de commandes Visual Studio 2012.

  3. À l’invite de commandes, accédez à l’emplacement du répertoire de sortie du projet HeaderHelper (le dossier \Bin\Debug).

  4. À l’invite de commandes, tapez gacutil /if HeaderHelper.dll et appuyez sur Entrée pour installer l’assembly HeaderHelper dans le Global Assembly Cache.

Voir aussi

Étape 5 : Modification de l’orchestration du processus privé de Contoso