Atributos calculados e de acúmulo
Publicado: janeiro de 2017
Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Os atributos calculados e acúmulo evitam que o usuário tenha que executar manualmente cálculos e se concentrem em seu trabalho. Os administradores do sistema podem agora facilmente definir um campo para conter o valor de vários cálculos comuns sem precisar trabalhar com um desenvolvedor. Os desenvolvedores também podem aproveitar os recursos de plataforma para executar esse cálculos em vez de executar no seu próprio código.
Vídeo: campos cumulativos e calculados Microsoft Dynamics CRM 2015
Neste tópico
Elementos comuns e características
Atributos calculados
Atributos de acúmulo
Enumeração SourceTypeMasks
Elementos comuns e características
Os atributos calculado e acúmulo compartilham alguns elementos e características comuns, por exemplo:
São somente leitura.
Não são específicos ao usuário. O cálculo é executado usando uma conta de usuário do sistema, portanto, os valores podem se basear em registros que o usuário não possui privilégios de exibição, como os atributos que têm a segurança de nível de campo habilitada.
Todos os atributos que herdam do AttributeMetadata têm uma propriedade SourceType que pode conter os valores mostrados na tabela a seguir.
Valor |
Descrição |
---|---|
nulo |
Não um tipo de atributo válido deve ser um atributo calculado ou acúmulo. |
0 |
Atributo simples. O atributo não é definido como um atributo calculado ou acúmulo. |
1 |
Atributo calculado |
2 |
Atributos acúmulo |
Os atributos acúmulo e calculado são baseados nos tipos de atributos existentes que herdam do AttributeMetadata. Os seguintes tipos de novos atributos têm novas propriedades:
Cada um desses tipos de atributos tem as seguintes propriedades para suportar cálculos e acúmulos.
Propriedade |
Definição |
---|---|
FormulaDefinition |
Contém a definição XAML da fórmula usada para executar o cálculo ou o acúmulo. A única maneira suportada para alterar esse valor é através do editor de fórmula do aplicativo. Para obter informações sobre configurar as fórmulas para esses atributos, consulte os seguintes tópicos no guia de personalização: Definir campos cumulativos e Definir campos calculados. |
SourceTypeMask |
O valor da máscara de bits dessa propriedade somente leitura descreve os tipos de fontes usados na fórmula do atributo calculado ou se a fórmula de um atributo calculado ou de acúmulo é inválida.
Observação Uma ou mais dessas condições podem ser verdadeiras para qualquer campo calculado ou de acúmulo. Como este é um valor de máscara de bits, pode ser útil usar o Enumeração SourceTypeMasks ao executar operações de bits. |
Atributos calculados
Atributos calculados são calculados em tempo real em que são recuperados. Atributos calculados podem compostos usando diferentes tipos de dados. Por exemplo, um atributo calculado inteiro pode referenciar valores de atributos Decimal ou Moeda.Para obter mais informações:TechNet: definir campos calculados.
Os valores de atributos calculados estão disponíveis no canal de plug-in recuperar. Postar imagem do registro da entidade atualizar ou criar contém o valor do atributo calculado no estágio 40.Para obter mais informações:Pipeline de execução do evento
Limitações
Você não pode usar valores nos atributos calculados que fazem referência a outra entidade relacionada, outro atributo calculado ou valor lógico na mesma entidade para classificar dados retornados por uma consulta. Embora sua consulta possa especificar se os resultados devem ser ordenados usando um atributo calculado, a ordem de classificação será ignorada e acionará um erro. Se o atributo calculado faz referência apenas valores simples no mesmo registro, classificar geralmente funciona. Você pode determinar as fontes usadas em um campo calculado usando a propriedade SourceTypeMask nos metadados do atributo.Para obter mais informações:Atributos lógicos
Somente atributos de uma entidade pai imediata podem ser usados no atributo calculado.
Consultas salvas, gráficos e visualizações podem ter um máximo de 10 atributos calculados exclusivos.
Atributos calculados podem fazer referência a outros atributos calculados na fórmula, mas não podem fazer referência a si próprio.
Os atributos calculados não têm valores quando um usuário com Microsoft Dynamics 365 para Outlook estiver offline.
As propriedades de metadados MaxValue e MinValue não podem ser definidas em atributos calculados
Atributos de acúmulo
Como os atributos de acúmulo persistem no banco de dados, eles podem ser usados para filtrar ou classificar assim como atributos regulares. Qualquer tipo de processo ou plug-in usará o valor do atributo calculado mais recente. Os valores de atributo de acúmulo são calculados de maneira assíncrona por trabalhos do sistema agendados. Os administradores definem quando um trabalho é executado ou pausado no trabalho. Por padrão, cada atributo será atualizado uma vez por hora.Para obter mais informações:TechNet: Definir campos cumulativos.
Quando um atributo de acúmulo é criado ou atualizado, um trabalho Campos de Acúmulo Calculados em Massa serão agendados para executar em 12 horas. O atraso de 12 horas deve executar essa operação de recursos intensiva em um horário que afetará menos os usuários. Depois que o trabalho for concluído, a próxima vez que for agendado para executar será 10 anos no futuro. Se houver um problema com o cálculo, isso será relatado com o trabalho do sistema. Localize o trabalho do sistema em Configurações > Trabalhos do Sistema para localizar todos os erros com campos de acúmulo.
Dica
Como um desenvolvedor que testa uma solução em um ambiente de desenvolvimento, você pode não querer aguardar 12 horas. Você pode querer executar rapidamente. Na lista Trabalhos do Sistema, use a exibição Trabalhos do Sistema Recorrentes para filtrar a lista e localizar o trabalho Campos de Acúmulo de Cálculo em Massa. Com o trabalho selecionado, use Mais Ações > Adiar e define a hora para algo ocorrer em breve.
Para disparar de forma programática a criação de um novo trabalho Campos de Acúmulo de Cálculo em Massa, recupere AttributeMetadata para o atributo usando RetrieveAttributeRequest e use UpdateAttributeRequest para atualizar o atributo sem fazer alterações reais.
O trabalho Campos de Acúmulo Calculados em Massa ocorrerá imediatamente quando uma solução que contenha um atributo de acúmulo for importada. Esse procedimento pressupõe que você está instalando uma solução uma hora em que não afeta adversamente os usuários.
Cada atributo de acúmulo para uma entidade também incluirá dois atributos de suporte para o atributo de acúmulo:
<attribute SchemaName>_Date: DateTime – Quando o acúmulo foi calculado pela última vez.
<attribute SchemaName>_State: Integer – O estado do cálculo de acúmulo.Para obter mais informações:Valores de estado de acúmulo
Valores de estado de acúmulo
O estado de um cálculo do campo de acúmulo está disponível no atributo correspondente <attribute SchemaName>_State e na propriedade CalculateRollupFieldResponse.FieldState. Os valores que indicam o estado são mostrados na tabela a seguir.
Valor de estado |
Descrição |
---|---|
0 |
NotCalculated: O valor de atributo ainda deve ser calculado. |
1 |
Calculated: O valor de atributo foi calculado como a última hora de atualização no atributo <atributo SchemaName>_Date. |
2 |
OverflowError: O cálculo do valor do atributo leva a um erro de estouro. |
3 |
OtherError: O cálculo do valor do atributo falha devido a um erro interno, depois da execução do trabalho de cálculo que provavelmente corrigirá. |
4 |
RetryLimitExceeded: O cálculo do valor do atributo falhou porque o número máximo de tentativas para calcular o valor foi excedido devido ao número alto de conflitos de simultaneidade e bloqueio. |
5 |
HierarchicalRecursionLimitReached: O cálculo do valor de atributo falhou porque o limite máximo de profundidade da hierarquia para o cálculo foi atingido. |
6 |
LoopDetected: O cálculo do valor do atributo falhou porque um loop recursivo foi detectado na hierarquia do registro. |
Recuperar um valor de campo de acúmulo calculado imediatamente
Os atributos de acúmulo oferecem suporte a mensagem CalculateRollupField que os desenvolvedores podem usar para calcular um valor de atributo de acúmulo sob demanda. A solicitação e resposta, juntamente com os membros, são mostradas na tabela a seguir.
Solicitação/Resposta |
Membros |
---|---|
Target: EntityReference para o registro. FieldName: Cadeia de caracteres que representa o nome lógico do atributo. |
|
Entity: Entity que contém o atributo de acúmulo e os atributos de suporte <atributo SchemaName>_Date e <atributo SchemaName>_State. |
Essa mensagem é uma operação síncrona apenas para o atributo identificado na solicitação. Se o valor desse registro for incluído como parte dos campos de acúmulo, os valores desses campos não levarão a alteração do valor possível causada pela chamada do método em consideração até os trabalhos assíncronos regularmente agendados que executam esses cálculos.
Limitações
Os atributos de acúmulo não podem ser usados como um evento do fluxo de trabalho ou condição de espera. Esses atributos não levantam o evento para disparar fluxos de trabalho.
Os atributos ModifiedBy e ModifiedOn para a entidade não são atualizados quando o atributo de acúmulo é atualizado.
Um máximo de 100 atributos de acúmulo podem ser definidos em uma organização. Cada entidade não pode ter mais de 10 atributos de acúmulo.
Uma fórmula de atributo de acúmulo não pode referenciar outro atributo de acúmulo.
Uma fórmula de atributo de acúmulo não pode referenciar atributos calculados complexos. Somente atributos calculados que fazem referência a atributos simples no mesmo registro podem ser usados com acúmulos.
Uma fórmula de atributo de acúmulo não pode incluir registros em relacionamentos muito-para-muito (N:N). Pode incluir somente registros em relacionamentos um-para-muitos (1:N).
As fórmulas de atributo de acúmulo não podem usar relacionamentos um-para-muitos (1:N) com a entidade ActivityPointer ou ActivityParty.
Enumeração SourceTypeMasks
A propriedade SourceTypeMask para os atributos que suportam campos calculados e de acúmulo contêm um valor de bitmask. Para extrair informações relevantes do valor, ajuda a ter uma enumeração ao executar uma operação de bits. Use a seguinte enumeração do SourceTypeMasks ao comparar o valor de propriedade SourceTypeMask.
public enum SourceTypeMasks
{
/// <summary>
/// Undefined: 0 - The default value for simple and rollup attributes.
/// </summary>
Undefined = 0,
/// <summary>
/// Simple: 1 - The calculated attribute refers to an attribute in the same record.
/// </summary>
Simple = 1,
/// <summary>
/// Related: 2 - The calculated attribute refers to an attribute in a related record.
/// </summary>
Related = 2,
/// <summary>
/// Logical: 4 - The calculated attribute refers to a logical attribute.
/// </summary>
Logical = 4,
/// <summary>
/// Calculated: 8 - The calculated attribute refers to another calculated attribute.
/// </summary>
Calculated = 8,
/// <summary>
/// Rollup: 16 - The calculated attribute refers a rollup attribute.
/// </summary>
Rollup = 16,
/// <summary>
/// Invalid: 32 - The calculated or rollup attribute is invalid.
/// Typically this would be where a field refers to an attribute that no longer exists.
/// </summary>
Invalid = 32
}
Confira Também
Vídeo: campos cumulativos e calculados Microsoft Dynamics CRM 2015
Introdução aos atributos de entidade no Microsoft Dynamics 365
TechNet: definir campos calculados
TechNet: Definir campos cumulativos
Microsoft Dynamics 365
© 2017 Microsoft. Todos os direitos reservados. Direitos autorais