Leistung bei der Skripterstellung
Abfragen
Wenn Sie Abfragen in Axxerion in Skripten durchführen oder wenn Sie Performance-Probleme debuggen, sollten Sie sich der folgenden Aspekte bewusst sein, die die Performance negativ beeinflussen.
Kundenspezifische Felder
Verwenden Sie nach Möglichkeit nicht NUR mandantenspezifische Felder in Abfragen. Dazu muss Workplace immer zwei Datentabellen kombinieren, was dazu führt, dass das System immer eine größere Tabelle (die mit den mandantenspezifischen Feldern) durchsucht als die Kernobjekte. Versuchen Sie immer, ein Workplace-Kernfeld hinzuzufügen (am häufigsten createTime, updateTime, externalReference, closeTime, categoryFolderId).
Wenn Sie kundenspezifische Felder verwenden müssen, versuchen Sie, diese zu begrenzen. Je mehr Felder Sie hinzufügen, desto mehr Daten müssen integriert werden, was wiederum mehr Zeit für die Ausführung in Anspruch nehmen kann. Wenn Sie also eine langsame Abfrage haben, prüfen Sie, ob sich das Entfernen von kundenspezifischen Feldern positiv auswirkt (oder umgekehrt, ob das Hinzufügen von Feldern negative Auswirkungen hat).
Leere Abfrageparameter
Wenn Sie Variablen in einer Abfrage verwenden, stellen Sie sicher, dass ihnen Werte hinzugefügt wurden. Siehe das folgende Skript.
contact = this;
manager = contact.managerContactId;
colleagues = find Contact by managerContactId == manager;
Sie erwarten, dass das Script den Manager des aktuellen Kontakts ermittelt. Dann wird dieser Manager verwendet, um alle anderen Kontakte zu finden, die diesem Manager zugeordnet sind. Die Sache hat allerdings einen Haken: Wenn dieses Script auf einem Kontakt läuft, der keinen Manager hat, sucht das Script nach ALLEN Kontakten. Eine bessere Lösung ist, wie folgt vorzugehen.
contact = this;
manager = contact.managerContactId;
if (!isEmpty manager) {
colleagues = find Contact by managerContactId == manager;
}
Dabei wird geprüft, ob der Wert für manager leer ist. Wenn das nicht der Fall ist, wird der Rest der Logik gestartet. Eine bessere Option ist es, Break-Klauseln in Ihre Skripte einzubauen, die das Skript anhalten, wenn es nicht mehr benötigt wird. Siehe unten.
contact = this;
manager = contact.managerContactId;
if (isEmpty manager) {
return;
}
colleagues = find Contact by managerContactId == manager;
Dies macht das Skript lesbarer und "sicherer", da es die Logik beendet, sobald sie aufhören sollte.
Finden versus Erhalten
Bei der Skripterstellung werden bei einer "Suche" alle Elemente zurückgegeben, die mit den Parametern übereinstimmen. Bei der Verwendung von "Get" wird nur ein Element zurückgegeben. Auch wenn nur ein Element zurückgegeben wird, ist die "Get"-Abfrage nicht schneller. Hinter den Bildschirmen führt Workplace eine "Suche" durch und gibt nur 1 Element zurück. Seien Sie sich also bewusst, dass diese Methode nicht schneller ist.
Kombinieren Sie Abfragen
In Workplace ist es möglich, in Abfragen "durchzukoppeln". Siehe das folgende Skripting.
Angenommen, die Abfrage in Zeile 6 liefert 10 Kollegen, dann wird die Abfrage "for each" die Eigenschaften 10 Mal ausführen. Optimaler ist es, die einzelnen Abfragen zu kombinieren.
Das Skript geht hier von der Objekteigenschaft zur ownerContactId und sucht dann alle Kontakte, die zu einem bestimmten Manager gehören. Dadurch wird die Gesamtzahl der Abfragen von 11 auf 1 gesenkt.
Abfragen mit kundenspezifischen Feldern/Attributen
Bei einer Abfrage über ein kundenspezifisches Feld wäre dies bei einer großen Anzahl von Objekten (z. B. CodeTypes) möglicherweise recht klein. In manchen Fällen kann es schneller sein, alle Elemente zu sammeln und den spezifischen Wert zu prüfen, an dem Sie interessiert sind, anstatt direkt nach dem Wert des kundenspezifischen Feldes zu suchen. Dies sollte von Fall zu Fall entschieden werden.
Echo's im Skripting
Es hat sich herausgestellt, dass Echos bei der Skripterstellung den belegten Heap-Speicherplatz auf dem Server erhöhen. Daher ist das Entfernen von Echos nach dem Debuggen eine gute Möglichkeit, Probleme auf dem Server zu vermeiden. Wenn Sie dies mit einem großen Knall in einer Client-Umgebung bereinigen wollen, können Sie das folgende Skript in dieser Umgebung ausführen:
Die obigen Skripte bewirken Folgendes:
Es werden alle Skripte ermittelt, in denen die neueste Skriptversion das Wort "echo" enthält.
Daraus werden die aktiven Skriptversionen abgerufen
Für jede aktive Version werden alle Echos im Skript mit Hilfe eines regulären Ausdrucks gesucht (Zeile 10)
Er kopiert dann die bestehende Version und ersetzt sie durch den echofreien Text
Es fügt eine Beschreibung zu dieser Version hinzu und aktiviert die neueste Version