Compartir a través de


Cómo usar expresiones para realizar asignaciones de mensajes

Puede usar expresiones para manipular mensajes de varias maneras en la orquestación.

Hacer referencia a campos de mensaje

Puede hacer referencia a un campo distintivo en un mensaje anexando el nombre del campo al nombre del mensaje de la siguiente manera:

MyMsg.Amount  

En este ejemplo, MyMsg es el mensaje y Amount es un campo que se ha identificado como un campo distintivo para el tipo de mensaje en el que se basa MyMsg.

Asignación a mensajes y elementos de mensaje

Puede asignar un mensaje directamente a otro mensaje, o una parte de mensaje a otra 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 mensaje nuevo 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 hacer referencia a campos de mensaje ni asignarlos, como MyMsg.Invoice.MyField, a menos que se hayan promocionado; Solo puede hacer referencia o asignar a mensajes completos, elementos de mensaje, propiedades de mensaje promocionadas o campos distintivos.

Adición de elementos 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 de la siguiente manera:

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

Nota:

No se pueden agregar objetos serializables ni objetos con formato personalizado como elementos de mensaje. Todas las partes estáticas deben inicializarse antes de agregar elementos adicionales mediante el método AddPart . Puede agregar elementos arbitrarios a un mensaje solo dentro de su instrucción de construcción de mensaje. No se admite la adición de elementos adicionales fuera de la instrucción de construcción de mensaje.

Recuperación de elementos de mensaje

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 tu proyecto de BizTalk, agrega una referencia a la clase pública y llama al método GetPart desde la forma de Expresión en tu orquestación de la siguiente manera:

    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 de contexto del elemento de mensaje

Un elemento de mensaje tiene contexto independiente del contexto del mensaje. Puede construir propiedades de contexto del 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 del 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 de 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 de una forma Expression 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.

  • Acceda a la propiedad de contexto mediante el código similar 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, debe agregar una referencia al proyecto de esquema de propiedades o agregar una referencia al ensamblado que contenga los esquemas de propiedad en el proyecto de C#.

Asignación a las propiedades del 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 consta del contexto del mensaje y de las partes del mensaje. Primero debe inicializar las partes del mensaje para poder obtener o establecer cualquier propiedad de contexto de mensaje; De lo contrario, recibirá un error durante el tiempo de compilación de XLANG.

Véase también

Uso de mensajes en orquestaciones
Construcción de mensajes en código de usuario