Méthodes d’action et de fonction dataverse pour les pages génératives

Utilisez les méthodes d’action et de fonction de l’objet dataApi pour appeler des API personnalisées Dataverse liées à la page.

Remarque

Les méthodes d’action et de fonction sont facultatives dans le contrat partagé dataApi . Certains hôtes ne les implémentent pas. Vérifiez donc qu’une méthode existe avant de l’appeler. Une méthode présente ne signifie pas que l’opération est liée à la page, activée pour le runtime ou autorisée pour l’utilisateur actuel. Contrairement aux méthodes de connecteur, ces méthodes ne lèvent jamais pour les échecs attendus ; ils résolvent avec ok: false et un code d’erreur à la place. Gérez explicitement les propriétés et error les ok résultats.

listBoundActions retourne les actions et fonctions que la configuration actuelle du runtime autorise pour la page lorsque cette découverte est activée ; il n’est pas garanti que l’utilisateur actuel conserve les privilèges Dataverse nécessaires pour exécuter chaque opération répertoriée.

Méthode Description
executeAction Appelle une API personnalisée Dataverse liée à la page en tant qu’action.
executeFunction Appelle une API personnalisée Dataverse liée à la page en tant que fonction.
listBoundActions Répertorie les API personnalisées Dataverse (actions et fonctions) liées à la page.

méthode executeAction

Appelle une API personnalisée Dataverse liée à la page en tant qu’action (message susceptible de modifier les données).

Parameters

Définissez une valeur pour ce paramètre obligatoire.

Name Catégorie Description
request DataverseActionRequest Action à appeler et à ses paramètres d’entrée.

DataverseActionRequest

Name Catégorie Description
name string Nom unique de l’API personnalisée, préfixée par l’éditeur, par new_ApproveExpenseReportexemple .
parameters object (Facultatif) Paramètres d’entrée requis par l’action, clé par nom unique de paramètre.
boundTo object (Facultatif) Référence de ligne cible (entityName et id) pour les actions liées à l’entité. Omettez les actions globales (non liées).

Returns

Promesse contenant un DataverseActionResult. Cette méthode ne lève jamais pour les échecs attendus (par exemple, une erreur d’autorisation 403, un paramètre incorrect 400 ou l’opération qui n’est pas liée ou activée) : vérifiez la propriété à la ok place.

DataverseActionResult

Name Catégorie Description
ok boolean Indique si l’action a réussi.
status number Code d’état HTTP retourné par Dataverse ou 0 lorsqu’aucun état HTTP n’est disponible. Un 0 état peut signifier que le runtime a rejeté l’appel avant de l’envoyer (par exemple, not_enabled, , not_permittednot_bound, wrong_operation_kind, invalid_parameterou invalid_bound_to), la requête a échoué sans réponse HTTP, ou le résultat est inconnu (indeterminate est true). Utilisez error.code et indeterminate dissyez ces cas.
outputs object Paramètres de sortie retournés par l’action, clé par nom unique. Vide pour les actions sans sortie.
indeterminate boolean (Facultatif) true lorsqu’un délai d’expiration ou une autre défaillance post-répartition signifie que le serveur a peut-être validé l’action ; ne réessayez pas automatiquement.
error object (Facultatif) Détails de l’erreur quand ok c’est false, y compris un ordinateur lisible code et un désinfecté message. codeest l’un des not_enabled, wrong_operation_kindinvalid_parameternetworkinvalid_bound_tonot_permittedindeterminatenot_boundou , ou le code d’état HTTP de l’action en tant que chaîne (par exemple"404") lorsque Dataverse a retourné une réponse d’erreur ou "0" quand aucun état HTTP n’a été disponible. not_permitted signifie que l’action ou la fonction ne se trouve pas dans la liste verte de l’environnement pour les pages génératives . Elle n’indique pas si l’utilisateur actuel contient les privilèges Dataverse pour l’exécuter. Un échec de privilège s’affiche généralement comme status: 403 avec le code "403"d’erreur ; si l’hôte ne peut pas déterminer l’état HTTP, il retourne status: 0 à la place.

exemple executeAction

if (!dataApi.executeAction) {
  throw new Error("executeAction isn't available on this page.");
}

const result = await dataApi.executeAction({
  name: "new_ApproveExpenseReport",
  parameters: { comments: "Approved by manager" },
  boundTo: { entityName: "new_expensereport", id: "30dc51e9-947d-47d8-ad48-4fc48fba4a95" },
});

if (result.ok) {
  console.log(result.outputs);
}
else {
  console.log(result.error?.code);
}

méthode executeFunction

Appelle une API personnalisée Dataverse liée à la page en tant que fonction (message en lecture seule avec sémantique GET).

Parameters

Définissez une valeur pour ce paramètre obligatoire.

Name Catégorie Description
request DataverseFunctionRequest Fonction à appeler et à ses paramètres d’entrée.

DataverseFunctionRequest

Name Catégorie Description
name string Nom unique de l’API personnalisée, préfixée par l’éditeur, par new_GetExchangeRateexemple .
parameters object (Facultatif) Paramètres d’entrée requis par la fonction, clé par nom unique de paramètre.
boundTo object (Facultatif) Référence de ligne cible (entityName et id) pour les fonctions liées à l’entité. Omettez les fonctions globales (non liées).

Returns

Promesse contenant un DataverseActionResult. Comme avec executeAction, cette méthode ne lève jamais pour les échecs attendus : vérifiez la propriété à la ok place.

exemple executeFunction

if (!dataApi.executeFunction) {
  throw new Error("executeFunction isn't available on this page.");
}

const result = await dataApi.executeFunction({
  name: "new_GetExchangeRate",
  parameters: { currencyCode: "EUR" },
});

if (result.ok) {
  console.log(result.outputs);
}

méthode listBoundActions

Répertorie les API personnalisées Dataverse (actions et fonctions) qu’un créateur lié à la page.

Parameters

None.

Returns

Promesse contenant un tableau d’entrées DataverseActionInfo. Retourne un tableau vide lorsque la découverte n’est pas activée pour le runtime.

DataverseActionInfo

DataverseActionInfo reflète ce que le créateur de la page est lié à cette action ou fonction, et non pas les métadonnées Dataverse actives. Ne l’utilisez pas pour générer des formulaires d’entrée ou valider des sorties : vérifiez les exigences des paramètres et les formes de sortie par rapport à la définition d’API personnalisée Dataverse réelle.

Name Catégorie Description
name string Nom unique (logique) de l’API personnalisée Dataverse.
displayName string Nom complet d’une API personnalisée.
isFunction boolean true si l’API personnalisée Dataverse est une fonction (en lecture seule) ; false s’il s’agit d’une action, y compris lorsque cette valeur n’a pas été enregistrée au moment de la liaison.
bindingType string Type de liaison : "Global" ou "Entity".
boundEntityLogicalName string (Facultatif) La table à laquelle l’action ou la fonction est liée, quand bindingType est "Entity".
parameters Object[] Les paramètres d’entrée enregistrés lorsque l’API personnalisée Dataverse était liée à la page, chacune avec un name et declaredKind. typeest toujours et optional est toujours false"unknown" — ni ne reflète les métadonnées réelles de l’API personnalisée Dataverse.
outputs Object[] Toujours un tableau vide. La découverte de liaison n’enregistre pas les paramètres de sortie.

listBoundActions Exemple

const actions = await dataApi.listBoundActions?.();