Freigeben über


Berechnete und Rollupattribute

Calculated und Rollup Attribute befreien den Benutzer von manuellen Berechnungen und ermöglichen es ihm, sich auf seine Arbeit zu konzentrieren. Systemadministratoren können jetzt ein Feld leicht definieren, das den Wert vieler allgemeiner Berechnungen enthält, ohne mit einem Entwickler arbeiten zu müssen. Entwickler können die Plattformfunktionen auch dazu nutzen, diese Berechnungen anzustellen, anstatt dies im eigenen Code zu tun.

Video: Rollup und berechnete Felder in Microsoft Dynamics CRM 2015

Gemeinsame Elemente und Eigenschaften

Berechnete und Rollupattribute haben einige gemeinsame Elementeund Eigenschaften, z. B.:

  • Sie sind schreibgeschützt.

  • Sie sind nicht für den Benutzer spezifsich. Die berechnung wird mit einem Systembenutzerkontos ausgeführt, sodass die Werte auf Datensätz basieren können, für die der Benutzer ansonsten nicht über Rechte zum Angezeigen verfügt, wie Attribute, für die die Sicherheit auf Feldebene aktiviert ist.

    Alle Attribute, die von AttributeMetadata erben, haben eine Eigenschaft SourceType, die die Werte enthalten kann, die in der folgenden Tabelle aufgeführt sind.

Wert Beschreibung des Dataflows
null Kein gültiger Typ für ein zu berechnendes Attribut, oder Rollupattribut.
0 Einfaches Attribut. Das Attribut ist nicht als berechnetes oder Rollupattribut definiert.
1 Beechnetes Attribut
2 Rollup-Attribut

Berechnete und Rollupattribute basieren auf vorhandenen Attributtypen, die von AttributeMetadata erben. Die folgenden Typen von Attribute haben neue Eigenschaften:

Eigenschaft Definition
FormulaDefinition Enthält die XAML-Definition der Formel, die verwendet wird, um die Berechnung oder den Rollup auszuführen. Die einzige unterstützte Möglichkeit, dies zu ändern, ist durch den Anwendungsformeleditor.

Informationen zum Konfigurieren der Formeln für diese Attribute finden Sie in den folgenden Themen im Anpassungs-Handbuch: Definieren der Rollupfelder und Definieren berechneter Felder.
SourceTypeMask Der Bitmaskenwert dieser schreibgeschützten Eigenschaft beschreibt die Typen von Quellen, die in der Formel des berechneten Attributs verwendet wird, wenn die Formel eines berechneten Rollupattributs ungültig ist.

- 0: Undefiniert. Der Standardwert für einfache und Rollupattribute.
- 1: Einfach. Das berechnete Attribut bezieht sich auf ein Attribut im gleichen Datensatz.
- 2: Verwandt. Das berechnete Attribut bezieht sich auf ein Attribut im verknüpften Datensatz.
- 4: Logical. Das berechnete Attribut bezieht sich auf ein Attribut im gleichen Datensatz, das aktuell in einer anderen Datenbanktabelle gespeichert ist. Weitere Informationen Logische Attribute
- 8: Calculated. Das berechnete Attribut bezieht sich auf ein anderes berechnetes Attribut.
- 16: Rollup. Das berechnete Attribut verweist auf ein Rollupattribut.
- 32: Invalid. Die berchnete oder Rollupfeld ist ungültig.
In der Regel würde dies auftreten, wenn ein Feld auf ein Attribut verweist, das nicht mehr vorhanden ist. Hinweis: Eine oder mehrere dieser Bedingungen können für jedes berechnete oder Rollup-Feld wahr sein. Da dies ein Bitmaskenwert ist, finden Sie es möglicherweise hilfreich, SourceTypeMasks-Enumeration zu verwenden, wenn Sie bitweise Vorgänge ausführen.

Beechnete Attribute

Berechnete Attribute werden in Echtzeit berechnet , sobald sie abgerufen werden. Berechnete Attribute können mithilfe verschiedener Datentypen verfasst werden. Beispielsweise kann ein ganzzahliges berechnetes Attribut auf Werte von den Dezimalzahl- oder Währungsattributen verweisen. Weitere Informationen: Definieren berechneter Felder

Berechnete Attributwerte sind sind in der Plug-in-Abruf-Pipeline verfügbar. Bild des Entitätsdatensatzes aktualisieren oder erstellen enthält oder den berechneten Attributwert in Phase 40. Weitere Informationen: Ereignisausführungspipeline

Einschränkungen

