Proyecto integrador. Las TIC en la sociedad S4.pptx
Meetup_Secrets_of_DW_2_Esp.pptx
1. Los Secretos de Dataweave
Parte 2
Juan Cruz Basso, Software Engineer
@JuanCBasso | juancruzbasso@gmail.com
2. Buenos Aires - Meetup Leaders
Federico Castellari & Florencia Cattelani
● Licenciado en TI
● Salesforce Specialist en CloudGaia
● 10+ años en el mundo de integración
● MuleSoft Meetup Leader
/fpcastellari
● Ingeniera en Informática
● Magíster en Evaluación de Proyectos
● COO en CloudGaia
● 10+ años en el mundo de integración
● MuleSoft Meetup Leader / MuleSoft Mentor
● MuleSoft Go To Market Champion
/florenciacattelani
/florencia.cattelani
@florcattelani
Federico Castellari & Florencia Cattelani
3. Panelista:
● Juan Cruz Basso
○ Ing en Informática
○ MuleSoft Mentor
○ Bahía Blanca MuleSoft Meetup Leader
○ 14+ años en el mundo de Integraciones
○ Senior Software Engineer en AVIO
/jcbasso
4. AGENDA
● Repaso de conceptos principales de programación funcional vistos en parte 1
● Paradigma Imperativo vs Declarativo
● El impacto de la programación declarativa en Dataweave
● Cambiando de chip entre procedural y funcional
● Implementación de un caso de uso
5. Dataweave, un lenguaje de programación funcional
● Funciones puras
● Funciones de primera clase
● Funciones de orden superior
● Funciones Lamda
● Composición de funciones
6. Declarativo vs Imperativo
Se piensa el como -> el foco está
en el proceso
Se piensa el qué -> el foco está en
los resultados
Declarativo Imperativo
Las líneas de código no
necesariamente tienen que
producir resultados
Las variables pueden cambiar sus
valores, y la ejecución permite
almacenamiento de estados
Cada línea de código produce un
resultado
Las variables son inmutables, no
se pueden modificar y la ejecución
es stateless
Ambos son paradigmas de
programación
Según el caso de uso, ambos paradigmas
son válidos
7. Declarativo vs Imperativo
Ejemplos
Java:
Int y=0;
for (int x=1;x++;x<=10)
y=x+y
return y;
—————————————————————
Int[] y={1,2,3,4,5,6,7,8,9,10};
Int[] z=new int[10];
int added = 0;
for (int x=0;x++;x<10){
if(y[x]>5) {
z[added] = y[x];
added++;
}
}
return z;
Datawave:
sum(1 to 10)
———————————————————
[1 to 10] filter ($>5) -> [6,7,8,9]
8. El impacto de la programación declarativa en
Dataweave
● Dataweave no tiene una operación de “return”
● Todas las variables son inmutables, cada vez que se declara/actualiza/modifica/etc, es una
nueva variable que se genera con el nuevo valor
● Podemos decir que los scripts/funciones de Dataweave siempre producen un resultado
● “Naturalmente” el lenguaje nos lleva a componer funciones
9. Cambiando el chip entre procedural y funcional
● No hay persistencia de estado, hay que dejar de pensar en cómo hacer las cosas.
● Hay que analizar las responsabilidades del código, y dividir entre que necesita persistencia
de estado y que no, para determinar que puede ir en Dataweave y que en el Flow.
● Tener el resultado esperado debería ser el primer paso en una transformación
● Analizar los valores de entrada y como recorrerlos es clave
● ¿Por qué hay que cambiar el chip?
10. Repaso de la estructura de un Script de Dataweave
● Tiene un encabezado y un cuerpo separados 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. Caso de uso de ejemplo….
● Input: La información a procesar es de contratos sobre productos que son abastecidos a
distintas plantas.
Cada planta tiene su ubicación y puede ser provista por distintos proveedores. Cada
proveedor tiene su propia ubicación desde donde envía sus productos.
● Output: Necesitamos una vista de “árbol” de la información, siguiendo este orden:
Plants -> Proveedores -> Ubicaciones ( mostrando solo las ubicaciones que proveen a
esa planta )
12. Caso de uso de ejemplo….
Aplicando conceptos en una forma práctica
Input: Output: