Partekatu honen bidez:


Definir transiciones de modelo de estado personalizadas

 

Publicado: noviembre de 2016

Se aplica a: Dynamics CRM 2015

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 válidas 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.

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

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

© 2017 Microsoft. Todos los derechos reservados. Copyright