Gerenciador de transações: Integrações - Sintaxe do handlebars
Você pode usar a linguagem de modelo do handlebars ao criar um modelo de transformação de integração.
Handlebars é uma linguagem de modelo leve usada para gerar conteúdo dinâmico. Os administradores que criam modelos de transformação de integração usam os seguintes elementos-chave da sintaxe do handlebars, juntamente com aprimoramentos específicos de CPQ:
- Expressões do handlebars: Entre chaves duplas {{ }}, as expressões permitem que os administradores insiram variáveis, funções ou propriedades no modelo. Por exemplo, {{user.name}}renderiza o valor da propriedade name do objeto do usuário.
- Os auxiliares internos incluem auxiliares condicionais e auxiliares de iteração.
- Os auxiliares condicionais permitem renderizar conteúdo condicionalmente com base em um valor. Por exemplo:
- #if renderiza o conteúdo se a condição for verdadeira.
{{#if user.isActive}} Active {{/if}}Este snippet renderiza "Ativo" somente se
Usuário.Está Ativoé verdadeiro. - #unless – O oposto de
{{#unless user.isActive}} Inactive {{/unless}}Este snippet torna "inativo" se
Usuário.Está Ativoé falso.
- #if renderiza o conteúdo se a condição for verdadeira.
- Os auxiliares de iteração permitem que você percorra listas ou modifique o escopo.
- #each em loop por uma matriz e renderiza o conteúdo de cada item.
{{#each users}} <li>{{this.name}}</li> {{/each}}Este snippet itera pelos usuários e exibe o nome de cada usuário como um item de lista.
- #with muda o escopo para um objeto específico.
{{#with user}} <p>{{name}}</p> {{/with}}Este snippet simplifica o acesso às propriedades de
usuáriono bloco.
- #each em loop por uma matriz e renderiza o conteúdo de cada item.
- Os auxiliares condicionais permitem renderizar conteúdo condicionalmente com base em um valor. Por exemplo:
Sintaxe avançada do handlebars para integrações
Aqui está uma explicação de cada elemento sintático usado no Modelo de integração, que aproveita a linguagem de modelo do handlebars.
- {{#if lines}} {{/if}}
{{#if}} verifica se algo é verdadeiro.
O snippet a seguir verifica se há algo em
linhas. Selinhastem um valor (como uma lista de itens ou alguns dados), ele fará algo dentro do bloco. Selinhasestá vazio ou não existe, ignora o bloco.{{#if lines}} We have lines to process! {{else}} No lines available. {{/if}}Se
linhasExiste, ele mostra "Temos linhas para processar!". Caso contrário, ele mostrará "Nenhuma linha disponível". - {{~#each lines~}} {{/each}}
{{#each}} repete algo para cada item em uma lista.
O snippet a seguir itera em cada item no
linhase renderiza o conteúdo dentro do bloco para cada item. Os símbolos são caracteres de controle de espaço em branco no handlebars. Eles ajudam a remover espaços extras ou quebras de linha antes e depois do bloco, garantindo uma saída mais limpa e compacta. (Veja abaixo.){{~#each lines~}} <p>{{this}}</p> {{/each}}O snippet passa por cada item em
linhase coloca cada item em um marcador de parágrafo. - {{#if <logik line-level field varname>}} {{/if}}
{{#if <logik ...}} verifica se um dado específico é verdadeiro ou existe. Ele verifica se um campo ou valor específico (como varname) em seus dados existe ou é verdadeiro. É uma maneira de verificar informações específicas em uma estrutura mais complexa (como em um conjunto de dados).
{{#if logik.lineLevelField.isActive}} The field is active! {{else}} The field is not active. {{/if}}Este snippet verifica se
logik.lineLevelField.IsAtivoé verdadeiro (como verificar se algo está "ativo"). Se estiver, mostrará "O campo está ativo!" Caso contrário, será exibido "O campo não está ativo".
O til ()
O til (-), um caractere de controle, oculta espaços em branco e quebras de linha, ajudando a manter a saída limpa. Isso torna o HTML mais compacto e evita problemas de espaçamento na saída.
Em alguns dos exemplos acima, um til principal antes #eachremove o espaço em branco antes do início do bloco. O til à direita após o número cada remove o espaço em branco após o início do bloco.
O assistente personalizado zeroIfMissing
O assistente zeroIfMissing evita erros devido a valores ausentes e garante que os campos numéricos sempre tenham um valor padrão válido.
Custom Helper 'zeroIfMissing'
"price": {{zeroIfMissing txn.price}}, would become -> "price": 0 (or "price": 9.99, if txn.price is present)
O assistente personalizado lgkFilter
O auxiliar lgkFilter itera por meio de uma coleção e inclui somente itens que atendam a uma condição especificada.
{
"numericFiltered": [
{{#lgkFilter lines "txn.line.custom.someNumber > 10"}}
{
"id": "{{txn.line.product.id}}",
"someNumber": "{{txn.line.custom.someNumber}}"
}
{{else}}
{
"error": "Item could not be added (numeric condition)"
}
{{/lgkFilter}}
],
"textFiltered": [
{{#lgkFilter lines "txn.line.custom.status == Active"}}
{
"id": "{{txn.line.product.id}}",
"status": "{{txn.line.custom.status}}"
}
{{else}}
{
"error": "Item could not be added (text condition)"
}
{{/lgkFilter}}
]
}
- Sintaxe simples: {{#lgkFilter lines "<predicate_field>"}}
- Sintaxe condicional: {{#lgkFilter lines "<predicate_field> <comparator> <literal_value>"}}
- Comparadores compatíveis: <, >, <=, >=, !=, ==
- Condições complexas, como &&, não são compatíveis
. caso contrário o bloco é compatível com o auxiliar.
O auxiliar lança um erro quando sua sintaxe está incorreta e quando os campos não podem ser analisados.
O auxiliar executa junções por vírgulas internamente para uma saída JSON válida.
O símbolo em
A garante que você esteja extraindo o valor do contexto externo ou primário e não do contexto atual. É frequentemente usado quando os dados de que você precisa estão em um nível mais alto na estrutura e você quer evitar confundi-los com os dados locais do escopo atual.
Na expressão "LGK__TransactionId__c": "@{parentTransaction.id}". @O símbolo é usado para fazer referência a um valor de um contexto primário ou objeto em sistemas de modelo, como handlebars ou outros sistemas semelhantes.
. @{}a sintaxe informa ao sistema para examinar o contexto primário (o objeto ou os dados fora do escopo atual) e recuperar o valor de Transaction.ID .
Por exemplo, suponha que você tenha um objeto como este:
{
"parentTransaction": {
"id": "12345"
}
}
Quando você usa "LGK__TransactionId__c": "@{parentTransaction.id}". id de Transação parent (que é 12345 ) será usado como o valor para "LGK__TransactionId__c".
Exemplo de atribuição condicional
A linha "LGK__ParentTransactionLineId__c": {{#if txn.line.custom.parentLineReferenceId}} "@{line_{{txn.line.custom.parentReferenceId}}.id}" {{else}} null {{/if}}É parte de um modelo de handlebars e define condicionalmente o valor do campo LGK__ParentTransactionLineId__c .
LGK__ParentTransactionLineId__cé a chave em que o valor resultante será colocado.- {{#if txn.line.custom.parentLineReferenceId}}verifica se
txn.line.custom.parentLineReferenceIdexiste e tem um valor. - @{line_{{txn.line.custom.parentReferenceId}}.id}cria uma referência dinâmica para
idde uma linha específica com base emReferênciParentReferenceId. - {{else}} null {{/if}} define o valor como nulo se a condição for falsa.
Concatenando campos do Salesforce com pontuação condicional
No handlebars, concatenar vários campos com pontuação (como vírgulas, espaços e verificações condicionais) pode ser feito combinando variáveis no modelo e usando blocos para manipular a lógica condicional.
Por exemplo, você pode usar a abordagem a seguir para concatenar campos como endereço, endereços da rua 2, cidade, estado e CEP de um endereço, garantindo que uma vírgula e um espaço após os endereços da rua 2 sejam incluídos somente se os endereços da rua 2 forem preenchidos:
{{#if streetAddress}}
{{streetAddress}}
{{#if streetAddress2}}, {{streetAddress2}}{{/if}}
{{#if city}}, {{city}}{{/if}}
{{#if state}}, {{state}}{{/if}}
{{#if zipcode}}, {{zipcode}}{{/if}}
{{else}}
No address available
{{/if}}
Isso concatena campos como streetAddress, streetaddress2 e cidade, garantindo que as vírgulas sejam incluídas somente quando os campos correspondentes forem preenchidos.
Saída de exemplo com Endereço2 : "123 Main St, Apt 4, San Francisco, CA, 94105"
Saída de exemplo sem Endereço2 : "123 Main St, San Francisco, CA, 94105"
Conclusão
Ao usar esses elementos-chave, os administradores podem criar modelos de transformação de integração dinâmicos, flexíveis e de fácil manutenção. Entender e aproveitar expressões, auxiliares, blocos, condicionais e referências de contexto primário permite lidar com dados e lógica complexos com facilidade.