Functoid Ciclo
Panoramica & esempio
Il functoid ciclo combina più record o campi nello schema di origine in un singolo record nello schema di destinazione.
La figura seguente mostra un functoid ciclousato in una mappa per combinare gli indirizzi raccolti da due sondaggi diversi in un singolo elenco di indirizzi master.
Nota
Non è consigliabile usare insieme il functoid ciclo e il mapping dei valori (Flattening). Se entrambi vengono usati insieme, genera una mappa compilata che presuppone che non vi sia alcuna dipendenza di ciclo di origine per i nodi di destinazione che sono sotto il functoid ciclo .
I record di ciclo FoodSurvey e FlowerSurvey dello schema di origine vengono mappati al record indirizzo ciclo dello schema di destinazione. Se un messaggio di istanza di input contiene tre record foodSurvey e due record FlowerSurvey , il functoid ciclocombina questi elementi per creare cinque record di indirizzi nel messaggio dell'istanza di output.
Il codice seguente è un messaggio di istanza di input di esempio.
<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>
Questo messaggio di istanza di input produce il messaggio di istanza di output seguente quando elaborato dalla mappa della figura precedente.
<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>
Gli indirizzi del messaggio FoodSurvey e FlowerSurvey sono stati combinati. Nel messaggio combinato non è indicata l'origine di ciascun indirizzo. Se si vuole tenere traccia dell'origine, aggiungere un attributo Source al record Address dello schema MasterAddress e eseguire il mapping di un valore costante. Per impostare questo valore, connettere il campo FoodSurvey al nuovo campo Origine . Nella riga del connettore modificare la proprietà Link Properties | Compiler | Source Links in "Copy name". Ripetere questo processo per il campo FlowerSurvey . La rielaborazione del messaggio di input di cui sopra restituisce l'output seguente:
<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>
Relazioni con i nodi
Le relazioni tra i nodi influiscono sul comportamento del functoid Ciclo . Ad esempio, il collegamento di un nodo figlio e del relativo padre nello schema di origine al functoid ciclo impedisce la creazione del nodo di destinazione.
I functoid sono inoltre influenzati dalle relazioni tra i nodi di origine. La connessione di un functoid ai campi figlio non di pari livello dei nodi di origine del functoid ciclo può produrre risultati imprevisti. Ad esempio, usando il functoid String Concatenate per combinare il campo FoodSurvey Name e FlowerSurvey Address nel campo Nome indirizzo in MasterAddress produrrebbe il messaggio di istanza di output seguente:
<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>
Si noti come il campo Nome manca per i messaggi di origine FoodSurvey , ma è presente per i messaggi di origine FlowerSurvey .
Importante
La connessione di un functoid ai campi figlio dei nodi di origine del functoid ciclo può produrre risultati imprevisti se i nodi di origine non sono pari a pari.
Il functoid ciclo è un costrutto potente che è possibile usare per creare cicli condizionali e per eseguire il mapping degli schemi ai cataloghi. Esistono anche alcuni effetti della sovrapposizione dei percorsi functoid che è necessario prendere in considerazione.
Passaggi successivi
Vedere anche
Informazioni di riferimento sul functoid ciclo di tabelle nelle linee guida dell'interfaccia utente e nei riferimenti allo spazio dei nomi delle API per sviluppatori