Campo da função
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.
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
- 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
- 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. - Crie um campo que contenha a definição da função, conforme mostrado no exemplo a seguir.
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
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 .| 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. |
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]. |
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]. |
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.
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). |
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. |
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
Procedimento
Resultado
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.