Comparteix a través de


Definir transiciones de modelo de estado personalizadas

Puede especificar transiciones de estado personalizadas para la tabla Incident (Casos) o tablas personalizadas. EntityMetadata.IsStateModelAware property es true para tablas que soportan transiciones de modelo de estado.

Nota

Aunque la tabla Incident (Casos) no se incluye en un entorno de Microsoft Dataverse predeterminado, la utiliza Dynamics 365 for Customer Service y se define en el Modelo de datos común

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, tal y como se muestra en la tabla siguiente.

Nombre lógico Nombre Description
statecode Estado Representa el estado del registro. Para las tablas personalizadas, este valor es Activo o Inactivo. No puede agregar más elecciones de estado, pero puede cambiar las etiquetas de elecciones.
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 elecciones adicionales de estado y cambiar las etiquetas de las elecciones existentes.

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

Est. 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: Investigación
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 las tablas de su organización, instale la solución Explorador de metadatos que se describe en Definiciones de tablas de exploración de su organización. También puede examinar la documentación de referencia para las tablas en la Referencia de tabla/entidad.

Detectar transiciones de estado válidas

Puede modificar la columna statuscode para definir qué otras opciones de estado representan transiciones válidas a partir del estado actual. Para obtener instrucciones, consulte el tema del Manual de personalización: Definir las transiciones de razón para el estado de la entidad Caso o de tablas personalizadas

Cuando se apliquen transacciones de estado personalizadas a una tabla, la propiedad EntityMetadata.EnforceStateTransitions es true. Además, cadaStatusOptionMetadata en la colección StatusAttributeMetadata.Options colección tiene una propiedad TransitionData. Esta propiedad contendrá un valor de cadena que representa un documento XML. Este documento contiene la definición de las transiciones permitidas. Por ejemplo, la opción predeterminada de la columna Incident (Casos) StatusCode puede presentar TransitionData value siguiente.

<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 EnforceStateTransitions property de la tabla es true, las instancias de incidentes solamente pueden cambiarse a uno de los statuscode values permitidos. Puede utilizar IOrganizationService.Update para establecer statuscode OptionSetValue en cualquiera de los valores permitidos que no representan un cambio de estado. Para cambiar el estado, use SetStateRequest ajustando los State y Status property values o Status property del ajuste CloseIncidentRequest en uno de los valores permitidos para el valor de statuscode actual. El intento de establecer un valor no válido genera un error.

Consulte también

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

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).