Partager via


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

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

Note

Bien que la Incident table (Case) ne soit pas incluse dans un environnement Microsoft Dataverse par défaut, elle est utilisée par Dynamics 365 for Customer Service et définie dans common Data Model

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 indiqué dans le tableau suivant.

Nom logique Nom complet Descriptif
statecode État 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 choix d’état, mais vous pouvez modifier les étiquettes de choix.
statuscode Motif statut Représente un statut lié à un état spécifique. Chaque état doit avoir au moins un statut possible. Vous pouvez ajouter d’autres choix d’état et modifier les étiquettes des choix existants.

Les définitions de table des colonnes définissent les valeurs d’état valides pour un état donné. Par exemple, pour la table Incident (Case), les options d'état et de statut par défaut sont affichées 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 Parcourir les définitions de table pour votre organisation. Vous pouvez également parcourir la documentation de référence pour la table dans la référence table/entité.

Rechercher les transitions de statut valides

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

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

<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>  

Lorsque ces données sont présentes et que la propriété de table EnforceStateTransitions est true, toute instance d’incident ne peut être modifiée qu’à l’une des valeurs autorisées statuscode . Vous pouvez utiliser IOrganizationService.Update pour définir l’une statuscodeOptionSetValue des valeurs autorisées qui ne représentent pas de 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 des transitions d’état valides
Exemple : Valider l’état de l’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 de l’état