GlideFilter - 범위, 전역
GlideFilter API를 사용하면 쿼리를 필터링하여 하나 이상의 기록이 지정된 요구 사항 세트를 충족하는지 확인할 수 있습니다.
이 API의 메서드는 GlideFilter 전역 객체를 사용하여 액세스할 수 있습니다.
대소문자 구분
GlideFilter API는 기본적으로 대소문자를 구분합니다. setCaseSensitive() 메서드를 사용하여 대소문자 구분을 활성화하거나 비활성화할 수 있습니다. GlideRecord 쿼리는 대/소문자를 구분하지 않습니다.
다음 예에서는 GlideRecord 쿼리에서 대/소문자를 구분하지 않고 대문자 또는 소문자로 된 동일한 사용자 기록을 생성하는 방법을 보여줍니다.
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 Tuter다음 예에서는 GlideFilter 가 대문자 조건에 대해 일치하는 기록 값만 검색하는 방법을 보여 줍니다. 소문자 조건이 일치를 제공하지 않습니다.
// 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 Tuter다음 예제에서는 setCaseSensitive() 메서드를 사용하여 GlideFilter 대/소문자 구분을 비활성화하는 방법을 보여줍니다. 케이스가 필드 값과 일치하지 않더라도 필터는 조건과 일치합니다.
// 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 Tuternull 값 필터링
ISNOTEMPTY를 추가합니다. 다음 예제에서는 GlideRecord 및 GlideFilter 와 함께 동일한 인코딩된 쿼리를 사용할 경우 어떻게 다른 결과가 생성되는지 보여 줍니다.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);출력은 GlideRecord 가 빈 날짜 값을 건너뛰고 세 개의 기록을 반환함을 보여줍니다. GlideFilter 쿼리는 빈 날짜 값을 계산하고 4개의 기록 수를 반환합니다.Record RowCount: 3 - Filter Count: 4AND 조건 ISNOTEMPTY를 추가합니다.// Encoded query includes null values with GlideFilter
var condition = 'u_date_field<=javascript:gs.beginningOfToday()^u_date_fieldISNOTEMPTY';출력은 GlideFilter 인코딩 쿼리가 null 날짜 값을 건너뛰고 세 개의 결과를 계산함을 보여줍니다.Record RowCount: 3 - Filter Count: 3GlideFilter – GlideFilter(문자열 필터, 문자열 제목)
GlideFilter 객체를 인스턴스화합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 필터 | 문자열 | 표준 Glide 형식으로 인코딩된 쿼리 문자열입니다. 인코딩된 쿼리 문자열을 참조하세요.setCaseSensitive() 메서드를 사용하여 비활성화하지 않는 한 결과는 대소문자를 구분합니다. GlideFilter 쿼리 결과에서 null 값을 제외하려면 쿼리 조건에 ISNOTEMPTY를 추가합니다. |
| 제목 | 문자열 | 필터에 대한 설명이 포함된 제목입니다. |
다음 예제에서는 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);
Number of users named Rebekah: 2GlideFilter - checkRecord(GlideRecord now_GR, 문자열 필터, 부울 일치)
지정된 필터를 지정된 GlideRecord의 콘텐츠와 비교합니다.
지정된 필터에 하나의 조건이 포함되어 있는 경우 기록이 조건을 충족하면 메서드는 true를 반환합니다.
필터는 "active=true^number=abc^category=request"와 같은 여러 조건을 지원합니다. 매개변수를 match 사용하여 일치 조건을 확인하기 위해 모든 조건을 충족해야 하는지 또는 단일 조건만 충족해야 하는지 여부를 정의할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| now_GR | GlideRecord | 평가할 GlideRecord 입니다. |
| 필터 | 문자열 | 표준 Glide 형식으로 인코딩된 쿼리 문자열입니다. 인코딩된 쿼리 문자열을 참조하세요. GlideFilter 쿼리 결과에서 null 값을 제외하려면 쿼리 조건에 ISNOTEMPTY를 추가합니다. 주: filter 값은 대/소문자를 구분합니다. 또한 setCaseSensitive(false) 를 사용하여 대/소문자를 구분하는 값을 변경할 수 없습니다. |
| 일치 | 부울 | 옵션입니다. 매개변수에 filter 여러 조건이 포함된 경우 모든 조건이 충족되어야 하는지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
기본값: true |
| 유형 | 설명 |
|---|---|
| 부울 | 필터 비교 결과입니다.
|
다음 예에서는 필터 조건을 충족하는 인시던트 테이블의 각 기록에 대해 true를 표시하는 방법을 보여줍니다. 그렇지 않으면 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);
}
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, 부울 일치)
지정된 GlideRecord에 대해 필터를 평가합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| now_GR | GlideRecord | 평가할 GlideRecord 입니다. |
| 일치 | 부울 | 모든 필터 조건이 일치해야 하는지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
기본값: false |
| 유형 | 설명 |
|---|---|
| 부울 | 일치 검사 결과입니다.
|
다음 예에서는 필터 조건이 제공된 GlideRecord와 일치하는지 확인하는 방법을 보여줍니다.
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(부울 caseSensitive)
대/소문자 구분 필터 결과를 활성화하거나 비활성화합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| caseSensitive | 부울 | 필터가 대/소문자를 구분하는지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
기본값: true |
| 유형 | 설명 |
|---|---|
| 없음 |
다음 예제에서는 대/소문자를 구분하는 결과를 사용하지 않도록 설정하는 방법을 보여 줍니다.
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());
}
출력은 필터가 소문자 조건으로 대문자 결과를 검색함을 보여줍니다.
Rebekah Padley
Rebekah Lindboe
GlideFilter - setEnforceSecurity(부울 enforceSecurity)
필터 문자열의 샌드박스 평가를 활성화하거나 비활성화합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| enforceSecurity | 부울 |
샌드박스에서 필터를 평가할지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
기본값: false |
| 유형 | 설명 |
|---|---|
| 없음 |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
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);
출력:
Number of users named Rebekah: 2