Ir para o conteúdo

Substituição Dinâmica

Substituição Dinâmica é um tipo de sintaxe que pode ser usada no Vinyl para substituir dinamicamente o resultado de uma expressão na camada de lógica de negócios e/ou na camada de UI do aplicativo. Na camada de lógica de negócios, ele é usado para substituir dados dinamicamente e na camada de UI do aplicativo é usado para substituir dinamicamente o valor resultante que está sendo exibido. A substituição dinâmica também pode ser utilizada em Notificações, onde você deseja substituir as informações que estão sendo exibidas, por exemplo `{{NomeDoCliente}}``.

Ao usar a Substituição Dinâmica na Camada UI do Aplicativo, você precisa atribuir a Página a um Objeto de Negócios para usar a substituição dinâmica. Essas informações são configuradas no nível da página, portanto, todos os campos necessários para a substituição precisarão estar disponíveis no objeto de negócios da página.

Os benefícios de usar a substituição dinâmica na lógica de negócios são que ela permite simplificar a quantidade de informações contidas em uma expressão e torna as expressões mais legíveis por humanos.

Sintaxe de Substituição Dinâmica

A sintaxe a ser usada para Substituição Dinâmica é:

`{{AliasName}}`

Aqui, as chaves {{ }} (ou colchetes nos EUA) cercam o valor do Alias que será usado para a substituição dinâmica. É recomendado que o valor real contido entre chaves seja um valor de Alias versus um valor de Nome de Coluna ou Expressão, pois com o tempo um valor de Alias é geralmente considerado mais estático do que um Nome de Coluna ou Expressão.

Exemplo de Lógica de Negócios

A Substituição Dinâmica é muito útil em cláusulas Where, bem como para simplificar cálculos na camada de lógica de negócios. Aqui veremos exemplos específicos onde podemos aproveitar a Substituição Dinâmica.

Neste exemplo, usaremos o banco de dados Northwinds como fonte e presumiremos que estamos visualizando uma página Pedidos que contém informações sobre pedidos feitos por meio de um aplicativo de atendimento de pedidos. Primeiro veremos como podemos usar a Substituição Dinâmica em uma Regra de Lógica de Negócios para restringir as informações de Pedidos exibidas apenas aos Pedidos feitos nos últimos 3 anos:

  • Navegue até a página Pedidos do aplicativo, vá para Action Drawer > Live Designer
  • Faça uma busca detalhada no ícone SQL cog do Painel de pedidos
  • Copie o objeto de negócios Ordem (Origem) e renomeie-o. Por exemplo: Pedidos (últimos anos)
  • Para a nova regra, na aba Colunas, crie uma nova Expressão que calcule o número de anos desde que um pedido foi feito usando DATEDIFF e forneça um valor de Alias para esta Expressão. Este Alias é o que será usado para substituição dinâmica. Por exemplo: DifData
  • Defina a opção de conversão apropriada para o tipo de dados lógicos da expressão. Aqui definimos como Número.
  • Validar para verificar se os resultados estão conforme o esperado

A seguir usaremos a substituição dinâmica na cláusula Where do nosso Business Object, para restringir os resultados que queremos retornar.

  • Navegue até a tela Business Logic onde você está configurando a regra acima
  • Clique para selecionar a aba Onde
  • Clique em + Where Clause e adicione a sintaxe de Substituição Dinâmica, usando nosso valor Alias da Expressão recém-criada e forneça informações sobre como você deseja restringir os resultados. Por exemplo:
    • Esquerda = {{DateDiff}}
    • Operador = <=
    • Direita = 3
  • Validar e verificar se os registros devolvidos são apenas os Pedidos realizados nos últimos 3 anos

Por último, com este exemplo, veremos como podemos simplificar um cálculo usando substituição dinâmica. Continuando a trabalhar com o Business Object criado para o exemplo que temos, vamos modificá-lo para incluir uma Expressão adicional que usa substituição dinâmica para encadear o número de anos desde que um Pedido foi feito com a palavra 'anos'.

  • Clique no botão Vinyl Voltar para voltar à tela Business Logic onde você está configurando a regra
  • Clique para selecionar a aba Colunas
  • Clique em + Coluna e adicione uma Expressão que lança o valor de substituição dinâmica e o une com a palavra 'anos':
    • Por exemplo: CAST({{Diferença de data}} as string) || 'years'
  • Forneça um valor de Alias para esta Expressão. Por exemplo: Anos
  • Validar resultados

Exemplo de URL

Se você deseja substituir dinamicamente um URL em um objeto de dados, você pode usar uma sintaxe como o exemplo a seguir:

'www.webpage.com/path/path/' || {{Substituição Dinâmica}}

Exemplo de Expressão Complexa

Se você estiver trabalhando com substituição dinâmica em uma Expressão mais complexa, tome cuidado com a sintaxe. Pode haver casos em que você precise adicionar um conjunto adicional de parênteses para que a sintaxe funcione corretamente (ou como você espera).

Por exemplo, se você usar o seguinte Expression Vinyl retornará um erro de divisão por zero:

IIF({{Sum}} = 0, 0,({{CompletedCount}}/{{Sum}})*100) 

Isso ocorre porque o processo e a ordem em que a Expressão está sendo avaliada requerem um conjunto adicional de parênteses para produzir os resultados desejados. Aqui está a versão da sintaxe corrigida:

IIF(({{Sum}}) = 0, 0,((CAST({{CompletedCount}} AS DECIMAL(15,5)))/(CAST({{Sum}} AS DECIMAL(15,5))))*100)

Exemplo de Nome de Página Ou Painel

Substituições dinâmicas também podem ser usadas para nomes de páginas ou painéis. Neste cenário de exemplo, usaremos Substituição Dinâmica para um painel Nome do painel Formulário de Página de Funcionários. Aqui substituiremos dinamicamente o Nome Completo do Funcionário como o Nome do painel para o Formulário do Funcionário.

  1. Navegue até a página do seu aplicativo onde deseja substituir o Nome do Painel. Por exemplo: Funcionário
  2. Clique no menu Action Drawer e selecione Live Designer
  3. Selecione o Objeto de negócios que contém o valor da coluna que você usará para Origem em Opções de página
  4. Clique na aba Opções de etiqueta do painel cujo nome deseja modificar. Por exemplo: Funcionário
  5. Modifique o campo Label para conter o valor da coluna que você está usando, usando a sintaxe adequada para Substituição Dinâmica.

    • Por exemplo: `{{Nome Completo}}``
  6. Clique em Salvar

  7. Navegue de volta para a página no aplicativo, atualize seu navegador e teste

Validações de Vinyl

Caso queira utilizar Substituições Dinâmicas com Mensagens de Validação de Vinyl, você precisará colocar o valor de Substituição Dinâmica na própria Mensagem de Validação e também no Business Object do Painel.

Exemplo de mensagem de validação: não pode exceder {{MaxDiscount}}

Limitações

A seguir estão as limitações conhecidas ao trabalhar com Substituições Dinâmicas:

  • Atualmente não há suporte para nomes de colunas em um gráfico
  • A formatação em moeda estrangeira atualmente não permite substituição dinâmica. A solução alternativa é formatar o objeto de dados e converter como String, o que faz com que a função total funcione.