Freigeben über


Verwenden von Ausdrücken zum Ausführen von Nachrichtenzuweisungen

Sie können Ausdrücke verwenden, um Nachrichten in Ihrer Orchestrierung auf verschiedene Weise zu bearbeiten.

Verweisen auf Nachrichtenfelder

Sie können in einer Nachricht auf ein gekennzeichnetes Feld verweisen, indem Sie den Feldnamen wie nachfolgend dargestellt an den Nachrichtennamen anhängen:

MyMsg.Amount  

In diesem Beispiel ist "MyMsg" die Nachricht und "Amount" das Feld, das als gekennzeichnetes Feld für den Nachrichtentyp identifiziert wurde, auf dem "MyMsg" basiert.

Zuweisen von Nachrichten und Nachrichtenteilen

Sie können eine Nachricht direkt einer anderen Nachricht oder einen Nachrichtenteil einem anderen Nachrichtenteil zuweisen:

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

In diesem Beispiel ist "Invoice" ein Nachrichtenteil, der auf einem Schema basiert.

Wenn Sie eine Eigenschaft einer bereits erstellten Nachricht ändern möchten (z. B. einer empfangenen Nachricht), müssen Sie eine neue Nachricht erstellen. Dazu weisen Sie die erste der zweiten in einer Form Nachricht erstellen zu und ändern anschließend die Eigenschaft für die neue Nachricht in derselben Form Nachricht erstellen.

Hinweis

Sie können Nachrichtenfelder wie "MyMsg.Invoice.MyField" nur dann zuweisen oder darauf verweisen, nachdem sie höher gestuft wurden. Verweisen oder Zuweisen ist nur für ganze Nachrichten, Nachrichtenteile, höher gestufte Nachrichteneigenschaften oder gekennzeichnete Felder möglich.

Hinzufügen von Nachrichtenteilen

Sie können einer vorhandenen mehrteiligen Nachricht mithilfe der XLANGs.BaseTypes.XLANGMessage.AddPart-Methode zusätzliche Teile hinzufügen. Führen Sie hierzu folgende Schritte aus:

  • Erstellen Sie ein C#-Projekt, und fügen Sie einen Verweis auf Microsoft.XLANGs.BaseTypes hinzu.

  • Implementieren Sie eine öffentliche Klasse, die folgender Klasse ähnelt:

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

    Es gibt drei überladene Methoden für Microsoft.XLANGs.BaseTypes.AddPart:

    public void AddPart(object part, String partName);  
    public void AddPart(XLANGPart part);  
    public void AddPart(XLANGPart part, String partName);  
    
  • Fügen Sie in Ihrem BizTalk-Projekt einen Verweis auf die öffentliche Klasse hinzu, und rufen Sie die AddPart-Methode aus dem Expression-Shape in Ihrer Orchestrierung wie folgt auf:

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

Hinweis

Sie können weder nicht serialisierbare Objekte noch benutzerdefinierte formatierte Objekte als Nachrichtenteile hinzufügen. Alle statischen Teile müssen initialisiert werden, bevor sie mithilfe der AddPart-Methode zusätzliche Teile hinzufügen. Sie können einer Nachricht lediglich in der Erstellungsanweisung der Nachricht beliebige Teile hinzufügen. Das Hinzufügen zusätzlicher Teile außerhalb der Erstellungsanweisung der Nachricht wird nicht unterstützt.

Abrufen von Nachrichtenteilen

Sie können einen Nachrichtenteil aus einer vorhandenen mehrteiligen Nachricht abrufen, indem Sie die RetrieveAs-Methode von Microsoft.XLANGs.BaseTypes verwenden. Führen Sie hierzu folgende Schritte aus:

  • Erstellen Sie ein C#-Projekt, und fügen Sie einen Verweis auf Microsoft.XLANGs.BaseTypes hinzu.

  • Implementieren Sie eine öffentliche Klasse, die folgender Klasse ähnelt:

    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);  
          }  
    }  
    

    Hinweis

    Die RetrieveAs-Methode unterstützt das Abrufen von Nachrichtenteilen nach Name und Index.

  • Fügen Sie in Ihrem BizTalk-Projekt einen Verweis auf die öffentliche Klasse hinzu, und rufen Sie die GetPart-Methode aus dem Expression-Shape in Ihrer Orchestrierung wie folgt auf:

    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  
    

Zugriff auf Kontexteigenschaften von Nachrichtenteilen

Ein Nachrichtenteil hat neben dem Nachrichtenkontext noch einen weiteren Kontext. Sie können Nachrichtenteilkontexteigenschaften über den Schema-Editor erstellen, wenn Sie die Eigenschaft SchemaBase-Eigenschaft für das zugeordnete Element auf PartContextPropertyBase festlegen.

Der Zugriff erfolgt ähnlich wie bei Nachrichteneigenschaften über einen Ausdruck wie den folgenden:

Msg.PartName(myPartContextProperty)  

Beispiel:

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

Zugriff auf die Kontexteigenschaft 'XLANGMessage'

Wenn Sie über den Code auf Nachrichteneigenschaften über die XLANGMessage-Schnittstelle zugreifen möchten, können Sie die Nachricht als Parameter vom Typ Microsoft.XLANGs.BaseTypes.XLANGMessage an eine Methode aus einem Expression-Shape übergeben und dann die Microsoft.XLANGs.BaseTypes.XLANGMessage-MethodenSetPropertyValue und GetPropertyValue verwenden, um dies zu erreichen. Führen Sie hierzu folgende Schritte aus:

  • Erstellen Sie ein C#-Projekt, und fügen Sie einen Verweis auf Microsoft.XLANGs.BaseTypes und Microsoft.BizTalk.GlobalPropertySchemas hinzu.

  • Greifen Sie mithilfe von Code auf die Kontexteigenschaft zu, der folgendem Code entspricht:

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

Hinweis

Wenn Sie eigene benutzerdefinierte Kontexteigenschaften abrufen oder festlegen möchten, müssen Sie dem C#-Projekt einen Verweis auf das Projekt mit dem Eigenschaftsschema oder auf die Assembly mit den Eigenschaftsschemas hinzufügen.

Zuweisen zu Nachrichteneigenschaften

Sie können einer Nachrichteneigenschaft einen Wert zuweisen:

MyMessage(MySchemaNamespace.MyProperty)=True;  

In BizTalk Server können Sie auf die MIME-Eigenschaften einer mehrteiligen Nachricht verweisen und Werte zuweisen:

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

Hinweis

Eine BizTalk-Nachricht besteht aus Nachrichtenkontext und Nachrichtenteilen. Sie müssen zunächst die Nachrichtenteile initialisieren, bevor Sie eine Nachrichtenkontexteigenschaft abrufen oder festlegen können, da andernfalls während der XLANG-Kompilierung ein Fehler auftritt.

Weitere Informationen

Verwenden von Nachrichten in Orchestrierungen
Erstellen von Nachrichten in Benutzercode