Récupérer les données du catalogue dans Power Platform
Pour récupérer des données sur les catalogues de votre client, vous devez déterminer quels environnements ont des catalogues installés. Ensuite, vous pouvez récupérer des données de cet environnement sur le catalogue en interrogeant les tables ou l’API conçues pour fournir ces informations.
La plupart des clients n’installent qu’un seul catalogue, mais il est possible d’installer un catalogue sur plusieurs environnements du client.
Rechercher des environnements avec des catalogues dans votre client
Utilisez la commande pac admin list pour afficher les environnements avec des catalogues dans votre client.
Note
Cette commande nécessite un profil d’authentification Administrateur.
Lorsque vous utilisez cette commande, vous devez utiliser le paramètre suivant --application
avec la valeur 83a35943-cb41-4266-b7d2-81d60f383695
. Cette valeur correspond à l’ID de l’application associée au catalogue.
PS C:\Users\you> pac admin list --application 83a35943-cb41-4266-b7d2-81d60f383695
Connected as you@yourorg.onmicrosoft.com
Listing all environments from your tenant...
Active Environment Environment ID Environment Url Type Organization ID
* Your Org b16bdb7a-e023-4158-a839-4f8831ed2432 https://yourorg.crm.dynamics.com/ Production e20be4c1-02ce-4e81-93c6-6e95ff053943
Tables de catalogue
Lorsque vous installez l’application du gestionnaire de catalogue Power Platform dans un environnement de votre client, les tables répertoriées dans la Référence de table/d’entité Catalogue dans Power Platform sont ajoutées à cet environnement uniquement.
Certaines des tables les plus importantes que vous pouvez utiliser se trouvent dans le tableau suivant :
Table | Description |
---|---|
Demande d’approbation (mspcat_certificationrequest) | Contient les enregistrements d’approbation utilisés pour traiter les envois nouveaux ou mis à jour dans le système de catalogue. |
Éditeur de catalogue (mspcat_publisher) | Entité de l’éditeur pour la détention des données de l’éditeur TPS. |
Article de catalogue (mspcat_applications) | Entrée qui apparaît dans le catalogue |
Package (mspcat_packages) | Actifs de déploiement d’un article du catalogue. |
Historique des installations (mspcat_InstallHistory) | Contient l’enregistrement des installations et leur statut |
Activité d’installation (mspcat_InstallActivity) | ID d’activité Historique d’installation |
Afficher les informations du catalogue
Il y a deux Dataverse messages que vous pouvez utiliser pour obtenir des informations sur le catalogue.
mspcat_GetPowerCatalogInformation
Ce message se veut rapide et fournit les droits d’accès minimaux et les données descriptives pour le catalogue.mspcat_GetPowerCatalogDetails
Utilisez le contenu de ce message pour remplir le document de soumission et définir les étiquettes pour ce qu’un élément de catalogue et un éditeur doivent être appelés pour ce catalogue.
mspcat_GetPowerCatalogInformation
Le mspcat_GetPowerCatalogInformation
message a un seul permissionsonly
paramètre booléen et renvoie les informations suivantes définies par le mspcat_GetPowerCatalogInformationResponse
type complexe :
Nom | Type | Description |
---|---|---|
SolutionVersion |
chaine | Version de la solution de catalogue installée |
CatalogDescription |
chaine | Décrit l’objectif de ce catalogue |
CanRead |
bool | L’utilisateur peut-il lire les éléments du catalogue ? |
CatalogName |
chaine | Nom du catalogue installé sur cet environnement |
ImageLink |
chaine | Si cette valeur est définie, il s’agit de l’image du catalogue |
CanSubmit |
bool | L’utilisateur peut-il envoyer des articles dans le catalogue ? |
Si le paramètre booléen permissionsonly
est défini sur true, les valeurs CatalogDescription
, CatalogName
et ImageLink
ne sont pas renvoyées. Les valeurs SolutionVersion
, CanRead
et CanSubmit
sont toujours renvoyées.
La méthode statique suivante GetPowerCatalogInformationExample
récupère les données à l’aide des classes mspcat_GetPowerCatalogInformationRequest
et mspcat_GetPowerCatalogInformationResponse
générées pour le message mspcat_GetPowerCatalogInformation
par la commande pac modelbuilder build.
/// <summary>
/// Returns data about the catalog for an environment
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance.</param>
/// <param name="permissionsonly">Whether to only return information about permissions.</param>
static void GetPowerCatalogInformationExample(IOrganizationService service, bool permissionsonly = false)
{
var request = new mspcat_GetPowerCatalogInformationRequest();
if (permissionsonly) {
request.permissionsonly = true;
}
var response = (mspcat_GetPowerCatalogInformationResponse)service.Execute(request);
Console.WriteLine($"SolutionVersion: {response.SolutionVersion}");
Console.WriteLine($"CatalogDescription: {response.CatalogDescription}");
Console.WriteLine($"CanRead: {response.CanRead}");
Console.WriteLine($"CatalogName: {response.CatalogName}");
Console.WriteLine($"ImageLink: {response.ImageLink}");
Console.WriteLine($"CanSubmit: {response.CanSubmit}");
}
Sortie
Avec permissionsonly
égal à false.
SolutionVersion: 1.1.24.500
CatalogDescription: Catalog in Power Platform applications created by your company.
CanRead: True
CatalogName: Default Catalog Name
ImageLink:
CanSubmit: True
Générer des classes à liaison anticipée pour le SDK pour .NET
Utiliser le SDK pour .NET Dataverse
mspcat_GetPowerCatalogDetails
Utilisez les informations renvoyées par mspcat_GetPowerCatalogDetails
pour remplir le document de soumission et définir les étiquettes pour ce pour quoi un élément de catalogue et un éditeur devraient être appelés pour ce catalogue.
Cette fonction renvoie un objet avec une propriété de chaîne unique CatalogDetails
qui contient une chaîne encodée. Lorsqu’elle est décodée, la chaîne contient des données JSON avec les propriétés suivantes :
Nom | Type | Description |
---|---|---|
catalogId |
chaine | L’ID unique du catalogue |
isSuccess |
chaine | Réservé exclusivement à un usage interne. |
sourceOptions |
Tableau d’options | Les options de la sélection globale mspcat_certificationrequest_requestsource . |
categoryOptions |
Tableau d’options | Les options de la sélection globale mspcat_catalogbusinesscategory . |
publisherLocalizedDisplayName |
chaine | Nom localisé de l’éditeur du catalogue. |
catalogItemLocalizedDisplayName |
chaine | Nom localisé utilisé pour faire référence aux éléments du catalogue. |
La méthode statique suivante GetPowerCatalogDetailsExample
récupère les données à l’aide des classes mspcat_GetPowerCatalogDetailsRequest
et mspcat_GetPowerCatalogDetailsResponse
générées pour le message mspcat_GetPowerCatalogDetails
par la commande pac modelbuilder build.
/// <summary>
/// Outputs details of the catalog in Power Platform.
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance.</param>
static void GetPowerCatalogDetailsExample(IOrganizationService service) {
var request = new mspcat_GetPowerCatalogDetailsRequest();
var response = (mspcat_GetPowerCatalogDetailsResponse)service.Execute(request);
JsonDocument catalogDetails = JsonDocument.Parse(response.CatalogDetails);
string catalogId = catalogDetails.RootElement.GetProperty("catalogId").GetString();
bool isSuccess = catalogDetails.RootElement.GetProperty("isSuccess").GetBoolean();
JsonElement sourceOptions = catalogDetails.RootElement.GetProperty("sourceOptions");
JsonElement categoryOptions = catalogDetails.RootElement.GetProperty("categoryOptions");
string publisherLocalizedDisplayName = catalogDetails.RootElement.GetProperty("publisherLocalizedDisplayName").GetString();
string catalogItemLocalizedDisplayName = catalogDetails.RootElement.GetProperty("catalogItemLocalizedDisplayName").GetString();
Console.WriteLine($"catalogId: {catalogId}");
Console.WriteLine($"isSuccess: {isSuccess}");
Console.WriteLine("sourceOptions:");
foreach (JsonElement element in sourceOptions.EnumerateArray())
{
int id = element.GetProperty("id").GetInt32();
string label = element.GetProperty("userLocalziedLabel").GetString();
Console.WriteLine($" {id} {label}");
}
Console.WriteLine("categoryOptions:");
foreach (JsonElement element in categoryOptions.EnumerateArray())
{
int id = element.GetProperty("id").GetInt32();
string label = element.GetProperty("userLocalziedLabel").GetString();
Console.WriteLine($" {id} {label}");
}
Console.WriteLine($"publisherLocalizedDisplayName: {publisherLocalizedDisplayName}");
Console.WriteLine($"catalogItemLocalizedDisplayName: {catalogItemLocalizedDisplayName}");
}
Sortie
La méthode statique GetPowerCatalogDetailsExample
écrit quelque chose comme ceci dans la console :
catalogId: 883278f5-07af-45eb-a0bc-3fea67caa544
isSuccess: True
sourceOptions:
526430000 Other
526430001 Power Automate Maker Portal
526430002 Power Platform Maker Portal
526430003 Power Virtual Agents Maker Portal
526430004 Power Platform Admin API
526430005 PAC CLI
526430006 PAC Build Task
526430007 Pipelines in Power Platform
categoryOptions:
526430000 Customer Service
526430001 Project Management
526430002 Calendar Management & Scheduling
526430003 Email Management
526430004 Files & Documentation
526430005 Notification & Reminders
526430006 Analytics
526430007 Collaboration
526430008 Commerce
526430009 Finance
526430010 Compliance & Legal
526430011 Sales
526430012 IT Tools
526430013 Marketing
526430014 Operations & Supply Chain
526430015 Internet of Things
526430016 AI Machine Learning
526430017 Geolocation
526430018 Human Resources
publisherLocalizedDisplayName: Catalog Publisher
catalogItemLocalizedDisplayName: Catalog Item
Générer des classes à liaison anticipée pour le SDK pour .NET
Utiliser le SDK pour .NET Dataverse
Afficher les éléments du catalogue
Vous pouvez découvrir les articles du catalogue à l’aide de PAC CLI ou en interrogeant la table Élément du catalogue (mspcat_applications).
Utilisation de PAC CLI
Utilisez la commande pac catalog list pour afficher les éléments du catalogue.
pac catalog list
Connected to... TestCatalog
Connected as user@domain
Listing all published catalog items from the current Dataverse Organization...
Catalog Item Name Publisher Name Catalog Item Id Revision Id Version Status
Contoso Conference Custom Connector Catalog Conferences Team ContosoConferencesCustomConnector 4e882dd6-74f3-ed11-8849-000d3a0a286b 1.0.0.1 Published
Contoso Themed Components ContosoPublisher ContosoThemedComponents efbc469d-f1b2-ed11-83fd-000d3a0a2d9d 1.0.0.1 Published
Vous pouvez également utiliser ces paramètres pour filtrer les enregistrements renvoyés :
paramètre | alias | description |
---|---|---|
--catalog-item-id |
-cid |
ID de l’élément de catalogue à rechercher. Lorsque l’ID d’élément de catalogue est utilisé, toutes les --catalog-item-name valeurs de paramètre sont ignorées. |
--catalog-item-name |
-n |
Nom de l’élément Catalog à rechercher. |
--include-active |
-ia |
Inclure les éléments actifs. |
Utilisez le paramètre --json
pour renvoyer des données JSON.
Utilisez le paramètre --environment
(-env
) pour interroger un catalogue dans un autre environnement.
Interroger les tables Dataverse
Les informations sur les éléments du catalogue se trouvent dans la table Élément de catalogue (mspcat_applications), ce qui vous permet d’en récupérer les données comme vous le feriez pour n’importe quelle Dataverse table.
La méthode statique RetrieveCatalogItems
suivante récupère et imprime une table de données à partir des tables Élément du catalogue (mspcat_applications) et Package (mspcat_packages) concernant les éléments du catalogue. Cette fonction dépend du package ConsoleTables NuGet pour afficher la table dans une application console.
/// <summary>
/// Retrieves information about catalog items and writes it to the console
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance.</param>
static void RetrieveCatalogItems(IOrganizationService service)
{
QueryExpression query = new("mspcat_applications")
{
ColumnSet = new ColumnSet(
"mspcat_tpsid",
"mspcat_deploytype",
"mspcat_applicationtype",
"mspcat_businesscategory",
"mspcat_description",
"mspcat_applicationsid",
"mspcat_publisherid",
"mspcat_name",
"statuscode"),
Criteria = new FilterExpression(LogicalOperator.And)
{
Conditions = {
{
new ConditionExpression(
attributeName: "statecode",
conditionOperator: ConditionOperator.Equal,
value: 0)
}
}
}
};
LinkEntity linkToPackages = query.AddLink(
linkToEntityName: "mspcat_packages",
linkFromAttributeName: "mspcat_packageasset",
linkToAttributeName: "mspcat_packagesid",
joinOperator: JoinOperator.Inner);
linkToPackages.Columns = new ColumnSet(
"statecode",
"mspcat_uniquename",
"mspcat_version",
"statuscode");
linkToPackages.EntityAlias = "pkg";
EntityCollection catalogs = service.RetrieveMultiple(query);
var table = new ConsoleTables.ConsoleTable(
"Catalog Item Name",
"Publisher Name",
"Catalog Item ID",
"Revision ID",
"Version",
"Status");
foreach (Entity catalog in catalogs.Entities)
{
string catalogItemName = catalog.GetAttributeValue<string>("mspcat_name");
string publisherName = catalog.FormattedValues["mspcat_publisherid"];
string catalogItemId = catalog.GetAttributeValue<string>("mspcat_tpsid");
Guid revisionId = catalog.GetAttributeValue<Guid>("mspcat_applicationsid");
string version = (string)catalog.GetAttributeValue<AliasedValue>("pkg.mspcat_version").Value;
string status = catalog.FormattedValues["statuscode"];
string[] rowData = {
catalogItemName,
publisherName,
catalogItemId,
revisionId.ToString(),
version,
status
};
table.Rows.Add(rowData);
}
table.Write();
}
La sortie de cet exemple pourrait ressembler à ceci :
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
| Catalog Item Name | Publisher Name | Catalog Item ID | Revision ID | Version | Status |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
| Contoso Conference Custom Connector| Catalog Conferences Team| ContosoConferencesCustomConnector | 4e882dd6-74f3-ed11-8849-000d3a0a286b | 1.0.0.1 | Published |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
| Contoso Themed Components | ContosoPublisher | ContosoThemedComponents | efbc469d-f1b2-ed11-83fd-000d3a0a2d9d | 1.0.0.1 | Published |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Utiliser le SDK pour .NET Dataverse
Interroger les données à l’aide de QueryExpression