Campo da função

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 11 min. de leitura
  • Crie campos de função e scripts no ServiceNow AI Platform para executar transformações e cálculos comuns de banco de dados.

    Os 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, visualizações de dados, 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 avaliam 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 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 estão sempre atualizados.

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

    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 scripts permitem implementar 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 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 regular, certifique-se de que os campos individuais usados pela função estejam indexados. Ou, para obter o melhor desempenho, certifique-se de que haja um índice composto incluindo todos os campos usados na função.
    • Os campos de função não podem ser criptografados, pois um valor de 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órios não são compatíveis com referência com pontos. Para obter mais informações, consulte Configure 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 ficam ocultas do usuário.
    • Os nomes das funções de campo devem ser exclusivos.

    Definição de funções da plataforma

    As funções da 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.
      AddFunction(Object Function) 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 do campo de função

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

    glidefunction operações

    Os campos de função podem executar as seguintes operações usando função de glide:<operation> sintaxe. Ao fornecer um campo como argumento, você pode fazer referência com pontos nos campos relacionados. Por exemplo, cmdb_ci.name .
    Nota:
    O tipo de campo Função deve ser compatível com o tipo de retorno da função Glide. Por exemplo, inteiro, inteiro longo, 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
    add() Usa dois campos numéricos como entrada, adiciona-os e retorna os resultados como o valor do campo.

    Esta função também usa 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.

    Possíveis tipos de retorno: 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:aglutinar(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 numérico for "INC0001" e short_description for "Meu cliente precisa de um novo laptop".

    Tipo de retorno: Texto

    datediff() 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:datediff(closed_at, sys_created_on)

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

    Tipo de retorno: Duração

    diadesemana() Usa dois argumentos: Um campo de data e uma constante de qualquer um "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.

    . diadesemana() A função 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_sphere() Usa dois locais e retorna a distância entre eles em metros.
    • glidefunction:distance_sphere('-0,189937', '51,473584', '80,206458', '25,767242')

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

    • glidefunction:distance_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:distance_sphere(location1, location2)

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

    • glidefunction:dividir(distance_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 usa valores numéricos para qualquer uma das entradas. Coloque valores numéricos entre aspas simples ou duplas.

    glidefunction:dividir(u_num2,u_num1)

    Retorna 5 se num2 for igual a 10 e num1 for igual a 2.

    Possíveis tipos de retorno: Decimal, número de ponto flutuante, número inteiro grande, número inteiro

    get_latitude() Usa qualquer coluna de ponto geográfico, campo numérico ou constante numérica e converte-a em um valor de latitude válido dentro do intervalo [-90,90].
    • glidefunction:get_latitude(u_geo_point_field) Retorna o valor de latitude em u_geo_point_field.
    • glidefunction:get_latitude(u_numerical_column) Retorna o valor de latitude em u_numerical_column no intervalo [-90,90].
    • glidefunction:get_latitude('305,767242') Retorna -54,232758 valor de latitude.

    Tipo de retorno: Número de ponto flutuante

    get_longitude() Usa qualquer coluna de ponto geográfico, campo numérico ou constante numérica e converte-a em um valor de longitude válido dentro do intervalo [-179 180].
    • glidefunction:get_longitude(u_geo_point_field) Retorna o valor da longitude em u_geo_point_field.
    • glidefunction:get_ longitude(u_numerical_column) Retorna o valor da longitude em u_numerical_column no intervalo [-179 180].
    • glidefunction:get_longitude('380,206458') Retorna 20,206458 valor de longitude.

    Tipo de retorno: Número de ponto flutuante

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

    Retorna 1000

    Possíveis tipos de retorno numérico: 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: menos (10,100,1000)

    Retorna 10

    Possíveis tipos de retorno numérico: 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 for "Esta aplicação está realizando um teste".

    Tipo de retorno: Número inteiro

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

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

    glidefunction:multiplicar(u_num1, u_num2)

    Retorna 48 se num1 for igual a 8 e num_2 for igual a 6.

    Possíveis tipos de retorno: 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 um upgrade", retornará 12.

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

      Se o valor do campo short_description for "Este computador está executando um upgrade", 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 é o comprimento do segundo. glidefunction:substring(short_description, '7', '2')

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

    Tipo de retorno: Texto

    subtract() 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 usa valores numéricos para qualquer uma das entradas. Coloque valores numéricos entre aspas simples ou duplas.

    glidefunction:subtrair(u_num1, u_num2)

    Retorna 2 se num1 for igual a 8 e num_2 for igual a 6.

    Possíveis tipos de retorno: Decimal, número de ponto flutuante, número inteiro grande, número inteiro

    to_geopoint() Usa colunas de latitude e longitude ou valores numéricos e os converte em uma coluna de ponto geográfico.
    • glidefunction:to_geopoint(u_long_column, u_lat_column)

      Converte as colunas de latitude e longitude em uma única coluna geo_point.

    • glidefunction:to_geopoint('80,206458','25,767242')

      Retorna um campo geo_point com as coordenadas "(80,206458, 25,767242)".

    Tipo de retorno: Ponto geográfico

    Crie 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 comprimento do campo ou cálculo do 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é Tudo > Definição do Sistema > Dicionário.
    2. Clique em Nova.
    3. Selecione Campo de 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 Função é adicionado.
      Tipo 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 em 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 do comprimento do campo ou cálculo do 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.

      Começa com glidefunction: , seguido pela operação a ser realizada (por exemplo, concat ), seguido pelos parâmetros de função. As constantes devem estar 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, seguido pelo nome do chamador:

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

      Nota:
      Os parâmetros de função são compatíveis com o ponto-walking. Consulte Dot-walking to data in related tables.
    5. Clique em Enviar.
      Você retorna à tabela Entrada do dicionário [sys_dictionary].
    6. Navegue até a tabela à qual você adicionou o campo Função.
    7. Adicione o campo Função à lista.

    Resultado

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

    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 função for um campo do tipo cadeia de caracteres ou um valor vazio para outros tipos de campo.