Partager via


Réutiliser la définition de recherche d'entité dans votre code personnalisé

 

Date de publication : novembre 2016

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2013, Dynamics CRM 2015, Dynamics CRM 2016

La recherche d'entité dans Unified Service Desk est exposée comme un service pour les développeurs afin qu'ils puissent utiliser par programme une définition de recherche d'entité existante dans son code personnalisé dans le cadre de la recherche des données Microsoft Dynamics 365. Les recherches d'entités dans Unified Service Desk utilisent FetchXML pour interroger les services Web Dynamics 365 pour renvoyer des données. Pour plus d’informations sur la définition des recherches d'entités, voir Rechercher des données à l'aide de recherches d'entité dans le Centre de services unifié.

Si vous configurez une recherche d'entité, vous pouvez choisir de renvoyer un ensemble entier de résultats de recherche ou mettre en page les résultats FetchXML en utilisant un cookie de mise en page pour obtenir de meilleures performances. Pour plus d'informations sur l'utilisation d'un cookie de mise en page avec FetchXML, voir Mettre en page d’importants ensembles de résultats avec FetchXML.

Comme vous utilisez un nom de recherche d'entité dans votre code pour retourner des données et non la définition FetchXML, la mise à jour de la définition de requête FetchXML sous-jacente pour la recherche d'entité dans Unified Service Desk sans modifier le nom de la recherche d'entité, garantit que vous ne devez pas mettre à jour votre code de contrôle personnalisé, ne pas le recompiler ni le redistribuer sur les ordinateurs clients.

Utilisez le nouveau message EntitySearchRequest pour créer une demande, puis passez la demande comme paramètre à la méthode EntitySearchService.GetEntitySearchResults pour obtenir la réponse (EntitySearchResponse).

Contenu de la rubrique

Créer un objet EntitySearchRequest

Exécuter l'objet de la demande

Créer un objet EntitySearchRequest

Le message EntitySearchRequest est surchargé, et vous devez utiliser un des trois constructeurs suivants pour créer un objet de demande en fonction de la manière dont les enregistrements doivent être retournés. La création d'un objet de demande sans utiliser un de ces trois constructeurs n'est pas prise en charge. Avant d'utiliser un nom de recherche d'entité dans l'objet de demande, vérifiez que la recherche de l'entité est déjà définie dans Unified Service Desk sur votre instance Dynamics 365.

  • Créez un objet de demande avec seulement le nom de recherche de l'entité. Utilisez ce constructeur pour retourner tous les enregistrements suite à la recherche de l'entité.

    EntitySearchRequest mySearchRequest = new EntitySearchRequest(string entitySearchName);
    
  • Créez un objet de demande avec le nom de recherche d'entité et le nombre maximum d'enregistrements à retourner. Utilisez ce constructeur pour limiter le nombre d'enregistrements retournés suite à la recherche de l'entité.

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

    Conseil

    Spécifiez 0 pour que le paramètre maxCount renvoie tous les enregistrements.

  • Créez un objet de demande avec le nom de recherche d'entité, le nombre de pages, le numéro de la page et le cookie de pagination. Utilisez ce constructeur pour retourner de grands ensembles de données sous forme de pages pour obtenir de meilleures performances.

    Le paramètre pageCount définit le nombre d'enregistrements à retourner par page. Le paramètre pageNumber définit le nombre de pages de l'ensemble de résultats pour retourner des données. Par exemple, si votre requête retourne 500 enregistrements, vous pouvez spécifier pageCount comme 50 pour retourner 50 enregistrements dans une page, qui implique que vous aurez 10 pages de données (50 enregistrements * 10 pages = 500). Désormais, si vous souhaitez retourner les enregistrements 100-150, spécifiez la valeur pageNumber comme 3. Vous devez spécifier pageCookie et empty pour récupérer la première page de l'ensemble des résultats.

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

    Notes

    Lorsque vous exécutez l'objet de demande avec ce constructeur pour extraire les résultats de pages, la propriété EntitySearchResponse.HasMoreRecords de l'objet de réponse indique s'il y a plus d'enregistrements (valeur=1). En outre, la valeur de la propriété EntitySearchResponse.PageCookie est définie dans le cookie de pagination renvoyée par les résultats actuels.

Exécuter l'objet de la demande

Utilisez la méthode EntitySearchService. GetEntitySearchResults pour exécuter l'objet de demande créé comme décrit à la section précédente. Cette méthode exécute l'objet EntitySearchRequest, puis renvoie un objet EntitySearchResponse avec les résultats de la recherche d'entité.

L'exemple de code suivant illustre comment vous pouvez réutiliser une recherche d'entité existante pour extraire les résultats de pages.

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

Voir aussi

Rechercher des données à l'aide de recherches d'entité dans le Centre de services unifié
DoSearch

Unified Service Desk 2.0

© 2017 Microsoft. Tous droits réservés. Copyright