Sie können die Werte in berechneten Attributen, die auf eine verknüpfte Entität, ein anderes berechnetes Attribut oder einen logischen Wert in der gleichen Entität verweisen, nicht verwenden, um die Daten zu sortieren, die durch eine Abfrage zurückgegeben werden. Obwohl der Abfrage angeben kann, dass die Ergebnisse mithilfe eines berechneten Attributes geordnet werden sollen, wird die Sortierreihenfolge ignoriert es wird kein Fehler ausgelöst. Wenn das berechnete Attribut nur auf einfache Werte im gleichen Datensatz verweist, funktioniert die Sortierung normal. Sie können die Quellen bestimmen, die in einem berechneten Feld verwendet werden, indem Sie die Eigenschaft SourceTypeMask auf den Attributmetadaten verwenden. Weitere Informationen Logische Attribute

Nur Attribute von einer unmittelbar übergeordneten Entität können in einem berechneten Attribut verwendet werden.

Gespeicherte Abfragen, Diagramme und Visualisierungen können über maximal 10 eindeutige berechnete Attribute verfügen.

Berechnete Attribute können auf andere berechnete Attribute in ihrer Formel verweisen, sie können jedoch nicht auf sich selbst verweisen.

Berechnete Attribute haben keine Werte, wenn ein Benutzer mit Dynamics 365 for Outlook sich im Offlinemodus befindet.

MaxValue und MinValue Metadateneigenschaften können nicht auf berechnete Attribute festgelegt werden.

Weitere Informationen: Zusätzliche Einschränkungen

Rollup-Attribute

Da Rollupattribute in der Datenbank weiter bestehen, können sie zum Sortieren oder Filtern genauso wie regulären Attribute verwendet werden. Eine Art von Prozess oderPlug-in verwendet den letzten berechneten Wert des Attributs. Rollupattributwerte werden asynchron durch geplante Systemaufträge berechnet. Administratoren legen fest, wann ein Auftrag ausgeführt wird, oder sie halten den Auftrag an. Standardmäßig wird jedes Attribut stündlich aktualisiert. Weitere Informationen: Definieren der Rollupfelder

Wenn ein Rollupattribut erstellt oder aktualisiert wird, wird ein Auftrag Massenberechnen von Rollupfeldern geplant, um in 12 Stunden ausgeführt zu werden. Die 12-stündige Verzögerung dient dazu, diesen ressourcenintensiven Vorgang zu einer Zeit auszuführen, in der die Benutzer am wenigsten betroffen sind. Wenn der Vorgang abgeschlossen ist, wird automatisch geplant, ihn in 10 Jahren in der Zukunft auszuführen. Liegt ein Problem mit der Berechnung vor, wird dieses mit dem Systemauftrag gemeldet. Suchen Sie den Systemauftrag in Einstellungen>Systemaufträge, um irgendwelche Fehler bei Rollupfeldern zu finden.

Tipp

Als Entwickler, der eine Lösung in einer Entwicklungsumgebung testet, sollten Sie nicht 12 Stunden warten. Sie können dies beschleunigen. In der Liste Systemaufträge verwenden Sie die Ansicht Seriensystemaufträge, um die Liste zu feltern und den Auftrag Massenberechnen von Rollupfeldern zu suchen. Wenn der Auftrag ausgewählt ist, verwenden Sie Weitere Aktionen>Später durchführen, und legen Sie die Uhrzeit, die bald kommt, fest.

Wenn Sie die Erstellung eines neuen Auftrag Massenberechnete Rollupfelder programmgesteuert auslösen möchten, rufen Sie das Rollupattribut für AttributeMetadata mit RetrieveAttributeRequest ab und verwenden Sie UpdateAttributeRequest, um das Attribut zu aktualisieren, ohne Änderungen vorzunehmen.

Der Auftrag Massenberechnete Rollupfelder triit auf, sobald eine Lösung, die Rollupattribut enthält, importiert wird. Dabei wird davon ausgegangen, dass Sie eine Lösung in einer Zeit installieren, die sich auf Benutzer nicht nachteilig auswirkt.

Jedes Rollupattribut für eine Entität enthält auch zwei unterstützende Attribute für das Rollupattribut:

  • <Attribut SchemaName>_Date: DateTime - Wann der Rollup zuletzt berechnet wurde.

  • <attribut SchemaName>_State: Integer - Der Status der Rollup-Berechnung. Weitere Informationen: Rollupzustandswerte

Rollupstatuswerte

Der Status einer Rollup-Feldberechnung ist im entsprechenden <-Attribut SchemaName>_State Attribut und im CalculateRollupFieldResponse Attribut verfügbar. FieldState-Eigenschaft. Werte, die den Status angeben, sind in der folgenden Tabelle aufgeführt.

