Campo da função
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.
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
- 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
- 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. - Crie um campo que contenha a definição da função, conforme mostrado no exemplo a seguir.
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
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.| 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. |
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.
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 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
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 da função for um campo do tipo cadeia de caracteres ou um valor vazio para outros tipos de campo.