Attributregeln und Beziehungsklassen

Mit Attributregeln können zugehörige Datensätze für Datasets, die an Beziehungsklassen in einer Geodatabase beteiligt sind, gelesen und bearbeitet werden. Regeln können auf Feature-Classes und Tabellen angewendet werden, die an Beziehungsklassen beteiligt sind. Dazu zählen Anlagen und Feature-bezogene Annotationen. Attributregeln können auch verwendet werden, um Bearbeitungsereignisse von Aktualisierungen abzufangen, die an Ursprungs- und Zielklassen in einer Beziehung vorgenommen werden, also Hinzufügen, Entfernen oder Löschen eines zugehörigen Datensatzes. Beispielsweise kann eine Attributregel für eine sofortige Berechnung ein Attributfeld aktualisieren, wenn ein Feature zu einer zugehörigen Feature-Class hinzugefügt wird.

Auslösen von Ereignissen mit Beziehungsklassen

Attributregeln für sofortige Berechnungen werden für Bearbeitungsereignisse wie Einfüge-, Aktualisierungs- und Löschvorgänge ausgelöst. Wenn ein zugehöriger Datensatz mit ArcGIS Pro über die Kontextmenüoptionen Neue zur Beziehung hinzufügen oder Auswahl zur Beziehung hinzufügen hinzugefügt wird, werden mehrere Bearbeitungsereignisse ausgelöst.

Bei Verwendung der Kontextmenüoption Neue zur Beziehung hinzufügen geschieht Folgendes:

  • In der Zieltabelle der Beziehungsklasse wird eine leere Zeile erstellt.
    • Der Trigger wird in der Zielzeile eingefügt.
  • Der Fremdschlüssel wird für die Zielzeile festgelegt.
    • Der Trigger wird in der Zielzeile aktualisiert.
Wenn Sie eine Attributregel zur Zieltabelle mit dem ausgelösten Ereignis "Aktualisieren" hinzufügen, erfasst die Regel den Fremdschlüssel und fragt die zugehörige Zeile in der Quelltabelle ab.

Die Kontextmenüvorgänge Auswahl zur Beziehung hinzufügen und Aus Beziehung entfernen können ebenfalls verwendet werden.

In der folgenden Tabelle sind die spezifischen Funktionen aufgeführt, die für das Ereignis "Aktualisieren" unterschieden werden können, wenn "$originalFeature.key" und "$feature.key" verglichen werden.

FunktionEreignisArcGIS Arcade-Ausdruck

Hinzufügen eines Features zu einer Beziehung

Aktualisieren

Isempty($originalfeature.key) == true And isempty($feature.key) == false

Hinzufügen ausgewählter Features zu einer Beziehung

Aktualisieren

Isempty($originalfeature.key) == true And isempty($feature.key) == false

Entfernen eines Features aus einer Beziehung

Aktualisieren

Isempty($originalfeature.key) == false And isempty($feature.key) == true

Löschvorgang für einen zugehörigen Datensatz

Löschen

Lesen zugehöriger Datensätze

Bei der Arbeit mit Beziehungsklassen können Sie zugehörige Datensätze mit Arcade-Funktionen lesen, die Eingabe-Features annehmen und zugehörige Datensätze zurückgeben.

  • FeatureSetByRelationshipName: Die Ausführung ist auf Serverkontexte beschränkt. Stellen Sie bei der Verwendung dieser Funktion für Attributregeln sicher, dass die Option Von Anwendungsauswertung ausschließen auf "True" festgelegt ist.
  • FeatureSetByRelationshipClass: Unterstützt die Ausführung auf dem Server und dem Client. Regeln, die diese Funktion verwenden, können lokal in der Anwendung ausgeführt werden (z. B. ArcGIS Pro und ArcGIS Maps SDKs for Native Apps), bevor die Änderung an die Datenquelle gesendet wird.

Sie können zugehörige Datensätze auch mit der Arcade-Funktion FeatureSetByName lesen und nach dem Fremdschlüssel filtern.

Lesen zugehöriger Datensätze für eine Beziehungsklasse mit der Arcade-Funktion "FeatureSetByName".

Eine Berechnungsregel wird für das Feld "InspectionCount" in der Feature-Class für Masten erstellt, die Teil einer Klasse von Eins-zu-Viele-Beziehungen mit der Inspektionstabelle ist. Die Funktion FeatureSetByName kann verwendet werden, um die Inspektionsklasse direkt zu lesen und die zugehörigen Datensätze bei einer Aktualisierung abzurufen. Zur Verwendung dieser Arcade-Funktion sind Kenntnisse zum Feld "Beziehungsklasse" erforderlich. Für diese Beziehungsklasse ist der Quell-Primärschlüssel das Feld "globalID" der Feature-Class für Masten und der Quell-Fremdschlüssel das Feld "poleguid" der Standalone-Inspektionstabelle.

