Freigeben über


Einfache und komplexe Zuordnungen

BizTalk-Mapper bietet Lösungen für eine Vielzahl unterschiedlicher Zuordnungsszenarien, von einfachen hierarchischen strukturierten Vorgängen bis hin zu detaillierten komplexen Vorgängen, die Schleifen von Datensätzen und Hierarchien enthalten. Die Komplexität eines Zuordnungsszenarios hängt von Ihren Präferenzen und Geschäftsanforderungen ab. Die XSD-Sprache (XML Schema Definition Language) bietet Ihnen beträchtliche Flexibilität bei der Definition strukturierter Formate. Fast alle Zuordnungsszenarien fallen in eine von zwei Kategorien: grundlegende Zuordnung und komplexe Zuordnung.

Einfache Zuordnung

Die einfache Zuordnung ist der häufigste Zuordnungstyp, den Sie erstellen können. Bei einer einfachen Zuordnung besteht zwischen den Eingabe- und Ausgabeelementen eine direkte Beziehung. Ein Eingabeelement ist genau einem Ausgabeelement zugeordnet. Obwohl viele Arten von Transformationen und Übersetzungen mit einfacher Zuordnung möglich sind, z. B. die Verwendung mehrerer Funktoide und kaskadierende Funktoide zum Bearbeiten des kopierten Werts, bleibt das zugrunde liegende Szenario relativ einfach. Zu den einfachen Zuordnungsvorgängen zählt auch das Zuordnen von Feldern aus zwei unterschiedlichen übergeordneten Datensätzen (die nur einmal vorkommen) zu Feldern unter einem einzelnen übergeordneten Datensatz im Zielschema.

Komplexe Zuordnung

Komplexe Zuordnungen umfassen Datensätze oder Felder, die mehrmals für eine einzelne instance des Knotens Record- oder Field-Element in der Schemastruktur auftreten. Für solche Knoten ist die Max Occurs-Eigenschaft auf einen Wert größer als eins (1) festgelegt, was angibt, dass mehrere entsprechende Elemente in einer instance-Nachricht vorhanden sein können. Wenn eine BizTalk-Zuordnung diesen Typ der Variablenanzahlszuordnung verwendet (auch als Schleifen bezeichnet), muss der XSL-Stylesheetcompiler (Extensible Stylesheet Language) in der Lage sein, den richtigen Schleifenpfad zu bestimmen, über den die erforderliche Ausgabe durchlaufen werden soll.

Generell können Sie ein Feld in einem Schleifendatensatz im Quellschema mit einem Feld in einem Schleifendatensatz im Zielschema verknüpfen. Die Anzahl der entsprechenden Elemente in einer Eingabeinstanznachricht bestimmt die Anzahl der Elemente, die in der Ausgabeinstanznachricht erstellt werden. Berücksichtigen Sie die folgenden XSD-Fragmente aus Beispielen für Quell- und Zielschemas.

Quellschemafragment

<xs:element minOccurs="1" maxOccurs="5"  
            name="SrcLoopingRecord">  
  <xs:complexType>  
    <xs:sequence>  
      <xs:element name="" type="xs:string" />   
      <xs:element name="" type="xs:integer" />   
    </xs:sequence>  
  </xs:complexType>  
</xs:element>  
  

Zielschemafragment

<xs:element minOccurs="0" maxOccurs="unbounded"  
            name="DstLoopingRecord">  
  <xs:complexType>  
    <xs:sequence>  
      <xs:element name="" type="xs:string" />   
      <xs:element name="" type="xs:integer" />   
      </xs:sequence>  
    </xs:complexType>  
  </xs:element>  
  

