Skip to content

Workshop presentado en el evento "We Lead" de Women Who Code Monterrey (2021).

Notifications You must be signed in to change notification settings

alexandramartinez/intro-a-dataweave

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Intro a DataWeave: El lenguaje de programación de MuleSoft

Por Alexandra Martinez

Presentado en el evento "We Lead" de Women Who Code Monterrey.

Este archivo contiene las explicaciones de lo aprendido en el taller y ejercicios para probar tu conocimiento en cada subtema.

Para ver directamente los scripts que se presentaron en el taller (sin las explicaciones), ve a este archivo: scripts.md

Contenidos

Conociendo el Playground

Simplemente hay que ir a dwlang.fun para poder ver la página del DataWeave Playground.

Del lado izquierdo se encuentra el input para el script, en medio es donde se escribe el código (script), y en la derecha es donde se encuentra el output o el resultado de la transformación.

Ver documentación oficial de MuleSoft sobre los principios de la programación funcional

Ver documentación oficial de MuleSoft sobre la estructura de los scripts de DataWeave

🔼 Volver arriba

Formatos

El uso más básico de DataWeave es para transformar datos de un formato a otro. Por ejemplo de XML a JSON.

Ver documentación oficial de MuleSoft sobre formatos

Para hacer esto, solo se tiene que cambiar el tipo de output. Ejemplo:

Input

<?xml version='1.0' encoding='UTF-8'?>
<message>Hello world!</message>

Script

%dw 2.0
output application/json
---
payload

Output

{
  "message": "Hello world!"
}

Ejercicio

Ver ejercicio de formatos.

🔼 Volver arriba

Tipos de datos

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 ("hello world")
  • Numbers (1, 2.5, -868)
  • Booleans (true, false)
  • Arrays ([1, 2, 3], ["a","b","c"], [{},1,true,"a"])
  • Objects ({}, {"field":"value"})

Ver documentación oficial de MuleSoft sobre tipos de datos

Ejercicio

Ver ejercicio de tipos de datos.

🔼 Volver arriba

Operadores

Se pueden hacer diferentes operaciones con los datos, dependiendo de su tipo.

Ver documentación oficial de MuleSoft sobre operadores

Operadores matemáticos

  • + - suma
  • - - resta
  • * - multiplicación
  • / - división

Operadores de igualdad y relacionales

  • < - menor que
  • > - mayor que
  • <= - menor o igual que
  • >= - mayor o igual que
  • == - igual a
  • ~= - igual a (convirtiendo diferentes tipos de datos en uno mismo)

Operadores lógicos

  • not - negación de todas las condiciones en conjunto
  • ! - negación de solo la primera condición
  • and - regresa true si todas las condiciones se cumplen
  • or - regresa true si al menos una condición se cumple

Operadores para Array

  • >> - anteponer
  • << - adjuntar
  • + - adjuntar
  • - - remover

Ejercicio

Ver ejercicio de operadores.

🔼 Volver arriba

Variables

Cuando se crean variables en DataWeave, no se tiene que seleccionar un tipo de dato ni se tiene que inicializar, como en otros lenguajes. Para crear una nueva variable, se tiene que usar la palabra clave var, seguido del nombre de la variable y la asignación (usando el signo de igual =). Nota que la declaración se tiene que hacer sobre los tres guiones (---) del script.

Ver documentación oficial de MuleSoft sobre variables

Script

%dw 2.0
output application/json

var myStr = "Hello World"
---
myStr

Output

"Hello World"

Como DataWeave es un lenguaje de programación funcional, las variables se pueden usar como funciones.

Script

%dw 2.0
output application/json

var myStr = "Hello World"
var mayus = (str) -> upper(str)
---
mayus(myStr)

Output

"HELLO WORLD"

Para asignar tipos de datos a las variables, se escriben dos puntos (:) después del nombre de la variable, seguido por el tipo de dato que se le quiere asignar.

Script

%dw 2.0
output application/json

var myStr: String = "Hello World"
var mayus = (str: String) -> upper(str)
---
mayus(myStr)

Output

"HELLO WORLD"

Ejercicio

Ver ejercicio de variables.

🔼 Volver arriba

Funciones

Al crear funciones en DataWeave, no se tiene que especificar el tipo de dato de los argumentos, o el tipo de dato que va a regresar la función.

Para crear una nueva función, se usa la palabra clave fun, seguido del nombre de la función. Después, entre paréntesis, se escriben los nombres de los argumentos separados por coma (,). Finalmente, se asigna el código a la función con el signo de igual (=). Nota que la declaración se tiene que hacer sobre los tres guiones (---) del script.

No es necesario poner el código de la función entre paréntesis (()) o llaves ({}). DataWeave puede reconocer que el código siguiente le pertenece a la función.

Ver documentación oficial de MuleSoft sobre funciones

Script

%dw 2.0
output application/json

fun mayus(str) = upper(str)
---
mayus("Hello World")

Output

"HELLO WORLD"

Para evitar errores, puedes asignar tipos de datos a los argumentos de las funciones. Al igual que con las variables, se escriben dos puntos (:) después del nombre del argumento, seguido por el tipo de dato que se le quiere asignar.

Script

%dw 2.0
output application/json

fun mayus(str: String) = upper(str)
---
mayus("Hello World")

Output

"HELLO WORLD"

También se le pueden asignar tipos de datos a las funciones (es decir, lo que van a regresar). Esta vez se escriben los dos puntos y el tipo de dato después de los paréntesis donde están los argumentos, o bien, antes del signo de igual.

Script

%dw 2.0
output application/json

fun mayus(str: String): String = upper(str)
---
mayus("Hello World")

Output

"HELLO WORLD"

El mayor beneficio de asignar tipos de datos a las funciones es para poder usar Function Overloading (o sobrecarga de funciones). No se tocará ese tema en este taller, pero puedes leer al respecto aquí.

Ejercicio

Ver ejercicio de funciones.

🔼 Volver arriba

Condiciones

Al igual que en otros lenguajes de programación, existen formas de controlar el "flujo" o la lógica del código usando condiciones. En DataWeave se utiliza if/else.

Para crear condiciones, se usa primero la palabra clave if, seguida de la condición entre paréntesis (()). Después de esto no es necesario abrir paréntesis (()) o llaves ({}), ya que DataWeave puede reconocer que el código siguiente pertenece al if.

A diferencia de otros lenguajes, aquí sí se tiene que agregar un else después de un if, para asegurarnos de que ambas rutas van a estar cubiertas en el código y siempre se va a asignar un valor sin importar si la condición se cumple o no. Después de crear el código del if, se agrega la palabra clave else y tampoco es necesario abrir paréntesis o llaves; con escribir código después de esto, DataWeave reconoce que pertenece al else.

Ver documentación oficial de MuleSoft sobre control de flujo (condiciones)

Script

%dw 2.0
output application/json

fun concat(str1, str2) = 
    if (str1 is String and str2 is String) str1 ++ str2
    else null
---
concat("Hello"," World")

Output

"Hello World"

Se puede agregar más de una condición usando las palabras else if antes del último else. En realidad lo que se hace es que se crea otro if dentro del else, anidando así varias declaraciones de if/else para contemplar diferentes condiciones.

Script

%dw 2.0
output application/json

fun getCodigo(pais) = 
    if (pais == "Mexico") "MX"
    else if (pais == "Estados Unidos") "EUA"
    else if (pais == "Canada") "CA"
    else "Otro pais"
---
getCodigo("Mexico")

Output

"MX"

Ejercicio

Ver ejercicio de condiciones.

🔼 Volver arriba

About

Workshop presentado en el evento "We Lead" de Women Who Code Monterrey (2021).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published