SlideShare una empresa de Scribd logo
1 de 26
12/01/2023
Buenos Aires MuleSoft Meetup
Group
Los secretos de Dataweave
All contents © MuleSoft, LLC
Buenos Aires - Meetup Leader
2
● Ingeniera en Informática
● Magíster en Evaluación de Proyectos
● COO en CloudGaia
● 10+ años en el mundo de integración
● MuleSoft Certified Developer - RAML
● MuleSoft Certified Developer
● MuleSoft Certified Platform Architect
● Buenos Aires MuleSoft Meetup Leader
● MuleSoft Mentor
● MuleSoft Go To Market Champion
Florencia Cattelani
/florenciacattelani
/florencia.cattelani
@florcattelani
2
3
Panelista
Senior Software Engineer at
AVIO Consulting
Juan Cruz Basso
● Ingeniero en Informática
● 13+ años en el mundo de integración
● MuleSoft Certified Developer L1/L2
● MuleSoft Certified Integration Architect
● MuleSoft Certified Platform Architect
● MuleSoft Mentor
/jcbasso
4
●Introducciones
●Introducción a Dataweave
●Demo
●Q & A
●Networking time
Agenda
Los secretos de Dataweave
Un poco de historia
● Un posible stack para transformar información:
○ Serializadores XML : Sax parser, Dom parser, etc.
○ Serializadores JSON : Gson, Jackson , etc.
○ Librerías para leer Excels : Apache POI
○ Clases del dominio
○ Clases de error handler
○ Implementación del parseo
○ Transformación
○ ... y podemos seguir nombrando?
7
● Dataweave es un lenguaje de programación que nació para resolver la problemática de
transformación de la información en las integraciones.
● Es el principal lenguaje de la herramienta de Integraciones MuleSoft.
○ Tiene una sintaxis Javascript like
○ Está orientado a programación funcional
● Es un lenguaje de dominio específico
(https://es.wikipedia.org/wiki/Lenguaje_espec%C3%ADfico_de_dominio) desarrollado en
Scala que a su vez está basado en Java.
¿Qué es Dataweave?
Objetivo de Dataweave
● ¡Transformar información!
● ¿Qué es transformar información?
8
Principios basicos de programacion funcional
● Funciones puras
● Funciones de primera-clase (“first class citizens”)
● Funciones de orden superior (“high order functions”)
● Funciones lamda
● Composición de funciones
9
Características de Dataweave
● Orientado a programación funcional
○ No tiene efectos secundarios, ante una entrada determinada , se obtiene siempre la
misma salida, pues todas las funciones en Dataweave son funciones puras
○ Funciones o expresiones pueden ser argumentos en una función (son “first class
citizens”), en otras palabras las funciones son tratadas como variables
○ Son stateless , no comparten recursos en ejecución y sus variables son inmutables
● Acepta Lambda expressions / code blocks
○ Formato: (param) -> (lower(param))
● Modularizable
○ Se pueden armar módulos reutilizables en los proyectos Mule
○ Se pueden paquetizar y subir a exchange como librerías, luego importarlas como
dependencias mvn.
1
0
Estructura de un script Dataweave
● Tiene un encabezado y un cuerpo separado por (---)
○ Encabezado: contiene directivas de lenguaje , como puede ser el formato de entrada o
salida, la versión de dw a ejecutar , propiedades de readers/writers y definiciones de
variables o funciones.
○ Cuerpo: Contiene la expresión Dataweave que genera la salida del script
11
Funciones puras
%dw 2.0
output application/java
fun incOne(param) = param + 1
—
incOne(payload)
12
Payload: 1
Payload: 2
incOne(1) Payload: 2
incOne(2) Payload: 3
%dw 2.0
output application/java
fun incOne(param) = param + 1
—
payload incOne
Ejecución Nro 1
Ejecución Nro 2
Notación Infix Notación Prefix
Funciones de “Primera clase”
%dw 2.0
output application/java
fun incOne(param) = param + 1
fun processArray(array, func) = array map func($)
—
processArray(payload,incOne)
13
%dw 2.0
output application/java
fun incOne(param) = param + 1
fun processArray(array, func) = array map func($)
—
payload processArray incOne
%dw 2.0
output application/java
var incOne = (param) -> param + 1
—
incOne(payload)
%dw 2.0
output application/java
fun incOne(param) = param + 1
—
payload incOne
Declaramos la función como variable
Notación Infix
Notación Prefix
Funciones de orden superior
14
%dw 2.0
output application/java
var inputData = [1]
fun processArray(array, func) = array map func($)
fun incrementFunction(increment1) = (increment2) -> (increment1 + increment2)
fun incOne(param) = incrementFunction(1)(param)
fun incTwo(param) = incrementFunction(2)(param)
---
processArray(inputData,incOne) ++
processArray(inputData,incTwo) ++
processArray(inputData,incrementFunction(5))
Composición de funciones
15
%dw 2.0
output application/java
var arrayInput = ["string1", "string2", "1string3"]
---
((arrayInput filter ($ contains "1"))
map (item,index) -> upper(item) ++ index)
%dw 2.0
output application/java
var arrayInput = ["string1", "string2", "1string3"]
var filterItems = (item,index) -> item contains "1"
fun upperPlusIndex(item,index) = upper(item) ++ index
---
map( filter (arrayInput,filterItems) , upperPlusIndex)
Notación Prefix
Notación Infix
Funciones core
● Son funciones creadas para la transformación de datos, y no es necesario importarlas en los
scripts
● Son las herramientas para resolver las distintas problemáticas, hay más librerías, pero se tienen
que importar
● Algunas funciones core muy utilizadas son:
○ map
○ filter
○ reduce
○ isEmpty
○ flatten
○ flatMap
○ pluck
○ sizeOf
○ read
○ write
○ …
Modularización
● Promueve la reutilización de código
● Pueden definir funciones, variables, types o los scripts de Dataweave
● Se importan las funciones mediante el nombre del módulo seguido de ::
○ Podemos importar todos los elementos del módulo , mediante :
■ import * from modules::utilsModule
○ Podemos importar elementos específicos del módulo, mediante:
■ import numberToSAP from modules::utilsModule
Modularización en implementación de API
● Promueve la reutilización de código dentro de la implementación de una única Mulesoft API
● Se encuentran dentro de la carpeta resources de la aplicación Mulesoft
18
Modularización como librería en Exchange
● Promueve la reutilización de código dentro de la implementación de múltiples MuleSoft API
● Se publican en Exchange
● Se incluyen como dependencias de Maven en el pom del proyecto
● MuleSoft Runtime
● CLI scripts
● Playground
● VS Code
Entornos de ejecución
20
Links
● https://dataweave.mulesoft.com
● https://docs.mulesoft.com/dataweave/2.4/dataweave-language-guide
● Core functions doc: https://docs.mulesoft.com/dataweave/2.4/dw-core
● Cheat Sheet : https://www.prostdev.com/post/dataweave-2-0-core-functions-cheatsheet
All contents © MuleSoft, LLC
Demo
All contents © MuleSoft, LLC
Networking time
All contents © MuleSoft, LLC
Próximos Pasos
All contents © MuleSoft, LLC 25
● Compartí:
○ Tweetea usando el hashtag #MuleSoftMeetups
○ Invita a tus contactos a unirse https://meetups.mulesoft.com/buenos-aires/
● Feedback:
○ Completa la encuesta y sugerí tópicos para los próximos eventos
○ Contacta a MuleSoft en meetups@mulesoft.com para sugerir mejoras al programa
Próximos pasos
¡Muchas gracias!

Más contenido relacionado

Similar a Los secretos de Dataweave

ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++GabrielFVilla15
 
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptxLo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptxSergio Antonio Ochoa Martinez
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaJorge Pacheco Mengual
 
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)Marco Antonio Ordoñez Valverde
 
