Atualmente, quando é necessário passar parâmetros de forma dinâmica para os componentes, você pode utilizar o Transformer antes de cada step. Mas é com o recurso Double Braces que você tem acesso direto aos elementos do objeto JSON ou repassa o objeto inteiro.

Acesso ao elemento do JSON

Veja o exemplo a seguir, que demonstra como ocorre a passagem do parâmetro “cep” em uma chamada padrão do REST.

Se você tem um { "cep": "" }, um novo objeto com “url” como base deve ser criado:

{ "url" :  { "cep": "" } }  

Com isso, é necessário adicionar o Transformer:

Além de utilizar o Transformer, você também precisa conhecer a sintaxe de cada componente, assim como “url.cep”, “body.cep” ou “parameters.cep”.

Ao utilizar Double Braces quando o campo do formulário indica suporte a esse recurso, o que você precisa fazer é simplesmente inserir a descrição do elemento desejado para que os dados sejam passados adiante:

Note que nesse caso não foi necessário utilizar o Transformer, o que diminui a quantidade de passos para a construção do seu pipeline.

Dê uma olhada nos exemplos de JSON abaixo, que mostram como acessar o elemento desejado com o novo recurso:

JSON A

{
"cliente": {
"endereco": {
"cep": "04547-130"
}
}
}

Double Braces

https://viacep.com.br/ws/{{ message.cliente.endereco.cep }}/json/

JSON B

{
"clientes": [
{
"nome": "João",
"endereco": {
"cep": "04547-130"
},
{
"nome": "Pedro",
"endereco": {
"cep": "04547-130"
}
}
]
}

{{ Double Braces }}

https://viacep.com.br/ws/{{ message.clientes[0].endereco.cep }}/json/

Acesso ao objeto JSON

Com este exemplo, você poderá entender a atual passagem do parâmetro “body” (objeto) em uma chamada padrão do REST.

Digamos que você tenha { "nome": "", "endereco": { "cep": ""} } e deva criar o novo objeto { "body" : { "nome": "", "endereco": { "cep": ""} } }. Para isso, você precisa adicionar o Transformer. Olha só:

Agora veja como fica se você utilizar Double Braces quando o campo do formulário indicar o suporte a esse recurso. Tudo o que você precisa fazer é descrever o elemento desejado para que os dados sejam passados adiante:

Utilização de funções em elementos

Agora que você já conhece as vantagens da utilização de Double Braces, fique sabendo de outra dica: esse recurso pode ser combinado com a utilização de funções.

Acompanhe este exemplo simples:

{
"cep": " 04547-130 "
}

Você pode aplicar uma função para remover os espaços:

https://viacep.com.br/ws/{{ TRIM(message.cep) }}/json/

Clique aqui para conhecer todas as nossas funções.

Escopos do Double Braces

Até agora você viu o escopo principal de uso de Double Braces, que se aplica às mensagens e resolve expressões específicas. Conheça outros contextos nos quais expressões com Double Braces podem ser utilizadas.

  • Account

No escopo “account” é possível acessar o cofre de credenciais da Digibee por meio das expressões com Double Braces.

Os componentes acessam o cofre e obtêm, de forma segura, os valores informados para as credenciais durante fase de configuração. Muitos componentes já possuem uma lógica pré-programada que permite não só o acesso, mas também o uso das credenciais.

Exemplos:

O componente de banco de dados DB V2 sempre recebe credenciais do tipo "basic", acessando nome de usuário e senha utilizados para autenticar na instância de banco de dados.

Por outro lado, o componente REST V2 utiliza um conjunto credenciais para aplicação na chamada de API a ser executada. Se uma credencial do tipo "basic" é informada ao REST V2, então a chamada de API será feita com autenticação “basic”. Logo, usuário e senha são informados em um campo de cabeçalho (header) com o valor em base64.

No entanto, existem cenários em que a chamada de API requer a passagem personalizada de credenciais. Quando isso acontece, expressões Double Braces com account podem ser utilizadas. Veja como fica a estrutura:

{{ account.<account label key>.<campo> }}

No exemplo acima, <account label key> é o local onde deve ser informada a chave para o account label desejado e <campo> é o local onde deve informado o campo da credencial que se deseja utilizar.

Hoje somente 2 conectores suportam esse tipo de expressão: REST V2 e Soap V2. Isso acontece porque o acesso ao cofre deve ser feito com segurança, evitando o vazamento de credenciais. Os componentes foram preparados para isso e restringem o acesso ao cofre de credenciais em apenas 2 propriedades configuráveis - “body” e "headers".

No exemplo acima, o REST V2 adiciona 2 novos accounts configuráveis, denominados “Custom Account #1” e “Custom Account #2”. Eles podem ser acessados através dos account label keys "custom-1" e "custom-2". Dessa maneira, a expressão com Double Braces para acessar o campo “username” dentro da credencial informada em “Custom 1” é:

{{ account.custom-1.username }}

Para evitar vazamentos, somente os campos "body" e "headers" dos componentes suportam acesso através de expressões com Double Braces em Account. Se você utilizar essas expressões em outros campos, uma mensagem de erro será informada durante a execução do pipeline.

  • Metadata

O escopo “metadata” permite acesso aos metadados do pipeline.

Estas são as informações de metadados do pipeline atualmente suportadas:

Informações sobre o pipeline

- pipeline.name: nome do pipeline

- pipeline.versionMajor: version major

- pipeline.versionMinor: version minor

- pipeline.realm: nome do Realm

- pipeline.description: descrição do pipeline

- pipeline.id: ID único do pipeline

Informações sobre a configuração de execução

- runtime.consumers: quantidade de consumidores de acordo com o tamanho do pipeline

- runtime.actualConsumers: quantidade de consumidores efetivamente configurados

- runtime.environment: nome do ambiente onde o pipeline está em execução

Informações sobre o ambiente de execução

- execution.key: ID único para esta execução do pipeline

- execution.timeout: timeout configurado para o pipeline

- execution.startTimestamp: tempo de início da execução do pipeline (em milissegundos, no formato "UNIX Epoch")

- execution.redelivery: booleano que especifica se é a primeira execução ou uma nova tentativa (clique aqui para acessar o artigo sobre Pipeline Engine e entender melhor)

Utilize uma expressão com Double Braces e metadata para acessar informações necessárias. Veja este exemplo:

{{ metadata.pipeline.name }}

O nome do pipeline será resolvido como uma string.

Para saber quais são as funções associadas aos Double Braces e como utilizá-las, clique aqui para acessar o nosso outro artigo.

Encontrou sua resposta?