Skip To Content

Skriptausdrücke für Attributregeln

Wenn Sie eine Attributregel erstellen, wird ein Skriptausdruck als Grundlage der Regel herangezogen. Der Skriptausdruck wird mit der Skriptsprache Arcade erstellt, um das Regelverhalten zu steuern. Ausdrücke können geschrieben werden, um Feldwerte zu aktualisieren, bestimmte Bearbeitungen einzuschränken, Meldungen an den Benutzer zurückzugeben usw.

Wenn Sie einen Skriptausdruck erstellen, können Sie während der Auswertung der Regel die folgenden Wörterbuchschlüssel verwenden:

  • calculationRequired and validationRequired: Markiert andere Features als Features, die als Teil des Ergebnisses ausgewertet werden müssen. Bei Verwendung dieser Schlüsselwörter werden die entsprechende Feature-Class und das Array von Features als auszuwertende Elemente markiert, indem das Attribut "Validierungsstatus" für die Features geändert wird. Diese Schlüsselwörter können nur mit Berechnungsregeln verwendet werden und erfordern, dass die Option Nur Server auf "True" gesetzt ist.
  • result: Weist auf eine gültige Rückgabe aus der Regelauswertung hin.
  • errorMessage: Legt eine benutzerdefinierte Fehlermeldung für einen Fehler während der Auswertung fest.

Für den Skriptausdruck gelten Arcade-Anforderungen, die vom Attributregeltyp abhängen. Im Arcade-Profil finden Sie die Anforderungen für den jeweiligen Attributregeltyp.

Beim Erstellen von Skriptausdrücken für Attributregeln können die Arcade-Dokumentation – Erste Schritte und der Funktionsindex als Referenz herangezogen werden.

Vorsicht:
Wenn Sie Attributregeln hinzufügen, wird dadurch die Abwärtskompatibilität für das Dataset beeinträchtigt.
  • Datasets mit Attributregeln können durch ArcGIS Pro-Versionen vor 2.1 oder ArcMap-Clients nicht mehr verwendet werden.
  • Datasets mit Attributregeln, die neue Arcade-Funktionen enthalten, sind nicht abwärtskompatibel. Weitere Informationen finden Sie in der Versionsmatrix und in den Versionshinweisen zu ArcGIS Arcade.

Beispiele für Berechnungsattributregeln

Im Folgenden finden Sie Beispiele für die Skriptausdrücke für Berechnungsattributregeln:

Zurückgeben eines einfachen Wertes

Eine Regel für sofortige Berechnung wird für das assetid-Feld in der Transformator-Feature-Class erstellt und für die Bearbeitungsoperationen "Einfügen" ausgelöst. Wenn Sie einen Transformator erstellen, fragt die Arcade-Funktion "NextSequenceValue" die Datenbank nach dem nächsten Sequenzwert ab und behält diesen im Feld "assetID" bei.

return "Tx-" + NextSequenceValue ("assetid")

Zurückgeben einer benutzerdefinierten Fehlermeldung

Es gibt einige Fälle, in denen eine Berechnungsregel eine benutzerdefinierte Fehlermeldung (Fehler) zurückgeben soll, wenn eine Bedingung nicht erfüllt wird. In diesem Beispiel wird eine sofortige Berechnungsregel zum Auffüllen des Feldes (FacilityID) basierend auf dem schneidenden Umspannwerk erstellt. Die Regel wird für Operationen wie "Einfügen" und "Aktualisieren" ausgeführt. Wenn Sie versuchen, einen Transformator in einem Umspannwerk zu erstellen, ruft der Arcade-Ausdruck den Namen des Umspannwerks ab und verwendet die assetID des Transformators, um das vollständige Feld "FacilityID" (SubstationName-AssetID) zu erstellen. Wird der Transformator außerhalb eines Umspannwerks erstellt oder verschoben, gibt das Skript eine benutzerdefinierte Fehlermeldung mit dem Schlüsselwort "errorMessage" zurück.

//On Insert or Update set FacilityID = SubstationName - AssetID use intersect to get the substation name
//If no substation (fail with error message dictionary,  must create in substation.) 
var fsStructureBoundary =  FeatureSetByName($datastore, "Substation", ["name"], true)
var fsSubstation = Intersects(fsStructureBoundary, Geometry($feature))
var substation = First (fsSubstation)
var subname  = ""
if (substation == null)
   return  {"errorMessage": "Transformers must be created in a substation."}