//A calculation rule that returns the count of a pole inspection records.
//When a pole feature is updated, the calculation rule reads all its related inspections records from the comments field and returns the total inspection count for that feature. 

Var fs = FeatureSetByName($datastore, “Inspection”, [“comments”], false)
Var poleGuid = $feature.poleguid 
Var fsinspected = Filter(fs, “POLEGUID= @poleguid”);
Return count(fsinspected)

Lesen eines zugehörigen Datensatzes für eine Beziehungsklasse mit der Arcade-Funktion "FeatureSetByRelationShipName".

Dieses Skript zum Lesen zugehöriger Datensätze für eine Beziehungsklasse kann mit der Funktion FeatureSetRelationshipName umgeschrieben werden. Bei Verwendung dieser Funktion muss der Fremdschlüssel nicht bekannt sein, sondern lediglich der Beziehungsname "pole_inspection".

Vorsicht:

Stellen Sie bei der Verwendung dieser Funktion zum Erstellen einer Attributregel sicher, dass die Option "Von Anwendungsauswertung ausschließen" auf "True" festgelegt ist.

//A calculation rule that returns the count of a pole inspection records.
//When a pole feature is updated, the calculation rule reads all its related inspections records from the comments field and returns the total inspection count for that feature.

Var fsinspected = FeatureSetByRelationshipName($feature, “pole_inspection”, [“comments”], false)
Return count(fsinspected)

Lesen eines zugehörigen Datensatzes für eine Beziehungsklasse mit der Arcade-Funktion "FeatureSetByRelationshipClass".

Dieses Skript zum Lesen zugehöriger Datensätze aus einer Beziehungsklasse kann mit der Funktion FeatureSetByRelationshipClass umgeschrieben werden. Bei Verwendung dieser Funktion muss der Fremdschlüssel nicht bekannt sein, sondern lediglich der Beziehungsname "pole_inspection". Diese Funktion unterstützt die server- und clientseitige Ausführung. Daher können Attributregeln, die diese Funktion verwenden, lokal in der Anwendung ausgeführt werden.

//A calculation rule that returns the count of a pole inspection records.
//When a pole feature is updated, the calculation rule reads all its related inspections records from the comments field and returns the total inspection count for that feature.

Var fsinspected = FeatureSetByRelationshipClass ($feature, “pole_inspection”, [“comments”], false)
Return count(fsinspected)

Erstellen, Aktualisieren und Löschen zugehöriger Datensätze

Zugehörige Datensätze aus Beziehungsklassen können auch mithilfe von Bearbeitungsregeln basierend auf der Rückgabe aus dem Wörterbuch bearbeitet werden.

Dies ist ein Beispiel für die Erstellung einer Berechnungsregel, die einen zugehörigen Datensatz erstellt. Wenn ein Feld für Kommentare zu Leitungsmasten vom Benutzer aktualisiert wird, wird das Schlüsselwort aus dem Wörterbuch "edit" zum Erstellen eines Inspektions-Datensatzes verwendet. Ähnliches gilt für das Aktualisieren oder Löschen zugehöriger Datensätze. Weitere Informationen finden Sie unter Wörterbuch-Schlüsselwörter für Attributregeln.

Hinzufügen eines neuen zugehörigen Datensatzes für eine Beziehungsklasse bei einer Aktualisierung.

Eine Berechnungsregel wird zum Erstellen eines neuen zugehörigen Datensatzes verwendet, wenn ein Feld für Kommentare zu Leitungsmasten vom Benutzer aktualisiert wird. In diesem Ausdruck wird das Schlüsselwort aus dem Wörterbuch edit zum Erstellen eines neuen Inspektionsdatensatzes verwendet, wenn sich das Kommentarfeld ändert. Ähnliches gilt für das Aktualisieren oder Löschen zugehöriger Datensätze. Weitere Informationen finden Sie unter Wörterbuch-Schlüsselwörter für Attributregeln.

//A calculation rule that triggers on an update event when the pole comment field is edited. 
//The expression first checks if the comment field changed and creates a new related record.

If ($originalfeature.comment != $feature.comment)
{ 
    Return {
                 “edit”: [{
   “className”: “inspection”,
   “adds”: [{ “attributes”: { “comments”: $feature.comment } }] 
}] 

}
Return;