다음을 통해 공유


사용자 지정 코드의 엔터티 검색 정의 다시 사용

 

게시 날짜: 2016년 11월

적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2013, Dynamics CRM 2015, Dynamics CRM 2016

Unified Service Desk의 엔터티 검색은 개발자를 위해 서비스로 노출되므로 사용자 지정 코드의 기존 엔터티 검색 정의를 프로그래밍 방식으로 사용하여 Microsoft Dynamics 365 데이터를 검색할 수 있습니다.Unified Service Desk의 엔터티 검색은 FetchXML를 사용하여 Dynamics 365 웹 서비스를 쿼리하여 데이터를 반환합니다. 엔터티 검색 정의에 대한 자세한 내용은 Unified Service Desk에서 엔터티 검색을 사용하여 데이터 검색를 참조하십시오.

엔터티 검색을 설정하면 더욱 빠른 성능을 위해 페이징 쿠키를 사용하여 전체 검색 결과 집합이나 대형 데이터 집합을 위한 FetchXML 결과 페이지를 반환할지 여부를 선택할 수 있습니다. FetchXML에서 페이징 쿠키 사용에 대한 자세한 내용은 FetchXML을 사용하여 대형 결과 집합 페이징을 참조하십시오.

코드에서 엔터티 검색 이름을 사용하여 데이터를 반환하고 FetchXML 정의가 아니므로 Unified Service Desk에서 전체 엔터티 이름을 변경하지 않고 엔터티 검색의 기본 FetchXML 쿼리 정의를 업데이트하면 사용자 지정 컨트롤 코드를 업데이트하고 다시 컴파일하고 클라이언트 컴퓨터에 다시 배포할 필요가 없습니다.

EntitySearchRequest 메시지를 사용하여 요청을 작성한 다음 요청을 매개 변수로 EntitySearchService.GetEntitySearchResults 메서드에 전달하여 응답을 받습니다(EntitySearchResponse).

이 항목의 내용

EntitySearchRequest 개체 만들기

요청 개체 실행

EntitySearchRequest 개체 만들기

EntitySearchRequest 메시지가 오버로드되고 다음 3가지 생성자를 사용하여 레코드를 반환하려는 방법에 따라 요청 개체를 만들어야 합니다. 다음과 같은 세 가지 생성자 중 하나를 사용하지 않고 요청 개체를 만들 수 없습니다. 요청 개체에서 엔터티 검색 이름을 사용하기 전에 엔터티 검색이 Dynamics 365 인스턴스의 Unified Service Desk에 이미 정의되었는지 확인합니다.

  • 엔터티 검색 이름만 사용하는 요청 개체를 만듭니다. 엔터티 검색 결과 레코드를 모두 반환하려면 이 생성자를 사용합니다.

    EntitySearchRequest mySearchRequest = new EntitySearchRequest(string entitySearchName);
    
  • 반환될 엔터티 검색 이름 및 레코드의 최대 수를 사용하여 요청 개체를 만듭니다. 엔터티 검색 결과로 반환되는 레코드 수를 제한하려면 이 생성자를 사용합니다.

    EntitySearchRequest mySearchRequest = new EntitySearchRequest(string entitySearchName, int maxCount);
    

    0을 지정하면 maxCount 매개 변수는 모든 레코드를 반환합니다.

  • 엔터티 검색 이름, 페이지 수, 페이지 번호 및 페이징 쿠키를 사용하여 요청 개체를 만듭니다. 성능 향상을 위해 페이지에 큰 데이터 집합을 반환하려면 이 생성자를 사용합니다.

    pageCount 매개 변수는 페이지당 반환할 레코드 수를 정의합니다.pageNumber 매개 변수는 데이터를 반환할 결과 집합의 페이지 번호를 정의합니다. 예를 들어, 쿼리가 500개의 레코드를 반환하는 경우 pageCount50으로 반환하여 페이지에 50개 레코드를 반환할 수 있으며, 이는 10개 페이지의 데이터가 있다는 뜻입니다(50개 레코드 * 10개 페이지 = 500). 이제 100~150 레코드를 반환하려는 경우 pageNumber 값을 3으로 지정합니다. 결과 집합의 첫 번째 페이지를 검색하려면 pageCookieempty로 지정해야 합니다.

    EntitySearchRequest mySearchRequest = new EntitySearchRequest(string entitySearchName, int pageCount, int pageNumber, string pageCookie);
    

    참고

    이 생성자를 사용하여 페이지에서 결과를 검색하는 요청 개체를 실행하면 응답 개체의 EntitySearchResponse.HasMoreRecords 속성은 더 많은 레코드(값=1)가 있음을 나타냅니다. 또한 EntitySearchResponse.PageCookie 속성의 값은 현재 결과에서 반환된 페이징 쿠키로 설정됩니다.

요청 개체 실행

EntitySearchService. GetEntitySearchResults 메서드를 실행하여 이전 섹션에서 설명한 대로 만든 요청 개체를 실행합니다. 이 메서드는 EntitySearchRequest 개체를 실행하고 엔터티 검색 결과가 있는 EntitySearchResponse 개체를 반환합니다.

다음 코드 예제에서는 기존 엔터티 검색 결과 페이지를 검색하여 다시 사용하는 방법을 보여줍니다.

// Define parameters for the entity search request object.
string entitySearchName = "Sample Entity Search"; // Name of the entity search record defined in Unified Service Desk
int pageCount = 10; // Retrieve 10 records per page.
int pageNumber = 0;
string pageCookie = String.Empty; // Retrieve the first page of the result set.

var entityService = AifServiceContainer.Instance.GetService<IEntitySearchService>();

// Create a request object.
EntitySearchRequest entitySearchRequest = new EntitySearchRequest(searchName, pageCount, pageNumber, pageCookie);

bool hasMoreRecords = true;

while (hasMoreRecords)
{
   entityService.GetEntitySearchResults(entitySearchRequest, (entitySearchResponse) =>
   {
      foreach (Entity e in entitySearchResponse.Entities)
      {
         Console.WriteLine("Entity with id:\"{0}\" retrieved", e.Id);
      }
      if (entitySearchResponse.HasMoreRecords)
      {
         pageNumber++;
         pageCookie = entitySearchResponse.PageCookie;
         entitySearchRequest = new EntitySearchRequest(searchName, pageCount, pageNumber, pageCookie);
      }
      else
      {
         hasMoreRecords = false;
      }
   });
}

참고 항목

Unified Service Desk에서 엔터티 검색을 사용하여 데이터 검색
DoSearch

Unified Service Desk 2.0

© 2017 Microsoft. All rights reserved. 저작권 정보