else 
   subname =  substation.name
return subname + " - " + $feature.assetid;

Markieren anderer auszuwertender Features

Sie können eine Berechnungsregel erstellen, die andere Features als zu berechnende oder auszuwertende Features markiert. Nach der Durchführung einer Berechnung kann das Schlüsselwort "calculationRequired" oder "validationRequired" in einem Wörterbuch verwendet werden, um das Attribut "Validierungsstatus" für ein oder mehrere Features zurückzusetzen. In diesem Beispiel wird die Berechnungsregel für die Feature-Class "Umspannwerk" im Feld "yearName" erstellt. Wenn der Name des Umspannwerks aktualisiert wird, werden der neue Name und das aktuelle Jahr im Feld "yearName" gespeichert. Als Teil dieser Logik werden alle Transformatoren, die das Umspannwerk in der Feature-Class "Transformator" schneiden, als zu berechnende Tranformatoren markiert. Eine weitere Batch-Berechnungsregel, die in der Transformator-Klasse zugewiesen wird, berechnet die neue AssetID des Transformators neu, damit der neue Name des Umspannwerks bei der nächsten Auswertung der Regel wirksam wird.

//Updating the substation name marks its transformers as requiring calculation and updates the yearName to the new name and year. 
//To recalculate the facility id on all transformers, mark all associated transformers as requiring calculation. var fsDevice =  FeatureSetByName($datastore, "Transformer", ["globalid"], false) var fsDeviceIntersects = Intersects (fsDevice, Geometry($feature))
var transformers = [];
var count = 0;
for (var i in fsDeviceIntersects)   transformers[count++] = i.globalid;
var newName = $feature.name + " " + Year(Now()) return {
   'result': newName,    'calculationRequired': 
       [          {
              'className':"Transformer",              'globalIDs': transformers           }
       ]   }

Beispiele für Beschränkungsattributregeln

Im Folgenden finden Sie Beispiele für die Skriptausdrücke für Berechnungsattributregeln:

Zurückgeben eines booleschen Wertes

Diese Beschränkungsattributregel wird für die Umspannwerk-Klasse erstellt und für die Operationen "Einfügen" und "Aktualisieren" ausgelöst. Wenn der Name des Umspannwerks leer ist, gibt "fail (return false) else true" zurück und ermöglicht die Fortsetzung der Bearbeitung.

if ($feature.name == null)    return false;
else    return true;
//another way of writing it return !($feature.name == null)

Zurückgeben einer benutzerdefinierten Fehlermeldung

Es gibt einige Fälle, in denen einen Skriptausdruck erstellt werden soll, der mehrere Fehlermeldungen in verschiedenen Fällen zurückgibt. Nachfolgend finden Sie ein Beispiel für die Rückgabe eines benutzerdefinierten Fehlers, wenn der Name oder installationDate für das Umspannwerk NULL ist.

if ($feature.name == null)    return   {"errorMessage": "Substation must have a valid name."}
else if ($feature.installationDate == null)    return   {"errorMessage": "Substation must have a valid installation date."}
else    return true;

Beispiele für Validierungsattributregeln

Im Folgenden finden Sie ein Beispiel für den Skriptausdruck für eine Validierungsattributregel:

Zurückgeben eines booleschen Wertes

Validierungsregeln sind optimal in Fällen geeignet, in denen beschädigte Daten erkannt, der Bearbeitungsvorgang jedoch nicht verhindert werden soll. Sie können Regeln auswerten und Fehler für die Features erstellen, die gegen die Regel verstoßen. Dies ist ein Beispiel für Umspannwerke, die den maximalen kVA-Wert überschreiten und als Fehler gekennzeichnet sind (es werden Polygonfehler erstellt).

var fsTransformer =  FeatureSetByName($datastore, "L1Electric_Distribution_Device", ["objectid"], true) var fsTransformerSubset = Intersects(fsTransformer, Geometry($feature)) var totalKva = 0;
for (var t in fsTransformerSubset)    totalKva += t.kva
if (totalKva > $feature.maxKva)     return false else     return true