MuleSoft Madrid Meetup #6 slides 22nd April 2021
MuleSoft Madrid Meetup #6 slides 22nd April 2021MuleSoft Madrid Meetup #6 slides 22nd April 2021
MuleSoft Madrid Meetup #6 slides 22nd April 2021Ieva Navickaite
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendmenttes
 
Scala: La escalera a la Programación Funcional
Scala: La escalera a la Programación FuncionalScala: La escalera a la Programación Funcional
Scala: La escalera a la Programación FuncionalQindel Group
 
ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++JazminIbarra1106
 
Desarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con FeaturesDesarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con FeaturesYmbra
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...Miguel Ángel Sánchez Chordi
 
Programación Modular
Programación ModularProgramación Modular
Programación Modularlisbeca
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosaFco Javier Núñez Berrocoso
 

Similar a Los secretos de Dataweave (20)

ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++ESTRUCTURA BÁSICA PARA C++
ESTRUCTURA BÁSICA PARA C++
 
Framework
FrameworkFramework
Framework
 
Framework
FrameworkFramework
Framework
 
Framework
FrameworkFramework
Framework
 
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptxLo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
Lo que tienes que saber de Dart para Backend, frontend y Mobile..pptx
 
Udf eficientes
Udf eficientesUdf eficientes
Udf eficientes
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
 
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
Conociendo las tecnologías de TypeSafe (Primer meetup Scala Perú Nov 2015)
 
