Réutiliser la définition de recherche d’entité dans votre code personnalisé
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 de plateforme Microsoft Dataverse. Les recherches d’entités dans Unified Service Desk utilisent FetchXML pour interroger les services web de plateforme Dataverse pour renvoyer des données. Pour plus d’informations sur la définition des recherches d’entité, voir Rechercher des données à l’aide de recherches d’entité dans Unified Service Desk.
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.EntitySearchResponse} pour obtenir la réponse (EntitySearchResponse).
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 de plateforme Dataverse.
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);
Pourboire
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ètrepageNumber
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écifierpageCount
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 valeurpageNumber
comme 3. Vous devez spécifierpageCookie
etempty
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);
Note
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.EntitySearchResponse}) 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 Unified Service Desk
DoSearch