Compartir a través de


Reutilizar la definición de búsqueda de entidad en el código personalizado

La búsqueda de entidad en Unified Service Desk se muestra como servicio para desarrolladores de forma que puedan usar una definición existente de búsqueda de entidad mediante programación en su código personalizado para buscar en los datos de Microsoft Dataverse. Las búsquedas de entidades en Unified Service Desk utilizan FetchXML para consultar Dataverse servicios web para devolver datos. Para obtener información sobre la definición de búsquedas de entidad, consulte Buscar datos usando búsquedas de entidades en Unified Service Desk.

Cuando configura una búsqueda de entidades, puede elegir si desea devolver un conjunto de resultados de búsqueda completo o paginar los resultados FetchXML para conjuntos de datos grandes mediante el uso de una cookie de paginación para un rendimiento más rápido. Para obtener más información sobre el uso de cookies de paginación con FetchXML, consulte Paginar conjuntos de resultados grandes con FetchXML.

Dado que utiliza un nombre de búsqueda de entidad en su código para devolver datos y no su FetchXML definición, actualizar la definición de consulta FetchXML subyacente de la búsqueda de entidades en Unified Service Desk sin cambiar la búsqueda de entidades El nombre garantiza que no tendrá que actualizar su código de control personalizado, recompilarlo y redistribuirlo en las computadoras cliente.

Use el nuevo mensaje EntitySearchRequest para crear una solicitud y luego pasarla como parámetro al método EntitySearchService.EntitySearchResponse} para obtener la respuesta (EntitySearchResponse).

Crear un objeto EntitySearchRequest

El mensaje EntitySearchRequest está sobrecargado, y debe usar cualquiera de los tres constructores siguientes para crear un objeto de solicitud en función de cómo desee que se devuelvan los registros. No es posible crear un objeto de solicitud sin usar uno de estos tres constructores. Antes de usar un nombre de búsqueda de entidad en el objeto de solicitud, asegúrese de que la búsqueda de entidad ya está definida en Unified Service Desk en la instancia de Dataverse.

  • Cree un objeto de solicitud utilizando solo el nombre de búsqueda de entidad. Use este constructor para devolver todos los registros como resultado de la búsqueda de entidad.

    EntitySearchRequest mySearchRequest = new EntitySearchRequest(string entitySearchName);  
    
  • Cree un objeto de solicitud con el nombre de búsqueda de entidad y el número máximo de registros que se volverán. Use este constructor para limitar el número de registros devueltos como resultado de la búsqueda de entidad.

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

    Propina

    Especifique 0 para el parámetro maxCount para devolver todos los registros.

  • Cree un objeto de solicitud con el nombre de la búsqueda de entidad, el recuento de páginas, el número de página, y la cookie de paginación. Use este constructor para devolver conjuntos de datos grandes en páginas para un rendimiento más rápido.

    El parámetro pageCount define el número de registros para volver por página. El parámetro pageNumber define el número de páginas del conjunto de resultados para devolver los datos. Por ejemplo, si la consulta devuelve 500 registros, puede especificar pageCount como 50 para devolver 50 registros en una página, lo que implica que tendrá 10 páginas de datos (50 registros * 10 páginas = 500). Ahora, si desea devolver los registros 100-150, especifique el valor pageNumber como 3. Debe especificar pageCookie como empty para recuperar la primera página del conjunto de resultados.

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

    Nota

    Cuando se ejecuta el objeto de solicitud con este constructor para recuperar resultados en páginas, la propiedad EntitySearchResponse.HasMoreRecords de objeto de respuesta indica si hay más registros (value=1). Además, el valor de la propiedad EntitySearchResponse.PageCookie se establece en la cookie de paginación devuelta por los resultados actuales.

Ejecutar el objeto de solicitud

Use el método EntitySearchService.EntitySearchResponse}) para ejecutar el objeto de solicitud creado como se describe en la sección anterior. Este método ejecuta el objeto EntitySearchRequest y devuelve un objeto EntitySearchResponse con los resultados de la búsqueda de entidad.

El siguiente código de ejemplo demuestra cómo puede reutilizar una búsqueda de entidad existente para recuperar resultados en páginas.

// 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;  
      }  
   });  
}  

Vea también

Buscar datos usando búsquedas de Unified Service Desk
DoSearch