Después de la última certificación BizTalk 2006 R2 que salió hace casi hace 2 años y medio, Microsoft va a entregarnos el 30 de Marzo de 2011 la certificación de BizTalk 2010, más información en http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-595. Espero estudiar y reforzar mis conocimientos en EDI, RFID y BAM. El examen (como todos los demás) los podemos programar en www.prometric.com
Mapping the response from the Oracle database Adapter (weak REF CURSOR – GenRecordRow – GenRecordColumns)
Al importar los esquemas de un procedimiento almacenado que retorna un weak ref cursor, el adaptador de Oracle genera un esquema “genrecordrow” y “genrecordcolumns, en lugar de un conjunto de resultados con tipo. Este tipo de mensajes son muy complejos de manejar, por lo cual se requiere realizar una transformación que permita identificar la información retornada por el ref-cursor directamente.
Para realizar la transformación del mensaje existen diferentes opciones, a continuación un ejemplo donde se hace uso de los functoids Iteration, Record Count, Scripting y Less Than or Equal To.
En el ejemplo se utilizará el functoid Iteration para recorrer el conjunto de datos GenRecordRow, este conjunto se recorrerá hasta llegar a la posición del último registro, este valor se calculará con el functoid Record Count, posteriormente se utilizará el functoid Less Than or Equal To, para establecer la condición de las iteraciones, la cual debe ser menor o igual al total de filas o conjunto de datos GenRecordRow, finalmente se usará el functoid Scripting, para realizar la transformación de los datos a través de XSLT.
XML de entrada: Corresponde a la información retornada en el ref cursor
1. Crear el esquema empleados:
2. Crear el mapa para realizar la transformación de la estructura genérica al esquema de empleados:
3. Adicionar al mapa los functoids Iteration y Record Count, para recorrer y contar las filas genrecordrow.
4. Adicionar al mapa el functoid Less Than or Equal To, para establecer el limite o total de iteraciones. El functoid Iteration retorna el índice de la iteración y el functoid Record Count el total de registros GenRecordRow, donde estas dos salidas deben ser las entradas de la condición: Indice actual <= total de registros.
5. Adicionar al mapa el functoid Scripting, el cual debe recibir como parámetro el índice de la iteración, para consultar solamente las columnas correspondientes a la fila del índice recibido.
6. Configurar el Scripting, utilizando el tipo de Script Inline XSLT Call Template, para realizar la transformación al esquema destino.
7. Finalmente probar el mapa, y verificar que el XML de salida sea el correcto:
Looping, Scripting and global Variables in Maps
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.
- « Previous Page
- 1
- …
- 4
- 5
- 6
- 7
- 8
- …
- 17
- Next Page »