MuleSoft Madrid Meetup #6 slides 22nd April 2021
MuleSoft Madrid Meetup #6 slides 22nd April 2021MuleSoft Madrid Meetup #6 slides 22nd April 2021
MuleSoft Madrid Meetup #6 slides 22nd April 2021
 
Dando saltos con Spring Roo
Dando saltos con Spring RooDando saltos con Spring Roo
Dando saltos con Spring Roo
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
 
Programacion
ProgramacionProgramacion
Programacion
 
Tema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre telecoTema 4.3 Ejemplo sobre teleco
Tema 4.3 Ejemplo sobre teleco
 
Scala: La escalera a la Programación Funcional
Scala: La escalera a la Programación FuncionalScala: La escalera a la Programación Funcional
Scala: La escalera a la Programación Funcional
 
ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++
 
Desarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con FeaturesDesarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con Features
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
 
202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy
 
Programación Modular
Programación ModularProgramación Modular
Programación Modular
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 

Último

ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Luis Olivera
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 

Último (20)

ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
Clase N°4 - Purificación y secuenciación de acidos nucleicos Benoit Diringer ...
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 

Los secretos de Dataweave

  • 1. 12/01/2023 Buenos Aires MuleSoft Meetup Group Los secretos de Dataweave
  • 2. All contents © MuleSoft, LLC Buenos Aires - Meetup Leader 2 ● Ingeniera en Informática ● Magíster en Evaluación de Proyectos ● COO en CloudGaia ● 10+ años en el mundo de integración ● MuleSoft Certified Developer - RAML ● MuleSoft Certified Developer ● MuleSoft Certified Platform Architect ● Buenos Aires MuleSoft Meetup Leader ● MuleSoft Mentor ● MuleSoft Go To Market Champion Florencia Cattelani /florenciacattelani /florencia.cattelani @florcattelani 2
  • 3. 3 Panelista Senior Software Engineer at AVIO Consulting Juan Cruz Basso ● Ingeniero en Informática ● 13+ años en el mundo de integración ● MuleSoft Certified Developer L1/L2 ● MuleSoft Certified Integration Architect ● MuleSoft Certified Platform Architect ● MuleSoft Mentor /jcbasso
  • 5. Los secretos de Dataweave
  • 6. Un poco de historia ● Un posible stack para transformar información: ○ Serializadores XML : Sax parser, Dom parser, etc. ○ Serializadores JSON : Gson, Jackson , etc. ○ Librerías para leer Excels : Apache POI ○ Clases del dominio ○ Clases de error handler ○ Implementación del parseo ○ Transformación ○ ... y podemos seguir nombrando?
  • 7. 7 ● Dataweave es un lenguaje de programación que nació para resolver la problemática de transformación de la información en las integraciones. ● Es el principal lenguaje de la herramienta de Integraciones MuleSoft. ○ Tiene una sintaxis Javascript like ○ Está orientado a programación funcional ● Es un lenguaje de dominio específico (https://es.wikipedia.org/wiki/Lenguaje_espec%C3%ADfico_de_dominio) desarrollado en Scala que a su vez está basado en Java. ¿Qué es Dataweave?
  • 8. Objetivo de Dataweave ● ¡Transformar información! ● ¿Qué es transformar información? 8
  • 9. Principios basicos de programacion funcional ● Funciones puras ● Funciones de primera-clase (“first class citizens”) ● Funciones de orden superior (“high order functions”) ● Funciones lamda ● Composición de funciones 9
  • 10. Características de Dataweave ● Orientado a programación funcional ○ No tiene efectos secundarios, ante una entrada determinada , se obtiene siempre la misma salida, pues todas las funciones en Dataweave son funciones puras ○ Funciones o expresiones pueden ser argumentos en una función (son “first class citizens”), en otras palabras las funciones son tratadas como variables ○ Son stateless , no comparten recursos en ejecución y sus variables son inmutables ● Acepta Lambda expressions / code blocks ○ Formato: (param) -> (lower(param)) ● Modularizable ○ Se pueden armar módulos reutilizables en los proyectos Mule ○ Se pueden paquetizar y subir a exchange como librerías, luego importarlas como dependencias mvn. 1 0
  • 11. Estructura de un script Dataweave ● Tiene un encabezado y un cuerpo separado por (---) ○ Encabezado: contiene directivas de lenguaje , como puede ser el formato de entrada o salida, la versión de dw a ejecutar , propiedades de readers/writers y definiciones de variables o funciones. ○ Cuerpo: Contiene la expresión Dataweave que genera la salida del script 11
  • 12. Funciones puras %dw 2.0 output application/java fun incOne(param) = param + 1 — incOne(payload) 12 Payload: 1 Payload: 2 incOne(1) Payload: 2 incOne(2) Payload: 3 %dw 2.0 output application/java fun incOne(param) = param + 1 — payload incOne Ejecución Nro 1 Ejecución Nro 2 Notación Infix Notación Prefix
  • 13. Funciones de “Primera clase” %dw 2.0 output application/java fun incOne(param) = param + 1 fun processArray(array, func) = array map func($) — processArray(payload,incOne) 13 %dw 2.0 output application/java fun incOne(param) = param + 1 fun processArray(array, func) = array map func($) — payload processArray incOne %dw 2.0 output application/java var incOne = (param) -> param + 1 — incOne(payload) %dw 2.0 output application/java fun incOne(param) = param + 1 — payload incOne Declaramos la función como variable Notación Infix Notación Prefix
  • 14. Funciones de orden superior 14 %dw 2.0 output application/java var inputData = [1] fun processArray(array, func) = array map func($) fun incrementFunction(increment1) = (increment2) -> (increment1 + increment2) fun incOne(param) = incrementFunction(1)(param) fun incTwo(param) = incrementFunction(2)(param) --- processArray(inputData,incOne) ++ processArray(inputData,incTwo) ++ processArray(inputData,incrementFunction(5))
  • 15. Composición de funciones 15 %dw 2.0 output application/java var arrayInput = ["string1", "string2", "1string3"] --- ((arrayInput filter ($ contains "1")) map (item,index) -> upper(item) ++ index) %dw 2.0 output application/java var arrayInput = ["string1", "string2", "1string3"] var filterItems = (item,index) -> item contains "1" fun upperPlusIndex(item,index) = upper(item) ++ index --- map( filter (arrayInput,filterItems) , upperPlusIndex) Notación Prefix Notación Infix
  • 16. Funciones core ● Son funciones creadas para la transformación de datos, y no es necesario importarlas en los scripts ● Son las herramientas para resolver las distintas problemáticas, hay más librerías, pero se tienen que importar ● Algunas funciones core muy utilizadas son: ○ map ○ filter ○ reduce ○ isEmpty ○ flatten ○ flatMap ○ pluck ○ sizeOf ○ read ○ write ○ …
  • 17. Modularización ● Promueve la reutilización de código ● Pueden definir funciones, variables, types o los scripts de Dataweave ● Se importan las funciones mediante el nombre del módulo seguido de :: ○ Podemos importar todos los elementos del módulo , mediante : ■ import * from modules::utilsModule ○ Podemos importar elementos específicos del módulo, mediante: ■ import numberToSAP from modules::utilsModule
  • 18. Modularización en implementación de API ● Promueve la reutilización de código dentro de la implementación de una única Mulesoft API ● Se encuentran dentro de la carpeta resources de la aplicación Mulesoft 18
  • 19. Modularización como librería en Exchange ● Promueve la reutilización de código dentro de la implementación de múltiples MuleSoft API ● Se publican en Exchange ● Se incluyen como dependencias de Maven en el pom del proyecto
  • 20. ● MuleSoft Runtime ● CLI scripts ● Playground ● VS Code Entornos de ejecución 20
  • 21. Links ● https://dataweave.mulesoft.com ● https://docs.mulesoft.com/dataweave/2.4/dataweave-language-guide ● Core functions doc: https://docs.mulesoft.com/dataweave/2.4/dw-core ● Cheat Sheet : https://www.prostdev.com/post/dataweave-2-0-core-functions-cheatsheet
  • 22. All contents © MuleSoft, LLC Demo
  • 23. All contents © MuleSoft, LLC Networking time
  • 24. All contents © MuleSoft, LLC Próximos Pasos
  • 25. All contents © MuleSoft, LLC 25 ● Compartí: ○ Tweetea usando el hashtag #MuleSoftMeetups ○ Invita a tus contactos a unirse https://meetups.mulesoft.com/buenos-aires/ ● Feedback: ○ Completa la encuesta y sugerí tópicos para los próximos eventos ○ Contacta a MuleSoft en meetups@mulesoft.com para sugerir mejoras al programa Próximos pasos