Définir les transitions de modèles d’état personnalisés

Vous pouvez spécifier les transitions d’état personnalisé de la table Incident (Incident) ou des tables personnalisées. La propriété EntityMetadata.IsStateModelAware est true pour les tables prenant en charge les transitions de modèle d’état.

Notes

Bien que la table Incident (incident) n’est pas incluse dans un environnement Microsoft Dataverse par défaut, il est utilisé par Dynamics 365 for Customer Service et défini dans le Modèle de données commun

Les transitions d’état personnalisées ont un niveau facultatif de filtrage pour définir les transitions d’état valides pour un enregistrement dans un état donné. Notamment lorsqu’il existe un grand nombre de combinaisons d’états valides et de valeurs de statut, la définition d’une liste limitée d’options peut faciliter le choix du statut correct d’un enregistrement.

Qu’est-ce que le modèle d’état ?

Les tables qui prennent en charge le concept d’état ont une paire de colonnes qui capturent les données du modèle d’état, comme illustré dans le tableau suivant.

Nom logique Nom d’affichage Description
statecode **Statut ** Représente le statut de l’enregistrement. Pour les tables personnalisées, cette valeur est Active ou Inactive. Vous ne pouvez pas ajouter d’autres options d’état, mais vous pouvez modifier les Étiquettes des options.
statuscode Raison du statut Représente un statut lié à un état spécifique. Chaque état doit avoir au moins un statut possible. Vous pouvez ajouter d’autres options de statut et modifier les étiquettes des options existantes.

Les définitions de table des colonnes définissent les valeurs de statut valides pour un état donné. Par exemple, pour la table Incident (Case), l’état par défaut et les options de statut sont répertoriés dans le tableau suivant.

État Statut
Label: Actif
Value : 0
 
Label : En cours
Value : 1
State : 0
Label: Actif
Value : 0
 
Label : Suspendu
Value : 2
State : 0
Label: Actif
Value : 0
 
Label : En attente de détails
Value : 3
State : 0
Label: Actif
Value : 0
 
Étiquette : Recherche en cours
Value : 4
State : 0
Label: Résolu
Value : 1
 
Label: Problème résolu
Value : 5
State : 1
Label: Résolu
Value : 1
 
Étiquette : Informations fournies
Value : 1000
State : 1
Étiquette : Annulé
Value : 2
 
Label : Annulé
Value : 6
State : 2
Étiquette : Annulé
Value : 2
 
Label : Fusionné(e)
Value : 2000
State : 2

Ces données sont stockées dans la classe StatusOptionMetadata, qui représente les options de la classe StatusAttributeMetadata.

Pour afficher les définitions de table pour votre organisation, installez la solution Navigateur de métadonnées décrite dans l’article Accès aux définitions de table de votre organisation. Vous pouvez également accéder à la documentation de référence pour la table dans Référence de table/d’entité.

Rechercher les transitions de statut valides

Vous pouvez modifier la colonne statuscode pour définir quelles autres options de statut représentent des transitions valides du statut actuel. Pour plus d’instructions, voir : Définir les transitions de raison du statut pour les tables Incident ou personnalisées

Quand les transitions d’état personnalisées sont appliquées à une table, la propriété EntityMetadata.EnforceStateTransitions est true. En outre, chaque StatusOptionMetadata dans la collection StatusAttributeMetadata.Options a une propriété TransitionData. Cette propriété contient une valeur de chaîne représentant un document XML. Ce document contient la définition des transitions autorisées. Par exemple, l’option par défaut de la colonne Incident (Incident) StatusCode peut avoir la valeur TransitionData suivante.

<allowedtransitions xmlns="https://schemas.microsoft.com/crm/2009/WebServices">  
<allowedtransition sourcestatusid="1" tostatusid="6" />  
<allowedtransition sourcestatusid="1" tostatusid="1000" />   
<allowedtransition sourcestatusid="1" tostatusid="2000" />  
<allowedtransition sourcestatusid="1" tostatusid="5" />  
</allowedtransitions>  

Quand ces données sont présentes et que la propriété EnforceStateTransitions de la table est true, une instance d’incident ne peut être modifiée qu’en l’une des valeurs statuscode autorisées. Vous pouvez utiliser IOrganizationService.Update pour définir le statuscode OptionSetValue sur l’une des valeurs autorisées qui ne représentent pas un changement d’état. Pour modifier l’état, utilisez SetStateRequest définissant les valeurs des propriétés State et Status autorisées ou le CloseIncidentRequest définissant la propriété Status avec l’une des valeurs autorisées pour la valeur statuscode actuelle. La tentative de définir une valeur non valide déclenche une erreur.

Voir aussi

Exemple : Récupérer les transitions d’état valides
Exemple : valider l’état d’enregistrement et définir l’état de l’enregistrement
Récupérer et détecter les modifications apportées aux définitions de table
Définir les transitions de raison du statut

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).