GlideFilter: Bereichsbezogen, global
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.
Auf Methoden für diese API kann über das globale GlideFilter-Objekt zugegriffen werden.
Groß-/Kleinschreibung beachten
Bei der GlideFilter -API wird standardmäßig zwischen Groß- und Kleinschreibung unterschieden. Verwenden Sie die Methode setCaseSensitive(), um die Berücksichtigung von Groß-/Kleinschreibung zu aktivieren oder zu deaktivieren. BeiGlideRecord- Abfragen wird zwischen Groß- und Kleinschreibung unterschieden.
Das folgende Beispiel zeigt, wie bei einer GlideRecord-Abfrage die Groß-/Kleinschreibung nicht beachtet wird und die Ergebnisse im selben Benutzerdatensatz mit Groß- oder Kleinschreibung zurückgegeben werden.
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());
Upper case query: Abel Tuter
Lower case query: Abel TuterDas folgende Beispiel zeigt, wie GlideFilter nur den übereinstimmenden Wert des Datensatzes für die Großbuchstabenbedingung abruft. Die Kleinbuchstabenbedingung liefert keine Übereinstimmung.
// 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());
}
Upper case condition: Abel TuterDas folgende Beispiel zeigt, wie die GlideFilter-Groß-/Kleinschreibung mit der Methode setCaseSensitive() deaktiviert wird. Der Filter entspricht der Bedingung, auch wenn der Fall nicht mit dem Feldwert übereinstimmt.
// 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());
}
Upper case condition: Abel Tuter
Lower case condition: Abel TuterFiltern Sie Nullwerte
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: 4AND -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 GlideFilter- codierte Abfrage den Null-Datumswert überspringt und drei Ergebnisse zählt.Record RowCount: 3 - Filter Count: 3GlideFilter – GlideFilter(Zeichenfolgenfilter, Zeichenfolgentitel)
Instanziiert ein GlideFilter-Objekt.
| Name | Typ | Beschreibung |
|---|---|---|
| filter | Zeichenfolge | Codierte Abfragezeichenfolge im Standard-Glide-Format. Siehe Codierte Abfragezeichenfolgen. Bei Ergebnissen wird zwischen Groß- und Kleinschreibung unterschieden, sofern sie nicht mit der Methode „setCaseSensitive()“ deaktiviert werden. 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);
Number of users named Rebekah: 2GlideFilter – checkRecord(GlideRecord now_GR, Zeichenfolgenfilter, boolesche Übereinstimmung)
Vergleicht einen angegebenen Filter mit dem Inhalt eines angegebenen GlideRecord.
Enthält der angegebene Filter eine Bedingung, 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". Mit dem Parameter match können Sie definieren, ob alle Bedingungen erfüllt sein müssen, um eine Übereinstimmung zu bestimmen, oder nur eine einzelne Bedingung.
| Name | Typ | Beschreibung |
|---|---|---|
| now_GR | GlideRecord | AuszuwertenderGlideRecord. |
| Filter | Zeichenfolge | Codierte Abfragezeichenfolge im Standard-Glide-Format. Siehe Codierte Abfragezeichenfolgen. Um NULL-Werte aus GlideFilter -Abfrageergebnissen auszuschließen, fügen Sie der Abfragebedingung ISNOTEMPTY hinzu. Hinweis: Bei den filter -Werten wird zwischen Groß- und Kleinschreibung unterschieden. Darüber hinaus können Sie setCaseSensitive(false) nicht verwenden, um den Wert für „Groß-/Kleinschreibung beachten“ 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:
Standardwert: wahr |
| Typ | Beschreibung |
|---|---|
| Boolean | Ergebnisse des Filtervergleichs.
|
Das folgende Beispiel zeigt, wie für jeden Datensatz in der Incident-Tabelle, der die Filterbedingung erfüllt, „true“ angezeigt wird. Andernfalls „falsch“.
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);
}
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 – Übereinstimmung (GlideRecord now_GR, boolesche Übereinstimmung)
Wertet einen Filter für einen angegebenen GlideRecord aus.
| Name | Typ | Beschreibung |
|---|---|---|
| now_GR | GlideRecord | AuszuwertenderGlideRecord. |
| Treffer | Boolean | Kennzeichnung, die angibt, ob alle Filterbedingungen übereinstimmen müssen. Gültige Werte:
Standardwert: false |
| Typ | Beschreibung |
|---|---|
| Boolean | Ergebnisse der Übereinstimmungsprüfung.
|
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);
Number of users named Rebekah: 2GlideFilter – setCaseSensitive(Boolean caseSensitive)
Aktiviert oder deaktiviert Filterergebnisse, bei denen die Groß-/Kleinschreibung beachtet wird.
| Name | Typ | Beschreibung |
|---|---|---|
| caseSensitive | Boolean | Kennzeichnung, die angibt, ob bei dem Filter Groß-/Kleinschreibung beachtet wird. Gültige Werte:
Standardwert: wahr |
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Beispiel zeigt, wie 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 Kleinbuchstabenbedingung abruft.
Rebekah Padley
Rebekah Lindboe
GlideFilter – setEnforceSecurity(BooleanforceSecurity)
Aktiviert oder deaktiviert die Sandbox-Auswertung der Filterzeichenfolge.
| Name | Typ | Beschreibung |
|---|---|---|
| ErzwingenSicherheit | Boolean |
Kennzeichnung, die angibt, ob der Filter in der Sandbox ausgewertet werden soll. Gültige Werte:
Standardwert: false |
| Typ | Beschreibung |
|---|---|
| Keine |
Das folgende Codebeispiel zeigt, wie diese Methode aufgerufen wird.
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);
Ausgabe:
Number of users named Rebekah: 2