Condividi tramite


Attributi calcolati e di rollup

 

Data di pubblicazione: novembre 2016

Si applica a: Dynamics CRM 2015

Gli attributi calcolati e di rollup sono essenziali poiché consentono all'utente di non eseguire calcoli manualmente e di concentrarsi sul lavoro. Gli amministratori di sistema possono ora definire in modo semplice un campo in modo che contenga il valore di molti calcoli comuni senza lavorare con uno sviluppatore. Gli sviluppatori possono inoltre utilizzare le funzionalità della piattaforma per eseguire tali calcoli anziché all'interno del proprio codice.

Video: Campi di rollup e calcolati in Microsoft Dynamics CRM 2015

In questo argomento

Elementi e caratteristiche comuni

Attributi calcolati

Attributi di rollup

Enumerazione di SourceTypeMasks

Elementi e caratteristiche comuni

Gli attributi calcolati e di rollup condividono alcuni elementi e caratteristiche comuni, ad esempio:

  • Sono di sola lettura.

  • Non sono specifici dell'utente. Il calcolo viene eseguito con un account utente di sistema, in modo che i valori possono essere basati sui record che, in caso contrario, l'utente non ha il privilegio di visualizzare, ad esempio gli attributi con sicurezza a livello di campo abilitata.

Tutti gli attributi che ereditano da AttributeMetadata hanno una proprietà SourceType che può contenere i valori visualizzati nella tabella seguente.

Valore

Descrizione

null

Non un tipo di attributo valido per essere un attributo calcolato o di rollup.

0

Attributo semplice. L'attributo non è definito come attributo calcolato o di rollup.

1

Attributo calcolato

2

Attributo di rollup

Gli attributi calcolati e di rollup sono basati sui tipi esistenti di attributo che ereditano da AttributeMetadata. I seguenti tipi di attributi hanno nuove proprietà:

Per ognuno di questi tipi di attributi sono disponibili le seguenti proprietà per supportare i calcoli e i rollup.

Proprietà

Definizione

FormulaDefinition

Contiene la definizione XAML della formula utilizzata per eseguire il calcolo o il rollup. L'unico modo supportata per modificare questo valore è tramite l'editor di formula dell'applicazione.

Per informazioni sulla configurazione delle formule per questi attributi vedere gli argomenti seguenti nella guida alla personalizzazione: Definire i campi di rollup e Definire i campi calcolati.

SourceTypeMask

Il valore della maschera di bit di questa proprietà di sola lettura descrive i tipi di origini utilizzate nella formula dell'attributo calcolato o se la formula di un attributo di rollup calcolato non è valida.

  • 0: Indefinito. Il valore predefinito per gli attributi semplici e di rollup.

  • 1: Semplice. L'attributo calcolato fa riferimento a un attributo nello stesso record.

  • 2: Correlato. L'attributo calcolato fa riferimento a un attributo in un record correlato.

  • 4: Logical. L'attributo calcolato fa riferimento a un attributo nello stesso record che è effettivamente archiviato in una tabella di database diversa.Ulteriori informazioni:Attributi logici

  • 8: Calculated. L'attributo calcolato fa riferimento a un altro attributo calcolato.

  • 16: Rollup. L'attributo calcolato fa riferimento a un attributo di rollup.

  • 32: Invalid. Il campo di rollup o calcolato non è valido.

    In genere questo è dove un campo fa riferimento a un attributo che non esiste più.

Nota

Uno o più condizioni che possono essere true per un campo calcolato o di rollup. Trattandosi di un valore di maschera di bit, potrebbe essere utile utilizzare Enumerazione di SourceTypeMasks quando si eseguono le operazioni bit per bit.

Attributi calcolati

Gli attributi calcolati vengono calcolati in tempo reale quando vengono recuperati. Gli attributi calcolati possono essere composti utilizzando diversi tipi di dati. Ad esempio, un attributo calcolato Integer può fare riferimento ai valori dagli attributi di tipo decimale o di valuta.Ulteriori informazioni:TechNet: Definire campi calcolati

