GlideFilter - Champ d’application, global

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 6 minutes de lecture
  • L’API GlideFilter permet d’effectuer des requêtes de filtrage pour déterminer si un ou plusieurs enregistrements répondent à un ensemble de conditions spécifiées.

    Les méthodes de cette API sont accessibles à l’aide de l’objet global GlideFilter.

    Sensibilité à la casse

    L’API GlideFilter est sensible à la casse par défaut. Utilisez la méthode setCaseSensitive() pour activer ou désactiver la sensibilité à la casse. Les requêtes GlideRecord ne sont pas sensibles à la casse.

    L’exemple suivant montre comment une requête GlideRecord est insensible à la casse et aboutit au même enregistrement utilisateur avec des majuscules ou des minuscules.

    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());
    La sortie GlideRecord query() affiche les mêmes résultats quel que soit le cas.
    Upper case query: Abel Tuter
    Lower case query: Abel Tuter

    L’exemple suivant montre comment GlideFilter récupère uniquement la valeur correspondante de l’enregistrement pour la condition de majuscule. La condition de minuscule ne fournit pas de correspondance.

    // 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());
    }
    La sortie révèle que le filtre renvoie uniquement les résultats en majuscules avec une sensibilité à la casse par défaut :
    Upper case condition: Abel Tuter

    L’exemple suivant montre comment désactiver la sensibilité à la casse de GlideFilter avec la méthode setCaseSensitive(). Le filtre correspond à la condition même si le ticket ne correspond pas à la valeur du champ.

    // 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());
    }
    La sortie révèle des résultats insensibles à la casse GlideFilter :
    Upper case condition: Abel Tuter
    Lower case condition: Abel Tuter

    Filtrer les valeurs nulles

    Pour exclure les valeurs nulles des résultats de requête GlideFilter , ajoutez ISNOTEMPTY à la condition de requête. L’exemple suivant montre comment l’utilisation de la même requête codée avec GlideRecord et GlideFilter produit des résultats différents.
    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);
    La sortie montre que GlideRecord renvoie trois enregistrements, en ignorant les valeurs de date vides. La requête GlideFilter compte la valeur de date vide et renvoie un nombre de quatre enregistrements.
    Record RowCount: 3 - Filter Count: 4
    Pour exclure les valeurs nulles des résultats GlideFilter , ajoutez une condition ET ISNOTEMPTY au champ interrogé.
    // Encoded query includes null values with GlideFilter
    var condition = 'u_date_field<=javascript:gs.beginningOfToday()^u_date_fieldISNOTEMPTY';
    La sortie montre que la requête codée GlideFilter ignore la valeur de date null et compte trois résultats.
    Record RowCount: 3 - Filter Count: 3

    GlideFilter – GlideFilter(Filtre de chaîne, titre de chaîne)

    Instancie un objet GlideFilter.

    Tableau 1. Paramètres
    Nom Type Description
    filtre Chaîne Chaîne de requête codée au format Glide standard. Reportez-vous à la section Chaînes de requêtes codées.Les résultats sont sensibles à la casse, sauf s’ils sont désactivés à l’aide de la méthode setCaseSensitive().

    Pour exclure les valeurs nulles des résultats de requête GlideFilter , ajoutez ISNOTEMPTY à la condition de requête.

    Titre Chaîne Titre descriptif pour le filtre.

    L’exemple suivant montre comment filtrer le nombre d’utilisateurs nommés 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);
    Sortie :
    Number of users named Rebekah: 2

    GlideFilter : checkRecord(now_GR GlideRecord, filtre de chaîne, correspondance booléenne)

    Compare un filtre spécifié au contenu d’un GlideRecord spécifié.

    Si le filtre spécifié contient une condition, la méthode renvoie la valeur true si l’enregistrement remplit la condition.

    Les filtres prennent en charge plusieurs conditions, par exemple « active=true^number=abc^category=request ». Vous pouvez utiliser le match paramètre pour définir si toutes les conditions doivent être remplies pour déterminer une correspondance ou une seule condition.

    Tableau 2. Paramètres
    Nom Type Description
    now_GR GlideRecord GlideRecord à évaluer.
    filtre Chaîne Chaîne de requête codée au format Glide standard. Reportez-vous à la section Chaînes de requêtes codées.

    Pour exclure les valeurs nulles des résultats de requête GlideFilter , ajoutez ISNOTEMPTY à la condition de requête.

    Remarque :
    Les filter valeurs sont sensibles à la casse. En outre, vous ne pouvez pas utiliser setCaseSensitive(false) pour modifier la valeur sensible à la casse.
    correspondre Booléen Facultatif. Marqueur indiquant si toutes les conditions doivent être remplies si le filter paramètre contient plusieurs conditions.

    Valeurs valides :

    • true : toutes les conditions doivent être remplies pour que la méthode retourne true.
    • false : une seule des conditions doit être remplie pour que la méthode retourne true.

    Valeur par défaut : true

    Tableau 3. Renvoie
    Type Description
    Booléen Résultats de la comparaison des filtres.
    • true : les conditions de filtre ont été remplies.
    • false : les conditions de filtre n’ont pas été remplies.

    L’exemple suivant montre comment afficher la valeur true pour chaque enregistrement de la table Incident qui répond à la condition de filtre. Faux dans le cas contraire.

    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);
    }
    Sortie :
    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, correspondance booléenne)

    Évalue un filtre par rapport à un GlideRecord spécifié.

    Tableau 4. Paramètres
    Nom Type Description
    now_GR GlideRecord GlideRecord à évaluer.
    correspondre Booléen

    Marqueur indiquant si toutes les conditions de filtre doivent correspondre.

    Valeurs valides :
    • true : toutes les conditions de filtre doivent correspondre.
    • false : la correspondance de condition de filtre n’est pas requise.

    Valeur par défaut : false

    Tableau 5. Renvoie
    Type Description
    Booléen Résultats de la vérification de correspondance.
    • true : les conditions de filtre ont été remplies.
    • false : les conditions de filtre n’ont pas été remplies.

    L’exemple suivant montre comment s’assurer que les conditions de filtre correspondent au GlideRecord fourni.

    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);
    Sortie :
    Number of users named Rebekah: 2

    GlideFilter - setCaseSensitive(booléen caseSensitive)

    Active ou désactive les résultats de filtre sensible à la casse.

    Tableau 6. Paramètres
    Nom Type Description
    Sensible à la casse Booléen Marqueur qui indique si le filtre est sensible à la casse.
    Valeurs valides :
    • true : le filtre est sensible à la casse.
    • false : le filtre n’est pas sensible à la casse.

    Valeur par défaut : true

    Tableau 7. Renvoie
    Type Description
    Néant

    L’exemple suivant montre comment désactiver les résultats sensibles à la casse.

    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());
    }

    La sortie montre que le filtre récupère les résultats en majuscules avec une condition en minuscules.

    Rebekah Padley
    Rebekah Lindboe