In diesen Fragmenten ist Folgendes zu beobachten:

  • SrcLoopingRecord, ein Record-Knoten in Eingabe instance Nachrichten, kann ein bis fünfMal auftreten. Sie enthält auch die untergeordneten Field-ElementknotenField1 (eine Zeichenfolge) und Field2 (eine ganze Zahl), die einmal für jede instance des übergeordneten Elements auftreten.

  • DstLoopingRecord, ein Datensatzknoten in der Ausgabe instance Nachrichten, kann null (0) oder mehr Mal ungebunden auftreten. Es enthält auch die untergeordneten Field Element-KnotenFieldA (eine Zeichenfolge) und FieldB (eine ganze Zahl), die einmal für jede instance des übergeordneten Elements auftreten.

    Wenn man einmal annimmt, dass "Field1" zu "FieldA" und "Field2" zu "FieldB" zugeordnet sind und diese Zuordnungen durch das folgende Fragment aus einer Eingabeinstanznachricht verarbeitet wurden, würde dabei das folgende Fragment aus einer Ausgabeinstanznachricht generiert.

Fragment aus Eingabeinstanznachricht

<SrcLoopingRecord>  
    <Field1>A string</Field1>  
    <Field2>10</Field2>  
</SrcLoopingRecord>  
<SrcLoopingRecord>  
    <Field1>Another string</Field1>  
    <Field2>11</Field2>  
</SrcLoopingRecord>  
<SrcLoopingRecord>  
    <Field1>A ball of string</Field1>  
    <Field2>12</Field2>  
</SrcLoopingRecord>  

Fragment aus Ausgabeinstanznachricht

<DstLoopingRecord>  
    <FieldA>A string</FieldA>  
    <FieldB>10</FieldB>  
</DstLoopingRecord>  
<DstLoopingRecord>  
  <FieldA>Another string</FieldA>  
  <FieldB>11</FieldB>  
</DstLoopingRecord>  
<DstLoopingRecord>  
    <FieldA>A ball of string</FieldA>  
    <FieldB>12</FieldB>  
</DstLoopingRecord>  

Die Anzahl der Vorkommen des SrcLoopingRecord-Elements in der Eingabenachricht instance (3) bestimmt die Anzahl der Vorkommen des DstLoopingRecord-Elements in der Ausgabe instance Nachricht.

Eine Art von Zuordnung, die von BizTalk-Mapper nicht unterstützt wird, ist die Verwendung mehrerer Schleifenpfade. Dabei werden Felder aus mindestens zwei Schleifendatensätzen im Quellschema zu Feldern innerhalb eines einzigen Schleifendatensatzes im Zielschema zugeordnet. Dies stellt insofern ein Problem dar, da es keine Möglichkeit gibt, die Anzahl der in der Ausgabeinstanznachricht zu generierenden Elemente zu bestimmen. Mehrfache Schleifenpfade führen beim Kompilieren der Zuordnung zur Warnung, dass der Zielknoten mehrere Quellschleifenpfade besitzt. Dies ist jedoch nur eine Warnung, und aus der Anzahl der Iterationen im ersten Quellschleifenpfad wird ermittelt, wie viele Elemente in der Ausgabeinstanznachricht generiert werden. Sie können das Schleifenverhalten explizit steuern, indem Sie das Funktoid Schleifen verwenden.

Microsoft BizTalk Server eine neue Art von Schleifen namens tabellengesteuerte Schleifen eingeführt. Tabellenschleifen sind dann nützlich, wenn Ihre Ausgabeinstanznachricht auf Daten aus der Eingabeinstanznachricht basieren muss, die mit einer oder mehreren Konstanten, Verknüpfungen aus dem Quellschema oder Funktoiden kombiniert werden. In solchen Fällen kann die Ausgabeinstanznachricht mehrere Datensätze enthalten, die auf Daten aus einem einzelnen Datensatz in der Eingabeinstanznachricht basieren, die mit verschiedenen Konstanten kombiniert werden, oder die auf Daten basieren, die aus mehreren Datensätzen in der Eingabeinstanznachricht stammen. Weitere Informationen zum tabellengesteuerten Schleifen mit den Funktoiden Table Looping und Table Extractor finden Sie unter Tabellenschleifen- und Tabellenextraktions-Funktoide.

Weitere Informationen

Karten
Erstellen von Zuordnungen mit BizTalk-Mapper