Cómo usar expresiones para realizar asignaciones de mensajes
Puede utilizar expresiones para manipular los mensajes de varias formas en una orquestación.
Hacer referencia a los campos de un mensaje
Puede hacer referencia a un campo distintivo de un mensaje si anexa el nombre de campo al nombre de mensaje como se muestra a continuación:
MyMsg.Amount
En este ejemplo, MyMsg es el mensaje y Amount es un campo identificado como campo distintivo para el tipo de mensaje en el que se basa MyMsg.
Asignar a mensajes y partes de mensaje
Puede asignar un mensaje directamente a otro mensaje o una parte de mensaje a una parte de mensaje:
MyMsg=IncomingMsg;
MyMsg.Invoice=IncomingMsg.Invoice;
En este ejemplo, Invoice es una parte de mensaje basada en un esquema.
Si desea modificar una propiedad en un mensaje que ya se ha construido (por ejemplo, un mensaje que se ha recibido), debe construir un nuevo mensaje asignando el primero al segundo en una forma Construct Message y modificando la propiedad en el nuevo mensaje dentro de la misma forma Construct Message.
Nota
No puede establecer una referencia o asignación a campos de mensaje, como MyMsg.Invoice.MyField, excepto si están promocionados; solamente puede establecer una referencia o asignación a mensajes completos, partes de mensaje, propiedades de mensaje promocionadas o campos distintivos.
Agregar partes de mensaje
Puede agregar elementos adicionales a un mensaje de varias partes existente mediante el método XLANGs.BaseTypes.XLANGMessage.AddPart . Para ello, haga lo siguiente:
Cree un proyecto de C# y agregue una referencia a Microsoft.XLANGs.BaseTypes.
Implemente una clase pública similar a la siguiente:
public class MyAddPartHelper { public static void AddPart(XLANGMessage msg, object part, String partName) { msg.AddPart(part, partName); } }
Hay tres métodos sobrecargados para Microsoft.XLANGs.BaseTypes.AddPart:
public void AddPart(object part, String partName); public void AddPart(XLANGPart part); public void AddPart(XLANGPart part, String partName);
En el proyecto de BizTalk, agregue una referencia a la clase pública y llame al método AddPart desde la forma Expresión de la orquestación como se indica a continuación:
MyAddPartHelper.AddPart(myMessage, myStringObject, “StringObject1”);
Nota
No puede agregar objetos no serializables u objetos con formato personalizado como partes del mensaje. Todos los elementos estáticos se deben inicializar antes de agregar elementos adicionales mediante el método AddPart . Solo puede agregar partes arbitrarias a un mensaje dentro de la instrucción de construcción de mensajes correspondiente. No se admite la agregación de partes adicionales fuera de la instrucción de construcción de mensajes.
Recuperar partes de mensajes
Puede recuperar una parte de mensaje de un mensaje de varias partes existente mediante el método RetrieveAs de Microsoft.XLANGs.BaseTypes. Para ello, haga lo siguiente:
Cree un proyecto de C# y agregue una referencia a Microsoft.XLANGs.BaseTypes.
Implemente una clase pública similar a la siguiente:
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); } }
Nota
El método RetrieveAs admite la recuperación de elementos de mensaje por nombre e índice.
En el proyecto de BizTalk, agregue una referencia a la clase pública y llame al método GetPart desde la forma Expresión de la orquestación como se indica a continuación:
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
Acceso a la propiedad del contexto de una parte de mensaje
Una parte de mensaje tiene un contexto independiente del contexto de mensaje. Puede construir propiedades de contexto de elemento de mensaje a través del editor de esquemas al establecer la propiedad Property Schema Base para el elemento asociado en PartContextPropertyBase.
El acceso es similar a las propiedades de mensaje a través de una expresión como:
Msg.PartName(myPartContextProperty)
Por ejemplo:
Str=Msg.PartName(myPartContextProperty); //assumes myPartContextProperty is of type string
Acceso a la propiedad del contexto XLANGMessage
Si desea tener acceso a las propiedades del mensaje desde la interfaz XLANGMessage desde el código, puede pasar el mensaje como parámetro de tipo Microsoft.XLANGs.BaseTypes.XLANGMessage a un método desde una forma expresión y, a continuación, usar los métodos Microsoft.XLANGs.BaseTypes.XLANGMessageSetPropertyValue y GetPropertyValue para lograrlo. Para ello, haga lo siguiente:
Cree un proyecto de C# y agregue una referencia a Microsoft.XLANGs.BaseTypes y Microsoft.BizTalk.GlobalPropertySchemas.
Obtenga acceso a la propiedad de contexto mediante un código parecido al siguiente:
MyMsg.GetPropertyValue(typeof(BTS.MessageID)); MyMsg.SetPropertyValue(typeof(MIME.IsMultipartRelated), true);
Nota
Si desea obtener o establecer sus propias propiedades de contexto personalizadas, es necesario que agregue una referencia al proyecto de esquemas de propiedades o una referencia al ensamblado que contiene los esquemas de propiedades en el proyecto de C#.
Asignar a propiedades de mensaje
Puede asignar un valor a una propiedad de mensaje:
MyMessage(MySchemaNamespace.MyProperty)=True;
En BizTalk Server puede hacer referencia y asignar valores a las propiedades MIME de un mensaje de varias partes:
Message_Out.MessagePart_1(MIME.FileName)="document.doc";
Nota
Un mensaje de BizTalk está formado por el contexto del mensaje y las partes del mensaje. Antes de poder obtener o establecer cualquier propiedad de contexto del mensaje, debe inicializar las partes del mensaje; de lo contrario, recibirá un error durante el tiempo de compilación de XLANG.
Consulte también
Uso de mensajes en orquestaciones
Construcción de mensajes en código de usuario