Definir transições de modelo de estado personalizadas

 

Publicado: novembro de 2016

Aplicável a: Dynamics CRM 2015

Você pode especificar transações de estado personalizadas para a entidade Incident (Ocorrência) ou entidades personalizadas. A propriedade EntityMetadata.IsStateModelAware é true para entidades que oferecem suporte para transições de modelo de estado.

Transações de estado personalizado são um nível opcional de filtragem para definir quais transições de estado são válidas para um registro em um determinado estado. Especialmente quando há um grande número e combinações para estados e valores de status válidos, definir uma lista limitada de opções válidas pode facilitar para que as pessoas escolham o status correto para um registro.

Neste tópico

Qual é o modelo de estado?

Detectar transições de status válidas

Qual é o modelo de estado?

Entidades que oferecem suporte ao conceito de estado têm um par de atributos que capturam esses dados, como mostrado nesta tabela.

Nome lógico

Nome para Exibição

Descrição

statecode

Status

Representa o estado do registro. Para entidades personalizadas, é Ativo ou Inativo. A entidade Incident (case) usa Ativo, Resolvido e Cancelado. Você não pode adicionar mais opções de estado, mas pode alterar os rótulos de opções.

statuscode

Razão do Status

Representa um status que está vinculado a um estado específico. Cada estado precisa ter pelo menos uma status possível. Você pode adicionar opções adicionais de status e alterar os rótulos de opções existentes.

Os metadados para os atributos definem quais valores de status são válidos para um determinado estado. Por exemplo, para a entidade Incident (Ocorrência), o estado padrão e as opções de status são mostrados na tabela a seguir.

Estado

Status

Label: Ativo

Value: 0

Label: Em Andamento

Value: 1

State: 0

Label: Em Espera

Value: 2

State: 0

Label: Aguardando Detalhes

Value: 3

State: 0

Rótulo: Pesquisando

Value: 4

State: 0

Label: Resolvido

Value: 1

Label: Problema Resolvido

Value: 5

State: 1

Rótulo: Informações Fornecidas

Value: 1000

State: 1

Rótulo: Cancelado

Value: 2

Label: Cancelado

Value: 6

State: 2

Label: Mesclado

Value: 2000

State: 2

Esses dados são armazenados na classe StatusOptionMetadata, que representa as opções da classe StatusAttributeMetadata.

Para exibir os metadados de entidade da sua organização, instale a solução Navegador dos Metadados descrita em Procurar os metadados da sua organização. Também é possível exibir os metadados de uma organização não personalizada no arquivo do Excel chamado EntityMetadata.xlsx, incluído na pasta de nível superior do download do SDK.

Detectar transições de status válidas

Você pode modificar o atributo statuscode para definir quais outras opções de status representam transições válidas do status atual. Para obter instruções, consulte o tópico do Guia de personalização: Definir transações de razão do status

Quando transições de estado personalizado forem aplicadas a uma entidade, a propriedade EntityMetadata.EnforceStateTransitions será true. Além disso, cada StatusOptionMetadata dentro da coleção StatusAttributeMetadata.Options terá uma nova propriedade TransitionData. Essa propriedade conterá um valor de cadeia de caracteres que representa um documento XML. Esse documento contém a definição das transações permitidas. Por exemplo, a opção de atributo padrão Incident (Ocorrência) StatusCode pode ter o seguinte valor TransitionData.

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

Observação

Quando esses dados são recuperados no código não gerenciado do serviço Web, por exemplo, ao usar JavaScript, eles serão escapados e aparecerão como o exemplo a seguir.

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

Quando esses dados estão presentes e a propriedade EnforceStateTransitions da entidade é true, toda a instância do incidente pode ser alterada para um dos valores de statuscode permitidos. Você pode usar IOrganizationService.Update para definir o statuscodeOptionSetValue como qualquer um dos valores permitidos que não representam uma alteração de estado. Para alterar o estado, use SetStateRequest que define os valores de propriedade State e Status permitidos ou o CloseIncidentRequest que define a propriedade Status como um dos valores permitidos para o valor atual de statuscode. A tentativa de definir um valor inválido emite um erro.

Confira Também

Exemplo: Recuperar transições de status válidos
Estado e status do registro
Recuperar e detectar alterações nos metadados
Definir transições de razão do status

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais