Freigeben über


Schleifenfunktiod

Übersicht & Beispiel

Das Looping-Functoid kombiniert mehrere Datensätze oder Felder im Quellschema in einem einzelnen Datensatz im Zielschema.

Die folgende Abbildung zeigt ein Looping-Functoid, das in einer Karte verwendet wird, um Adressen, die aus zwei verschiedenen Umfragen gesammelt wurden, in einer einzigen Masteradressenliste zu kombinieren.

Hinweis

Die Schleifen und Wertzuordnungsfunktoide (Flattening) sollten nicht zusammen verwendet werden. Wenn beide zusammen verwendet werden, ergibt sich eine kompilierte Zuordnung, bei der davon ausgegangen wird, dass keine Quellschleifenabhängigkeit für die Zielknoten unterhalb des Looping-Functoiden vorhanden ist.

Karte zur Veranschaulichung der Verwendung des Loopingfunctoids.

Die Wiederholungseinträge FoodSurvey und FlowerSurvey des Quellschemas werden dem Schleifen Adress-Eintrag des Zielschemas zugeordnet. Wenn eine Eingabeinstanznachricht drei FoodSurvey-Datensätze und zwei FlowerSurvey-Datensätze enthält, kombiniert das Looping-Functoiddiese, um fünf Adressdatensätze in der Ausgabeinstanznachricht zu erstellen.

Der folgende Code ist eine Beispiel-Eingabeinstanzmeldung.

<ns0:Surveys xmlns:ns0="http://LoopingFunctoid.Surveys">  
    <FoodSurvey Name="Karin Zimprich" Address="345 N 63rd St" City="Boston" State="MA" PostalCode="07485" />  
    <FoodSurvey Name="Wendy Wheeler" Address="7890 Broadway" City="Columbus" State="OH" PostalCode="46290" />  
    <FoodSurvey Name="Florian Voss" Address="1234 Main St" City="Denver" State="CO" PostalCode="97402" />  
    <FlowerSurvey Name="Kelly Focht" Address="456 1st Ave" City="Miami" State="FL" PostalCode="81406" />  
    <FlowerSurvey Name="Jim Kim" Address="567 2nd Ave" City="Seattle" State="WA" PostalCode="98103" />  
</ns0:Surveys>  

Diese Nachricht der Eingabeinstanz erzeugt bei Verarbeitung durch die Zuordnung in der vorherigen Abbildung die entsprechende Nachricht der Ausgabeinstanz.

<ns0:MasterAddresses xmlns:ns0="http://LoopingFunctoid.MasterAddresses">  
    <Address Name="Karin Zimprich" Street="345 N 63rd St" City="Boston" State="MA" PostalCode="07458"/>  
    <Address Name="Wendy Wheeler" Street="7890 Broadway" City="Columbus" State="OH" PostalCode="46290"/>  
    <Address Name="Florian Voss" Street="1234 Main St" City="Denver" State="CO" PostalCode="97402"/>  
    <Address Name="Kelly Focht" Street="456 1st Ave" City="Miami" State="FL" PostalCode="81406"/>  
    <Address Name="Jim Kim" Street="567 2nd Ave" City="Seattle" State="WA" PostalCode="98103"/>  
</ns0:MasterAddresses>  

Die Nachrichtenadressen "FoodSurvey " und "FlowerSurvey " wurden kombiniert. Die kombinierte Nachricht gibt nicht die Quelle jeder Adresse an. Wenn Sie die Quelle nachverfolgen möchten, fügen Sie dem Adressdatensatz des MasterAddress-Schemas ein Source-Attribut hinzu, und ordnen Sie einen konstanten Wert zu. Um diesen Wert festzulegen, verbinden Sie das Feld "FoodSurvey " mit dem neuen Feld "Quelle ". Ändern Sie auf der Verbindungslinie die Eigenschaft Linkeigenschaften | Compiler | Quellverknüpfungen auf "Namen kopieren". Wiederholen Sie diesen Vorgang für das Feld "FlowerSurvey ". Durch die erneute Verarbeitung der Eingabemeldung von oben wird die folgende Ausgabe zurückgegeben:

<ns0:MasterAddresses xmlns:ns0="http://LoopingFunctoid.MasterAddresses">  
    <Address Name="Karin Zimprich" Street="345 N 63rd St" City="Boston" State="MA" PostalCode="07458" Source="FoodSurvey"/>  
    <Address Name="Wendy Wheeler" Street="7890 Broadway" City="Columbus" State="OH" PostalCode="46290" Source="FoodSurvey"/>  
    <Address Name="Florian Voss" Street="1234 Main St" City="Denver" State="CO" PostalCode="97402" Source="FoodSurvey"/>  
    <Address Name="Kelly Focht" Street="456 1st Ave" City="Miami" State="FL" PostalCode="81406" Source="FlowerSurvey"/>  
    <Address Name="Jim Kim" Street="567 2nd Ave" City="Seattle" State="WA" PostalCode="98103" Source="FlowerSurvey"/>  
</ns0:MasterAddresses>  

Beziehungen mit Knoten

Beziehungen zwischen Knoten wirken sich auf das Verhalten des Functoids 'Looping' aus. Wenn Sie beispielsweise sowohl einen Kindknoten als auch dessen Elternknoten im Quellschema mit dem Looping-Functoid verknüpfen, wird verhindert, dass der Zielknoten erstellt wird.

Functoids sind auch von den Beziehungen zwischen Quellknoten betroffen. Das Verbinden eines Funktoids mit nicht direkt zugehörigen untergeordneten Feldern von Quellknoten des Looping-Funktoids kann zu unerwarteten Ergebnissen führen. Wenn Sie beispielsweise den Funktionsbaustein "String Verketten" verwenden, um das "Name"-Feld im FoodSurvey mit dem "Address"-Feld im FlowerSurvey zu kombinieren und in das "Address Name"-Feld im MasterAddress einzufügen, würde die folgende Ausgabeinstanznachricht erzeugt werden:

<ns0:MasterAddresses xmlns:ns0="http://LoopingFunctoid.MasterAddresses">  
    <Address Street="345 N 63rd St" City="Boston" State="MA" PostalCode="07458"/>  
    <Address Street="7890 Broadway" City="Columbus" State="OH" PostalCode="46290"/>  
    <Address Street="1234 Main St" City="Denver" State="CO" PostalCode="97402"/>  
    <Address Name="Kelly Focht" Street="456 1st Ave" City="Miami" State="FL" PostalCode="81406"/>  
    <Address Name="Jim Kim" Street="567 2nd Ave" City="Seattle" State="WA" PostalCode="98103"/>  
</ns0:MasterAddresses>  

Beachten Sie, dass das Feld "Name " für FoodSurvey-Quellnachrichten fehlt, aber für FlowerSurvey-Quellnachrichten vorhanden ist.

Von Bedeutung

Das Verbinden eines Funktoids mit untergeordneten Feldern von Quellknoten des Looping-Functoids kann zu unerwarteten Ergebnissen führen, wenn die Quellknoten nicht gleichgeordnet sind.

Das Looping Functoid ist ein leistungsstarkes Konstrukt, das Sie verwenden können, um bedingte Schleifen zu erstellen und Schemata auf Kataloge abzubilden. Es gibt auch einige Auswirkungen überlappender Looping-Functoidpfade, die Sie berücksichtigen müssen.

Nächste Schritte

Siehe auch

Table Looping Functoid Reference im UI-Leitfaden und Entwickler-API-Namensraumreferenz