GlideRecord - com escopo

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 44 min. de leitura
  • O GlideRecord com escopo é usado para operações de banco de dados.

    A API GlideRecord é o principal meio de interface com o banco de dados no código do lado do servidor. Um GlideRecord é um objeto que contém registros de uma única tabela. Use a API para criar uma instância de um objeto GlideRecord e adicionar parâmetros de consulta, filtros, limites e ordenação.

    Consulte o artigo GlideRecord para obter detalhes sobre como criar e executar consultas.

    Para obter informações sobre uma classe que executa as mesmas funções que GlideRecord e impõe ACLs, consulte Uso de GlideRecordSecure.

    Sempre teste as consultas em uma instância de produto em fase de desenvolvimento antes de implantá-las em uma instância de produção. Uma consulta codificada construída incorretamente, como a inclusão de um nome de campo inválido, produz uma consulta inválida. Quando a consulta inválida é executada, a parte inválida da condição de consulta é descartada e os resultados são baseados na parte válida da consulta, que pode retornar todos os registros da tabela. Usar um método insert(), update(), deleteRecord( )ou deleteMultiple() em resultados de consulta incorretos pode resultar em perda de dados.

    Você pode definir a propriedade do sistema glide.invalid_query.returns_no_rows como verdadeiro para que as consultas com consultas codificadas inválidas não retornem registros.

    Recuperar valores de registros

    Na maioria dos casos, não use a referência com pontos para obter valores de um registro. A referência com pontos recupera o objeto inteiro em vez do valor do campo. Recuperar o objeto usa mais armazenamento e pode causar resultados indesejáveis quando usado em matrizes ou em Portal de serviços.

    Em vez de recuperar o objeto inteiro, você pode usar um dos seguintes métodos para copiar os valores de campo:

    Se for necessário percorrer um objeto GlideElement com pontos, use o método toString() para recuperar valores. Por exemplo, talvez você precise do sys_id do gerente do solicitante atual para definir outro campo de referência. O exemplo a seguir mostra como obter o valor da cadeia de caracteres em vez do objeto inteiro:
    var mgr = current.caller_id.manager.toString();

    GlideRecord com escopo - addActiveQuery()

    Adiciona um filtro para retornar registros ativos.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 2. Retorna
    Tipo Descrição
    GlideQueryCondition Filtre para retornar registros ativos.
    var inc = new GlideRecord('incident');
    inc.addActiveQuery();
    inc.query();

    GlideRecord com escopo - addEncodedQuery(cadeia de caracteres consulta)

    Adiciona uma consulta codificada a outras consultas que podem ter sido definidas.

    Sempre teste as consultas em uma instância de produto em fase de desenvolvimento antes de implantá-las em uma instância de produção. Uma consulta codificada construída incorretamente, como a inclusão de um nome de campo inválido, produz uma consulta inválida. Quando a consulta inválida é executada, a parte inválida da condição de consulta é descartada e os resultados são baseados na parte válida da consulta, que pode retornar todos os registros da tabela. Usar um método insert(), update(), deleteRecord( )ou deleteMultiple() em resultados de consulta incorretos pode resultar em perda de dados.

    Você pode definir a propriedade do sistema glide.invalid_query.returns_no_rows como verdadeiro para que as consultas com consultas codificadas inválidas não retornem registros.

    Tabela 3. Parâmetros
    Nome Tipo Descrição
    consulta Cadeia de caracteres Uma cadeia de caracteres de consulta codificada.
    Tabela 4. Retorna
    Tipo Descrição
    vazio
    var queryString = "priority=1^ORpriority=2";
    var now_GR = new GlideRecord('incident');
    now_GR.addEncodedQuery(queryString);
    now_GR.query();
    while (now_GR.next()) {
      gs.addInfoMessage(now_GR.getValue('number'));
    }

    GlideRecord com escopo - addFunction(Função de objeto)

    Aplica um objeto GlideDBFunctionBuilder predefinido a um registro.

    Use a classe com escopo GlideDBFunctionBuilder para definir uma função. Depois que a função for definida, use o método addFunction(Object function) para aplicar a função a um registro.

    Tabela 5. Parâmetros
    Nome Tipo Descrição
    função Objeto Objeto GlideDBFunctionBuilder que define uma operação SQL.
    Tabela 6. Retorna
    Tipo Descrição
    vazio
    var functionBuilder = new GlideDBFunctionBuilder();
    var myAddingFunction = functionBuilder.add();
    myAddingFunction = functionBuilder.field('order');
    myAddingFunction = functionBuilder.field('priority');
    myAddingFunction = functionBuilder.build();
    
    // Query incidents in which order + priority is less than 5 and display that added value
    var now_GR = new GlideRecord('incident');
    now_GR.addFunction(myAddingFunction);
    now_GR.addQuery(myAddingFunction, '<', 5);
    now_GR.query();
    while(now_GR.next())
      gs.info(now_GR.getValue(myAddingFunction));

    Saída:

    1
    4
    3
    1
    1
    2
    1

    GlideRecord com escopo – addJoinQuery(cadeia de caracteres "joinTable", cadeia de caracteres primaryField, cadeia de caracteres "joinTableField")

    Adiciona um filtro para retornar registros com base em um relacionamento em uma tabela relacionada ao GlideRecord atual.

    Você pode usar este método para encontrar todos os usuários que estão no grupo de banco de dados por meio da tabela Membro do grupo [sys_user_grmember] ou para encontrar todos os problemas que têm um incidente atribuído por meio do relacionamento incident.problem_id.

    Esta não é uma associação de banco de dados verdadeira; em vez disso, addJoinQuery() adiciona uma subconsulta. Portanto, embora o conjunto de resultados seja limitado com base na associação, os únicos campos aos quais você tem acesso são aqueles na tabela base (aqueles que estão na tabela com a qual o GlideRecord foi inicializado).

    Sempre teste as consultas em uma instância de produto em fase de desenvolvimento antes de implantá-las em uma instância de produção. Uma consulta codificada construída incorretamente, como a inclusão de um nome de campo inválido, produz uma consulta inválida. Quando a consulta inválida é executada, a parte inválida da condição de consulta é descartada e os resultados são baseados na parte válida da consulta, que pode retornar todos os registros da tabela. Usar um método insert(), update(), deleteRecord( )ou deleteMultiple() em resultados de consulta incorretos pode resultar em perda de dados.

    Você pode definir a propriedade do sistema glide.invalid_query.returns_no_rows como verdadeiro para que as consultas com consultas codificadas inválidas não retornem registros.

    Tabela 7. Parâmetros
    Nome Tipo Descrição
    tabela de junção Cadeia de caracteres Nome da tabela a ser usada na associação, como 'incident'.
    primaryField Cadeia de caracteres Opcional. Nome do campo no GlideRecord a ser usado para ingressar no campo especificado no parâmetro joinTableField.

    Padrão: sys_id

    joinTableField Cadeia de caracteres Opcional. Nome do campo na tabela especificada em joinTable a ser usado para associar as tabelas.

    Padrão: primeiro campo na tabela especificada em joinTable que é um campo de referência para a tabela GlideRecord atual.

    Tabela 8. Retorna
    Tipo Descrição
    GlideQueryCondition Filtro que lista os registros em que os relacionamentos correspondem.

    Encontre problemas que tenham um incidente anexado. Este exemplo retorna problemas que têm incidentes associados. No entanto, ele não extrairá valores dos incidentes que são retornados como parte da consulta.

    var prob = new GlideRecord('problem');
    prob.addJoinQuery('incident');
    prob.query();

    Encontre problemas inativos com incidentes associados.

    // Look for Problem records that have associated Incident records
    var now_GR = new GlideRecord('problem');
    var grSQ = now_GR.addJoinQuery('incident');
     
    // Where the Problem records are "active=false"
    now_GR.addQuery('active', 'false');
     
    // And the Incident records are "active=true"
    grSQ.addCondition('active', 'true');
     
    // Query
    now_GR.query();
     
    // Iterate and output results
    while (now_GR.next()) {
    gs.info(now_GR.getValue('number'));
    }

    Encontre problemas que tenham incidentes associados em que o valor do campo incidente caller_id corresponda ao do campo problema opened_by.

    var now_GR = new GlideRecord('problem'); 
            now_GR.addJoinQuery('incident', 'opened_by', 'caller_id'); 
            now_GR.query();

    GlideRecord com escopo - addNotNullQuery(cadeia de caracteres fieldName)

    Um filtro que especifica registros em que o valor do campo passado no parâmetro não é nulo.

    Sempre teste as consultas em uma instância de produto em fase de desenvolvimento antes de implantá-las em uma instância de produção. Uma consulta codificada construída incorretamente, como a inclusão de um nome de campo inválido, produz uma consulta inválida. Quando a consulta inválida é executada, a parte inválida da condição de consulta é descartada e os resultados são baseados na parte válida da consulta, que pode retornar todos os registros da tabela. Usar um método insert(), update(), deleteRecord( )ou deleteMultiple() em resultados de consulta incorretos pode resultar em perda de dados.

    Você pode definir a propriedade do sistema glide.invalid_query.returns_no_rows como verdadeiro para que as consultas com consultas codificadas inválidas não retornem registros.

    Tabela 9. Parâmetros
    Nome Tipo Descrição
    fieldName Cadeia de caracteres O nome do campo a ser verificado.
    Tabela 10. Retorna
    Tipo Descrição
    GlideQueryCondition Um filtro que especifica registros em que o valor do campo passado no parâmetro não é nulo.
    var target = new GlideRecord('incident'); 
    target.addNotNullQuery('short_description');
    target.query();   // Issue the query to the database to get all records where short_description is not null
    while (target.next()) {   
         // add code here to process the incident record
    }

    GlideRecord com escopo - addNullQuery(cadeia de caracteres "fieldName")

    Adiciona um filtro para retornar registros em que o valor do campo especificado é nulo.

    Sempre teste as consultas em uma instância de produto em fase de desenvolvimento antes de implantá-las em uma instância de produção. Uma consulta codificada construída incorretamente, como a inclusão de um nome de campo inválido, produz uma consulta inválida. Quando a consulta inválida é executada, a parte inválida da condição de consulta é descartada e os resultados são baseados na parte válida da consulta, que pode retornar todos os registros da tabela. Usar um método insert(), update(), deleteRecord( )ou deleteMultiple() em resultados de consulta incorretos pode resultar em perda de dados.

    Você pode definir a propriedade do sistema glide.invalid_query.returns_no_rows como verdadeiro para que as consultas com consultas codificadas inválidas não retornem registros.

    Tabela 11. Parâmetros
    Nome Tipo Descrição
    fieldName Cadeia de caracteres O nome do campo a ser verificado.
    Tabela 12. Retorna
    Tipo Descrição
    GlideQueryCondition A condição de consulta adicionada ao GlideRecord.
    var target = new GlideRecord('incident'); 
    target.addNullQuery('short_description');
    target.query();   // Issue the query to the database to get all records where short_description is null
    while (target.next()) {   
       // add code here to process the incident record
    }

    GlideRecord com escopo - addQuery(cadeia de caracteres consulta)

    Adiciona um filtro para retornar registros usando uma cadeia de caracteres de consulta codificada.

    Sempre teste as consultas em uma instância de produto em fase de desenvolvimento antes de implantá-las em uma instância de produção. Uma consulta codificada construída incorretamente, como a inclusão de um nome de campo inválido, produz uma consulta inválida. Quando a consulta inválida é executada, a parte inválida da condição de consulta é descartada e os resultados são baseados na parte válida da consulta, que pode retornar todos os registros da tabela. Usar um método insert(), update(), deleteRecord( )ou deleteMultiple() em resultados de consulta incorretos pode resultar em perda de dados.

    Você pode definir a propriedade do sistema glide.invalid_query.returns_no_rows como verdadeiro para que as consultas com consultas codificadas inválidas não retornem registros.

    Tabela 13. Parâmetros
    Nome Tipo Descrição
    consulta Cadeia de caracteres Uma cadeia de caracteres de consulta codificada.
    Tabela 14. Retorna
    Tipo Descrição
    GlideQueryCondition A condição de consulta adicionada ao GlideRecord.
    var rec = new GlideRecord('incident');
    rec.addQuery('active=true');
    rec.query();
    while (rec.next()) {
      rec.setValue('active', false);
      gs.info('Active incident ' + rec.getValue('number') + ' closed');
      rec.update();
    }

    GlideRecord com escopo - addQuery(cadeia de caracteres name, Object value)

    Crie uma consulta de pesquisa e retorne as linhas que correspondem à solicitação.

    Se você estiver familiarizado com SQL, este método será semelhante à cláusula "where". Uma ou mais chamadas addQuery() podem ser feitas em uma única consulta; neste caso, as consultas são feitas com AND. Se alguma das declarações de consulta precisar ser OR, use o método GlideQueryConditionaddOrCondition().

    Quando addQuery() é chamado com apenas dois parâmetros, nome da tabela e valor de comparação, como myObj.addQuery('category','Hardware');, o operador será considerado "igual a".

    Sempre teste as consultas em uma instância de produto em fase de desenvolvimento antes de implantá-las em uma instância de produção. Uma consulta codificada construída incorretamente, como a inclusão de um nome de campo inválido, produz uma consulta inválida. Quando a consulta inválida é executada, a parte inválida da condição de consulta é descartada e os resultados são baseados na parte válida da consulta, que pode retornar todos os registros da tabela. Usar um método insert(), update(), deleteRecord( )ou deleteMultiple() em resultados de consulta incorretos pode resultar em perda de dados.

    Você pode definir a propriedade do sistema glide.invalid_query.returns_no_rows como verdadeiro para que as consultas com consultas codificadas inválidas não retornem registros.

    Tabela 15. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Nome do campo da tabela a ser consultado ou um dos seguintes nomes reservados:
    • 123TEXTQUERY321: adiciona um termo de pesquisa de cadeia de caracteres à consulta. Especifique a cadeia de caracteres que você deseja corresponder como o valor. Use esta opção para retornar registros com valores de campo que contenham a cadeia de caracteres de pesquisa. Esta opção pesquisa em todos os campos da tabela, que devem ser configurados para indexação e pesquisa. Para obter mais informações sobre como configurar tabelas para indexação e pesquisa, consulte Configurar uma única tabela para indexação e pesquisa.
    • 123TEXTINDEXGROUP321: adiciona um grupo de índice de texto à consulta. Especifique o nome do grupo de índice de texto da tabela Grupos de índice de texto [ts_index_group] que você deseja consultar como o valor. Use esta opção para retornar resultados de pesquisa de uma das tabelas em um grupo de índice de texto, com pontuações de relevância do resultado normalizadas usando as configurações desse grupo de índice de texto. Para obter mais informações sobre como configurar grupos de índice de texto, consulte Configurar várias tabelas para indexação e pesquisa.
    Nota:
    Para obter mais detalhes sobre o uso dos nomes reservados, consulte Consulta de tabelas no script.
    valor Objeto Valor a ser consultado (sem distinção entre maiúsculas e minúsculas).
    Tabela 16. Retorna
    Tipo Descrição
    GlideQueryCondition Condição de consulta adicionada ao GlideRecord.

    Este exemplo de código mostra como consultar os registros ativos na tabela de incidentes e, em seguida, defini-los como inativos.

    var rec = new GlideRecord('incident');
    rec.addQuery('active', true);
    rec.query();
    while (rec.next()) {
      rec.setValue('active', false);
      rec.update();
    }

    Este exemplo de código adiciona uma consulta de registros que correspondem ao "servidor de e-mail" na tabela kb_knowledge, com valores de relevância do resultado da pesquisa calculados usando configurações do grupo de índice de texto do portal.

    var now_GR = new GlideRecord("kb_knowledge);
    now_GR.addQuery("123TEXTQUERY321", "email server");
    now_GR.addQuery("123TEXTINDEXGROUP321", "portal");
    now_GR.query();

    GlideRecord com escopo - addQuery(cadeia de caracteres nome, cadeia de caracteres operador, valor do objeto)

    Fornece a capacidade de criar uma solicitação que, quando executada, retorna as linhas da tabela especificada que correspondem à solicitação.

    Se você estiver familiarizado com SQL, este método será semelhante à cláusula "where". Uma ou mais chamadas addQuery() podem ser feitas em uma única consulta; neste caso, as consultas são feitas com AND. Se alguma das declarações de consulta precisar ser OR, use o método GlideQueryConditionaddOrCondition().

    Sempre teste as consultas em uma instância de produto em fase de desenvolvimento antes de implantá-las em uma instância de produção. Uma consulta codificada construída incorretamente, como a inclusão de um nome de campo inválido, produz uma consulta inválida. Quando a consulta inválida é executada, a parte inválida da condição de consulta é descartada e os resultados são baseados na parte válida da consulta, que pode retornar todos os registros da tabela. Usar um método insert(), update(), deleteRecord( )ou deleteMultiple() em resultados de consulta incorretos pode resultar em perda de dados.

    Você pode definir a propriedade do sistema glide.invalid_query.returns_no_rows como verdadeiro para que as consultas com consultas codificadas inválidas não retornem registros.

    Tabela 17. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Nome do campo da tabela.
    operador Cadeia de caracteres Operador de consulta. Os valores disponíveis dependem do tipo de dados do parâmetro de valor.
    Números:
    • =
    • !=
    • >
    • >=
    • <
    • <=
    Cadeias de caracteres (devem estar em maiúsculas):
    • =
    • !=
    • IN
    • NÃO EM
    • COMEÇA COM
    • ENDSWITH
    • CONTÉM
    • NÃO CONTÉM
    • INSTANCEOF
    Nota:
    Use CONTAINS em vez do operador LIKE.
    valor Objeto Valor a ser consultado (sem distinção entre maiúsculas e minúsculas).
    Tabela 18. Retorna
    Tipo Descrição
    GlideQueryCondition A condição de consulta que foi adicionada ao GlideRecord.
    var rec = new GlideRecord('incident');
    rec.addQuery('active',true);
    rec.addQuery('sys_created_on', ">", "2010-01-19 04:05:00");
    rec.query();
    while (rec.next()) {
      rec.setValue('active', false);
      gs.info('Active incident ' + rec.getValue('number') + ' closed');
      rec.update();
    }

    Usando o operador IN.

    var now_GR = new GlideRecord('incident');
    now_GR.addQuery('number','IN','INC00001,INC00002');
    now_GR.query();
    while(now_GR.next()) {
      //do something....
    }

    GlideRecord com escopo - addValue(cadeia de caracteres field, Number value)

    Fornece operações atômicas de adição e subtração em um campo de número especificado no nível de banco de dados para o objeto GlideRecord atual.

    Normalmente, um objeto GlideRecord é gravado como um registro em um banco de dados. Os valores de campo individuais são armazenados conforme definido. Para o código que adiciona um valor a um campo GlideRecord, ele simplesmente salva o campo no banco de dados com o novo valor, em vez de incrementá-lo automaticamente.

    Por exemplo, quando o código a seguir é executado, o valor do campo u_count no banco de dados é 2.
    gs.info(now_GR.u_count); // "1" 
    now_GR.u_count += 1;
    now_GR.update();
    now_GR.get(now_GR.sys_id);
    gs.info(now_GR.u_count); // "2"
    Se outro usuário executar simultaneamente um código idêntico, em vez de cada uma das duas operações adicionar 1 a u_count, o efeito líquido será que u_count conterá apenas 2, com a atualização de uma operação sendo perdida.
    Por outro lado, o método addValue() executa a adição/subtração no banco de dados quando o registro é atualizado como uma operação atômica. Duas operações em execução simultaneamente atualizam corretamente o campo.
    gs.info(now_GR.u_count); // "1" 
    now_GR.addValue("u_count", 1); 
    now_GR.update(); 
    now_GR.get(now_GR.sys_id); // The record must be reloaded from the database to observe the result
    gs.info(now_GR.u_count); // "3", if executed concurrently with another user 
    Nota:
    O novo valor não é lido do banco de dados, a menos que seja feito explicitamente.

    Assim como setValue(), as mudanças addValue() só entram em vigor no banco de dados após uma chamada subsequente para update() ou insert(). Se insert() for chamado, o campo especificado será inicializado com o parâmetro value passado para addValue().

    Nota:
    Se setValue() for chamado para o campo especificado antes de chamar addValue(), o método addValue() não será processado e uma mensagem de erro será registrada em log.
    Tabela 19. Parâmetros
    Nome Tipo Descrição
    Assunto: Cadeia de caracteres O nome do campo neste GlideRecord a ser modificado.

    Se o campo associado não for do tipo numérico, a operação será ignorada.

    valor Inteiro O valor a ser adicionado ao valor quando o registro é salvo. Para executar uma operação de subtração, basta passar um valor negativo.
    Tabela 20. Retorna
    Tipo Descrição
    vazio

    Mostra um valor que está sendo adicionado.

    gs.info(now_GR.u_count); // "1" 
    now_GR.addValue("u_count", 1); 
    now_GR.update(); 
    now_GR.get(now_GR.sys_id); // The record must be reloaded from the database to observe the result
    gs.info(now_GR.u_count);

    Saída:

    2

    Mostra um valor que está sendo subtraído.

    gs.info(now_GR.u_count); // "4" 
    now_GR.addValue("u_count", -1); 
    now_GR.update(); 
    now_GR.get(now_GR.sys_id); // The record must be reloaded from the database to observe the result
    gs.info(now_GR.u_count);

    Saída:

    3

    GlideRecord com escopo - applyEncodedQuery(String queryString)

    Define os valores dos termos de consulta codificados especificados e os aplica ao GlideRecord atual.

    Tabela 21. Parâmetros
    Nome Tipo Descrição
    cadeia de caracteres de consulta Cadeia de caracteres Consulta codificada a ser aplicada ao GlideRecord atual.
    Tabela 22. Retorna
    Tipo Descrição
    Nenhum

    function createAcl(table, role) {
      gs.info("Checking security on table " + table);
      var now_GR = new GlideRecord("sys_security_acl");
      now_GR.addQuery("name", table);
      now_GR.addQuery("operation", "read");
      now_GR.query();
      var encQuery = now_GR.getEncodedQuery();
      if (now_GR.next()) {
      // existing acl found so use it
        createAclRole(now_GR.getValue('sys_id'), role);
        return;
      } else {
        now_GR.initialize();
        now_GR.applyEncodedQuery(encQuery);
        var acl = now_GR.insert();
        gs.info("Added read access control on " + table);
        createAclRole(acl, role);
      }
    }

    GlideRecord com escopo - canCreate()

    Determina se as Regras de controle de acesso, que incluem as funções do usuário, permitem a inserção de novos registros nesta tabela.

    Tabela 23. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 24. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se as funções do usuário permitem a criação de registros nesta tabela.
    Valores válidos:
    • verdadeiro: criação permitida
    • falso: não é permitido criar

    Este exemplo de código grava se o usuário atual pode criar registros na tabela Incidente no log do sistema.

    var now_GR = new GlideRecord('incident');
    gs.info(now_GR.canCreate());

    GlideRecord com escopo - canDelete()

    Determina se as Regras de controle de acesso, que incluem as funções do usuário, permitem a exclusão de registros nesta tabela.

    Tabela 25. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 26. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se as funções do usuário permitem a exclusão de registros nesta tabela.
    Valores válidos:
    • verdadeiro: exclusão permitida
    • falso: a exclusão não é permitida

    Este exemplo de código grava se o usuário atual pode excluir registros na tabela Incidente no log do sistema.

    var att = new GlideRecord('sys_attachment');
    gs.info(att.canDelete());

    GlideRecord com escopo - canRead()

    Determina se as regras de controle de acesso (ACLs) permitem a leitura de registros nesta tabela. Este método avalia todos os tipos de ACL, como funções de usuário, ACLs com script, ACLs com condições de script e assim por diante.

    Tabela 27. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 28. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se as funções do usuário permitem a leitura de registros nesta tabela.
    Valores válidos:
    • verdadeiro: leitura permitida
    • falso: a leitura não é permitida

    Este exemplo de código grava se o usuário atual pode ler registros na tabela Incidente no log do sistema.

    var now_GR = new GlideRecord('incident');
    gs.info(now_GR.canRead());

    GlideRecord com escopo - canWrite()

    Determina se as Regras de controle de acesso, que incluem as funções do usuário, permitem a edição de registros nesta tabela.

    Tabela 29. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 30. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se as funções do usuário permitem a gravação de registros nesta tabela.
    Valores válidos:
    • verdadeiro: gravação permitida
    • falso: a gravação não é permitida

    Este exemplo de código grava se o usuário atual pode gravar registros na tabela Incidente no log do sistema.

    var now_GR = new GlideRecord('incident');
    gs.info(now_GR.canWrite());

    GlideRecord com escopo/Global - chooseWindow(Number firstRow, Number lastRow, Boolean forceCount)

    Define um intervalo de linhas a serem retornadas pelas consultas subsequentes.

    Tabela 31. Parâmetros
    Nome Tipo Descrição
    primeiraLinha Número Primeira linha a ser incluída. Como o índice começa em 0, um valor de 0 retorna a primeira linha.
    últimaLinha Número Número de linha baseado em 0 da primeira linha a NÃO retornar. Comporta-se de forma semelhante ao método String.substring(a,b) do Java.

    Por exemplo, se lastRow = 4 e firstRow = 2, dois registros serão retornados (4-2).

    forçaContagem Booliano Opcional. Sinalizador que indica se uma consulta de contagem de linhas deve ser forçada. Na maioria das implementações desta chamada, a contagem de linhas é realizada. Há alguns casos periféricos, como pesquisas de texto, em que uma contagem de linhas não é realizada. Definir este sinalizador garante que a contagem de linhas ocorra.
    Valores válidos:
    • verdadeiro: a contagem de linhas sempre ocorre.
    • falso: a contagem de linhas ocorrerá se implementada na execução normal do método.

    Padrão: falso

    Tabela 32. Retorna
    Tipo Descrição
    vazio

    Este exemplo mostra o retorno dos registros 3 e 4 da tabela Incidente.

    var now_GR = new GlideRecord('incident');
    now_GR.orderBy('number');
    now_GR.chooseWindow(2, 4);
    now_GR.query();
    while (now_GR.next()) {
      gs.info(now_GR.getValue('number') + ' is within window');
    }

    Saída

    *** Script: INC0000003 is within window
    *** Script: INC0000004 is within window

    GlideRecord com escopo – deleteMultiple()

    Exclui todos os registros que atendem à consulta.

    Este método não exclui anexos.

    Não use deleteMultiple() em tabelas com campos de moeda. Sempre exclua cada registro individualmente. Além disso, não use este método com os métodos chooseWindow() ou setLimit() ao trabalhar com tabelas grandes. O método setLimit() não limita o número de registros que são excluídos com deleteMultiple(). Todos os registros retornados pela consulta são excluídos, independentemente de setLimit().

    A propriedade do sistema glide.db.forced.chunk.threshold define o limite acima do qual força exclusões e atualizações de registros de bloco. A divisão em blocos ajuda a impedir que exclusões de chave não primária em tabelas grandes causem problemas de replicação. Para obter mais informações, consulte Available system properties.

    Tabela 33. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 34. Retorna
    Tipo Descrição
    Nenhum

    Este exemplo mostra como excluir todos os registros inativos da tabela Incidente.

    var now_GR = new GlideRecord('incident');
    now_GR.addQuery('active','false');
    now_GR.query();
    now_GR.deleteMultiple();

    GlideRecord com escopo – deleteRecord()

    Exclui o registro atual.

    Tabela 35. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 36. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se o registro foi excluído com sucesso.
    Valores válidos:
    • verdadeiro: o registro foi excluído.
    • falso: nenhum registro encontrado para excluir.

    Este exemplo mostra como excluir um registro especificado da tabela Incidente.

    var now_GR = new GlideRecord('incident');
    //to delete one record
    if (now_GR.get('99ebb4156fa831005be8883e6b3ee4b9'))
        now_GR.deleteRecord();

    Este exemplo mostra como excluir um registro da tabela Incidente imediatamente após sua inserção. O incidente GlideRecord deve ser recarregado após a inserção antes que ele possa ser excluído.

    var grTicket = new GlideRecord('incident');
    grTicket.initialize();
    grTicket.short_description = 'Example ticket';
    grTicket.work_notes = 'An update about the ticket';
    var ins_sys_id = grTicket.insert(); // Insert the record
    grTicket.get(ins_sys_id); // Reload the inserted record
    gs.info(grTicket.deleteRecord()); // Delete the record

    Saída:

    true

    GlideRecord com escopo - get(Object name, Object value)

    Retorna o registro especificado no objeto GlideRecord atual.

    Este método aceita um ou dois parâmetros. Se apenas um único parâmetro for passado, o método presumirá que é o sys_id do registro desejado. Se não for encontrado, ele tentará corresponder o valor ao valor de exibição. Se dois parâmetros forem passados, o primeiro será o nome da coluna no GlideRecord a ser pesquisada. O segundo é o valor a ser pesquisado.

    Se vários registros forem encontrados, use next() para acessar os registros adicionais.

    Tabela 37. Parâmetros
    Nome Tipo Descrição
    nome Objeto Opcional. Nome da coluna GlideRecord instanciada para pesquisar o parâmetro value especificado. Se apenas um único parâmetro for passado, o método presumirá que este parâmetro é o sys_id ou o valor de exibição.
    valor Objeto Valor a ser correspondido.
    Tabela 38. Retorna
    Tipo Descrição
    Booliano Indica se o registro solicitado foi localizado:
    • verdadeiro: o registro foi encontrado
    • falso: o registro não foi encontrado

    Este exemplo mostra como obter um registro de incidente passando o sys_id.

    var grIncident = new GlideRecord('incident');
    var returnValue = grIncident.get('99ebb4156fa831005be8883e6b3ee4b9');
    gs.info(returnValue); // logs true or false
    gs.info(grIncident.short_description); // logs Incident Short description

    Este exemplo mostra como obter um registro de incidente passando o campo a ser pesquisado (caller_id.name) e o valor a ser correspondido nesse campo.

    var grIncident = new GlideRecord('incident');
    var returnValue = grIncident.get('caller_id.name','Sylivia Wayland');
    gs.info(returnValue); // logs true or false
    gs.info(grIncident.getValue('number')); // logs Incident Number

    GlideRecord com escopo - getAttribute(cadeia de caracteres fieldName)

    Retorna os atributos do dicionário para o campo especificado.

    Tabela 39. Parâmetros
    Nome Tipo Descrição
    fieldName Cadeia de caracteres Nome do campo para o qual serão retornados os atributos do dicionário
    Tabela 40. Retorna
    Tipo Descrição
    Cadeia de caracteres Atributos do dicionário
    doit();
    function doit() {
      var now_GR = new GlideRecord('sys_user');
      now_GR.query("user_name","admin");
      if (now_GR.next()) {
        gs.info("we got one");
        gs.info(now_GR.location.getAttribute("tree_picker"));
      }
    }

    GlideRecord com escopo – getClassDisplayValue()

    Retorna o rótulo da tabela atual.

    Tabela 41. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 42. Retorna
    Tipo Descrição
    Cadeia de caracteres Rótulo que identifica a tabela.

    Este exemplo imprime o rótulo da tabela passada.

    // Display the incident table label
    var now_GR = new GlideRecord("incident");
    var value = now_GR.getClassDisplayValue();
    gs.info("The table label is " + value + ".");

    Saída:

    The table label is Incident.

    GlideRecord com escopo – getDisplayValue()

    Recupera o valor de exibição do registro atual.

    Os valores de exibição são manipulados com base no valor real no banco de dados e nas configurações e preferências do usuário ou do sistema.

    O valor de exibição retornado depende do tipo de campo.
    • Campos de opção: o valor do banco de dados pode ser um número, mas o valor de exibição será mais descritivo.
    • Campos de data: o valor do banco de dados está no formato UTC, enquanto o valor de exibição é baseado no fuso horário do usuário.
    • Texto criptografado: o valor do banco de dados é criptografado, enquanto o valor exibido não é criptografado com base no contexto de criptografia do usuário.
    • Campos de referência: o valor do banco de dados é sys_id, mas o valor de exibição é um campo de exibição do registro referenciado.
    Tabela 43. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 44. Retorna
    Tipo Descrição
    Cadeia de caracteres Exiba o valor do registro atual.

    Este exemplo grava o valor de exibição de um registro de incidente especificado no log.

    var now_GR = new GlideRecord('incident');
    now_GR.get('sys_id','<sys_id>');
    gs.info(now_GR.getDisplayValue());

    Saída:

    INC0000050

    GlideRecord com escopo - getED()

    Retorna o descritor do elemento.

    Tabela 45. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 46. Retorna
    Tipo Descrição
    GlideElementDescriptor O descritor do elemento.

    Este exemplo mostra como recuperar o campo de nome de um GlideRecord de incidente.

    var grInc = new GlideRecord('incident');
    grInc.get('sys_id','ef43c6d40a0a0b5700c77f9bf387afe3');
    
    var field = grInc.getElement('priority');
    var ed = field.getED();
    
    var isEdge = ed.getLabel();
    gs.info("Label is - " + isEdge);
    Saída:
    Label is - Priority

    GlideRecord com escopo - getElement(cadeia de caracteres fieldName)

    Recupera o objeto GlideElement para o campo especificado.

    O valor retornado por este método é um objeto GlideElement completo. Os resultados são o equivalente à referência com pontos em um valor de campo. Por exemplo, now_GR.getElement('short_description') fornece o mesmo resultado que nowGR.short_description.

    Na maioria dos casos, não use a referência com pontos para obter valores de um registro. A referência com pontos recupera o objeto inteiro em vez do valor do campo. Recuperar o objeto usa mais armazenamento e pode causar resultados indesejáveis quando usado em matrizes ou em Portal de serviços.

    Em vez de recuperar o objeto inteiro, você pode usar um dos seguintes métodos para copiar os valores de campo:

    Se for necessário percorrer um objeto GlideElement com pontos, use o método toString() para recuperar valores. Por exemplo, talvez você precise do sys_id do gerente do solicitante atual para definir outro campo de referência. O exemplo a seguir mostra como obter o valor da cadeia de caracteres em vez do objeto inteiro:
    var mgr = current.caller_id.manager.toString();
    Tabela 47. Parâmetros
    Nome Tipo Descrição
    fieldName Cadeia de caracteres Nome da coluna para a qual o objeto GlideElement será retornado.
    Tabela 48. Retorna
    Tipo Descrição
    GlideElement O GlideElement para a coluna especificada do registro atual. Cada objeto descreve um campo no GlideRecord atual.

    O exemplo a seguir mostra como adicionar um novo registro de incidente com detalhes no campo Descrição resumida.

    var elementName = 'short_description'; 
    var now_GR = new GlideRecord('incident'); 
    now_GR.newRecord(); 
    now_GR.setValue(elementName, "My DB is not working");
    now_GR.insert();
     
    var sdesc = now_GR.getElement('short_description');
    gs.info(sdesc.getValue());

    Saída:

    My DB is not working

    GlideRecord com escopo – getElements()

    Retorna uma matriz de objetos GlideElement. Cada objeto descreve um campo no GlideRecord atual.

    Se for necessário percorrer um objeto GlideElement com pontos, use o método toString() para recuperar valores. Por exemplo, talvez você precise do sys_id do gerente do solicitante atual para definir outro campo de referência. O exemplo a seguir mostra como obter o valor da cadeia de caracteres em vez do objeto inteiro:
    var mgr = current.caller_id.manager.toString();
    Tabela 49. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 50. Retorna
    Tipo Descrição
    Matriz Matriz de objetos GlideElement. Cada objeto descreve um campo no GlideRecord atual.

    O exemplo a seguir exibe o valor do campo de nome dos cinco registros mais recentes criados na tabela Pergunta [question].

    var now_GR = new GlideRecord('question');
    var elementArr = now_GR.getElements();
    now_GR.orderByDesc('sys_created_on');
    now_GR.setLimit(5);
    now_GR.query();
    
    while (now_GR.next()){
      var qNames = now_GR.name.toString();
      elementArr.push(qNames);
      gs.info(qNames);
    }

    Saída:

    delivery_time_var
    delivery_time
    sequence
    priority
    assigned_group

    GlideRecord com escopo – getEncodedQuery()

    Recupera a condição de consulta do conjunto de resultados atual como uma cadeia de caracteres de consulta codificada.

    Para obter detalhes, consulte Cadeias de caracteres de consulta codificadas .

    Tabela 51. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 52. Retorna
    Tipo Descrição
    Cadeia de caracteres
    var now_GR = new GlideRecord('incident'); 
    now_GR.addQuery('active', true);
    now_GR.addQuery('priority', 1); 
    now_GR.query(); 
    var encodedQuery = now_GR.getEncodedQuery(); 
    gs.info(encodedQuery);

    Saída:

    active=true^priority=1

    GlideRecord com escopo – getLabel()

    Retorna o rótulo do campo.

    Tabela 53. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 54. Retorna
    Tipo Descrição
    Cadeia de caracteres Rótulo do campo
    template.print("Summary of Requested items:\n");  
    var now_GR = new GlideRecord("sc_req_item");
    now_GR.addQuery("request", current.sysapproval);
    now_GR.query();
    while(now_GR.next()) {
    var nicePrice = now_GR.price.toString();
      if (nicePrice != '') {
        nicePrice = parseFloat(nicePrice);
        nicePrice = nicePrice.toFixed(2);
      }
      template.print(now_GR.number + ":  " + now_GR.quantity + " X " + now_GR.cat_item.getDisplayValue() 
        + " at $" + nicePrice + " each \n");
      template.print("    Options:\n");
      for (key in now_GR.variables) {
      var now_V = now_GR.variables[key];
        if(now_V.getGlideObject().getQuestion().getLabel() != '') {
          template.space(4);
          template.print('     ' +  now_V.getGlideObject().getQuestion().getLabel() + " = " 
            + now_V.getDisplayValue() + "\n");  
        }
      }
    }

    GlideRecord com escopo - getLastErrorMessage()

    Recupera a última mensagem de erro. Se não houver nenhuma última mensagem de erro, será retornado nulo.

    Tabela 55. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 56. Retorna
    Tipo Descrição
    Cadeia de caracteres A última mensagem de erro como uma cadeia de caracteres.
    // Setup a data policy where short_description field in incident is mandatory
    var now_GR = new GlideRecord('incident');
    now_GR.insert(); // insert without data in mandatory field
    var errormessage = now_GR.getLastErrorMessage(); 
    gs.info(errormessage);

    Saída:

    Data Policy Exception: Short description is mandatory

    GlideRecord com escopo - getRecordClassName()

    Recupera o nome da classe do registro atual.

    Tabela 59. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 60. Retorna
    Tipo Descrição
    Cadeia de caracteres O nome da classe.
    var now_GR = new GlideRecord('incident'); 
    var recordClassName = now_GR.getRecordClassName(); 
    gs.info(recordClassName);

    Saída:

    incident

    GlideRecord com escopo - getRowCount()

    Recupera o número de linhas (registros) no objeto GlideRecord atual.

    Nota:
    O GlideRecord retorna registros correspondentes, portanto, pode não ser tão eficiente quanto o GlideAggregate quando você só precisa do número de registros. Se você precisar apenas de uma contagem de registros e não estiver iterando nos registros correspondentes, use GlideAggregate.
    Recuperando os registros de número em GlideRecord ou GlideAggregate
    As APIs GlideRecord getRowCount() e GlideAggregate getAggregate() oferecem informações semelhantes. Use os critérios a seguir para determinar qual opção é melhor para você.
    • O método GlideRecord getRowCount() informa quantos registros foram retornados de uma consulta junto com os próprios registros. Se você precisar do número de registros no conjunto de resultados antes ou depois de iterar no conjunto para executar ações nos registros, use este método.
    • O método GlideAggregate getAggregate() recupera somente uma contagem de registros correspondentes à consulta, excluindo os registros reais. O agregado deve ser definido no objeto GlideAggregate antes de emitir a consulta.
    Recuperando os registros e a contagem com GlideRecord getRowCount()
    O exemplo a seguir mostra como obter o número total de incidentes ativos com GlideRecord getRowCount():
    var incident = new GlideRecord("incident");
    incident.addQuery("active", true);
    incident.query();
     
    gs.info("*** Total number of active incidents: {0}", incident.getRowCount());
    Recuperando somente o número de registros com GlideAggregate getAggregate()
    O exemplo a seguir mostra como retornar somente o número de registros. Como este método não usa os registros correspondentes, é muito mais eficiente usar uma consulta agregada e retornar apenas a contagem.
    var incident = new GlideAggregate("incident");
    incident.addQuery("active", true);
    incident.addAggregate("COUNT");
    incident.query();
     
    if (incident.next())
        gs.info("*** Total number of active incidents: {0}", incident.getAggregate("COUNT"));
    Decidir qual opção é melhor para sua solução

    Se você quiser recuperar apenas o número de registros, o método GlideAggregate getAggregate() será a melhor opção. Para usar os registros individuais e recuperar o número de resultados, use GlideRecord getRowCount(), pois uma única consulta fornece essa funcionalidade.

    Tabela 61. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 62. Retorna
    Tipo Descrição
    Número Número de linhas no GlideRecord atual.

    O exemplo a seguir mostra como obter o número de incidentes da tabela Incidente [incidente].

    var numberOfIncidents = new GlideRecord('incident');
    numberOfIncidents.query();
    gs.info("Records in incident table: " + numberOfIncidents.getRowCount());

    Saída:

    Records in incident table: 6920

    GlideRecord com escopo - getTableName()

    Recupera o nome da tabela associada ao GlideRecord.

    Tabela 63. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 64. Retorna
    Tipo Descrição
    Cadeia de caracteres O nome da tabela
    var now_GR = new GlideRecord('incident');
    gs.info(now_GR.getTableName());

    GlideRecord com escopo – getUniqueValue()

    Obtém a chave primária do registro, que geralmente é o sys_id, a menos que especificado de outra forma.

    Tabela 65. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 66. Retorna
    Tipo Descrição
    Cadeia de caracteres A chave primária exclusiva como uma cadeia de caracteres ou nula se a chave for nula.
    var now_GR = new GlideRecord('kb_knowledge');
    now_GR.query();
    now_GR.next();
    var uniqueid = now_GR.getUniqueValue();
    gs.info(uniqueid);

    GlideRecord com escopo - getValue(String name)

    Recupera o valor da cadeia de caracteres de um elemento subjacente em um campo.

    Nota:
    Se o plug-in Criptografia em nível de coluna para empresas estiver habilitado e a instância tiver acesso à chave, este método retornará valores de texto não criptografado de campos criptografados. Se a instância não tiver acesso à chave, este método retornará o valor criptografado. Para obter mais informações, consulte Platform Encryption.
    Tabela 67. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres O nome do campo do qual o valor será obtido.
    Tabela 68. Retorna
    Tipo Descrição
    Cadeia de caracteres O valor da cadeia de caracteres do elemento subjacente. Retornará nulo se o campo estiver vazio ou se o campo não existir. Os valores boolianos retornam como valores de cadeia de caracteres "0" e "1" em vez de falso e verdadeiro.
    var now_GR = new GlideRecord('incident'); 
    now_GR.orderBy('number');
    now_GR.query('active','true'); 
    now_GR.next(); 
    gs.info(now_GR.getValue('number'));

    Saída:

    INC0000002

    GlideRecord com escopo - GlideRecord(cadeia de caracteres "tableName")

    Cria uma instância da classe GlideRecord para a tabela especificada.

    Tabela 69. Parâmetros
    Nome Tipo Descrição
    tableName Cadeia de caracteres A tabela a ser usada.
    var now_GR = new GlideRecord('incident');

    GlideRecord com escopo - hasNext()

    Determina se há mais registros no objeto GlideRecord.

    Tabela 70. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 71. Retorna
    Tipo Descrição
    Booliano Verdadeiro se houver mais registros no conjunto de resultados da consulta.
    var rec = new GlideRecord('incident'); 
    rec.query(); 
    if (rec.hasNext()) { 
      gs.info("Table is not empty"); 
    }

    GlideRecord com escopo – inserir ()

    Insere um novo registro usando os valores de campo que foram definidos para o registro atual.

    Tabela 72. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 73. Retorna
    Tipo Descrição
    Cadeia de caracteres Sys_id do registro inserido ou nulo se o registro não estiver inserido.
    var now_GR = new GlideRecord('incident');
    now_GR.initialize();
    now_GR.setValue('name', 'New Incident');
    now_GR.setValue('description', 'Incident description');
    now_GR.insert();

    Saída:

    138fb4111b4d4d907cf30d03cd4bcb57

    GlideRecord com escopo – inicializar ()

    Cria um registro vazio adequado para preenchimento antes de uma inserção.

    Tabela 74. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 75. Retorna
    Tipo Descrição
    vazio
    var grIncident = new GlideRecord('incident');
    grIncident.initialize();
    grIncident.setValue('short_description', 'New Incident');
    grIncident.setValue('description', 'Incident description');
    grIncident.insert();

    GlideRecord com escopo - isActionAborted()

    Verifica se a ação do banco de dados atual deve ser anulada.

    isActionAborted() é inicializado (definido como falso) para novos threads e pelo método next().

    Tabela 76. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 77. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se a ação do banco de dados atual deve ser anulada.
    Valores válidos:
    • verdadeiro: a ação do banco de dados atual deve ser anulada.
    • false: a ação do banco de dados atual não deve ser anulada.
    var now_GR = new GlideRecord('incident');
     
    gs.info(now_GR.isActionAborted());

    Saída:

    false

    GlideRecord com escopo - isEncodedQueryValid(cadeia de caracteres consulta)

    Verifica se a consulta codificada especificada é válida.

    Se a consulta codificada especificada for válida, a consulta será aplicada, como se você tivesse chamado addEncodedQuery(). Se a consulta codificada especificada for inválida, sys_idNotValidnull será adicionado como a consulta codificada.

    Nota:
    Este método foi descontinuado e substituído pelo método isValidEncodedQuery(), que não executa a consulta.
    Tabela 78. Parâmetros
    Nome Tipo Descrição
    consulta Cadeia de caracteres Consulta codificada para validar. Consulte Cadeias de caracteres de consulta codificadas.
    Tabela 79. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se a consulta codificada especificada é válida.
    • verdadeiro: a consulta codificada passada é válida.
    • falso: a consulta codificada passada não é válida.

    Este exemplo de código mostra como validar uma consulta codificada e executar a lógica se a consulta for válida.

    var now_GR = new GlideRecord('incident_sla');
    var isValidQuery = now_GR.isEncodedQueryValid('inc_impact=1^taskslatable_active=true');
    if (isValidQuery) {
      now_GR.query();
      .
      .
      .
    }

    GlideRecord com escopo - isNewRecord()

    Verifica se o registro atual é um novo registro que ainda não foi inserido no banco de dados.

    Tabela 80. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 81. Retorna
    Tipo Descrição
    Booliano Verdadeiro se o registro for novo e não tiver sido inserido no banco de dados.
    var now_GR = new GlideRecord("x_app_table"); 
    now_GR.newRecord(); // create a new record and populate it with default values
    gs.info(now_GR.isNewRecord());

    GlideRecord com escopo - isValid()

    Determina se a tabela atual é válida ou se o registro foi recuperado com sucesso.

    Tabela 82. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 83. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se a tabela é válida ou se o registro foi recuperado com sucesso.
    Valores possíveis:
    • verdadeiro: a tabela é válida ou o registro foi recuperado com sucesso.
    • false: a tabela é inválida ou o registro não foi recuperado com sucesso.
    var comment_GR = new GlideRecord('cf_comment');
    var commentId = '99ebb4156fa831005be8883e6b3ee4b9';
    comment_GR.get(commentId);
    gs.info(comment_GR.isValid());

    GlideRecord com escopo - isValidEncodedQuery(cadeia de caracteres consulta)

    Verifica se a consulta codificada especificada é válida.

    Tabela 84. Parâmetros
    Nome Tipo Descrição
    consulta Cadeia de caracteres Consulta codificada para validar. Consulte Cadeias de caracteres de consulta codificadas.
    Tabela 85. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se a consulta codificada especificada é válida.
    • verdadeiro: a consulta codificada passada é válida.
    • falso: a consulta codificada passada não é válida.

    Este exemplo de código mostra como validar uma consulta codificada e executar a lógica se a consulta for válida.

    var queryString = "priority=1^ORpriority=2";
    var now_GR = new GlideRecord('incident');
    var isValidQuery = now_GR.isEncodedQueryValid(queryString);
    if (isValidQuery) {
      now_GR.addEncodedQuery(queryString);
      now_GR.query();
      .
      .
      .
    }

    GlideRecord com escopo - isValidField(cadeia de caracteres columnName)

    Determina se o campo especificado está definido na tabela atual.

    Tabela 86. Parâmetros
    Nome Tipo Descrição
    columnName Cadeia de caracteres O nome do campo.
    Tabela 87. Retorna
    Tipo Descrição
    Booliano Verdadeiro se o campo for definido para a tabela atual.
    var now_GR = new GlideRecord('incident'); 
    now_GR.initialize(); 
    gs.info(now_GR.isValidField("short_description"));

    GlideRecord com escopo - isValidRecord()

    Determina se um registro foi realmente retornado pela operação de consulta/obtenção de registro.

    Tabela 88. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 89. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se um registro foi realmente retornado pela operação de consulta/obtenção.
    Valores válidos:
    • verdadeiro: registro retornado pela operação de consulta/obtenção.
    • falso: fim do conjunto de registros, nenhum registro retornado.
    var rec = new GlideRecord('incident');
    rec.query();
    while (rec.next()) { 
      gs.info(rec.number + ' exists');
    }
    gs.info(rec.isValidRecord());

    GlideRecord com escopo - isView()

    Verifica se o registro foi criado em uma exibição ou em uma tabela.

    Tabela 90. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 91. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se o registro foi criado na tabela que é uma exibição.
    • verdadeiro: o registro foi criado em uma exibição.
    • falso: o registro foi criado em uma tabela.

    Este exemplo de código mostra como determinar se um GlideRecord foi criado em uma exibição ou em uma tabela.

    var mySLA = new GlideRecord('incident_sla');
    
    if (mySLA.isView() == true){
       gs.info('This record was created in a view.');
    } else {
       gs.info('This record was created in a table.');
    }

    Saída:

    This record was created in a view.

    GlideRecord com escopo - newRecord()

    Cria um novo registro GlideRecord, define os valores padrão dos campos e atribui um ID exclusivo ao registro.

    Tabela 92. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 93. Retorna
    Tipo Descrição
    vazio
    var now_GR = new GlideRecord("x_app_table"); 
    now_GR.newRecord(); 
    gs.info(now_GR.isNewRecord());

    Saída:

    true

    GlideRecord com escopo - next()

    Move para o próximo registro no objeto GlideRecord.

    Nota:
    Este método falhará se houver um campo na tabela chamado "próximo". Se for esse o caso, use o método _next().
    Tabela 94. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 95. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se há um registro "próximo" no GlideRecord.
    Valores válidos:
    • verdadeiro: a movimentação para o próximo registro foi bem-sucedida.
    • falso: não há mais registros no conjunto de resultados.

    Exemplo

    var rec = new GlideRecord('incident');
    rec.query();
    while (rec.next()) {
     gs.info(rec.getValue('number') + ' exists');
    }
    Saída:
    INC0010112 exists
    INC0010114 exists
    INC0010119 exists
    INC0010127 exists

    GlideRecord com escopo - _next()

    Move para o próximo registro no GlideRecord. Fornece a mesma funcionalidade que next(). Use este método se o GlideRecord tiver uma coluna chamada next.

    Tabela 96. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 97. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se há mais registros no conjunto de consultas.
    Valores possíveis:
    • verdadeiro: mais registros no conjunto de consultas.
    • falso: não há mais registros no conjunto de consultas.

    O exemplo a seguir mostra como listar cada registro na tabela Incidentes [incidente].

    var rec = new GlideRecord('incident');
    rec.query();
    while (rec._next()) {
      gs.info(rec.getValue('number') + ' exists');
    }

    Saída:

    INC0000060 exists
    INC0009002 exists
    INC0000009 exists
    INC0000010 exists
    INC0000011 exists
    INC0000012 exists
    ...

    GlideRecord com escopo - operação ()

    Determina se uma operação é inserir, atualizar ou excluir.

    Conhecer a operação permite usar current.operation() para criar uma regra de negócios genérica que pode lidar com cada operação de forma exclusiva.

    Para obter informações sobre como usar a variável global current, consulte Variáveis globais em regras de negócio.

    Tabela 98. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 99. Retorna
    Tipo Descrição
    Cadeia de caracteres A operação atual.
    Valores possíveis:
    • excluir
    • inserir
    • atualizar

    O exemplo a seguir mostra como usar esse método em uma regra de negócios. O método operação () detecta qual operação acionou um evento e executa uma ação diferente, dependendo das operações de atualização e inserção.

    if(current.operation() == "update") {
      current.updates ++; } 
    if(current.operation() == "insert") {
      current.updates = 0; }

    GlideRecord com escopo - orderBy(cadeia de caracteres name)

    Especifica uma coluna orderBy.

    Chame este método mais de uma vez para ordenar por várias colunas. Os resultados são organizados em ordem crescente. Para organizar os registros em ordem decrescente, consulte GlideRecord com escopo - orderByDesc(cadeia de caracteres name).

    Tabela 100. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Nome da coluna a ser usada para ordenar os registros neste objeto GlideRecord.
    Tabela 101. Retorna
    Tipo Descrição
    vazio

    O exemplo a seguir mostra como ordenar registros de incidentes em ordem crescente por Descrição Resumida.

    var queryString = "priority=2";
    var now_GR = new GlideRecord('incident');
    now_GR.orderBy('short_description'); // Ascending Order
    now_GR.addEncodedQuery(queryString);
    now_GR.query();
    while (now_GR.next()) {
      gs.info(now_GR.getValue('short_description'));
    }

    Saída:

    Can't launch 64-bit Windows 7 virtual machine
    Can't log into SAP from my laptop today
    Network storage unavailable
    Please remove the latest hotfix from my PC

    GlideRecord com escopo - orderByDesc(cadeia de caracteres name)

    Especifica uma coluna orderBy decrescente.

    Chame este método mais de uma vez para ordenar por várias colunas. Os resultados são organizados em ordem decrescente. Para organizar os registros em ordem crescente, consulte GlideRecord com escopo - orderBy(cadeia de caracteres name).

    Tabela 102. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Nome da coluna a ser usada para ordenar os registros em um objeto GlideRecord.
    Tabela 103. Retorna
    Tipo Descrição
    vazio

    O exemplo a seguir mostra como ordenar registros de incidentes em ordem decrescente por Descrição Resumida.

    var queryString = "priority=2";
    var now_GR = new GlideRecord('incident');
    now_GR.orderByDesc('short_description'); //Descending Order
    now_GR.addEncodedQuery(queryString);
    now_GR.query();
    while (now_GR.next()) {
      gs.info(now_GR.getValue('short_description'));
    }

    Saída:

    Please remove the latest hotfix from my PC
    Network storage unavailable
    Can't log into SAP from my laptop today
    Can't launch 64-bit Windows 7 virtual machine

    GlideRecord com escopo - query(campo de cadeia de caracteres, valor de cadeia de caracteres)

    Executa uma consulta na tabela com base nos filtros especificados por métodos de consulta, como addQuery() e addEncodedQuery().

    Este método consulta a tabela GlideRecord, bem como quaisquer referências da tabela. Para obter mais informações, consulte Consulta de tabelas no script.

    Nota:
    Este método falhará se houver um campo na tabela chamado "consulta". Se for esse o caso, use o método_query().

    Consulte o artigo GlideRecord para obter detalhes sobre como criar e executar consultas.

    Tabela 104. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Opcional - também deve especificar o parâmetro de valor. Nome do campo para pesquisar o valor especificado no parâmetro de valor.
    Nota:
    Este método normalmente é executado sem argumentos, mas você pode especificar um par nome-valor para filtrar registros que contêm os valores especificados. Se os parâmetros forem especificados, a condição "name=value" será adicionada à consulta.
    valor Cadeia de caracteres Opcional - também deve especificar o parâmetro de campo. Valor a ser pesquisado no parâmetro de campo especificado.
    Tabela 105. Retorna
    Tipo Descrição
    vazio

    O exemplo a seguir mostra como verificar o Dicionário do sistema [sys_dictionary] em busca de tabelas com um campo de consulta.

    var tableArr = [];
    
    var now_GR = new GlideRecord('sys_dictionary');
    now_GR.addQuery('element', 'query');
    now_GR.setLimit(6);
    
    now_GR.query();
    
    while(now_GR.next()){
       tableArr.push(now_GR.name.getValue());
    };
    
    gs.info('The following tables have a field column called "query":');
    
    for (i = 0; i < tableArr.length; i++) {
       gs.info(tableArr[i]);
    };

    Saída:

    The following tables have a field column called "query":
    cmdb_convert_bulk_services
    cmdb_multisource_query_status
    cmdb_qb_result_base
    cmdb_qb_table_mapping
    discovery_probes_cim_query
    kb_feedback

    GlideRecord com escopo - _query(campo de cadeia de caracteres, valor de cadeia de caracteres)

    Executa uma consulta na tabela com base nos filtros especificados por métodos de consulta, como addQuery() e addEncodedQuery(). Este método deve ser usado em tabelas nas quais há uma coluna chamada "consulta", o que pode causar erros ao executar o método query().

    Este método consulta a tabela GlideRecord, bem como quaisquer referências da tabela. Para obter mais informações, consulte Consulta de tabelas no script.

    Consulte o artigo GlideRecord para obter detalhes sobre como criar e executar consultas.

    Tabela 106. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Opcional - também deve especificar o parâmetro de valor. Nome do campo para pesquisar o valor especificado no parâmetro de valor.
    Nota:
    Este método normalmente é executado sem argumentos, mas você pode especificar um par nome-valor para filtrar registros que contêm os valores especificados. Se os parâmetros forem especificados, a condição "name=value" será adicionada à consulta.
    valor Cadeia de caracteres Opcional - também deve especificar o parâmetro de campo. Valor a ser pesquisado no parâmetro de campo especificado.
    Tabela 107. Retorna
    Tipo Descrição
    vazio

    O exemplo a seguir mostra como consultar a tabela Feedback de conhecimento [kb_feedback] e listar artigos da base de conhecimento com comentários que incluem o Excel.

    var rec = new GlideRecord('kb_feedback');
    rec.addQuery('comments', 'CONTAINS', 'Excel');
    rec._query();
    while (rec.next()) { 
     gs.info(rec.getDisplayValue('article') + " comment: " + rec.getValue('comments'));
    }

    Saída:

    KB0000005 comment: 
    	     Can you please add the version of Excel this applies to? All?
    		
    KB0000005 comment: 
    	     Does this work for all Excel versions? OSX and Windows alike?

    GlideRecord com escopo - setAbortAction(Boolean b)

    Define um sinalizador para indicar se a próxima ação do banco de dados (inserir, atualizar, excluir) deve ser anulada. Isso geralmente é usado em regras de negócios.

    Use em uma regra de negócios onBefore para impedir que a ação do banco de dados seja concluída. A regra de negócios continua a ser executada depois que setAbortAction() é chamado. Chamar setAbortAction() não impede a execução das regras de negócios subsequentes. Chamar este método somente impede a ocorrência da ação do banco de dados.

    Tabela 108. Parâmetros
    Nome Tipo Descrição
    b Booliano Verdadeiro para anular a próxima ação. Falso se a ação for permitida.
    Tabela 109. Retorna
    Tipo Descrição
    vazio
    // Often used in business rule to check whether the current operation should be aborted.
    if (current.size > 16) {
      current.setAbortAction(true);
    }

    GlideRecord com escopo - setLimit(Number maxNumRecords)

    Define o limite para o número de registros obtidos pela consulta GlideRecord.

    Tabela 110. Parâmetros
    Nome Tipo Descrição
    maxNumRecords Número O número máximo de registros a serem obtidos.
    Tabela 111. Retorna
    Tipo Descrição
    vazio
    var now_GR = new GlideRecord('incident');
    now_GR.orderByDesc('sys_created_on');
    now_GR.setLimit(10);
    now_GR.query(); // this retrieves latest 10 incident records created

    GlideRecord com escopo - setNewGuidValue(String guid)

    Define o valor de sys_id do registro atual.

    Tabela 112. Parâmetros
    Nome Tipo Descrição
    guid Cadeia de caracteres GUID a ser atribuído ao registro atual.
    Tabela 113. Retorna
    Tipo Descrição
    vazio
    var now_GR = new GlideRecord('incident');
    now_GR.setValue('short_description', 'The third floor printer is broken');
    now_GR.setNewGuidValue('eb4636ca6f6d31005be8883e6b3ee333');
    now_GR.insert();
    gs.info(now_GR.getValue('sys_id'));

    GlideRecord com escopo - setValue(cadeia de caracteres name, Object value)

    Define o valor do campo com o nome especificado para o valor especificado.

    Normalmente, o script faz um now_GR.category = value. No entanto, se o nome do elemento for uma variável, você poderá usar now_GR.setValue(elementName, value). Ao definir um valor, certifique-se de que o tipo de dados do campo corresponda ao tipo de dados do valor inserido.

    Nota:
    Se o plug-in Criptografia em nível de coluna para empresas estiver habilitado e a instância tiver acesso à chave, este método poderá inserir dados criptografados em campos criptografados. Se a instância não tiver acesso à chave, este método retornará um erro. Para obter mais informações, consulte Platform Encryption.
    Tabela 114. Parâmetros
    Nome Tipo Descrição
    nome Cadeia de caracteres Nome do campo.
    valor Objeto Valor a ser atribuído ao campo.
    Tabela 115. Retorna
    Tipo Descrição
    vazio
    var elementName = 'short_description'; 
    var now_GR = new GlideRecord('incident'); 
    now_GR.initialize(); 
    now_GR.setValue(elementName, "My DB is not working");
    now_GR.insert();

    GlideRecord com escopo - setWorkflow(Boolean enable)

    Habilita ou desabilita a execução de regras de negócios, mecanismos de script e auditoria.

    Aviso:
    Desabilitar a execução de regras de negócios, mecanismos de script e auditoria pode ter um impacto significativo na sua instância ServiceNow® e na forma como ela opera. Certifique-se de testar completamente esta mudança antes de implantá-la na produção.
    Tabela 116. Parâmetros
    Nome Tipo Descrição
    ativar Booliano Sinalizador que indica se a execução de regras de negócios, mecanismos de script e auditoria deve ser habilitada ou desabilitada.
    Valores válidos:
    • verdadeiro: habilita a execução de regras de negócios, mecanismos de script e auditoria. (Padrão)
    • falso: desabilite a execução de regras de negócios, mecanismos de script e auditoria.
    Tabela 117. Retorna
    Tipo Descrição
    vazio
    //Enable business rules, scripts engines for x_app_table
    var now_GR = new GlideRecord("x_app_table"); 
    now_GR.setWorkflow(true);

    GlideRecord com escopo - atualizar (motivo da cadeia de caracteres)

    Atualiza o GlideRecord com todas as mudanças feitas. Se o registro ainda não existir, ele será inserido.

    Tabela 118. Parâmetros
    Nome Tipo Descrição
    motivo Cadeia de caracteres Opcional. Motivo da atualização. O motivo aparece no registro de auditoria.
    Tabela 119. Retorna
    Tipo Descrição
    Cadeia de caracteres Sys_id do registro novo ou atualizado. Retorna nulo se a atualização falhar.

    O exemplo a seguir mostra como atualizar o campo Descrição resumida de um incidente.

    var now_GR = new GlideRecord('incident');
    now_GR.get('99ebb4156fa831005be8883e6b3ee4b9');
    now_GR.setValue('short_description', 'Update the short description');
    now_GR.update();
    gs.info(now_GR.getElement('short_description'));

    Saída:

    Update the short description.

    GlideRecord com escopo – updateMultiple()

    Atualiza cada GlideRecord em uma consulta declarada com um conjunto especificado de mudanças.

    Este método não oferece suporte à adição de várias entradas de registro.

    A propriedade do sistema glide.db.forced.chunk.threshold define o limite acima do qual força exclusões e atualizações de registros de bloco. A divisão em blocos ajuda a impedir que exclusões de chave não primária em tabelas grandes causem problemas de replicação. Para obter mais informações, consulte Available system properties.

    Nota:
    Para garantir os resultados esperados, use o método setValue () em vez de atribuições diretas. Ou seja, use gr.setValue(' <field_name> ', '4')); em vez de gr.= 4 .
    Nota:
    Não use este método com os métodos chooseWindow() ou setLimit() ao trabalhar com tabelas grandes.

    Este método define novos valores e não limpa os valores existentes. Para limpar um valor existente, use o método setValue() e defina o campo como null.

    Tabela 120. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 121. Retorna
    Tipo Descrição
    Nenhum

    Este exemplo mostra como atualizar o estado de todos os incidentes ativos para 4 - "Aguardando informações do usuário".

    var now_GR = new GlideRecord('incident');
    now_GR.addQuery('active', true);
    now_GR.setValue('state',  4);
    now_GR.updateMultiple();

    GlideRecord com escopo - updateWithReferences(Motivo do objeto)

    Atualiza um registro e também insere ou atualiza todos os registros relacionados com as informações fornecidas.

    Tabela 122. Parâmetros
    Nome Tipo Descrição
    motivo Objeto Motivo das atualizações. O motivo é exibido no registro de auditoria.
    Tabela 123. Retorna
    Tipo Descrição
    Cadeia de caracteres O sys_id do registro que está sendo atualizado.

    Se estiver processando um incidente em que o ID do chamador está definido para fazer referência ao registro sys_user "João da Silva", o código a seguir atualizará o registro do usuário de João da Silva. Se estiver processando um incidente em que não há ID de chamador especificado, o código a seguir criará um novo registro sys_user com as informações fornecidas (first_name, last_name) e definirá o valor de ID de chamador como o registro sys_user recém-criado.

    var inc = new GlideRecord('incident');
    inc.get(inc_sys_id);  // Looking up an existing incident record where 'inc_sys_id' represents the sys_id of a incident record
    inc.caller_id.first_name = 'John';
    inc.caller_id.last_name = 'Doe';
    inc.updateWithReferences();
    }