Partager via


Comment utiliser des expressions pour effectuer des affectations de messages

Vous pouvez utiliser des expressions pour manipuler des messages de différentes manières dans votre orchestration.

Référence aux champs de message

Vous pouvez faire référence à un champ distinctif dans un message en ajoutant comme suit le nom du champ au nom de message :

MyMsg.Amount  

Dans cet exemple, MyMsg est le message et Amount est un champ identifié comme un champ distinctif pour le type de message sur lequel est basé MyMsg.

Affectation à des messages et parties de message

Vous pouvez affecter un message directement à un autre message ou une partie de message à une partie de message :

MyMsg=IncomingMsg;  
MyMsg.Invoice=IncomingMsg.Invoice;  

Dans cet exemple, Invoice est une partie de message basée sur un schéma.

Si vous souhaitez modifier une propriété d'un message déjà créé, un message reçu par exemple, vous devez créer une nouvelle instance de message en affectant le premier au second dans une forme Construire un message, et modifier la propriété du nouveau message au sein de la même forme Construire un message.

Notes

Vous ne pouvez pas faire référence ou établir une affectation aux champs de message tels que MyMsg.Invoice.MyField à moins qu'ils aient été promus. De plus, vous ne pouvez procéder de la sorte qu'avec les messages entiers, les parties de messages, les propriétés de message promues ou les champs distinctifs.

Ajout de parties de message

Vous pouvez ajouter des parties supplémentaires à un message en plusieurs parties existant à l’aide de la méthode XLANGs.BaseTypes.XLANGMessage.AddPart . Pour ce faire, procédez comme suit :

  • Créez un projet C# et ajoutez une référence à Microsoft.XLANGs.BaseTypes.

  • Implémentez une classe publique similaire à celle indiquée ci-après :

    public class MyAddPartHelper  
    {  
         public static void AddPart(XLANGMessage msg, object part, String partName)  
         {  
              msg.AddPart(part, partName);  
         }  
    }  
    

    Il existe trois méthodes surchargées pour Microsoft.XLANGs.BaseTypes.AddPart :

    public void AddPart(object part, String partName);  
    public void AddPart(XLANGPart part);  
    public void AddPart(XLANGPart part, String partName);  
    
  • Dans votre projet BizTalk, ajoutez une référence à la classe publique et appelez la méthode AddPart à partir de la forme Expression dans votre orchestration comme suit :

    MyAddPartHelper.AddPart(myMessage, myStringObject, “StringObject1”);  
    

Notes

Vous ne pouvez pas ajouter d'objets non sérialisables ou d'objets formatés personnalisés en tant que parties de message. Toutes les parties statiques doivent être initialisées avant d’ajouter des parties supplémentaires à l’aide de la méthode AddPart . Vous pouvez ajouter des parties arbitraires à un message uniquement dans son instruction de construction de message. L'ajout de parties supplémentaires hors de l'instruction de construction de message n'est pas pris en charge.

Récupération des parties de message

Vous pouvez récupérer une partie de message à partir d’un message en plusieurs parties existant à l’aide de la méthode RetrieveAs de Microsoft.XLANGs.BaseTypes. Pour ce faire, procédez comme suit :

  • Créez un projet C# et ajoutez une référence à Microsoft.XLANGs.BaseTypes.

  • Implémentez une classe publique similaire à celle indiquée ci-après :

    Public class MyAddPartHelper  
    {  
         public static Object GetPart(XLANGMessage msg, string sName, Type t)  
         {  
              XLANGPart p =  msg[sName];  
              return p.RetrieveAs(t);  
         }  
         public static Object GetPart(XLANGMessage msg, int partIndex, Type t)  
         {  
               XLANGPart p = msg[partIndex];  
               return p.RetrieveAs(t);  
          }  
    }  
    

    Notes

    La méthode RetrieveAs prend en charge la récupération des parties de message par nom et par index.

  • Dans votre projet BizTalk, ajoutez une référence à la classe publique et appelez la méthode GetPart à partir de la forme Expression dans votre orchestration comme suit :

    sPart = (System.String) MyAddPartHelper.GetPart(msg, "StringObject1" , typeof(System.String));  
    //sPart is a type of System.String  
    sPart = (System.String) MyAddPartHelper.GetPart(msg, 1, typeof(System.String));  
    //Retriving the message part with index = 1  
    

Accès aux propriétés du contexte de partie de message

Dans une partie de message, le contexte est séparé du contexte de message. Vous pouvez construire des propriétés de contexte de partie de message via l’éditeur de schéma lorsque vous définissez la propriété Property Schema Base pour l’élément associé sur PartContextPropertyBase.

L'accès est similaire à celui des propriétés de message et s'effectue à l'aide d'une expression telle que :

Msg.PartName(myPartContextProperty)  

Par exemple :

Str=Msg.PartName(myPartContextProperty); //assumes myPartContextProperty is of type string  

Accès aux propriétés du contexte XLANGMessage

Si vous souhaitez accéder aux propriétés de message à partir de l’interface XLANGMessage à partir de votre code, vous pouvez passer le message en tant que paramètre de type Microsoft.XLANGs.BaseTypes.XLANGMessage à une méthode à partir d’une forme Expression, puis utiliser les méthodes Microsoft.XLANGs.BaseTypes.XLANGMessageSetPropertyValue et GetPropertyValue pour y parvenir. Pour ce faire, procédez comme suit :

  • Créez un projet C# et ajoutez une référence à Microsoft.XLANGs.BaseTypes et Microsoft.BizTalk.GlobalPropertySchemas.

  • Accédez à la propriété de contexte en utilisant un code similaire à celui indiqué ci-après :

    MyMsg.GetPropertyValue(typeof(BTS.MessageID));  
    MyMsg.SetPropertyValue(typeof(MIME.IsMultipartRelated), true);  
    

Notes

Pour obtenir ou définir vos propres propriétés de contexte personnalisées, vous devez ajouter une référence à votre projet de schéma de propriété ou à l'assembly contenant les schémas de propriété de votre projet C#.

Affectation à des propriétés de message

Vous pouvez affecter une valeur à une propriété de message :

MyMessage(MySchemaNamespace.MyProperty)=True;  

Dans BizTalk Server vous pouvez faire référence à et affecter des valeurs aux propriétés MIME d’un message en plusieurs parties :

Message_Out.MessagePart_1(MIME.FileName)="document.doc";  

Notes

Un message BizTalk se compose du contexte et des parties de message. Vous devez d'abord initialiser les parties de message avant de pouvoir obtenir ou définir les propriétés de contexte ; sinon, vous recevrez une erreur lors de la compilation XLANG.

Voir aussi

Utilisation de messages passant par des orchestrations
Construction de messages dans le code utilisateur