Condividi tramite


Come usare le espressioni per eseguire assegnazioni di messaggi

È possibile utilizzare le espressioni per manipolare i messaggi nell'orchestrazione in vari modi.

Riferimento a campi di messaggi

È possibile fare riferimento a un campo differenziante contenuto in un messaggio aggiungendo il nome del campo al nome del messaggio come segue:

MyMsg.Amount  

In questo esempio MyMsg è il messaggio e Amount è un campo identificato come campo differenziante per il tipo di messaggio su cui è basato MyMsg.

Assegnazione a messaggi e a parti di messaggio

È possibile assegnare un messaggio direttamente a un altro messaggio oppure una parte di messaggio a una parte di messaggio:

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

In questo esempio Invoice è una parte di messaggio basata su uno schema.

Se si desidera modificare una proprietà in un messaggio già costruito, ad esempio un messaggio ricevuto, sarà necessario costruire un nuovo messaggio assegnando il primo al secondo in una forma Costruisci messaggio e modificare la proprietà del nuovo messaggio all'interno della stessa forma Costruisci messaggio.

Nota

È possibile fare riferimenti o assegnazioni a campi di messaggio, quali MyMsg.Invoice.MyField, solo se questi sono stati innalzati di livello. È possibile fare riferimenti o assegnazioni solo a messaggi interi, parti di messaggio, proprietà di messaggio innalzate di livello o campi differenzianti.

Aggiunta di parti di messaggio

È possibile aggiungere parti aggiuntive a un messaggio multipart esistente usando il metodo XLANGs.BaseTypes.XLANGMessage.AddPart . A tale scopo, seguire questa procedura:

  • Creare un progetto C# e aggiungere un riferimento a Microsoft.XLANGs.BaseTypes.

  • Implementare una classe pubblica simile alla seguente:

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

    Esistono tre metodi di overload per Microsoft.XLANGs.BaseTypes.AddPart:

    public void AddPart(object part, String partName);  
    public void AddPart(XLANGPart part);  
    public void AddPart(XLANGPart part, String partName);  
    
  • Nel progetto BizTalk aggiungere un riferimento alla classe pubblica e chiamare il metodo AddPart dalla forma Expression nell'orchestrazione come indicato di seguito:

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

Nota

Non è possibile aggiungere oggetti non serializzabili o oggetti formattati personalizzati come parti di messaggio. Tutte le parti statiche devono essere inizializzate prima di aggiungere parti aggiuntive usando il metodo AddPart . È possibile aggiungere parti arbitrarie a un messaggio solo all'interno della relativa istruzione di costruzione del messaggio. L'aggiunta di parti aggiuntive all'esterno dell'istruzione di costruzione del messaggio non è supportata.

Recupero di parti di messaggio

È possibile recuperare una parte del messaggio da un messaggio multipart esistente usando il metodo RetrieveAs da Microsoft.XLANGs.BaseTypes. A tale scopo, seguire questa procedura:

  • Creare un progetto C# e aggiungere un riferimento a Microsoft.XLANGs.BaseTypes.

  • Implementare una classe pubblica simile alla seguente:

    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

    Il metodo RetrieveAs supporta il recupero di parti del messaggio in base al nome e all'indice.

  • Nel progetto BizTalk aggiungere un riferimento alla classe pubblica e chiamare il metodo GetPart dalla forma Expression nell'orchestrazione come indicato di seguito:

    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  
    

Accesso alle proprietà di contesto di parti di messaggio

Il contesto di una parte di messaggio è distinto dal contesto del messaggio. È possibile costruire proprietà di contesto della parte del messaggio tramite l'editor dello schema quando si imposta la proprietà Property Schema Base per l'elemento associato su PartContextPropertyBase.

L'accesso è simile alle proprietà dei messaggi, mediante un'espressione analoga alla seguente:

Msg.PartName(myPartContextProperty)  

Ad esempio:

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

Accesso alle proprietà di contesto XLANGMessage

Se si desidera accedere alle proprietà dei messaggi dall'interfaccia XLANGMessage dal codice, è possibile passare il messaggio come parametro di tipo Microsoft.XLANGs.BaseTypes.XLANGMessage a un metodo da una forma Expression e quindi utilizzare i metodi Microsoft.XLANGs.BaseTypes.XLANGMessageSetPropertyValue e GetPropertyValue per ottenere questo risultato. A tale scopo, seguire questa procedura:

  • Creare un progetto C# e aggiungere un riferimento a Microsoft.XLANGs.BaseTypes e Microsoft.BizTalk.GlobalPropertySchemas.

  • Accedere alla proprietà di contesto mediante un codice simile al seguente:

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

Nota

Se si desidera ottenere o impostare proprietà di contesto personalizzate, è necessario aggiungere un riferimento al progetto dello schema proprietà o a un assembly contenente gli schemi proprietà del progetto C#.

Assegnazione alle proprietà dei messaggi

È possibile assegnare un valore a una proprietà di messaggio:

MyMessage(MySchemaNamespace.MyProperty)=True;  

In BizTalk Server è possibile fare riferimento a e assegnare valori alle proprietà MIME di un messaggio in più parti:

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

Nota

Un messaggio BizTalk è costituito da contesto e parti. Prima di poter ottenere o impostare qualsiasi proprietà di contesto, è necessario inizializzare prima le parti del messaggio; in caso contrario verrà restituito un errore durante la fase di compilazione XLANG.

Vedere anche

Uso di messaggi nelle orchestrazioni
Costruzione di messaggi in codice utente