IMPORTANTE: esta documentação foi descontinuada. Leia a documentação Funções Double Braces atualizada no nosso novo portal de documentação.
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 execuções simultâneas de acordo com o tamanho do pipeline
- runtime.actualConsumers: quantidade de execuções simultâneas efetivamente configuradas
- 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.