Compartilhar via


Reutilizar definição de Pesquisa de Entidade em seu código personalizado

 

Publicado: novembro de 2016

Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2013, Dynamics CRM 2015, Dynamics CRM 2016

A pesquisa de entidades no Unified Service Desk é exposta como um serviço para desenvolvedores, para que eles possam usar de forma programática uma definição de pesquisa de entidade existente em seu código de personalização para pesquisar dados do Microsoft Dynamics 365. As pesquisas de entidade no Unified Service Desk usam FetchXML para consultar os serviços Web do Dynamics 365 para retornar dados. Consulte Consultar dados usando pesquisas de entidade no Unified Service Desk para obter mais informações sobre as pesquisas de entidade.

Ao configurar uma pesquisa de entidade, você pode escolher se quer devolver um resultado de pesquisa inteiro definido ou página dos resultados do FetchXML para grupos de dados grandes ao usar um cookie de paginação para desempenho mais rápido. Para obter mais informações sobre como usar o cookie de paginação com FetchXML, consulteDefinições de resultado de página grande com FetchXML.

Como você usa um nome de entidade de pesquisa em seu código para devolver dados e não é uma definição FetchXML, a atualização da definição de consulta FetchXML subjacente da pesquisa de entidade em Unified Service Desk sem alteração do nome de pesquisa da entidade garante que você não precisa atualizar seu código de controle personalizado, e redistribuí-lo aos computadores clientes.

Use a nova mensagem EntitySearchRequest para criar uma solicitação, e depois passá-la como parâmetro ao EntitySearchService. O método GetEntitySearchResults para garantir resposta (EntitySearchResponse).

Neste tópico

Criar um objeto EntitySearchRequest

Execute o objeto de solicitação

Criar um objeto EntitySearchRequest

A mensagem EntitySearchRequest é sobrecarregada, e você deve usar um destes três construtores para criar um objeto solicitação dependendo de como você deseja que os registros sejam retornados. Não tem suporte à criação de um objeto de solicitação sem usar um destes três construtores. Antes de usar um nome de entidade de pesquisa no objeto da solicitação, assegure-se de que a pesquisa de entidade já esteja definida no Unified Service Desk em sua instância do Dynamics 365.

  • Criar um objeto de solicitação usando apenas o nome de pesquisa da entidade. Use este construtor para devolver todos os registros como um resultado da pesquisa da entidade.

    EntitySearchRequest mySearchRequest = new EntitySearchRequest(string entitySearchName);
    
  • Criar um objeto de solicitação usando o nome de pesquisa da entidade e a contagem máxima dos registros que serão devolvidos. Use este construtor para limitar o número de registros devolvidos como resultado de uma pesquisa de entidade.

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

    Dica

    Especifique 0 para o parâmetro maxCount para devolver todos os registros.

  • Criar um objeto de solicitação usando o nome de pesquisa da entidade, contagem de página, número de página e cookie de paginação. Use este construtor para retornar grupos de dados grandes em páginas para desempenho mais rápido.

    O parâmetro pageCount define o número de registros a serem retornados por página. O parâmetro pageNumber define o número de página do conjunto de resultados para retornar os dados. Por exemplo, se a consulta retorna 500 registros, você pode especificar pageCount como 50 para devolver 50 registros em uma página, o que implica que você terá 10 páginas de dados (50 registros * 10 páginas = 500). Agora, se você deseja devolver os registros 100-150, especifique o valor pageNumber como 3. Você deve especificar pageCookie como empty para recuperar a primeira página do conjunto de resultado.

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

    Dica

    Quando você executa o objeto de solicitação usando esse construtor para recuperar resultados nas páginas, a propriedade de EntitySearchResponse.HasMoreRecords da resposta do objeto indica que há mais registros (valor=1). Além disso, o valor da propriedade EntitySearchResponse.PageCookie é definida para o cookie de paginação devolvido dos resultados atuais.

Execute o objeto de solicitação

Use o método EntitySearchService. GetEntitySearchResults para executar o objeto de solicitação criado como descrito na seção anterior. Este método executa o objeto EntitySearchRequest, e devolve o objeto EntitySearchResponse com os resultados da pesquisa de entidade.

O exemplo de código a seguir demonstra como você pode reusar uma pesquisa de entidade existente para recuperar resultados em 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;
      }
   });
}

Confira Também

Consultar dados usando pesquisas de entidade no Unified Service Desk
FazerPesquisa

Unified Service Desk 2.0

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais