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