Définir les transitions de modèles d’état personnalisés
Vous pouvez spécifier les transitions d’état personnalisé de l’entité Incident
(Incident) ou des entités personnalisées. La propriété EntityMetadata.IsStateModelAware a la valeur true
pour les entités prenant en charge les transitions de modèle d’état.
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 entités qui prennent en charge le concept d’état possèdent une paire d’attributs destinées à capturer ces données, comme illustré dans ce tableau.
Nom logique | Nom d’affichage | Description |
---|---|---|
statecode |
Statut | Représente le statut de l’enregistrement. Pour les entités personnalisées, Actif ou Inactif. L’entité Incident (case) utilise Actif, Résolu et Annulé. 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 des options de statut supplémentaires et modifier les étiquettes des options existantes. |
Les métadonnées des attributs définissent les valeurs de statut valides pour un état donné. Par exemple, pour l’entité Incident
(Incident), l’état par défaut et les options de statut sont répertoriés dans le tableau suivant.
État | Statut |
---|---|
Label : ActifValue : 0 |
Label : En coursValue : 1State : 0 |
Label : ActifValue : 0 |
Label : SuspenduValue : 2State : 0 |
Label : ActifValue : 0 |
Label : En attente de détailsValue : 3State : 0 |
Label : ActifValue : 0 |
Étiquette : Recherche en coursValue : 4State : 0 |
Label : RésoluValue : 1 |
Label : Problème résoluValue : 5State : 1 |
Label : RésoluValue : 1 |
Étiquette : Informations fourniesValue : 1000State : 1 |
Étiquette : AnnuléValue : 2 |
Label : AnnuléValue : 6State : 2 |
Étiquette : AnnuléValue : 2 |
Label : Fusionné(e)Value : 2000State : 2 |
Ces données sont stockées dans la classe StatusOptionMetadata, qui représente les options de la classe StatusAttributeMetadata.
Pour afficher les métadonnées d’entité pour votre organisation, installez la solution Navigateur de métadonnées décrite dans l’article Accès aux métadonnées de votre organisation. Vous pouvez également accéder à la documentation de référence pour les entités dans Référence d’entité.
Rechercher les transitions de statut valides
Vous pouvez modifier l’attribut statuscode
pour définir quelles autres options de statut représentent des transitions valides du statut actuel. Pour plus d’instructions, voir la rubrique du Guide de personnalisation : Définir les transitions de raison du statut
Quand les transitions d’état personnalisées sont appliquées à une entité, la propriété EntityMetadata.EnforceStateTransitions est true
. Aussi, chaque StatusOptionMetadata au sein de la collection StatusAttributeMetadata .Options aura une nouvelle 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 l’attribut 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>
Note
Lorsque ces données sont récupérées en code non managé à partir du service web, par exemple lorsque vous utilisez JavaScript, elles sont placées dans une séquence d’échappement et apparaissent comme dans l’exemple ci-après.
<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é EnforceStateTransitions
de l’entité 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
État et statut d’enregistrement
Récupérer et détecter les modifications apportées aux métadonnées