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

&lt;allowedtransitions xmlns="https://schemas.microsoft.com/crm/2009/WebServices"&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="6" /&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="1000" /&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="2000" /&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="5" /&gt;
&lt;/allowedtransitions&gt;

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