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 propriedade myProperty será definida como FixedValue.

- 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çalho orderId e o usa como valor da propriedade myProperty.

- setProperty:
    name: myProperty
    expression:
      simple: ${header.orderId}
  • xpath: usa consultas XPath para extrair dados de documentos XML. No exemplo, a expressão XPath /order/id extrai o valor do campo id dentro 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.id extrai o valor do campo id dentro 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 de myProperty será calculado pelo script Groovy, que retorna o valor do cabeçalho orderId incrementado 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 como itemId nas 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 chamado id dentro de um corpo que é presumidamente uma estrutura de dados como um mapa (JSON ou similar). O valor extraído do campo id será atribuído à propriedade itemId.

    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 valor 12345 do campo id.

    • 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á chamada fullData.

  • 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 chamado id e o insere como o valor da chave id.

    • ${exchangeProperty.customerData}: recupera o valor armazenado na propriedade customerData da troca e o atribui à chave json.

    • ${exchangeProperty.orderData}: recupera o valor armazenado na propriedade orderData da troca e o atribui à chave xml.

    • 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.
Thanks for your feedback!
EDIT

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