Mapeo de datos estructurados con funciones de nodo mejoradas

Anteriormente, hemos informado sobre el soporte para funciones de nodos que simplifican la asignación de datos estructurados al eliminar la necesidad de copiar y pegar una función varias veces en la asignación. Repetir la misma función innecesariamente dificulta la comprensión y la modificación de la estructura de la asignación de datos.

MapForce también incluye filtros adicionales que permiten definir funciones para los nodos. Estos parámetros permiten a los desarrolladores aplicar funciones y valores predeterminados a nodos específicos, basándose en criterios definidos por el usuario. Por ejemplo, se puede aplicar una función a un nodo en función de sus metadatos, como el nombre del nodo, la longitud del nodo, la precisión del tipo de datos del nodo, anotaciones personalizadas del nodo, y más.

Analicemos un esquema con funciones de nodo mejoradas.

La mapeo de datos que se muestra a continuación es un ejemplo de la función del nodo PriceCalculation.mfd, que se instala con MapForc. Este ejemplo calcula el precio de venta final de una lista de artículos, basándose en su costo original y un factor de margen. Los datos de origen son un archivo de texto en formato CSV, y la salida es un archivo XML.

En esta configuración, se define y se aplica una función de nodo al elemento "Artículos" en el archivo de salida y a sus elementos secundarios. Al hacer doble clic en el icono de la función, que aparece en negrita a la izquierda del elemento "Artículos", se abre la definición de la función de nodo.

El menú desplegable "Aplicar a" ubicado en la esquina superior izquierda indica que la función está diseñada para aplicarse a todos los elementos secundarios de "Artículo". La sección de descripción de la función nos informa que esta función utiliza el elemento de metadatos del nodo "node_fractionDigits" como parámetro para la función de precisión de redondeo. Si "node_fractionDigits" no está definido para ningún elemento secundario, se sustituirá por el valor cero.

Podemos analizar la función del nodo con mayor detalle haciendo clic en el botón "Editar" que se muestra en la parte superior central de la imagen. Esto abrirá la función en una ventana de mapeo de datos independiente, mostrando una vista similar a la de una función definida por el usuario:

El elemento de configuración "node_fractionDigits", ubicado en la esquina inferior izquierda, proporciona un valor de entrada a la función, basándose en la estructura de los datos de destino. Analicemos más detenidamente los metadatos del nodo para localizar "node_fractionDigits".

Definición de metadatos del nodo

Los metadatos disponibles para cualquier archivo de datos estructurados provienen de la propia definición de la estructura de datos. En nuestro ejemplo, el componente de destino de la correspondencia es un documento XML. Por lo tanto, los metadatos disponibles para cualquier nodo se definen en el esquema XML.

La imagen que se muestra a continuación ilustra el esquema XML de Cálculo de Precios en la vista gráfica del esquema en XMLSpy:

El elemento XML "SalePrice" que se destaca en el diagrama se define como una instancia del tipo "Amount", que a su vez es un número decimal con un máximo de 2 dígitos fraccionarios, como se puede ver en la ventana "Facets" en la esquina inferior derecha. Por lo tanto, el metadato "node_fractionDigits" para el nodo "SalePrice" es 2.

Los parámetros de la función de nodo disponibles para cualquier archivo de datos estructurados siempre dependerán del tipo de datos (XML, base de datos relacional, PDF, archivo CSV, etc.) y del nivel de detalle incluido en la definición del esquema.

Mapeo de datos estructurados mediante parámetros de funciones de nodos

Al crear una nueva función de nodo, primero se le mostrará un valor inicial y un valor de resultado que no están relacionados. Haga clic en el botón azul "Añadir detalles del nodo" para insertar un parámetro de la función del nodo. Esto abrirá el cuadro de diálogo "Detalles del nodo", donde podrá seleccionar un parámetro del nodo:

Tenga en cuenta la opción disponible para los casos en los que un nodo específico no admite el tipo de metadato seleccionado. En el mapeo del cálculo de precios, este comportamiento se gestiona directamente en la definición de la función del nodo. La función del nodo solo se aplica a tipos de datos numéricos, y para cualquier nodo en el que no se especifique "fractionDigits", la función "substitute-missing" proporciona el valor cero en su lugar.

Observando la ejecución de la función del nodo

Podemos establecer un punto de interrupción desde el menú contextual que aparece al hacer clic derecho en cualquier nodo del componente de salida, y utilizar el depurador integrado de MapForce para observar la ejecución de la función.

En la vista parcial que se muestra a continuación, se ha establecido un punto de interrupción en el campo "SalePrice" (Precio de venta). Ejecutamos la función de mapeo desde el menú de depuración, y la ejecución se detuvo en el punto de interrupción, mostrando los valores intermedios en la ventana principal de mapeo.

Podemos observar que el último valor de "SalePrice" calculado mediante la función de mapeo fue 49.183323875. La función del nodo redondeó este valor final a 49.18.

La ejecución real de la función del nodo no se muestra en el resultado de la depuración en la ventana principal de mapeo, pero al hacer clic en la ventana de mensajes, se abre la función del nodo con todos los valores intermedios:

Los ejemplos instalados con MapForce incluyen varios otros ejemplos de mapeo de datos para funciones de nodos. El sistema de ayuda integrado de MapForce incluso incluye un tutorial paso a paso para crear un mapeo de funciones de nodos desde cero.

Puede incluso modificar el ejemplo de mapeo descrito aquí para comprobar usted mismo cómo cambia el resultado. Por ejemplo, podría editar el esquema XML para permitir tres dígitos decimales, o modificar el mapeo para permitir que la función del nodo se ejecute en el nodo "Number", que es el primer elemento hijo de "Article", y examinar el nuevo resultado.

Para ver cómo funcionan las funciones de los nodos, consulte este video de demostración de MapForce.