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 propiedadmyProperty
se definirá comoFixedValue
.
- 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 encabezadoorderId
y lo usa como valor de la propiedadmyProperty
.
- 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 campoid
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 campoid
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 demyProperty
será calculado por el script Groovy, que retorna el valor del encabezadoorderId
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 comoitemId
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 llamadoid
dentro de un cuerpo que presumiblemente es una estructura de datos como un mapa (JSON o similar). El valor extraído del campoid
será asignado a la propiedaditemId
.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 valor12345
del campoid
. -
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 llamadoid
e inserta este valor como el valor de la claveid
. -
${exchangeProperty.customerData}
: recupera el valor almacenado en la propiedadcustomerData
del intercambio y lo asigna a la clavejson
. -
${exchangeProperty.orderData}
: recupera el valor almacenado en la propiedadorderData
del intercambio y lo asigna a la clavexml
. -
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. |
Share your suggestions with us!
Click here and then [+ Submit idea]