GlideFilter - com escopo, global

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 6 min. de leitura
  • A API GlideFilter permite filtrar consultas para determinar se um ou mais registros atendem a um conjunto especificado de requisitos.

    Os métodos para esta API podem ser acessados usando o objeto global GlideFilter.

    Sensibilidade a maiúsculas e minúsculas

    A API GlideFilter faz distinção entre maiúsculas e minúsculas. Use o método setCaseSensitive() para habilitar ou desabilitar a diferenciação de maiúsculas e minúsculas. As consultas deGlideRecord não diferenciam maiúsculas de minúsculas.

    O exemplo a seguir mostra como uma consulta GlideRecord não faz distinção entre maiúsculas e minúsculas e resulta no mesmo registro de usuário com maiúsculas ou minúsculas.

    var gr = new GlideRecord('sys_user');
    gr.addQuery('first_name', 'Abel');
    gr.query();
    while (gr.next())
      gs.info("Upper case query: " + gr.getDisplayValue());
    
    var gr = new GlideRecord('sys_user');
    gr.addQuery('first_name', 'abel');
    gr.query();
    while (gr.next())       
      gs.info("Lower case query: " + gr.getDisplayValue());
    A saídaGlideRecord query() mostra os mesmos resultados, independentemente de maiúsculas e minúsculas.
    Upper case query: Abel Tuter
    Lower case query: Abel Tuter

    O exemplo a seguir mostra como o GlideFilter recupera somente o valor correspondente do registro para a condição de maiúscula. A condição de minúsculas não fornece uma correspondência.

    // Matches the 'Abel Tuter' user record
    var gr = new GlideRecord('sys_user');
    gr.query();
    var condition = 'first_name=Abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    while (gr.next()) {
       if (glideFilter.match(gr, true))
            gs.info("Upper case condition: " + gr.getDisplayValue());
    }
    
    // The following code does not match 'Abel Tuter' user record
    var gr = new GlideRecord('sys_user');
    gr.query();
    var condition = 'first_name=abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    while (gr.next()) {
       if (glideFilter.match(gr, true))
            gs.info("Lower case condition: " + gr.getDisplayValue());
    }
    A saída revela que o filtro retorna somente resultados em maiúsculas com distinção entre maiúsculas e minúsculas:
    Upper case condition: Abel Tuter

    O exemplo a seguir mostra como desabilitar a distinção entre maiúsculas e minúsculas de GlideFilter com o método setCaseSensitive(). O filtro corresponde à condição, embora o caso não corresponda ao valor do campo.

    // Matches the 'Abel Tuter' user record
    var gr = new GlideRecord('sys_user');
    gr.query();
    var condition = 'first_name=Abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    while (gr.next()) {
       if (glideFilter.match(gr, true))
         gs.info("Upper case condition: " + gr.getDisplayValue());
    }
    
    // The following code disables case sensitivity and matches the same record
    var gr = new GlideRecord('sys_user');
    gr.query();
    
    var condition = 'first_name=abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    glideFilter.setCaseSensitive(false);
    
    while (gr.next()) {
      if (glideFilter.match(gr, true))
        gs.info("Lower case condition: " + gr.getDisplayValue());
    }
    A saída revela resultados do GlideFilter que não diferenciam maiúsculas de minúsculas:
    Upper case condition: Abel Tuter
    Lower case condition: Abel Tuter

    Filtrar valores nulos

    Para excluir valores nulos dos resultados da consulta de GlideFilter, adicione ISNOTEMPTY à condição de consulta. O exemplo a seguir mostra como o uso da mesma consulta codificada com GlideRecord e GlideFilter produz resultados diferentes.
    var insertRecordsGr = new GlideRecord('u_test_table');
    insertRecordsGr.deleteMultiple();
    var dates = ['', '2021-01-29', '2021-01-30', '2021-01-31'];
    dates.forEach(function(val) {
      insertRecordsGr.initialize();
      insertRecordsGr.u_date_field = val;
      insertRecordsGr.insert();
    });
    
    var now_GR = new GlideRecord('u_test_table');
    now_GR.addEncodedQuery('u_date_field<javascript:gs.beginningOfToday()');
    now_GR.query();
    
    // Encoded query includes null values with GlideFilter, which might cause unexpected results
    var condition = 'u_date_field<javascript:gs.beginningOfToday()';
    
    var grWithGlideFilter = new GlideRecord('u_test_table');
    grWithGlideFilter.query();
    var filter = new GlideFilter(condition, 'filterCondition');
      
    var countWithGlideFilter = 0;
    while (grWithGlideFilter.next()) {
      if (GlideFilter.checkRecord(grWithGlideFilter, condition))
         countWithGlideFilter++;
    }
    
    gs.info('Record RowCount: ' + now_GR.getRowCount() + ' - Filter Count: ' + countWithGlideFilter);
    A saída mostra que o GlideRecord retorna três registros, ignorando valores de data vazios. A consulta GlideFilter conta o valor de data vazio e retorna uma contagem de quatro registros.
    Record RowCount: 3 - Filter Count: 4
    Para excluir valores nulos dos resultados do GlideFilter, adicione uma condição E ISNOTEMPTY ao campo consultado.
    // Encoded query includes null values with GlideFilter
    var condition = 'u_date_field<=javascript:gs.beginningOfToday()^u_date_fieldISNOTEMPTY';
    A saída mostra que a consulta codificada de GlideFilter ignora o valor de data nulo e conta três resultados.
    Record RowCount: 3 - Filter Count: 3

    GlideFilter – GlideFilter(filtro de cadeia de caracteres, título de cadeia de caracteres)

    Instancia um objeto GlideFilter.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    filtros Cadeia de caracteres Cadeia de caracteres de consulta codificada no formato Glide padrão. Consulte Cadeias de caracteres de consulta codificadas. Os resultados fazem distinção entre maiúsculas e minúsculas, a menos que sejam desabilitados usando o método setCaseSensitive().

    Para excluir valores nulos dos resultados da consulta de GlideFilter, adicione ISNOTEMPTY à condição de consulta.

    título Cadeia de caracteres Título descritivo do filtro.

    O exemplo a seguir mostra como filtrar o número de usuários chamados Rebekah.

    var now_GR = new GlideRecord('sys_user');
    now_GR.query();
    var condition = 'first_name=rebekah';
    var filter = new GlideFilter(condition, 'filterCondition');
    filter.setCaseSensitive(false);
      
    var countResults = 0;
    while (now_GR.next()) {
      if (filter.match(now_GR, true))
         countResults++;
    }
    
    gs.info('Number of users named Rebekah: ' + countResults);
    Saída:
    Number of users named Rebekah: 2

    GlideFilter - checkRecord(GlideRecord now_GR, filtro de cadeia de caracteres, correspondência booliana)

    Compara um filtro especificado com o conteúdo de um GlideRecord especificado.

    Se o filtro especificado contiver uma condição, o método retornará verdadeiro se o registro atender à condição.

    Os filtros oferecem suporte a várias condições, por exemplo, "active=true^number=abc^category=request". Você pode usar o parâmetro match para definir se todas as condições devem ser atendidas para determinar uma correspondência ou apenas uma única condição.

    Tabela 2. Parâmetros
    Nome Tipo Descrição
    now_GR GlideRecord GlideRecord para avaliar.
    filtros Cadeia de caracteres Cadeia de caracteres de consulta codificada no formato Glide padrão. Consulte Cadeias de caracteres de consulta codificadas.

    Para excluir valores nulos dos resultados da consulta de GlideFilter, adicione ISNOTEMPTY à condição de consulta.

    Nota:
    Os valores filter fazem distinção entre maiúsculas e minúsculas. Além disso, você não pode usar setCaseSensitive(false) para mudar o valor que faz distinção entre maiúsculas e minúsculas.
    correspondência Booliano Opcional. Sinalizador que indica se todas as condições devem ser atendidas se o parâmetro filter contiver várias condições.

    Valores válidos:

    • verdadeiro: todas as condições devem ser atendidas para que o método retorne verdadeiro.
    • falso: somente uma das condições deve ser atendida para que o método retorne verdadeiro.

    Padrão: verdadeiro

    Tabela 3. Retorna
    Tipo Descrição
    Booliano Resultados da comparação do filtro.
    • verdadeiro: as condições do filtro foram atendidas.
    • falso: as condições do filtro não foram atendidas.

    O exemplo a seguir mostra como exibir verdadeiro para cada registro na tabela Incidente que atende à condição do filtro. Caso contrário, será falso.

    var rec = new GlideRecord('incident');
    rec.query();
    
    var bool = true;
     
    while(rec.next())
    {
       bool = GlideFilter.checkRecord(rec, "active=true");
       gs.info("number "+ rec.number + " is " + bool);
    }
    Saída:
    number INC0000060 is false
    number INC0009002 is false
    number INC0000009 is false
    ...
    number INC0000015 is true
    number INC0000016 is true
    number INC0000017 is true
    ...

    GlideFilter - correspondência (GlideRecord now_GR, correspondência booliana)

    Avalia um filtro em relação a um GlideRecord especificado.

    Tabela 4. Parâmetros
    Nome Tipo Descrição
    now_GR GlideRecord GlideRecord para avaliar.
    correspondência Booliano

    Sinalizador que indica se todas as condições do filtro devem corresponder.

    Valores válidos:
    • verdadeiro: todas as condições de filtro devem corresponder.
    • falso: a correspondência de condição do filtro não é necessária.

    Padrão: falso

    Tabela 5. Retorna
    Tipo Descrição
    Booliano Resultados da verificação de correspondência.
    • verdadeiro: as condições do filtro foram atendidas.
    • falso: as condições do filtro não foram atendidas.

    O exemplo a seguir mostra como garantir que as condições do filtro correspondam ao GlideRecord fornecido.

    var now_GR = new GlideRecord('sys_user');
    now_GR.query();
    var condition = 'first_name=rebekah';
    var filter = new GlideFilter(condition, 'filterCondition');
    filter.setCaseSensitive(false);
      
    var countResults = 0;
    while (now_GR.next()) {
      if (filter.match(now_GR, true))
         countResults++;
    }
    
    gs.info('Number of users named Rebekah: ' + countResults);
    Saída:
    Number of users named Rebekah: 2

    GlideFilter - setCaseSensitive(booleano caseSensitive)

    Habilita ou desabilita os resultados do filtro que diferenciam maiúsculas de minúsculas.

    Tabela 6. Parâmetros
    Nome Tipo Descrição
    Diferenciar maiúsculas de minúsculas Booliano Sinalizador que indica se o filtro faz distinção entre maiúsculas e minúsculas.
    Valores válidos:
    • verdadeiro: o filtro faz distinção entre maiúsculas e minúsculas.
    • falso: o filtro não faz distinção entre maiúsculas e minúsculas.

    Padrão: verdadeiro

    Tabela 7. Retorna
    Tipo Descrição
    Nenhum

    O exemplo a seguir mostra como desabilitar resultados que diferenciam maiúsculas de minúsculas.

    var now_GR = new GlideRecord('sys_user');
    now_GR.query();
    
    var condition = 'first_name=rebekah';
    var filter = new GlideFilter(condition, 'filterCondition');
    
    // Disable case-sensitive filtering
    filter.setCaseSensitive(false);
    
    while (now_GR.next()) {
      if (filter.match(now_GR, true))
         gs.info(now_GR.getDisplayValue());
    }

    A saída mostra que o filtro recupera resultados de maiúsculas com uma condição de minúsculas.

    Rebekah Padley
    Rebekah Lindboe