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 가 빈 날짜 값을 건너뛰고 3개의 기록을 반환하는 것을 보여줍니다. 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 날짜 값을 건너뛰고 결과 3개를 계산하는 것을 보여줍니다.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 - 일치(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 | 부울 | 필터가 대/소문자를 구분하는지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
기본값: 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)
필터 문자열의 샌드박스 평가를 활성화하거나 비활성화합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 보안 시행 | 부울 |
샌드박스에서 필터를 평가할지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
기본값: 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