GlideFilter - 범위 지정, 전역

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 14분
  • 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());
    GlideRecord.query() 출력은 대소문자에 관계없이 동일한 결과가 표시됩니다.
    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());
    }
    출력은 GlideFilter 의 대/소문자를 구분하지 않는 결과를 보여줍니다.
    Upper case condition: Abel Tuter
    Lower case condition: Abel Tuter

    null 값 필터링

    GlideFilter 쿼리 결과에서 null 값을 제외하려면 쿼리 조건에 ISNOTEMPTY를 추가합니다. 다음 예제에서는 GlideRecordGlideFilter 와 함께 동일한 인코딩된 쿼리를 사용하면 어떻게 다른 결과가 생성되는지 보여줍니다.
    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: 4
    GlideFilter 결과에서 null 값을 제외하려면 쿼리된 필드에 AND 조건 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: 3

    GlideFilter – GlideFilter(문자열 필터, 문자열 제목)

    GlideFilter 객체를 인스턴스화합니다.

    표 1. 매개변수
    이름 유형 설명
    필터 문자열 표준 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: 2

    GlideFilter - checkRecord(GlideRecord now_GR, 문자열 필터, 부울 일치)

    지정된 필터를 지정된 GlideRecord의 내용과 비교합니다.

    지정된 필터에 하나의 조건이 포함되어 있는 경우 기록이 조건을 충족하면 메서드가 true를 반환합니다.

    필터는 "active=true^number=abc^category=request"와 같은 여러 조건을 지원합니다. 이 매개변수를 사용하여 match 일치 항목을 결정하기 위해 모든 조건을 충족해야 하는지 아니면 단일 조건만 충족해야 하는지 정의할 수 있습니다.

    표 2. 매개변수
    이름 유형 설명
    now_GR GlideRecord 평가할 GlideRecord입니다.
    필터 문자열 표준 Glide 형식으로 인코딩된 쿼리 문자열입니다. 인코딩된 쿼리 문자열을 참조하세요.

    GlideFilter 쿼리 결과에서 null 값을 제외하려면 쿼리 조건에 ISNOTEMPTY를 추가합니다.

    주:
    filter 값은 대/소문자를 구분합니다. 또한 setCaseSensitive(false) 를 사용하여 대/소문자 구분 값 변경을 변경할 수 없습니다.
    일치 부울 옵션입니다. 매개변수에 여러 조건이 포함된 경우 filter 모든 조건이 충족되어야 하는지 여부를 나타내는 플래그입니다.

    유효한 값은 다음과 같습니다.

    • true: 메서드가 true를 반환하려면 모든 조건이 충족되어야 합니다.
    • false: 메서드가 true를 반환하려면 조건 중 하나만 충족되어야 합니다.

    기본값: true

    표 3. 반환
    유형 설명
    부울 필터 비교 결과입니다.
    • true: 필터 조건이 충족되었습니다.
    • false: 필터 조건이 충족되지 않았습니다.

    다음 예시에서는 필터 조건을 충족하는 인시던트 테이블의 각 기록에 대해 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에 대해 필터를 평가합니다.

    표 4. 매개변수
    이름 유형 설명
    now_GR GlideRecord 평가할 GlideRecord입니다.
    일치 부울

    모든 필터 조건이 일치해야 하는지 여부를 나타내는 플래그입니다.

    유효한 값은 다음과 같습니다.
    • true: 모든 필터 조건이 일치해야 합니다.
    • false: 필터 조건 일치가 필요하지 않습니다.

    기본값: false

    표 5. 반환
    유형 설명
    부울 일치 확인의 결과입니다.
    • true: 필터 조건이 충족되었습니다.
    • 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: 2

    GlideFilter - setCaseSensitive(부울 대/소문자 민감)

    대/소문자를 구분하는 필터 결과를 활성화하거나 비활성화합니다.

    표 6. 매개변수
    이름 유형 설명
    caseSensitive 부울 필터가 대/소문자를 구분하는지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 필터는 대/소문자를 구분합니다.
    • false: 필터에서 대/소문자를 구분하지 않습니다.

    기본값: true

    표 7. 반환
    유형 설명
    없음

    다음 예시에서는 대/소문자를 구분하는 결과를 사용하지 않도록 설정하는 방법을 보여줍니다.

    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)

    필터 문자열의 샌드박스 평가를 활성화하거나 비활성화합니다.

    표 8. 매개변수
    이름 유형 설명
    보안 적용 부울

    샌드박스에서 필터를 평가할지 여부를 나타내는 플래그입니다.

    유효한 값은 다음과 같습니다.
    • true: 샌드박스에서 필터를 평가합니다.
    • false: 샌드박스의 필터를 평가하지 않습니다.

    기본값: false

    표 9. 반환
    유형 설명
    없음

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

    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