Set Property

El EIP Set Property se utiliza en el contexto del intercambio de mensajes (exchange). Las propiedades son útiles para almacenar datos intermedios que pueden ser accedidos en otras etapas del flujo.

Las propiedades son metadatos asociados al mensaje, pero no forman parte ni del cuerpo ni del encabezado del mensaje.

Parámetros

Parámetro Descripción Valor por defecto Tipo

Name

Nombre de la propiedad que se configurará.

String

Expression

Expresión que retorna el valor de la propiedad.

ExpressionDefinition

Expression

La expression permite calcular o definir valores dinámicamente durante el procesamiento de mensajes en el flujo de integración. Es una forma de configurar comportamientos que pueden variar según el contexto del mensaje en tránsito.

La expresión está organizada en dos niveles jerárquicos que permiten que la estructura sea más extensible y adaptable a diferentes contextos:

  • Primer nivel: especifica el tipo de lógica que se aplicará (constant, simple, jsonPath, etc.).

  • Segundo nivel: define el valor efectivo de la expresión, es decir, el dato que se asignará como valor de la propiedad.

Tipos comunes de expressions

  • constant: asigna valores fijos. En el ejemplo, la propiedad myProperty se definirá como FixedValue.

- setProperty:
    name: myProperty
    expression:
      constant: "FixedValue"
  • simple: accede a datos simples (encabezados, cuerpo, propiedades) y manipula valores de manera básica. En el ejemplo, la expresión ${header.orderId} accede al encabezado orderId y lo usa como valor de la propiedad myProperty.

- setProperty:
    name: myProperty
    expression:
      simple: ${header.orderId}
  • xpath: usa consultas XPath para extraer datos de documentos XML. En el ejemplo, la expresión XPath /order/id extrae el valor del campo id dentro de un XML con la estructura <order><id>123</id></order>.

- setProperty:
    name: myProperty
    expression:
      xpath: "/order/id"
  • jsonpath: usa consultas JSONPath para extraer datos de documentos JSON. En el ejemplo, la expresión $.order.id extrae el valor del campo id dentro de un objeto JSON: { "order": { "id": 123 } }.

- setProperty:
    name: myProperty
    expression:
      jsonpath: "$.order.id"
  • groovy: ejecuta scripts Groovy para manipulación avanzada de datos. En el ejemplo, el valor de myProperty será calculado por el script Groovy, que retorna el valor del encabezado orderId incrementado en 1.

- setProperty:
    name: myProperty
    expression:
      groovy: "return message.getHeader('orderId') + 1"

Ejemplos

Ejemplo 1

- setProperty:
    name: itemId
    expression:
       simple: ${body['id']}
  • name: itemId: nombre de la propiedad que se definirá. La propiedad será referenciada como itemId en las siguientes etapas de la ruta.

  • expression: simple: ${body['id']}: usa el lenguaje simple para extraer datos del cuerpo del mensaje (body). En este caso, está accediendo a un campo llamado id dentro de un cuerpo que presumiblemente es una estructura de datos como un mapa (JSON o similar). El valor extraído del campo id será asignado a la propiedad itemId.

    Imagine que el cuerpo del mensaje es algo como esto:

    {
      "id": "12345",
      "name": "Sample Item"
    }
    • El Camel evaluará la expresión ${body['id']} y extraerá el valor 12345 del campo id.

    • Ese valor será almacenado en la propiedad llamada itemId.

Ejemplo 2

- setProperty:
    id: setProperty-1014206318
    name: fullData
    expression:
      simple: >-
        {"id": "${header.id}", "json": ${exchangeProperty.customerData},
        "xml": ${exchangeProperty.orderData}}
  • name: nombre de la propiedad que será creada o actualizada en el contexto del intercambio. En este caso, la propiedad se llamará fullData.

  • expression: define el valor de la propiedad utilizando una expresión. En este caso, se utiliza una expresión en lenguaje simple.

    • "${header.id}": extrae el valor del encabezado llamado id e inserta este valor como el valor de la clave id.

    • ${exchangeProperty.customerData}: recupera el valor almacenado en la propiedad customerData del intercambio y lo asigna a la clave json.

    • ${exchangeProperty.orderData}: recupera el valor almacenado en la propiedad orderData del intercambio y lo asigna a la clave xml.

    • La expresión crea un objeto JSON que combina información de diferentes partes del mensaje en un formato consolidado, como este ejemplo:

      {
        "id": "12345",
        "json": {"name": "John Doe", "age": 30},
        "xml": "<order><id>123</id><total>100.00</total></order>"
      }
El uso de ">-" al inicio de la expresión mantiene el texto legible en YAML, ya que garantiza que el valor procesado sea tratado como una sola línea sin saltos innecesarios.
Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]