Compartir a través de


Definir transiciones de modelo de estado personalizadas

Puede especificar transiciones de estado personalizadas para la Incident tabla (Case) o tablas personalizadas. La propiedad EntityMetadata.IsStateModelAware es true para tablas que admiten transiciones de modelo de estado.

Nota:

Aunque la Incident tabla (Case) no está incluida en un entorno predeterminado de Microsoft Dataverse, la usa Dynamics 365 for Customer Service y se define en Common Data Model.

Las transiciones de estado personalizadas son un nivel opcional de filtración para definir qué transiciones de estado son válidas para un registro en un estado determinado. En particular, cuando dispone de un amplio número de combinaciones para estados válidos y valores de estado, definir una lista limitada de opciones puede facilitar a los usuarios la selección del estado correcto de un registro.

¿Cuál es el modelo de estado?

Las tablas que admiten el concepto de estado tienen un par de columnas que capturan datos del modelo de estado, como se muestra en la tabla siguiente.

Nombre lógico Nombre de pantalla Description
statecode Estado Representa el estado del registro. Para las tablas personalizadas, este valor es Activo o Inactivo. No puede agregar más opciones de estado, pero puede cambiar las etiquetas de elección.
statuscode Razón para el estado Representa un estado que está vinculado a un estado específico. Cada estado debe tener al menos un estado posible. Puede agregar más opciones de estado y cambiar las etiquetas de las opciones existentes.

Las definiciones de tabla de las columnas definen qué valores de estado son válidos para un estado determinado. Por ejemplo, para la tabla Incident (Case), las opciones predeterminadas de estado y estatus se muestran en la tabla siguiente.

Estado Estado
Label: Activo
Value: 0
 
Label: En curso
Value: 1
State: 0
Label: Activo
Value: 0
 
Label: En espera
Value: 2
State: 0
Label: Activo
Value: 0
 
Label: Esperando detalles
Value: 3
State: 0
Label: Activo
Value: 0
 
Etiqueta: Investigando
Value: 4
State: 0
Label: Resuelto
Value: 1
 
Label: Problema resuelto
Value: 5
State: 1
Label: Resuelto
Value: 1
 
Etiqueta: Información proporcionada
Value: 1000
State: 1
Etiqueta: Cancelado
Value: 2
 
Label: Cancelado
Value: 6
State: 2
Etiqueta: Cancelado
Value: 2
 
Label: Combinado
Value: 2000
State: 2

Estos datos se almacenan en la clase StatusOptionMetadata, que representa las opciones de la clase StatusAttributeMetadata.

Para ver las definiciones de tabla de la organización, instale la solución Explorador de metadatos descrita en Examinar definiciones de tabla para su organización. También puede examinar la documentación de referencia de la tabla en la referencia de tabla o entidad.

Detectar transiciones de estado válidas

Puede modificar la statuscode columna para definir qué otras opciones de estado representan transiciones válidas desde el estado actual. Para obtener instrucciones, consulte la definición de transiciones de motivo de estado para las tablas Case o personalizadas.

Cuando se aplican transiciones de estado personalizadas a una tabla, la propiedad EntityMetadata.EnforceStateTransitions es true. Además, cada StatusOptionMetadata de la colección StatusAttributeMetadataOptions tiene una propiedad TransitionData. Esta propiedad contiene un valor de cadena que representa un documento XML. Este documento contiene la definición de las transiciones permitidas. Por ejemplo, la opción de columna predeterminada Incident (Caso) StatusCode podría tener el siguiente TransitionData valor.

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

Cuando estos datos están presentes y la propiedad table EnforceStateTransitions es true, cualquier instancia de incidente solo se puede cambiar a uno de los valores permitidos statuscode . Puede usar IOrganizationService.Update para establecer en statuscodeOptionSetValue cualquiera de los valores permitidos que no representan un cambio en el estado. Para cambiar el estado, use SetStateRequest ajustando los valores de las propiedades State y Status o la propiedad CloseIncidentRequest del ajuste Status en uno de los valores permitidos para el valor de statuscode actual. El intentar establecer un valor no válido genera un error.

Consulte también

Ejemplo: Recuperación de transiciones de estado válidas
Ejemplo: Validar el estado del registro y establecer el estado del registro
Recuperar y detectar cambios en definiciones de datos
Definir transiciones de motivo de estado