< Volver al curso

Punto de Control


En el punto de control  vamos a repasar los conceptos teóricos para poder pasar al siguiente nivel y no perderos con definiciones que no acabáis de entender. Ya sé que la teoría es un rollo, pero voy a intentar que no se os atragante con algún que otro dibujito. ¿Os parece?

En este bloque hemos aprendido a transformar datos que viajan a través de un evento de Mule, utilizando el lenguaje de programación DataWeave. ¿Los recuerdas?… espero que sí.

DataWeave como función

DataWeave es un lenguaje funcional, por lo tanto, quiere decir que todos los elementos que contiene este código son funciones. Un ejemplo claro lo tenemos en la utilización de variables como si fueran funciones.

Os dejo un ejemplo dónde la variable "saludo2" se utiliza como una función. Por cierto, ¿sabes qué son las expresiones Lamba?

 

 

Al ser un lenguaje funcional, no es posible recorrer los datos posición a posición como en la programación orientada a objetos.

¿A qué me refiero?

Si yo quiero recorrer un Array de datos utilizaré un bucle FOR en la programación orientada a objetos. En el caso de la programación funcional, todo el código se ejecutará «de golpe» y no será posible ir recorriendo posición a posición.

La forma de tratar los datos de un Array será con la función map, ayudando a aplicar una transformación en cada posición. En la clase Transformar datos complejos de Arrays se explica más en detalle. Un detalle a tener en cuenta cuando se está transformando Arrays desde JSON o JAVA a XML, es envolver correctamente la función map con las claves {(...)}.

Recordad que en XML siempre se nominaliza el objeto, por lo tanto, envolver con las claves mencionadas anteriormente es clave. Os dejo un ejemplo a continuación.

 

Transformación de datos

Gracias al código DataWeave, es posible transformar los datos de un evento de Mule con el formato de salida deseado. Puede ser el formato que esté esperando el sistema destino o uno que sea canónico (que tenga una estructura estándar para poder ser utilizado por varios sistemas destino).

El formato de un archivo que contiene código DataWeave es .dwl. Anypoint Studio nos permite hacer referencia a estos archivos, en vez de escribir el código en el componente Transform Message, en la clase Transformar datos en DataWeave se explica cómo hacerlo.  Gracias a esta característica, será posible hacer referencia a este archivo DWL  en más de un Transform Message, ahorrándonos tener que escribir en cada componente cuando se necesite realizar un cambio en la estructura de datos.

Formato y modelo

Así como en otros lenguajes de programación existe el String, Integer, Float, Char, Tuple, etc. En DataWeave existen varios tipos de datos, pero nos vamos a enfocar en estos 5:

  • Strings ("Hola, Ingeniero Binario")
  • Numbers (12.8-736)
  • Booleans (truefalse)
  • Arrays ([1, 2, 3]["a","b","c"][{},1,true,"a"])
  • Objects ({}{"atributo":"valor"})

DataWeave nos permite transformar los datos de entrada, mediante el mapeo de los atributos, a un formato de salida deseado. Existen varios formatos y transformaciones, pero en este módulo nos hemos centrado en JSON, XML y JAVA. A continuación, un esquema que ya vimos en otra clase y que merece la pena recordar.

 

Los formatos JSON, XML y JAVA actualmente son los que más os encontraréis, por lo tanto, en el resto no se hace hincapié.

Uno de los formatos de salida que se puede utilizar, y que no son estos 3, es application/dw . Este formato nos servirá para comprobar que las expresiones utilizadas en el código DataWeave no tienen ningún error.

A continuación veréis la estructura básica de un código DataWeave, en el que se indica que el formato de salida será application/json, que quiere decir JSON.

 

Valores clave del módulo

A continuación os dejaré las palabras reservadas que se han ido utilizando durante el nivel

  • var: Definir variables globales en la cabecera del código.
  • fun: Crear variables globales con la nomenclatura tradicional, nombrándolo como una función, aunque var realmente ya lo sea.
  • do{}: Añadir variables locales en el cuerpo del código.
  • import: Llamar a funciones DataWeave en la cabecera del código para utilizarlas en el cuerpo.
  • format: Dar formato de salida a un tipo de dato de entrada.
  • type: Definir el tipo de dato de entrada y de salida.
  • lookup(): Obtener datos de la ejecución de un Flow desde el código DataWeave.

Por otra parte, y ya para acabar, os recomiendo tener siempre el sumario de funciones que DataWeave nos proporciona por defecto (en el Core).

 

Espero que os haya gustado el nivel 5. Para finalizar, os dejo un pequeño test del punto de control  para validar vuestros conocimientos y poder seguir dándole caña afianzando conocimientos.

Si quieres saber más o necesitas ayuda personalizada, puedes suscribirte a mis servicios en el siguiente enlace

➡️ SUSCRIBIRSE A INGENIERO BINARIO ⬅️


¡Ponte a prueba con el test del punto de control!

 

Solamente sabréis todas las respuestas correctas si sacáis un 10.

Vamos a por la nota perfecta ¿no?

Mucha suerte, aunque no deberíais necesitarla 🙂

Nombre
Introduce tu correo para que puedas ver el resultado de tu prueba

 


Clases del curso


< Volver al curso