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

 

Publicado: noviembre de 2016

Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2013, Dynamics CRM 2015, Dynamics CRM 2016

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 Dynamics 365. Las búsquedas de entidad en Unified Service Desk utilizan FetchXML para consultar los servicios web de Dynamics 365 para devolver datos. Para obtener más información sobre la definición de búsquedas de entidad, consulte Buscar datos usando búsquedas de entidades en Servicios unificados.

Al configurar una búsqueda de entidad, puede elegir entre devolver un conjunto completo de resultados de búsqueda o paginar los resultados de FetchXML para conjuntos de datos grandes con una cookie de paginación para un rendimiento más rápido. Para obtener más información sobre el uso de la cookie de paginación con FetchXML, vea Paginar conjuntos de resultados grandes con FetchXML.

Puesto que usted usa un nombre de búsqueda de entidad en el código para devolver datos y no su definición FetchXML, actualizar la definición de consulta FetchXML subyacente de la entidad de búsqueda en Unified Service Desk sin cambiar el nombre de búsqueda de entidad garantiza que no tendrá que actualizar el control de código personalizado, recompilarlo y redistribuirlo en los equipos cliente.

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

En este tema

Crear un objeto EntitySearchRequest

Ejecutar el objeto de solicitud

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 Dynamics 365.

  • 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);
    

    Sugerencia

    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 desde los resultados actuales.

Ejecutar el objeto de solicitud

Use el método EntitySearchService. GetEntitySearchResults 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;
      }
   });
}

Ver también

Buscar datos usando búsquedas de entidades en Servicios unificados
DoSearch

Unified Service Desk 2.0

© 2017 Microsoft. Todos los derechos reservados. Copyright