es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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 matriz list 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 matriz list y la filtra para encontrar la clave que contiene el valor code. El resultado filtrado es una matriz de un solo elemento, por lo que obtenemos el primer elemento y lo convertimos en una Key.

    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 matriz list como se muestra en el primer ejemplo.

Comments are closed.