GlideFilter – Scoped, Global

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 5 Minuten Lesedauer
  • Die GlideFilter- API ermöglicht das Filtern von Abfragen, um zu bestimmen, ob ein oder mehrere Datensätze einen bestimmten Satz von Anforderungen erfüllen.

    Methoden für diese API sind über das globale GlideFilter-Objekt zugänglich.

    Beachtung der Groß-/Kleinschreibung

    Bei der GlideFilter -API wird standardmäßig zwischen Groß- und Kleinschreibung unterschieden. Verwenden Sie die Methode setCaseSensitive(), um die Beachtung der Groß-/Kleinschreibung zu aktivieren oder zu deaktivieren. Bei GlideRecord -Abfragen wird die Groß-/Kleinschreibung nicht beachtet.

    Das folgende Beispiel zeigt, wie bei einer GlideRecord -Abfrage die Groß-/Kleinschreibung beachtet wird und derselbe Benutzerdatensatz mit Groß- oder Kleinschreibung zurückgegeben wird.

    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());
    Die Ausgabe„GlideRecord query()“ zeigt unabhängig vom Fall die gleiche Ergebnisanzeige.
    Upper case query: Abel Tuter
    Lower case query: Abel Tuter

    Das folgende Beispiel zeigt, wie GlideFilter nur den übereinstimmenden Wert des Datensatzes für die Großbuchstabenbedingung abruft. Die Bedingung für Kleinschreibung liefert keine Übereinstimmung.

    // 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());
    }
    Die Ausgabe zeigt, dass der Filter nur Ergebnisse in Großbuchstaben mit standardmäßiger Berücksichtigung von Groß-/Kleinschreibung zurückgibt:
    Upper case condition: Abel Tuter

    Das folgende Beispiel zeigt, wie die GlideFilter-Groß-/Kleinschreibung mit der setCaseSensitive()- Methode deaktiviert wird. Der Filter entspricht der Bedingung, obwohl der Fall nicht mit dem Feldwert übereinstimmt.

    // 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());
    }
    Die Ausgabe zeigt GlideFilter-Ergebnisse, bei denen die Groß-/Kleinschreibung nicht beachtet wird:
    Upper case condition: Abel Tuter
    Lower case condition: Abel Tuter

    Filtern Sie NULL-Werte

    Um NULL-Werte aus GlideFilter- Abfrageergebnissen auszuschließen, fügen Sie der Abfragebedingung ISNOTEMPTY hinzu. Das folgende Beispiel zeigt, wie die Verwendung derselben codierten Abfrage mit GlideRecord und GlideFilter zu unterschiedlichen Ergebnissen führt.
    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);
    Die Ausgabe zeigt, dass GlideRecord drei Datensätze zurückgibt und leere Datumswerte überspringt. Die GlideFilter- Abfrage zählt den leeren Datumswert und gibt eine Anzahl von vier Datensätzen zurück.
    Record RowCount: 3 - Filter Count: 4
    Um NULL-Werte aus den GlideFilter- Ergebnissen auszuschließen, fügen Sie dem abgefragten Feld die AND-Bedingung ISNOTEMPTY hinzu.
    // Encoded query includes null values with GlideFilter
    var condition = 'u_date_field<=javascript:gs.beginningOfToday()^u_date_fieldISNOTEMPTY';
    Die Ausgabe zeigt, dass die mit GlideFilter codierte Abfrage den Null-Datumswert überspringt und drei Ergebnisse zählt.
    Record RowCount: 3 - Filter Count: 3

    GlideFilter – GlideFilter(String filter, String title)

    Instantiiert ein GlideFilter-Objekt.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    filter Zeichenfolge Codierte Abfragezeichenfolge im Standard-Glide-Format. Weitere Informationen finden Sie unter Codierte Abfragezeichenfolgen. Bei Ergebnissen wird die Groß-/Kleinschreibung beachtet, sofern sie nicht mit der Methode setCaseSensitive() deaktiviert wird.

    Um NULL-Werte aus GlideFilter- Abfrageergebnissen auszuschließen, fügen Sie der Abfragebedingung ISNOTEMPTY hinzu.

    Titel Zeichenfolge Beschreibender Titel für den Filter.

    Das folgende Beispiel zeigt, wie die Anzahl der Benutzer mit dem Namen „Rebeka“ gefiltert wird.

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

    GlideFilter – checkRecord(GlideRecord now_GR, String filter, Boolean match)

    Vergleicht einen angegebenen Filter mit dem Inhalt eines angegebenen GlideRecord.

    Wenn der angegebene Filter eine Bedingung enthält, gibt die Methode „true“ zurück, wenn der Datensatz die Bedingung erfüllt.

    Filter unterstützen mehrere Bedingungen, z. B. „active=true^number=abc^category=request“. Sie können den Parameter match verwenden, um zu definieren, ob alle Bedingungen erfüllt sein müssen, um eine Übereinstimmung zu bestimmen, oder nur eine einzelne Bedingung.

    Tabelle : 2. Parameter
    Name Typ Beschreibung
    now_GR GlideRecord Auszuwertender GlideRecord.
    filter Zeichenfolge Codierte Abfragezeichenfolge im Standard-Glide-Format. Weitere Informationen finden Sie unter Codierte Abfragezeichenfolgen.

    Um NULL-Werte aus GlideFilter- Abfrageergebnissen auszuschließen, fügen Sie der Abfragebedingung ISNOTEMPTY hinzu.

    Hinweis:
    Bei den Werten filter wird zwischen Groß- und Kleinschreibung unterschieden. Darüber hinaus können Sie setCaseSensitive(false) nicht verwenden, um den Wert für die Groß-/Kleinschreibung zu ändern.
    Treffer Boolean Optional. Kennzeichnung, die angibt, ob alle Bedingungen erfüllt sein müssen, wenn der Parameter filter mehrere Bedingungen enthält.

    Gültige Werte:

    • true: Alle Bedingungen müssen erfüllt sein, damit die Methode „true“ zurückgibt.
    • false: Nur eine der Bedingungen muss erfüllt sein, damit die Methode „true“ zurückgibt.

    Standardwert: true

    Tabelle : 3. Ergebnisse
    Typ Beschreibung
    Boolean Ergebnisse des Filtervergleichs.
    • true: Filterbedingungen wurden erfüllt.
    • false: Filterbedingungen wurden nicht erfüllt.

    Das folgende Beispiel zeigt, wie für jeden Datensatz in der Incident-Tabelle, der die Filterbedingung erfüllt, „true“ angezeigt wird. Sonst false.

    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);
    }
    Ausgabe:
    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, Boolean match)

    Wertet einen Filter für einen angegebenen GlideRecord aus.

    Tabelle : 4. Parameter
    Name Typ Beschreibung
    now_GR GlideRecord Auszuwertender GlideRecord.
    Treffer Boolean

    Kennzeichnung, die angibt, ob alle Filterbedingungen übereinstimmen müssen.

    Gültige Werte:
    • true: Alle Filterbedingungen müssen übereinstimmen.
    • false: Filterbedingungsübereinstimmung ist nicht erforderlich.

    Standardwert: false

    Tabelle : 5. Ergebnisse
    Typ Beschreibung
    Boolean Ergebnisse der Übereinstimmungsprüfung.
    • true: Filterbedingungen wurden erfüllt.
    • false: Filterbedingungen wurden nicht erfüllt.

    Das folgende Beispiel zeigt, wie sichergestellt wird, dass die Filterbedingungen mit dem bereitgestellten GlideRecord übereinstimmen.

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

    GlideFilter – setCaseSensitive(Boolean caseSensitive)

    Aktiviert oder deaktiviert die Groß-/Kleinschreibung bei Filterergebnissen.

    Tabelle : 6. Parameter
    Name Typ Beschreibung
    Groß-/Kleinschreibung Boolean Kennzeichnung, die angibt, ob beim Filter die Groß-/Kleinschreibung beachtet wird.
    Gültige Werte:
    • true: Beim Filter wird zwischen Groß- und Kleinschreibung unterschieden.
    • false: Beim Filter wird die Groß-/Kleinschreibung nicht beachtet.

    Standardwert: true

    Tabelle : 7. Ergebnisse
    Typ Beschreibung
    Keine

    Das folgende Beispiel zeigt, wie die Groß-/Kleinschreibung bei Ergebnissen deaktiviert wird.

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

    Die Ausgabe zeigt, dass der Filter Ergebnisse in Großbuchstaben mit einer Bedingung für Kleinbuchstaben abruft.

    Rebekah Padley
    Rebekah Lindboe