Set Property
O EIP Set Property é utilizado no contexto da troca de mensagens (exchange). Propriedades são úteis para armazenar dados intermediários que podem ser acessados em outras etapas do fluxo.
| As propriedades são metadados associadas à mensagem, mas não fazem parte nem do corpo nem do cabeçalho da mensagem. | 
Parâmetros
| Parâmetro | Descrição | Valor padrão | Tipo | 
|---|---|---|---|
Name  | 
Nome da propriedade que será configurada.  | 
String  | 
|
Expression  | 
Expressão que retorna o valor da propriedade.  | 
ExpressionDefinition  | 
Expression
A expression permite calcular ou definir valores dinamicamente durante o processamento de mensagens no fluxo de integração. Ela é uma forma de configurar comportamentos que podem variar de acordo com o contexto da mensagem em trânsito.
A expressão está organizada em dois níveis hierárquicos que permitem que a estrutura seja mais extensível e adaptável a diferentes contextos:
- 
Primeiro nível: especifica o tipo de lógica que será aplicada (constant, simple, jsonpath etc).
 - 
Segundo nível: define o valor efetivo da expressão, ou seja, o dado que será atribuído à propriedade.
 
Tipos comuns de expressions
- 
constant: atribui valores fixos. No exemplo, a propriedademyPropertyserá definida comoFixedValue. 
- setProperty:
    name: myProperty
    expression:
      constant: "FixedValue"
- 
simple: acessa dados simples (cabeçalhos, corpo, propriedades) e manipula valores de maneira básica. No exemplo, a expressão${header.orderId}acessa o cabeçalhoorderIde o usa como valor da propriedademyProperty. 
- setProperty:
    name: myProperty
    expression:
      simple: ${header.orderId}
- 
xpath: usa consultas XPath para extrair dados de documentos XML. No exemplo, a expressão XPath/order/idextrai o valor do campoiddentro de um XML com a estrutura<order><id>123</id></order>. 
- setProperty:
    name: myProperty
    expression:
      xpath: "/order/id"
- 
jsonpath: usa consultas JSONPath para extrair dados de documentos JSON. No exemplo, a expressão$.order.idextrai o valor do campoiddentro de um objeto JSON:{ "order": { "id": 123 } }. 
- setProperty:
    name: myProperty
    expression:
      jsonpath: "$.order.id"
- 
groovy: executa scripts Groovy para manipulação avançada de dados. No exemplo, o valor demyPropertyserá calculado pelo script Groovy, que retorna o valor do cabeçalhoorderIdincrementado de 1. 
- setProperty:
    name: myProperty
    expression:
      groovy: "return message.getHeader('orderId') + 1"
Exemplos
Exemplo 1
- setProperty:
    name: itemId
    expression:
       simple: ${body['id']}
- 
name: itemId: nome da propriedade que será definida. A propriedade será referenciada comoitemIdnas próximas etapas da rota. - 
expression: simple: ${body['id']}: usa a linguagem simples para extrair dados do corpo da mensagem (body). Neste caso, está acessando um campo chamadoiddentro de um corpo que é presumidamente uma estrutura de dados como um mapa (JSON ou similar). O valor extraído do campoidserá atribuído à propriedadeitemId.Imagine que o corpo da mensagem seja algo como:
{ "id": "12345", "name": "Sample Item" }- 
O Camel irá avaliar a expressão
${body['id']}e extrair o valor12345do campoid. - 
Esse valor será armazenado na propriedade chamada
itemId. 
 - 
 
Exemplo 2
- setProperty:
    id: setProperty-1014206318
    name: fullData
    expression:
      simple: >-
        {"id": "${header.id}", "json": ${exchangeProperty.customerData},
        "xml": ${exchangeProperty.orderData}}
- 
name: nome da propriedade que será criada ou atualizada no contexto da troca. Neste caso, a propriedade será chamadafullData. - 
expression: define o valor da propriedade usando uma expressão. Neste caso, é utilizada uma expressão em linguagem simples.- 
"${header.id}": extrai o valor do cabeçalho chamadoide o insere como o valor da chaveid. - 
${exchangeProperty.customerData}: recupera o valor armazenado na propriedadecustomerDatada troca e o atribui à chavejson. - 
${exchangeProperty.orderData}: recupera o valor armazenado na propriedadeorderDatada troca e o atribui à chavexml. - 
A expressão cria um objeto JSON que combina informações de diferentes partes da mensagem em um formato consolidado, como este exemplo:
{ "id": "12345", "json": {"name": "John Doe", "age": 30}, "xml": "<order><id>123</id><total>100.00</total></order>" } 
 - 
 
| O uso de ">-", no início da expressão, mantém o texto legível no YAML, pois garante que o valor processado seja tratado como uma única linha sem quebras desnecessárias. | 
Share your suggestions with us!
          Click here and then [+ Submit idea]