Campo da função

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 10 min. de leitura
  • Crie campos de função e scripts na Now Platform para executar transformações e cálculos comuns de banco de dados.

    Campos regulares armazenam um valor no banco de dados. Em vez de armazenar dados, um campo de função exibe os resultados de uma consulta de banco de dados. Os campos de função não têm uma coluna de banco de dados associada. Em vez disso, os campos de função geram um valor com base em cálculos simples de outros campos e constantes. Eles podem ser usados como qualquer outro campo no sistema: em formulários, listas, condições de consulta, relatórios e assim por diante.

    Aviso:
    Um campo de função que faz referência a outro campo de função na função resultará em um erro. Os campos de função não contêm dados ou são avaliados em tempo de execução.

    Caso de uso

    Você deseja identificar todos os incidentes com uma descrição resumida provavelmente inútil de menos de 10 caracteres.

    Em vez de consultar todos os registros para determinar qual registro atende a determinados critérios, crie um campo de função ou script de função que recupere somente os registros que atendem aos critérios.

    Para um cálculo simples, é melhor usar um campo de função ou script de função em vez de armazenar um valor calculado. O valor é sempre calculado na recuperação. Outro benefício do uso de campos de função é que o servidor de banco de dados executa a transformação em vez do nó da aplicação.

    Campos de função versus campos calculados

    Os valores dos campos calculados são armazenados no banco de dados. Os valores dos campos de função ou dos scripts de função não são armazenados no banco de dados, mas são calculados no momento da recuperação. Os valores do campo de função são sempre atualizados.

    Campos de função versus regras de negócio

    Use campos de função ou scripts quando a lógica de negócios for baseada em uma transformação simples de um ou mais campos existentes. Os campos de função e os scripts permitem implementar a lógica de negócios sem armazenar e manter o resultado de uma transformação.

    Campos de função versus filtros, cadeias de caracteres de consulta e Rhino

    Em vez de chamar o Rhino para executar transformações de cadeia de caracteres, você pode usar um campo de função ou script de função para executar as transformações para você. Os campos de função e os scripts de função são mais eficientes e resultam em valores atualizados que não precisam ser armazenados ou mantidos.

    Limitações do campo de função

    Como os cálculos do campo de função não são armazenados no banco de dados, algumas operações não são relevantes.
    • Os campos de função não podem ser auditados ou indexados diretamente.
      Nota:
      Para indexar um campo de função como se fosse um campo normal, certifique-se de que os campos individuais usados pela função sejam indexados. Ou, para obter o melhor desempenho, certifique-se de que haja um índice composto que inclua todos os campos usados na função.
    • Os campos de função não podem ser criptografados, pois o valor de um campo de função nunca é armazenado no banco de dados.
    • Os campos de função não podem ser convertidos em campos regulares ou vice-versa.
    • Os campos de função que você cria na IU de relatório não são compatíveis com a referência com pontos. Para obter mais informações, consulte Configurar campos de função em relatórios.
    • A segurança é avaliada nos componentes da função e no valor calculado do campo. Quando usadas em visualizações, as seções que contêm informações que o usuário não tem permissão para ver são ocultadas do usuário.
    • Os nomes das funções de campo devem ser exclusivos.

    Definição de funções da plataforma

    As funções de plataforma podem ser definidas de duas maneiras:
    1. Use as seguintes interfaces de programação de aplicações (APIs) para criar e usar funções em um script.
      Tabela 1. APIs de função
      APIs Descrição
      GlideDBFunctionBuilder com escopo Construa a função para executar uma operação SQL.
      GlideRecord - addFunction(função de objeto) Aplique a função a um GlideRecord.
      GlideDBFunctionCaseBuilder - Global Criar declarações de caso.
    2. Crie um campo que contenha a definição da função, conforme mostrado no exemplo a seguir.

      Definição de campo de função

      Marque a caixa de seleção Campo de função no formulário Entrada de dicionário [sys_dictionary]. Esta ação especifica que o campo executa uma função em vez de armazenar um valor.

    operações glidefunction

    Os campos de função podem executar as seguintes operações usando a função glide: <operation> sintaxe. Ao fornecer um campo como um argumento, você pode fazer referência com pontos para campos relacionados. Por exemplo, cmdb_ci.name.
    Nota:
    O tipo de campo de função deve ser compatível com o tipo de retorno da função do glide. Por exemplo, inteiro, longint, cadeia de caracteres e assim por diante. Se o tipo retornado não puder ser convertido para o tipo de dicionário, você obterá exceções.
    Tabela 2. Operações de campo de função
    Operação Descrição Exemplo
    adicionar () Usa dois campos numéricos como entrada, adiciona-os e retorna os resultados como o valor do campo.

    Esta função também obtém valores numéricos para qualquer uma das entradas. Coloque valores numéricos entre aspas simples ou duplas.

    glidefunction:add(child_incidents, parent_incident)

    Retorna 6 se o incidente tiver cinco incidentes secundários e um incidente primário.

    Tipos de retorno possíveis: Decimal, Número de ponto flutuante, Número inteiro grande, Número inteiro

    aglutinar () Usa qualquer número de campos separados por vírgulas como entrada e retorna o primeiro valor não vazio. glidefunction:coalesce(closed_at, resolved_at, sys_updated_on)

    Se o valor de closed_at estiver vazio, a função retornará o valor de resolved_at. Se o valor de resolved_at também estiver vazio, a função retornará o valor de sys_updated_on.

    Tipo de retorno: texto

    concat() Usa qualquer número de constantes e campos separados por vírgula como entrada, concatena a entrada e retorna apenas uma cadeia de caracteres como um valor de campo. glidefunction:concat(incident_number, '/', short_description)

    Retorna "INC0001 / Meu cliente precisa de um novo laptop". se o valor do campo de número for "INC0001" e o short_description for "Meu cliente precisa de um novo laptop".

    Tipo de retorno: texto

    datedif() Usa dois campos de data/hora como entrada, calcula a diferença entre as datas em dias, minutos e segundos e retorna os resultados como o valor do campo de duração. glidefunction:datedimp(closed_at, sys_created_on)

    Retorna a duração de um incidente da data de criação até a data de encerramento. Resultado de exemplo: 10 dias, 8 horas 23 minutos e 11 segundos

    Tipo de retorno: duração

    diadasemana() Usa dois argumentos: um campo de data e uma constante de "1" (a semana começa no domingo) ou "2" (a semana começa na segunda-feira). Retorna os resultados como um valor inteiro que representa o dia da semana.

    A função dayofweek() usa datas UTC, mas ajusta os valores de comparação com base no fuso horário da instância.

    glidefunction:dayofweek(resolved_at, '1').

    Se resolved_at ocorrer em uma quarta-feira, retornará 4 se o número inteiro for 1 e retornará 3 se o número inteiro for 2.

    Tipo de retorno: número inteiro

    distância_espira() Usa dois locais e retorna a distância entre eles em metros.
    • glidefunction:istance_sphere('-0.189937', '51.473584', '80.206458', '25.767242')

      Retorna a distância entre os dois conjuntos de pares de longitude e latitude.

    • glidefunction:istance_sphere(u_location, '80.206458', '25.767242')

      Retorna a distância entre o campo de ponto geográfico u_location e as coordenadas de longitude e latitude.

    • glidefunction:istance_sphere(location1, location2)

      Retorna a distância entre os campos de ponto geográfico location1 e location2.

    • glidefunction:divide(istance_sphere(location1, '-0.189937', '51.473584'), '1000')

      Retorna a distância entre o campo de ponto geográfico location1 e Londres em quilômetros.

    Tipo de retorno: decimal

    dividir () Usa dois campos numéricos como entrada, divide o primeiro pelo segundo e retorna os resultados como o valor do campo.

    Esta função também obtém valores numéricos para qualquer uma das entradas. Coloque valores numéricos entre aspas simples ou duplas.

    glidefunction:divide(u_num2,u_num1)

    Retorna 5 se num2 = 10 e num1 = 2.

    Tipos de retorno possíveis: Decimal, Número de ponto flutuante, Número inteiro grande, Número inteiro

    maior () Usa dois ou mais valores como entrada e retorna o maior valor da lista de argumentos. glidefunction:greatest(10,100,1000)

    Retorna 1000

    Tipos de retorno numérico possíveis: Decimal, Número de ponto flutuante, Número inteiro grande, Número inteiro

    Esta função também funciona com campos de data e cadeia de caracteres.

    menos () Usa dois ou mais valores como entrada e retorna o valor mais baixo da lista de argumentos. glidefunction:least(10,100,1000)

    Retorna 10

    Tipos de retorno numérico possíveis: Decimal, Número de ponto flutuante, Número inteiro grande, Número inteiro

    Esta função também funciona com campos de data e cadeia de caracteres.

    comprimento () Usa um campo de cadeia de caracteres como entrada, calcula o tamanho do campo em caracteres e retorna os resultados como um valor de campo. glidefunction:length(short_description)

    Retorna 37 se short_description = "Esta aplicação está realizando um teste".

    Tipo de retorno: número inteiro

    multiplicar () Usa dois campos de número como entrada, executa a multiplicação e retorna os resultados como um valor de campo.

    Esta função também obtém valores numéricos para qualquer uma das entradas. Coloque valores numéricos entre aspas simples ou duplas.

    glidefunction:multiply(u_num1, u_num2)

    Retorna 48 se num1 = 8 e num_2 = 6.

    Tipos de retorno possíveis: Decimal, Número de ponto flutuante, Número inteiro grande, Número inteiro

    posição () Usa dois campos de texto ou dois campos de texto e um número inteiro como entrada. Um ou ambos os campos de texto também podem ser cadeias de caracteres.
    1. Retorna a posição da primeira ocorrência da cadeia de caracteres do primeiro campo de texto no segundo.
    2. Se um número inteiro for especificado, esta função retornará a posição do segundo campo de texto após a posição do número inteiro.

    Retorna 0 se o primeiro campo de texto não estiver presente no segundo (após a posição do número inteiro, se especificado).

    • glidefunction:position('e',short_description)

      Se o valor do campo short_description for "Este computador está executando uma atualização", retornará 12.

    • glidefunction:position('e',short_description,'14')

      Se o valor do campo short_description for "Este computador está executando uma atualização", retornará 19.

    Tipo de retorno: número inteiro

    substring() Usa um campo de texto e dois números inteiros como entrada. Retorna a primeira instância de uma cadeia de caracteres que começa na posição do primeiro número inteiro e tem o tamanho do segundo. glidefunction:substring(short_description, '7', '2')

    Se o valor do campo short_description for "Vamos para a loja", retornará "ir".

    Tipo de retorno: texto

    subtrair () Usa dois campos numéricos como entrada, subtrai o segundo do primeiro e retorna o resultado como o valor do campo.

    Esta função também obtém valores numéricos para qualquer uma das entradas. Coloque valores numéricos entre aspas simples ou duplas.

    glidefunction:subtract(u_num1, u_num2)

    Retorna 2 se num1 = 8 e num_2 = 6.

    Tipos de retorno possíveis: Decimal, Número de ponto flutuante, Número inteiro grande, Número inteiro

    Criar um campo de função para executar funções de banco de dados

    Crie um campo que exiba os resultados de uma função de banco de dados, como uma operação matemática, cálculo de tamanho de campo ou cálculo de dia da semana. Teste em uma instância de subprodução antes de implantar em uma instância de produção.

    Antes de Iniciar

    Função necessária: personalize_dictionary ou admin.

    Procedimento

    1. Navegar até Todos > Definição do Sistema > Dicionário.
    2. Clique em Nova.
    3. Selecione o campo Função.
    4. Preencha esses campos no formulário.
      Tabela 3. Campos para campos de função
      Campo Descrição
      Tabela Tabela à qual o campo de função é adicionado.
      Tipo Especifica o tipo de campo: cadeia de caracteres, número, data e assim por diante.
      Rótulo da coluna Define o rótulo da coluna.
      Nome da coluna Define o nome da coluna. Criado automaticamente com base no Rótulo da coluna.
      Comprimento máximo Define o tamanho máximo do valor de retorno.
      Campo da função Se selecionado, cria um campo que exibe os resultados de uma função de banco de dados, como uma operação matemática, cálculo de tamanho de campo ou cálculo de dia da semana.

      Depois que o novo registro de função for salvo, você não poderá desmarcar a caixa de seleção para tornar o campo um campo regular.

      Definição de função Define a função que o campo executa.

      Inicia com glidefunction:, seguido pela operação a ser realizada (por exemplo, concat), seguida pelos parâmetros da função. As constantes devem ser colocadas entre aspas simples.

      Por exemplo, a definição de função a seguir cria um campo que mostra a descrição resumida, seguida por um espaço e pelo nome do solicitante:

      glidefunction:concat(short_description, ' ', caller_id.name)

      Nota:
      Os parâmetros de função oferecem suporte à referência com pontos. Consulte Dot-walking to data in related tables.
    5. Clique em Enviar.
      Você retorna para a tabela Entrada de dicionário [sys_dictionary].
    6. Navegue até a tabela à qual você adicionou o campo de função.
    7. Adicione o campo de função à lista.

    Resultado

    Use o campo de função como qualquer outro campo. Por exemplo, adicione-o a um formulário, use-o em um filtro ou no construtor de condição.

    Se a definição da função for inválida, em vez do valor esperado, você receberá a mensagem Função inválida se o campo da função for um campo do tipo cadeia de caracteres ou um valor vazio para outros tipos de campo.