반환 결과 데이터 구성

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 6분
  • Mobile SDK내에서 REST 엔드포인트를 통해 인스턴스의 ServiceNow 데이터와 상호작용할 때 반환 결과에 다시 전달되는 데이터를 구성할 수 있습니다.

    FetchConfiguration 구조를 사용하여 다시 전달할 데이터를 구성합니다. 이 구조를 사용하면 다음을 구성할 수 있습니다.
    • 테이블에서 반환할 특정 기록입니다.
    • 기록에서 반환할 특정 필드입니다.
    • 반환할 기록 수입니다.
    주:
    일반적으로 반환되는 필드를 결정할 때 특정 모델 유형에 대한 모든 CRUD 작업에 동일한 FetchConfiguration을 사용하려고 합니다. 최소한 모델의 필수 속성과 일치해야 하며, 그렇지 않으면 JSON 디코딩이 실패합니다.

    반환할 특정 기록 구성

    FetchConfiguration 호출 내의 필터 구조를 사용하면 인스턴스에서 ServiceNow 가져와 REST 엔드포인트에서 반환 결과로 다시 전달되는 기록을 필터링하고 정렬할 수 있습니다. 이 필터는 REST API 엔드포인트의 sysparm_query 매개변수에 전달됩니다. 자세한 내용은 테이블 API를 참조하세요.

    원하는 필터링 기능에 따라 네 가지 방법으로 필터 구조를 초기화할 수 있습니다.
    1. 인코딩된 쿼리로 필터링합니다. 인코딩된 쿼리로 필터링합니다. 이 유형의 필터를 사용하면 지정된 테이블 내의 기록에 적용되는 인코딩된 쿼리를 전달할 수 있습니다.
      예를 들어, 다음 호출은 활성 상태이고 간단한 설명 필드에 "broken"이라는 단어가 포함된 기록만 반환합니다.
      Filter(query: "active=true^short_descriptionLIKEbroken"

      이 유형의 필터링을 사용하려면 함수를 사용하여 필터 구조를 초기화합니다.필터 - init(query: String, queryCategory: String? = nil)

    2. 기준으로 필터링합니다. 이 필터를 사용하면 함께 "또는"로 결합된 하나 이상의 필터 기준을 기준으로 필터링할 수 있습니다.
      예를 들어 관리자에게 PTO를 소속 중인 직원 Abel Tuter가 있다고 가정해 보겠습니다. 담당자는 누구에게도 할당되지 않았거나 Abel Tuter에게 할당되지 않은 활성 인시던트가 있는지 파악하여 할당/재할당할 수 있기를 원합니다. 또한 동일한 목록에서 에스컬레이션이 높거나 지연된 모든 인시던트를 확인하여 이러한 인시던트도 해결하려고 합니다. 다음은 이 데이터를 얻는 데 필요한 필터를 생성하는 방법을 보여줍니다.
      let activeIncidents = Condition.boolean(field: "active", .is(true))
      
      let assignedToEmpty = Condition.string(field: "assigned_to", .isEmpty) 
      
      let assignedToAbel = Condition.string(field: "assigned_to", .is("Abel Tuter")) 
      
      let assignedToAbelOrEmpty = CompoundCondition.or([assignedToEmpty, assignedToAbel]) 
      
      let needToReassign = Criteria(conditions: [activeIncidents, assignedToAbelOrEmpty])
      
      let highEscelations = Condition.string(field: "escalation", .is("2"))
      
      let overdueEscelations = Condition.string(field: "escalation", .is("3"))
      
      let highORoverdueEscelations = CompoundCondition.or([highEscelations, overdueEscelations]) 
      
      let needToHandleEscalation = Criteria(condition: highOrOverdueEscelations) 
      
      let myPrioritiesForTodayFilter = Filter(criteria: [needToReassign, needToHandleEscalation])
      
      

      이 유형의 필터링을 사용하려면 함수를 사용하여 필터 구조를 초기화합니다.필터 - init(criteria criteriaList: [Criteria], sortBy: [Sort]? = nil, queryCategory: String? = nil)

    3. 키워드와 조건으로 필터링합니다. 이 필터를 사용하면 함께 사용되는 특정 키워드와 조건을 기반으로 기록을 필터링할 수 있습니다.

      예를 들어, 키워드 "iOS13 또는 iOS 14"를 포함하고 testField로 정렬된 지정된 조건을 충족하는 모든 기록에 대한 다음 필터입니다.

      testKeywordsAndConditionsAndSort() {
        let keywords = "iOS 13 | iOS 14"
        let conditionA = Condition.boolean(field: testField, .is(true))
        let conditionB = Condition.boolean(field: testField2, .is(false))
        let sortA = Sort.asc(testField)
        let filter = Filter(keywords: keywords, conditions: [conditionA, conditionB], sortBy: [sortA])
        
        XCTAssertEqual(filter.query, "123TEXTQUERY321=\(keywords)^\(conditionA.query)^\(conditionB.query)^EQ^\(sortA.query)")
      }

      이 유형의 필터링을 사용하려면 함수를 사용하여 필터 구조를 초기화합니다.필터 - init(키워드: 문자열? = nil, 조건: [조건], sortBy: [정렬]? = nil)

    4. 조건으로 필터링합니다. 이 필터를 사용하면 지정된 모든 조건을 충족하는 기록을 필터링할 수 있습니다(및. 함께).

      예를 들어, 활성 필드가 "예"이고 SLA 기한 필드의 날짜 값이 "오늘" 또는 오늘 이후의 날짜인 모든 기록에 대한 다음 필터입니다.

      // Where the record is active
      let condition1 = Condition.boolean(field: "active", .is(true))
      
      // AND the date value of the SLA due field is on "today" or any date after today.
      let condition2 = Condition.dateTime(field: "sla_due", .atOrAfter(0, .daysAgoStart))
      
      let filter = Filter(conditions: [condition1, condition2])

      이 유형의 필터링을 사용하려면 함수를 사용하여 필터 구조를 초기화합니다.필터 - init(conditions: [QueryProviding], sorts: [Sort]? = nil)

    반환할 특정 필드 구성

    FieldReadConfiguration 구조체 - iOSFetchConfiguration 메서드 호출 내에서 반환 결과에 다시 전달할 필드를 구성할 수 있습니다. 또한 반환된 필드의 형식/내용을 다음과 같이 구성할 수 있습니다.
    • 표시 값
    • 실제 값
    • 참조 링크 제외
    주:
    코드 모델과 일치하도록 필드를 구성하면 인스턴스에서 반환 ServiceNow 하는 페이로드가 줄어들어 데이터 전송이 줄어들어 네트워크 효율성이 향상될 수 있습니다.