El siguiente ejemplo muestra el uso de los controles looping y scripting, para transformar un archivo XML que contiene la información de los empleados de una empresa, ordenados por el departamento al que pertenecen, en un archivo XML que contenga la información de los departamentos de la empresa, con sus empleados.
Archivo XML Origen:
Archivo XML Destino:
1. Crear los esquemas Empleados y Departamentos:
* Al crear los esquemas tener en cuenta que los nodos Departamento y Empleado deben tener las propiedades minOccurs en 1 y maxOccurs en unbounded o *, para que puedan tener como mínimo una repetición e infinitas repeticiones.
2. Crear el mapa para realizar la transformación de empleados a departamentos (Empleados_To_Departamentos):
3. Agregar al mapa Empleados_To_Departamentos, un control Scripting, para definir la variable global Código de Departamento, la cual se utilizará para identificar los departamentos de la empresa agregados al esquema destino (Departamentos).
4. Hacer doble clic en el scripting adicionado en el paso anterior, para configurarlo:
* Definir un parámetro de entrada con un valor nulo por defecto (Solo se debe definir una entrada, porque solo se va a declarar una variable global).
* Hacer clic en la ficha Script Functoid Configuration, para definir la variable global y las operaciones para Modificar y Consultar el valor de la variable global.
5. Agregar al mapa Empleados_To_Departamentos, un control Looping, para recorrer los registros de los empleados del esquema origen.
6. Agregar al mapa Empleados_To_Departamentos, un segundo control Scripting, para obtener el valor de la variable global _CodigoDepto. Este nuevo control se debe configurar de la siguiente manera:
* No debe tener parámetros de entrada
* Hacer clic en la ficha Script Functoid Configuration, para escribir el código que permite obtener el valor asignado a la variable global _CodigoDepto
7. Agregar al mapa Empleados_To_Departamentos, el control lógico Not Equal, el cual debe tener como entradas la salida del segundo scripting (Valor de la variable global _CodigoDepto) y el código del departamento, con el fin de validar que estos valores sean diferentes, para poder incluir el departamento en el esquema destino.
8. Agregar el control Value Mapping, el cual debe tener como entradas, la salida del control lógico y el código del departamento, para que solo cuando la condición se cumpla se agregue la información del departamento al esquema destino.
9. Hacer un enlace entre el Departamento del esquema origen y el Nombre del esquema destino.
10. Agregar un tercer control scripting para actualizar el valor de la variable global _CodigoDepto por el valor del código del departamento que se encuentra en el ciclo.
11. Configurar el tercer scripting, para que reciba como parámetro de entrada el código del departamento, cuando la condición lógica se haya cumplido.
* Hacer clic en la ficha Script Functoid Configuration del tercer scripting, para escribir el código que permita actualizar el valor de la variable global _CodigoDepto.
12. Agregar un cuarto control scripting, para escribir el ciclo que permitirá obtener la información de los empleados correspondientes a un departamento y ubicarlos en el esquema destino. Este scripting debe recibir como parámetro el código del departamento que se encuentra en el ciclo y retornar la información de los empleados del departamento.
* Hacer clic en la ficha Script Functoid Configuration del cuarto scripting, para escribir el código que permita obtener los empleados de un departamento.
Finalmente el mapa esta listo para las pruebas.