I valori di attributi calcolati sono disponibili nella pipeline del plug-in di recupero. Incollare l'immagine dell'aggiornamento di un record di entità oppure creare il valore dell'attributo calcolato nella fase 40.Ulteriori informazioni:Pipeline di esecuzione evento

Limitazioni

Non è possibile utilizzare i valori negli attributi calcolati che fanno riferimento a un'entità correlata, un altro attributo calcolato, o un valore logico nella stessa entità per ordinare i dati restituiti da una query. Sebbene la query possa specificare che i risultati devono essere ordinati utilizzando un attributo calcolato, la direzione di ordinamento verrà ignorata e non verrà generato un errore. Se l'attributo calcolato fa riferimento solo ai valori semplici nello stesso record, l'ordinamento funziona normalmente. È possibile determinare le origini utilizzate in un campo calcolato utilizzando la proprietà SourceTypeMask nei metadati dell'attributo.Ulteriori informazioni:Attributi logici

Solo gli attributi da un'entità padre diretta possono essere utilizzati in un attributo calcolato.

Query, grafici e visualizzazioni salvati possono disporre al massimo di 10 attributi calcolati univoci.

Gli attributi calcolati possono fare riferimento ad altri attributi calcolati nella formula, ma non possono fare riferimento a se stessi.

Gli attributi calcolati non hanno valori quando un utente con Microsoft Dynamics CRM per Outlook è offline.

Le proprietà dei metadati MaxValue e MinValue non possono essere impostate negli attributi calcolati

Attributi di rollup

Poiché gli attributi di rollup persistono nel database, possono essere utilizzati per filtrare oppure ordinare come gli attributi regolari. Qualsiasi tipo di processo o di plug-in utilizzerà il valore dell'attributo calcolato più di recente. I valori dell'attributo di rollup vengono calcolati in modalità asincrona da processi di sistema pianificati. Gli amministratori impostano quando un processo viene eseguito o sospendono il processo. Per impostazione predefinita, ogni attributo viene aggiornato ogni ora.Ulteriori informazioni:TechNet: Definire campi di rollup

Se un attributo di rollup viene creato o aggiornato, viene programmata l'esecuzione di un processo Calcola in massa il campo di rollup in 12 ore. Il ritardo di 12 ore è destinato all'esecuzione di questa operazione intensiva di risorse in un periodo che influirà sugli utenti il meno possibile. Al termine del processo, la volta successiva in cui verrà programmata l'esecuzione sarà dopo 10 anni. Se si verifica un problema con il calcolo, questo verrà riportato con il processo di sistema. Individuare il processo di sistema in Impostazioni > Processi di sistema per trovare tutti gli errori nei campi di rollup.

Suggerimento

Gli sviluppatori che testano una soluzione in un ambiente di sviluppo potrebbero non voler attendere 12 ore. È possibile velocizzare il processo. Nell'elenco Processi di sistema, utilizzare la visualizzazione Processi di sistema ricorrenti per filtrare l'elenco e individuare il processo Calcola in massa il campo di rollup. Con il processo selezionato, utilizzare Altre azioni > Posticipa e impostare l'ora di qualcosa che si verifica in precedenza.

Se si desidera avviare la creazione di un nuovo processo Calcola in massa il campo di rollup a livello di programmazione, recuperare AttributeMetadata per l'attributo di rollup utilizzando RetrieveAttributeRequest e utilizzare UpdateAttributeRequest per aggiornare l'attributo senza apportare modifiche effettive.

Il processo Calcola in massa il campo di rollup si verificherà immediatamente quando viene importata una soluzione che contiene un attributo di rollup. Ciò presuppone che si stia installando una soluzione in un periodo che non influirà sugli utenti in modo negativo.

Ogni attributo di rollup per un'entità includerà anche due attributi di supporto per l'attributo di rollup:

  • <attribute SchemaName>_Date: DateTime - quando il rollup è stato calcolato per l'ultima volta.

  • <attribute SchemaName>_State: Integer – Lo stato del calcolo di rollup.Ulteriori informazioni:Valori dello stato di rollup

Valori dello stato di rollup

