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