< Volver al curso

6.Transformar datos en una Mule Application

(No disponible en Anypoint Platform gratuito)


En esta clase os voy a explicar cómo transformar datos en una Mule Application, continuaremos manipulando el proyecto en Flow Designer desde AnyPoint Platform.

Anteriormente, creamos 2 cajitas en el Flow principal (un Listener y un logger). Ahora añadiremos un conector a la API de entrenamiento de Mulesoft y un transformador para manipular la estructura de los datos.

La API que vamos a conectar en Flow Designer podéis consultarla aquí. La API se llama Training: American Flights API y la utilizaremos de aquí en adelante para practicar y aprender con las herramientas que nos proporciona Mulesoft. Esta API nos permite realizar los métodos que hemos estado revisando en otras clases, GET, POST, PUT y DELETE de los vuelos de una compañía Americana.

Cuando realizamos una llamada a una Mule Application se genera un evento de Mule, en la clase observaremos los tipos de mensajes que puede devolver un evento, los atributos y la carga útil (Payload).

Entonces, ¿Cómo está estructurado un evento de Mule?

En el siguiente esquema podemos observar la estructura de un evento de Mule.

Y, ¿Qué es cada componente del evento?
  • Mensajes de Mule: Son los datos que pasan por el Flow en la Mule Application.
  • Payload: Es la información central del mensaje, los datos que procesa la Mule Application. En la clase de hoy el Payload va a contener la información de los vuelos.
  • Atributos: Metadatos contenidos en el encabezado del mensaje, por ejemplo el host y el puerto al que se realiza la llamada. En la clase de hoy veremos un ejemplo en el Listener.
  • Variables: Metadatos para el evento Mule. Se pueden definir y hacer referencia en la Mule Application que procesa el evento. En clases más avanzadas veremos este punto.

Por cierto, si no sabéis lo que son los metadatos podéis consultarlo en este enlace. Pero en resumen, son «datos acerca de los datos» y sirven para suministrar información sobre los datos producidos, en nuestro caso los atributos del Listener al realizar una llamada, por ejemplo.

Finalmente, vamos a transformar los datos proporcionando la estructura en el lenguaje JSON mediante un ejemplo. Una vez mapeados los atributos de entrada a los nuevos de salida definidos en el JSON, es necesario crear un script para poder aplicar la nueva estructura para todos los datos entrantes. Para ello, utilizaremos el lenguaje DataWeave 2.0 que sirve para acceder, consultar y transformar los datos de un evento de Mule (Payload en este caso).

Actualización

Mulesoft en 2023 ha quitado la posibilidad de crear una Mule Application desde Anypoint Platform con la cuenta de prueba gratuita. Igualmente os recomiendo que veáis la clase para aprender como hacerlo y saber que existe esta posibilidad para las versiones de Anypoint Platform con licencia.

 

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

➡️ SUSCRIBIRSE A INGENIERO BINARIO ⬅️

Sin más, cómo transformar datos en una Mule Application ¡dentro vídeo!

 


Recursos


Recursos Clase 6

American Flights API valores configuración
===========================================

Host: training4-american-api.cloudhub.io
Port: 80
Base Path: /
Protocol: HTTP

American Flights API client_id
==================================

d1374b15c6864c3682ddbed2a247a826

American Flights API client_secret
==================================

4a87fe7e2e43488c927372AEF981F066

Tranformación datos JSON example
================================

{
«airline»: «United»,
«flightCode»: «ER38sd»,
«fromAirportCode»: «LAX»,
«toAirportCode»: «SFO»,
«departureDate»: «May 21, 2016»,
«emptySeats»: 0,
«totalSeats»: 200,
«price»: 199,
«planeType»: «Boeing 737″
}

Mapear los atributos
=====================

price to price
departureDate to departureDate
plane > totalSeats to totalSeats
emptySeats to emptySeats

plane > type to planeType
code to flightCode
origin to fromAirportCode
destination to toAirportCode

DataWeave 2.0 script
=====================

(payload map (value0, index0) -> {

flightCode: value0.code,
fromAirportCode: value0.origin,
toAirportCode: value0.destination,
departureDate: value0.departureDate,
emptySeats: value0.emptySeats,
totalSeats: value0.plane.totalSeats,
price: value0.price,
planeType: value0.plane.»type»,
airline: «American»
})

Sample Data
=====================

[{
«ID»: 1,
«code»: «ER38sd»,
«price»: 400.00,
«departureDate»: «2016/03/20»,
«origin»: «MUA»,
«destination»: «SFO»,
«emptySeats»: 0,
«plane»: {
«type»: «Boeing 737»,
«totalSeats»: 150
}
}, {
«ID»: 2,
«code»: «ER45if»,
«price»: 345.99,
«departureDate»: «2016/02/11»,
«origin»: «MUA»,
«destination»: «LAX»,
«emptySeats»: 52,
«plane»: {
«type»: «Boeing 777»,
«totalSeats»: 300
}
}]

 

 

 

Clases del curso


 

< Volver al curso