Lo stato del calcolo di un campo di rollup è disponibile nell'attributo corrispondente <attribute SchemaName>_State e nella proprietà CalculateRollupFieldResponse.FieldState. I valori che indicano lo stato sono riportati nella tabella seguente.

Valore stato

Descrizione

0

NotCalculated: il valore dell'attributo deve ancora essere calcolato.

1

Calculated: il valore dell'attributo è stato calcolato secondo l'ora dell'ultimo aggiornamento nell'attributo <attribute SchemaName>_Date.

2

OverflowError: Il lead del calcolo del valore dell'attributo all'errore di overflow.

3

OtherError: il calcolo del valore dell'attributo non è riuscito a causa di un errore interno, la prossima esecuzione del processo di calcolo probabilmente lo correggerà.

4

RetryLimitExceeded: il calcolo dei valori dell'attributo non è riuscito perché è stato superato il numero massimo di tentativi di calcolo dei valori probabilmente a causa del numero elevato di conflitti di blocchi e di concorrenza.

5

HierarchicalRecursionLimitReached: il calcolo del valore dell'attributo non è riuscito perché è stato raggiunto il limite massimo di profondità gerarchica per il calcolo.

6

LoopDetected: il calcolo del valore dell'attributo non è riuscito perché un ciclo ricorsivo è stato rilevato la gerarchia del record.

Recuperare un valore del campo di rollup calcolato immediatamente

Gli attributi di rollup supportano un messaggio CalculateRollupField che gli sviluppatori possono utilizzare per calcolare un valore dell'attributo di rollup su richiesta. La richiesta e la risposta, insieme ai membri, vengono visualizzate nella tabella seguente.

Richiesta e risposta

Membri

CalculateRollupFieldRequest

Target: EntityReference per il record.

FieldName: stringa che rappresenta il nome logico dell'attributo.

CalculateRollupFieldResponse

Entity: Entity contenente l'attributo di rollup e gli attributi di supporto <attribute SchemaName>_Date e <attribute SchemaName>_State.

Questo messaggio è un'operazione sincrona solo per l'attributo identificato nella richiesta. Se il valore del record è incluso come parte di altri campi di rollup, i valori di questi campi non prenderanno in considerazione la possibile modifica del valore causata dalla chiamata di questo metodo fino a che non si verificano i processi asincroni regolarmente programmati che eseguono questi calcoli.

Limitazioni

Gli attributi di rollup non possono essere utilizzati come un evento del flusso di lavoro o una condizione di attesa. Questi attributi non generano l'evento per avviare i flussi di lavoro.

Gli attributi ModifiedBy e ModifiedOn per l'entità non sono aggiornati quando l'attributo di rollup viene aggiornato.

Un valore massimo di 100 attributi di rollup può essere definito all'interno di un'organizzazione. Ogni entità può disporre di non più di 10 attributi di rollup.

Una formula dell'attributo di rollup non può fare riferimento a un altro attributo di rollup.

Una formula dell'attributo di rollup non può fare riferimento ad attributi calcolati complessi. Solo gli attributi calcolati che fanno riferimento agli attributi semplici nello stesso record possono essere utilizzati con i rollup.

La formula dell'attributo di rollup non può includere i record nelle relazioni molti-a-molti (N:N). Può includere solo i record nelle relazioni uno a molti (1:N).

Le formule dell'attributo di rollup non possono utilizzare le relazioni uno-a-molti (1: N) con l'entità ActivityParty o ActivityPointer.

Enumerazione di SourceTypeMasks

La proprietà SourceTypeMask per tali attributi che supportano i campi di rollup e calcolati contiene un valore di maschera. Per estrarre le informazioni importanti dal valore, è utile definire una enumerazione quando si eseguono operazioni bit per bit. Utilizzare la seguente enumerazione SourceTypeMasks quando si confronta il valore della proprietà 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
}

Vedere anche

Video: Campi di rollup e calcolati in Microsoft Dynamics CRM 2015
Introduzione agli attributi di entità di Microsoft Dynamics CRM 2015
TechNet: Definire campi calcolati
TechNet: Definire campi di rollup

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright