Condividi tramite


Come usare espressioni per eseguire assegnazioni di messaggi

È possibile usare espressioni per modificare i messaggi in vari modi nell'orchestrazione.

Riferimento ai campi del messaggio

È possibile fare riferimento a un campo distinto in un messaggio aggiungendo il nome del campo al nome del messaggio come indicato di seguito:

MyMsg.Amount  

In questo esempio MyMsg è il messaggio e Amount è un campo identificato come campo distinto per il tipo di messaggio su cui si basa MyMsg.

Assegnazione a messaggi e parti di messaggio

È possibile assegnare un messaggio direttamente a un altro messaggio o a una parte del messaggio a una parte del 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, è necessario costruire un nuovo messaggio assegnando il primo al secondo in una forma Construct Message e modificare la proprietà nel nuovo messaggio all'interno della stessa forma Construct Message.

Annotazioni

Non è possibile fare riferimento o assegnare ai campi del messaggio, ad esempio MyMsg.Invoice.MyField, a meno che non siano stati promossi; è possibile fare riferimento o assegnare solo a interi messaggi, parti dei messaggi, proprietà di messaggio alzate di livello o campi distinti.

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 sovraccarichi 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, aggiungi un riferimento alla classe pubblica e chiama il metodo AddPart dal componente Expression nella tua orchestrazione come segue:

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

Annotazioni

Non è possibile aggiungere oggetti non serializzabili o oggetti formattati personalizzati come parti del 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 dell'istruzione del costrutto di messaggio. L'aggiunta di parti aggiuntive all'esterno dell'istruzione del costrutto di messaggio non è supportata.

Recupero di parti del 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);  
          }  
    }  
    

    Annotazioni

    Il metodo RetrieveAs supporta il recupero delle parti dei messaggi 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à del contesto della parte del messaggio

Una parte del messaggio ha un contesto separato 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à del messaggio, tramite un'espressione simile alla seguente:

Msg.PartName(myPartContextProperty)  

Per 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 usando il codice simile al seguente:

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

Annotazioni

Se si desidera ottenere o impostare proprietà di contesto personalizzate, è necessario aggiungere un riferimento al progetto dello schema delle proprietà o aggiungere un riferimento all'assembly contiene gli schemi delle proprietà nel progetto C#.

Assegnazione alle proprietà del messaggio

È possibile assegnare un valore a una proprietà del 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";  

Annotazioni

Un messaggio BizTalk è costituito dal contesto del messaggio e dalle parti del messaggio. È prima necessario inizializzare le parti del messaggio prima di poter ottenere o impostare qualsiasi proprietà del contesto del messaggio; in caso contrario, si riceverà un errore durante la fase di compilazione XLANG.

Vedere anche

Uso dei messaggi nelle orchestrazioni
Creazione di messaggi nel codice utente