Statuswert Beschreibung
0 NotCalculated: Der Attributwert muss noch berechnet werden.
1 Calculated: Attributwert wurde zum letzten Aktualisierungszeitpunkt in <Attribut SchemaName>_Date Attribut berechnet.
2 OverflowError: Attributwertberechnung führte zu einem Überlauffehler.
3 OtherError: Die Berechnung des Attributwerts ist aufgrund eines internen Fehlers fehlgeschlagen. Das nächste Ausführen des Berechnungsauftrags wird das Problem wahrscheinlich beheben.
4 RetryLimitExceeded: Die Berechnung des Attributwerts ist fehlgeschlagen, weil die maximale Anzahl von Wiederholungsversuchen zur Berechnung des Werts überschritten wurde, wahrscheinlich aufgrund einer hohen Anzahl von Gleichzeitigkeits- und Sperrkonflikten.
5 HierarchicalRecursionLimitReached: Attributwertberechnung fehlgeschlagen, weil die maximale Hierarchietiefe für die Berechnung erreicht wurde.
6 LoopDetected: Die Berechnung des Attributwerts ist fehlgeschlagen, da eine rekursive Schleife in der Hierarchie des Datensatzes entdeckt wurde.

Den Wert eines berechneten Rollupfeldwert sofort abrufen

Rollupattribute unterstützen eine CalculateRollupField-Nachricht, die Entwickler verwenden können, um einen Rollupattributwert bei Bedarf zu berechnen. Die Anforderung und die Antwort, zusammen mit den Mitgliedern, sind in der folgenden Tabelle aufgeführt..

Anforderung/Antwort Mitglieder
CalculateRollupFieldRequest Target: EntityReference für den Datensatz.

FieldName: String, der den logischen Namen des Attributs darstellt.
CalculateRollupFieldResponse Entity: Entity mit dem Attribut rollup und den unterstützenden Attributen <attribute SchemaName>_Date und <attribute SchemaName>_State.

Diese Nachricht ist ein synchroner Vorgang für genau das Attribut, das in der Anforderung identifiziert wird. Wenn der Wert dieses Datensatzes als Teil anderer Rollupfelder enthalten ist, nehmen die Werte dieser Felder nicht die mögliche Wert,änderung an, die durch das Inbetrachtziehen dieser Methode verursacht wurden, bis die regelmäßig geplanten asynchronen Aufträge, die diese Berechnungen ausführen, auftreten.

Einschränkungen

Rollupattribute können nicht als Workflowereignis oder Wartebedingung verwendet werden. Diese Attribute führen nicht zu dem Ereignis, Workflows auszulösen.

Die Attribute ModifiedBy und ModifiedOn für die Entität werden nicht aktualisiert, wenn das Rollupattribut aktualisiert wird.

Ein Maximum von 100 Rollupattributen kann innerhalb einer Organisation definiert werden. Jede Entität kann maximal 10 Rollupattribute haben.

Eine Rollupattributformel kann nicht auf ein anderes Rollupattribut verweisen.

Eine Rollupattributformel kann nicht auf komplexe berechnete Attribute verweisen. Nur berechnete Attribute, die auf einfache Attribute im gleichen Datensatz verweisen, können für Rollups verwendet werden.

Eine Rollupattributformel kann keine Datensätze in n:n-Beziehungen enthalten. Es kann nur Datensätze in 1: n-Beziehungen enthalten.

Rollupattributformeln können keine 1:n-Beziehung mit der Entität ActivityPointer oder ActivityParty verwenden.

Weitere Informationen: Zusätzliche Einschränkungen

SourceTypeMasks-Enumeration

Die Eigenschaft SourceTypeMask für die Attribute, die berechnete und Rollupfelder unterstützen, enthält einen Bitmaskenwert. Um die relevanten Informationen vo dem Wert zu extrahieren, ist es hilfreich, diese Enumeration zu besitzen, wenn Sie bitweise Vorgänge ausführen. Verwenden Sie die folgende SourceTypeMasks-Enumeration, wenn Sie den SourceTypeMask-Eigenschaftswert vergleichen.

 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  
}  

Zusätzliche Einschränkungen

Diese zusätzlichen Einschränkungen gelten sowohl für Rollup- als auch für berechnete Attribute.

Eine aktive Ebene innerhalb einer Lösung auf einem berechneten Feld oder Rollup-Feld kann nicht mit Aktive Anpassungen entfernen entfernt werden. Aktive Ebenen-Änderungen können jedoch entfernt werden, indem Sie die folgenden Schritte ausführen.

  1. Lösungsebenen eines Feldes öffnen.

  2. Öffnen Sie Aktive Ebene und wählen Sie Aktive Anpassungen entfernen. Dadurch wird die aktive Ebene nicht entfernt, jedoch werden alle Änderungen darin entfernt.

  3. Öffnen Sie das Feld und navigieren zur Seite Formel-Designer mithilfe der Schaltfläche Bearbeiten/Ändern neben der Dropdownliste Feldtyp.

  4. Nehmen Sie einige Änderungen an der Formel vor und speichern Sie sie. Aktualisieren Sie die Formel wieder auf die ursprüngliche Formel und speichern Sie sie. Das System generiert das Feld mit der neuesten Definition neu und das Feld funktioniert wie erwartet.

Siehe auch

Video: Rollup und berechnete Felder in Dynamics 365 Customer Engagement (on-premises)
Einführung in die Entitätsattribute
Definieren berechneter Felder
Rollupfelder definieren