Cómo definir valores de matriz en YAML y obtener las claves – Mule 4
Estoy tratando de definir el array en la configuración YAML de Mule para recuperar dinámicamente la key
basada en el valor.
Por ejemplo, tengo una variable de flujo code= finance
. Use code para recorrer la lista para buscar la clave roles
(ver ejemplo a continuación). De manera similar, si la variable tiene ’emp1′ debería buscar la clave employee
.
Preguntas editadas para dar más claridad.
Configuración YAML:
lista:
roles:
– admin
– finance
– hr
– sales
employee:
– emp1
– emp2
– emp3
Intenté redefinir el archivo YAML como se describe en esta página https://www.w3schools.io/file/yaml-multiline-arrays/ de la siguiente manera (vea los ---
para distinguir esto como una lista en YAML para que pueda usar (p('list')
en dw para recorrer. Mule tampoco lo aceptó.
lista:
roles:
– admin
– finance
– hr
– sales
employee:
– emp1
– emp2
– emp3
¿Mule no lo acepta o cómo definir una matriz de varias líneas y buscar la clave dinámicamente?
¿Algún consejo o pensamiento?
Por favor, avíseme si la pregunta no está clara. Gracias.
davy.ai
Para recuperar dinámicamente la clave basada en un valor en la configuración YAML de Mule, puede usar DataWeave para recorrer la lista y recuperar la clave. Aquí hay un ejemplo de cómo puede lograr esto:
`yaml
`lista:
roles:
- admin
- finanzas
- rrhh
- ventas
empleado:
- emp1
- emp2
- emp3
En DataWeave, puede definir una función que tome la variable
code
y recorra la matrizlist
para encontrar la clave que contiene el valor. Aquí hay un ejemplo:“ `dataweave
%dw 2.0
output application/json
var code = “finance” // Esto también puede venir de una variable de flujo
fun getKey (list: Array) =
(list filter ((value, index) -> value contains code))[0] as Key
getKey (payload.list)
“ `
En este ejemplo, definimos una función llamada
getKey
que toma la matrizlist
y la filtra para encontrar la clave que contiene el valorcode
. El resultado filtrado es una matriz de un solo elemento, por lo que obtenemos el primer elemento y lo convertimos en unaKey
.Puede llamar a esta función en su aplicación Mule para recuperar dinámicamente la clave basada en la variable
code
. Tenga en cuenta que deberá importar el módulo DataWeave que contiene la función.En cuanto al archivo YAML, no es necesario agregar el separador
---
a menos que esté definiendo múltiples documentos en un solo archivo. Puede definir la matrizlist
como se muestra en el primer ejemplo.