GlideFilter - com escopo, global

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 7 min. de leitura
  • A API GlideFilter permite a filtragem de 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 por padrão. Use o método setCaseSensitive() para habilitar ou desabilitar a diferenciação de maiúsculas e minúsculas. As consultasGlideRecord não diferenciam maiúsculas de minúsculas.

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

    var gr_Query = new GlideRecord('sys_user');
    gr_Query.addQuery('first_name', 'Abel');
    gr_Query.query();
    while (gr_Query.next())
      gs.info("Upper case query: " + gr_Query.getDisplayValue());
    
    var gr_Query = new GlideRecord('sys_user');
    gr_Query.addQuery('first_name', 'abel');
    gr_Query.query();
    while (gr_Query.next())       
      gs.info("Lower case query: " + gr_Query.getDisplayValue());
    A saídaGlideRecord.query() mostra a mesma exibição de resultados, independentemente do caso.
    Upper case query: Abel Tuter
    Lower case query: Abel Tuter

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

    // Matches the 'Abel Tuter' user record
    var gr_Query = new GlideRecord('sys_user');
    gr_Query.query();
    var condition = 'first_name=Abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    while (gr_Query.next()) {
       if (glideFilter.match(gr_Query, true))
            gs.info("Upper case condition: " + gr_Query.getDisplayValue());
    }
    
    // The following code does not match 'Abel Tuter' user record
    var gr_Query = new GlideRecord('sys_user');
    gr_Query.query();
    var condition = 'first_name=abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    while (gr_Query.next()) {
       if (glideFilter.match(gr_Query, true))
            gs.info("Lower case condition: " + gr_Query.getDisplayValue());
    }
    A saída revela que o filtro retorna somente resultados em maiúsculas com distinção entre maiúsculas e minúsculas padrão:
    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_Query = new GlideRecord('sys_user');
    gr_Query.query();
    var condition = 'first_name=Abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    while (gr_Query.next()) {
       if (glideFilter.match(gr_Query, true))
         gs.info("Upper case condition: " + gr_Query.getDisplayValue());
    }
    
    // The following code disables case sensitivity and matches the same record
    var gr_Query = new GlideRecord('sys_user');
    gr_Query.query();
    
    var condition = 'first_name=abel';
    var glideFilter = new GlideFilter(condition, 'filterCondition');
    glideFilter.setCaseSensitive(false);
    
    while (gr_Query.next()) {
      if (glideFilter.match(gr_Query, true))
        gs.info("Lower case condition: " + gr_Query.getDisplayValue());
    }
    A saída revela resultados de 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 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 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 de GlideFilter, adicione uma condição ANDISNOTEMPTY 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 com 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 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 são compatíveis com 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 a ser avaliado.
    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 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 alterar o valor que diferencia maiúsculas de 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 de filtros.
    • 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 de filtro. Caso contrário, 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 - match(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 a ser avaliado.
    correspondência Booliano

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

    Valores válidos:
    • verdadeiro: todas as condições de filtro devem corresponder.
    • falso: a correspondência da 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 (booliano caseSensitive)

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

    Tabela 6. Parâmetros
    Nome Tipo Descrição
    caseSensitive 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 diferencia maiúsculas de minúsculas.

    Padrão: verdadeiro

    Tabela 7. Retorna
    Tipo Descrição
    Nenhum(a)

    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 em maiúsculas com uma condição em minúsculas.

    Rebekah Padley
    Rebekah Lindboe

    GlideFilter - setEnforceSecurity(Booliano forceSecurity)

    Habilita ou desabilita a avaliação na área restrita da cadeia de caracteres do filtro.

    Tabela 8. Parâmetros
    Nome Tipo Descrição
    imporSegurança Booliano

    Sinalizador que indica se o filtro deve ser avaliado na área restrita.

    Valores válidos:
    • verdadeiro: avalia o filtro na área restrita.
    • falso: não avalia o filtro na área restrita.

    Padrão: falso

    Tabela 9. Retorna
    Tipo Descrição
    Nenhum(a)

    O exemplo de código a seguir mostra como chamar este método.

    var now_GR = new GlideRecord('sys_user');
    now_GR.query();
    var condition = 'first_name=rebekah';
    var filter = new GlideFilter(condition, 'filterCondition');
    filter.setEnforceSecurity(true);
      
    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