Las funciones de nodos simplifican la representación de estructuras de datos jerárquicas

Las funciones de los nodos de MapForce simplifican la transformación de datos jerárquicos, como nodos XML o campos CSV, JSON, EDI o de bases de datos, al permitir a los usuarios definir una función de procesamiento de datos a nivel de nodo y aplicarla de forma recursiva a todos los elementos descendientes.

De manera similar, también se pueden asignar valores predeterminados a los nodos, los cuales se aplicarán automáticamente a los nodos descendientes.

Las configuraciones predeterminadas y las funciones de nodo son especialmente útiles cuando una tarea de mapeo y transformación de datos requiere la misma lógica de procesamiento para múltiples elementos descendientes en una estructura, por ejemplo:

  • Reemplace los valores nulos con otro valor, de forma recursiva para todos los elementos descendientes
  • Reemplace un valor específico (por ejemplo, "N/A") con otro valor, de forma recursiva, para todos los elementos descendientes
  • Reemplace todos los valores nulos de la base de datos al leer datos de una tabla
  • Eliminar todos los espacios en blanco al final de todos los valores provenientes de una base de datos de origen
  • Añadir un prefijo o sufijo personalizado a todos los valores que se escriben en un archivo o base de datos de destino
  • Formato de los valores de salida
  • Y muchos otros

Las opciones predeterminadas y las funciones de nodo simplifican la representación de datos jerárquicos al eliminar la necesidad de copiar y pegar la misma función varias veces en una representación. Repetir la misma función innecesariamente complica la estructura de la representación y dificulta su comprensión o modificación.

Veamos un ejemplo.

La transformación de XML a CSV que se muestra a continuación es el ejemplo OrderinUSD.mfd, incluido en el proyecto de ejemplos de MapForce, y ilustra tanto la eficiencia como la flexibilidad de las funciones de nodos.

Este ejemplo transforma una orden desde un archivo XML de origen para generar un archivo de texto en formato CSV. Además, se requiere que el elemento "Precio" en el archivo de origen, que está en euros, se convierta a dólares, y que el nombre de cada artículo solicitado se convierta a mayúsculas.

Una función de nodo cumple con ambos requisitos y se indica mediante el símbolo de la función que se encuentra a la derecha del nodo "Artículo". Al hacer doble clic en el símbolo de la función, se abre el cuadro de diálogo de definición de las funciones del nodo, que se encuentra por encima del panel de mapeo:

Esta función de un solo nodo combina dos operaciones de MapForce para realizar tanto las conversiones de moneda como las de texto necesarias. Se pueden agregar más filas a la función del nodo haciendo clic en los iconos de la izquierda para establecer un valor predeterminado o agregar una fila de función.

La primera columna de cada fila indica si la fila se aplica a un nivel específico de hijo o a todos los descendientes del modo padre.

El segundo campo define qué tipo de dato se modificará. Al hacer clic en el botón "...", se abre el cuadro de diálogo que se muestra aquí para seleccionar el tipo de dato:

Nuestro ejemplo contiene filas solo para dos tipos de datos, pero se podría definir una función de nodo con filas para cada tipo de dato posible. Para cada elemento hijo del nodo principal, se ejecutará la fila que corresponda al tipo de dato correspondiente.

El tercer campo indica si la fila utiliza una función o un valor predeterminado. En cualquier caso, al hacer clic en el botón "Editar", se abre esa fila para su configuración

La definición de una función de nodo se realiza arrastrando funciones desde la ventana de la biblioteca de funciones y/o definiendo constantes para la función, y conectándolas a las fuentes de datos y a las salidas.

El elemento "Cantidad" en el archivo de entrada de ejemplo representa en realidad la cantidad solicitada para cada artículo y no debe multiplicarse por el factor de conversión de moneda definido en la función del nodo. Es fácil definir "Cantidad" como una excepción haciendo clic derecho sobre el símbolo de la función correspondiente y desmarcando la opción "Heredar funciones del nodo de salida" en el menú contextual.

Existe un requisito adicional para el archivo de salida en formato CSV. El precio unitario de cada artículo y el subtotal deben indicarse con un signo de dólar al principio. La definición del archivo de salida muestra que las columnas "SinglePrice" y "Price" están definidas como datos de tipo texto, y MapForce convierte automáticamente los valores decimales del origen a texto.

La adición de los signos de dólar al principio se realiza mediante una función de nodo adicional que se aplica al nodo "Filas" del componente de salida, como se muestra aquí:

Para evitar que esta función se aplique a todas las columnas que contienen datos de texto, se establecieron excepciones para las columnas "Empresa" y "Artículo". Ahora, el ejemplo para la representación de datos jerárquicos utilizando funciones es completo.

Al igual que en otros ejemplos de MapForce, se proporciona un archivo de datos de origen para esta transformación, con el fin de mostrar los resultados. Aquí se muestra el archivo de origen visualizado en XMLSpy Editor de XML:

Las configuraciones de MapForce que requieren transformaciones repetitivas, como las utilizadas en un sistema de procesamiento de pedidos en línea, pueden ser automatizadas mediante MapForce Advanced Server. Para ejecutar la configuración para pruebas o una conversión única, simplemente haga clic en el botón "Salida" que se encuentra debajo de la ventana de diseño de la configuración.

De cualquier manera, nuestro ejemplo de mapeo produce este resultado:

Además del mapeo de datos descrito en esta publicación, MapForce incluye varios otros ejemplos de 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.

Para que compruebe usted mismo cómo las funciones de nodos simplifican la representación de datos jerárquicos, haga clic aquí para descargar una versión de prueba gratuita de MapForce, completamente funcional.

ACTUALIZACIÓN: Consulte esta publicación para conocer otra estrategia para aplicar funciones a los nodos, basada en metadatos del nodo, 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.