Integração com Choice

Script do fluxo

Considere o script do fluxo abaixo.
Consulte também o resumo e a descrição dos elementos para maior compreensão.

- from:
    uri: rest:post:/demo
    steps:
      - choice:
          otherwise:
            steps:
              - setBody:
                  expression:
                    constant:
                      expression: "Erro: ID não encontrado no corpo da solicitação"
              - setHeader:
                  expression:
                    constant:
                      expression: "400"
                    name: CamelHttpResponseCode
          when:
            steps:
              - setBody:
                  expression:
                    constant:
                      expression: Sucesso
              - setHeader:
                  expression:
                    constant:
                      expression: "200"
                    name: CamelHttpResponseCode
                expression:
                  jsonpath:
                    expression: $.model.Details[?(@['Random nonsense'] == 'New today')]

Resumo

Este fluxo configura uma rota que responde a solicitações POST no endpoint /demo. Dependendo do conteúdo da solicitação, o fluxo realiza uma verificação condicional:

A condição verifica se Random nonsense dentro de $.model.Details é New today.

  • Se a condição for verdadeira:

    • O corpo da resposta é definido como Sucesso.

    • O cabeçalho CamelHttpResponseCode é definido como 200.

  • Se a condição for falsa:

    • O corpo da resposta é definido como Erro: ID não encontrado no corpo da solicitação.

    • O cabeçalho CamelHttpResponseCode é definido como 400.

A estrutura choice permite um roteamento condicional flexível, enquanto setBody e setHeader permitem definir dinamicamente o corpo e os cabeçalhos da resposta com base nas condições avaliadas.

Descrição dos elementos

Abaixo está a explicação de cada elemento do script da integração:

  1. from

    Define o ponto de entrada da rota Camel. Especifica que a rota responde a solicitações HTTP POST no endpoint /demo.

    - from:
        uri: rest:post:/demo
  2. steps

    Lista as ações a serem executadas quando uma solicitação é recebida no endpoint definido. No exemplo, contém uma estrutura condicional choice.

    steps:
      - choice:
  3. choice

    Define uma estrutura condicional que pode ter múltiplos caminhos, executando diferentes conjuntos de ações dependendo das condições especificadas.

    choice:
  4. otherwise

    Define o conjunto de ações a serem executadas caso nenhuma das condições when seja atendida. Nesse caso, define o corpo da resposta como uma mensagem de erro e o código de resposta HTTP como 400 (Bad Request).

    otherwise:
      steps:
        - setBody:
            expression:
              constant:
                expression: "Erro: ID não encontrado no corpo da solicitação"
        - setHeader:
            expression:
              constant:
                expression: "400"
              name: CamelHttpResponseCode
  5. setBody (otherwise)

    Define o corpo da resposta HTTP quando a condição otherwise é atendida. Aqui, o corpo é definido como a string constante Erro: ID não encontrado no corpo da solicitação. [1]

    - setBody:
        expression:
          constant:
            expression: "Erro: ID não encontrado no corpo da solicitação"
  6. setHeader (otherwise)

    Define um cabeçalho HTTP específico para a resposta quando a condição otherwise é atendida. Aqui, o cabeçalho CamelHttpResponseCode é definido como 400.

    - setHeader:
        expression:
          constant:
            expression: "400"
          name: CamelHttpResponseCode
  7. when

    Define um conjunto de ações a serem executadas se uma condição específica for atendida. Neste caso, a condição verifica se o campo Random nonsense dentro de $.model.Details é igual a New today.

    when:
      steps:
        - setBody:
            expression:
              constant:
                expression: Sucesso
        - setHeader:
            expression:
              constant:
                expression: "200"
              name: CamelHttpResponseCode
          expression:
            jsonpath:
              expression: $.model.Details[?(@['Random nonsense'] == 'New today')]
  8. steps (when)

    Lista as ações a serem executadas se a condição when for atendida. Neste caso, define o corpo da resposta como Sucesso e o código de resposta HTTP como 200 (OK).

    steps:
      - setBody:
          expression:
            constant:
              expression: Sucesso
      - setHeader:
          expression:
            constant:
              expression: "200"
            name: CamelHttpResponseCode
        expression:
          jsonpath:
            expression: $.model.Details[?(@['Random nonsense'] == 'New today')]
  9. setBody (when)

    Define o corpo da resposta HTTP quando a condição when é atendida. Aqui, o corpo é definido como a string constante Sucesso.

    - setBody:
        expression:
          constant:
            expression: Sucesso
  10. setHeader (when)

    Define um cabeçalho HTTP específico para a resposta quando a condição when é atendida. Aqui, o cabeçalho CamelHttpResponseCode é definido como 200.

    - setHeader:
        expression:
          constant:
            expression: "200"
          name: CamelHttpResponseCode
  11. expression (when)

    Especifica a condição a ser avaliada para determinar se o bloco when deve ser executado. Utiliza uma expressão JSONPath para verificar se o campo Random nonsense dentro de $.model.Details é igual a New today.

    expression:
      jsonpath:
        expression: $.model.Details[?(@['Random nonsense'] == 'New today')]

1. Uma string constante é uma sequência de caracteres cujo valor não muda. No contexto da integração, as strings constantes são usadas para definir valores fixos para o corpo e cabeçalhos das respostas HTTP, garantindo que esses valores permaneçam consistentes sempre que a rota é executada.
Thanks for your feedback!
EDIT

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