Bucle (functoid)
Introducción & ejemplo
El functoid Looping combina varios registros o campos del esquema de origen en un único registro del esquema de destino.
En la ilustración siguiente se muestra un functoid de bucleusado en un mapa para combinar direcciones recopiladas de dos encuestas diferentes en una sola lista de direcciones maestras.
Nota:
Los functoids Bucle y Asignación de valores (sin formato) no se deberían utilizar juntos. Si se usan ambos combinados, el resultado será una asignación compilada que supone que no hay dependencia de bucle de origen para los nodos de destino que están por debajo del functoid Bucle.
Los registros de bucle FoodSurvey y FlowerSurvey del esquema de origen se asignan al registro address en bucle del esquema de destino. Si un mensaje de instancia de entrada tiene tres registros FoodSurvey y dos registros FlowerSurvey , el functoid Loopinglos combina para crear cinco registros address en el mensaje de instancia de salida.
El siguiente código es un mensaje de instancia de entrada de ejemplo.
<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>
Este mensaje de instancia de entrada produce el siguiente mensaje de instancia de salida cuando lo procesa una asignación en la ilustración anterior.
<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>
Se han combinado las direcciones de mensajes FoodSurvey y FlowerSurvey . El mensaje combinado no indica el origen de cada dirección. Si desea realizar un seguimiento del origen, agregue un atributo Source al registro Address del esquema MasterAddress y asigne un valor constante. Para establecer este valor, conecte el campo FoodSurvey al nuevo campo Origen . En la línea del conector, modifique la propiedadLink Properties Compiler Source Links (Vínculos de origen delcompilador | de propiedades | de vínculo) a "Copy name" (Copiar nombre). Repita este proceso para el campo FlowerSurvey . Volver a procesar el mensaje de entrada anterior produce el resultado siguiente:
<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>
Relaciones con nodos
Las relaciones entre los nodos afectan al comportamiento del functoid de bucle . Por ejemplo, vincular un nodo secundario y su elemento primario en el esquema de origen al functoid bucle impide que se cree el nodo de destino.
También se ven afectados los functoids por las relaciones entre los nodos de origen. La conexión de un functoid a campos secundarios que no son del mismo nivel de los nodos de origen del functoid de bucle puede producir resultados inesperados. Por ejemplo, con el functoid Concatenar cadena para combinar el campo FoodSurvey Name y flowerSurvey Address en el campo Nombre de dirección de MasterAddress generaría el siguiente mensaje de instancia de salida:
<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>
Observe cómo falta el campo Nombre para los mensajes de origen de FoodSurvey , pero está presente para los mensajes de origen de FlowerSurvey .
Importante
La conexión de un functoid a campos secundarios de nodos de origen del functoid bucle puede producir resultados inesperados si los nodos de origen no son del mismo nivel.
El functoid Looping es una construcción eficaz que puede usar para crear bucles condicionales y asignar esquemas a catálogos. También hay algunos efectos de las rutas de acceso functoid de bucle superpuestas que debe tener en cuenta.
Pasos siguientes
Consulte también
Referencia de functoid de bucle de tabla en la guía de la interfaz de usuario y la referencia del espacio de nombres de la API de desarrolladores