Definir transiciones de modelo de estado personalizadas
Publicado: enero de 2017
Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Puede especificar transiciones de estado personalizadas para la entidad Incident (Caso) o entidades personalizadas. La propiedad EntityMetadata.IsStateModelAware es true para las entidades que admiten transiciones de modelo de estado.
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.
En este tema
¿Cuál es el modelo de estado?
Detectar transiciones de estado válidas
¿Cuál es el modelo de estado?
Las entidades que admiten el concepto de estado tienen un par de atributos que capturan estos datos, tal y como se muestra en esta tabla.
Nombre lógico |
Nombre para mostrar |
Descripción |
---|---|---|
statecode |
Estado |
Representa el estado del registro. Para las entidades personalizadas este es Activo o Inactivo. La entidad Incident (case) utiliza Activo, Resuelto y Cancelado. No puede agregar más opciones de estado, pero puede cambiar las etiquetas de opciones. |
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 opciones adicionales de estado y cambiar las etiquetas de las opciones existentes. |
Los metadatos de los atributos definen qué valores de estado son válidos para un estado determinado. Por ejemplo, para la entidad Incident (Caso), 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: En espera Value: 2 State: 0 |
|
Label: Esperando detalles Value: 3 State: 0 |
|
Etiqueta: Investigación Value: 4 State: 0 |
|
Label: Resuelto Value: 1 |
Label: Problema resuelto Value: 5 State: 1 |
Etiqueta: Información proporcionada Value: 1000 State: 1 |
|
Etiqueta: cancelado Value: 2 |
Label: Cancelado Value: 6 State: 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 los metadatos de la entidad de su organización, instale la solución Explorador de metadatos que se describe en Examinar los metadatos de la organización. También puede ver los metadatos de una organización no personalizada en una hoja de cálculo de Excel denominada EntityMetadata.xlsx que se incluye en la carpeta de nivel superior de la descarga del SDK.
Detectar transiciones de estado válidas
Puede modificar el atributo 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
Cuando se apliquen transiciones de estado personalizadas a una entidad, la propiedad EntityMetadata.EnforceStateTransitions será true. Además, cada StatusOptionMetadata de la colección StatusAttributeMetadata.Options dispondrá de una nueva 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 del atributo Incident (Caso) StatusCode puede presentar el valor TransitionData 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>
Nota
Cuando se recuperan estos datos en código no administrado del servicio web, por ejemplo, cuando se utiliza JavaScript, se omitirá y aparecerá como el siguiente ejemplo.
<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 EnforceStateTransitions de la entidad es true, las instancias de incidentes solamente pueden cambiarse a uno de los valores de statuscode permitidos. Puede utilizar IOrganizationService.Update para ajustar statuscodeOptionSetValue en 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 Status del ajuste CloseIncidentRequest en uno de los valores permitidos para el valor de statuscode actual. El intentar establecer un valor no válido genera un error.
Ver también
Ejemplo: recuperar transiciones de estado válidas
Estado y razón para el estado de los registros
Recuperar y detectar cambios en metadatos
Definir transiciones de razón para el estado
Microsoft Dynamics 365
© 2017 Microsoft. Todos los derechos reservados. Copyright