Gerenciador de transações: Integrações - Sintaxe do handlebars

  • Versão de lançamento: Australia
  • Atualizado 12 de mar. de 2026
  • 6 min. de leitura
  • 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.

      • 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ário no bloco.

    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 . Se linhas tem um valor (como uma lista de itens ou alguns dados), ele fará algo dentro do bloco. Se linhas está vazio ou não existe, ignora o bloco.

      {{#if lines}} 
        We have lines to process! 
      {{else}} 
        No lines available. 
      {{/if}}

      Se linhas Existe, 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 linhas e 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 linhas e 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}}
      ]
    }
    Este auxiliar substitui #eache. #unlessblocos.
    • 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.parentLineReferenceId existe e tem um valor.
    • @{line_{{txn.line.custom.parentReferenceId}}.id}cria uma referência dinâmica para id de uma linha específica com base em Referê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.

    Para obter mais informações sobre a sintaxe do handlebars, consulte Documentação do handlebars .
    Nota:
    A sintaxe do handlebars não é compatível com todos os recursos descritos neste documento externo.