Hier finden Sie schnelle Antworten auf Ihre Fragen rund um die Skriptsprache Groovy.
Java-Syntax oder Groovy-Syntax?
Hintergrund:
-
Groovy erfährt, wie Java auch, von Zeit zu Zeit größere Versions-Sprünge.
-
Dabei wird Groovy an die neueren Java-Versionen angeglichen.
-
Diese enthalten von z.B. 2.x zu 3.x, aber auch von 3.x zu 4.x einige Breaking-Changes an der API
-
Die Verwendung dieser Konstrukte kann nach einem Update zu Laufzeitfehlern führen
-
Beispiele:
for-in-Schleife => for-each-Schleife
Anpassung von Imports
-
Fazit
-
Es ist besser, die Java-Syntax zu verwenden
-
Vereinfachte Schreibweisen für Listen oder Maps stellen aber kein Problem dar
Könnte Groovy durch eine andere Skript-Sprache ersetzt werden?
Hintergrund:
-
Im Jahr 2015 war es ungewiss, wie es mit Groovy weitergehen wird, da sich der Hauptsponsor Pivotal aus dem Projekt zurückgezogen hatte.
-
Erst nach einigen Monaten stand fest, dass Groovy bei der Apache Foundation unterkommen wird.
-
Wäre dies nicht passiert, hätte Groovy evtl. durch eine neue Skript-Sprache, damals noch nicht vollständig kompatibel zu Java 9 oder Java 11, ersetzt werden müssen.
Fazit:
-
Nach dem aktuellen Kenntnisstand (2024) besteht hierfür keinerlei Anlass zur Sorge.
-
Groovy erfreut sich einer großen Community und wird ständig mit den neuen Java-Versionen und eigene Sprach-Features erweitert.
Wie verhält es sich mit Groovy-Closures und Lambda-Ausdrücken?
Hintergrund:
-
In früheren Java- und Groovy-Versionen unterschieden sich die Groovy-Closures von den Java-Lambda-Ausdrücken. Hier waren potenzielle Speicherlecks bekannt.
-
Mit der Umstellung auf Java 9 und Groovy 3 sind diese Probleme aus dem Weg geräumt.
Fazit:
-
Einfache Lambda-Ausdrücke für Comparatoren oder Filter bzw. für die Java-Stream-API können problemlos eingesetzt werden.
-
Für die Lesbarkeit ist es aber anzuraten, Closure-Konstrukte nur in der ersten Ebene anzuwenden und damit potenziell verstecke Fehlerquellen zu vermeiden.
-
Zusätzlich wird darauf hinzuweisen, dass für diese Konstrukte die Editor-Unterstützung fehlt und diese noch als Warnung angezeigt werden.
Können Kunden JsonSlurper oder XmlSlurper gefahrlos einsetzen?
Hintergrund:
-
Diese Klassen von Groovy erlauben ein vereinfachtes Schreiben von Json- und Xml-Code
-
Je nach Komplexität der Strukturen bietet hier Groovy einen komfortablen lesenden wie schreibenden Zugriff
Fazit:
-
Diese Klassen können in Skripte gefahrlos eingesetzt werden, mit der Version 24.3 werden sie offiziell unterstützt.
Kann ich in Groovy-Skripten externe Klassen importieren?
-
CURSOR Software AG gewährt nur Support auf die vom Skript-Editor oder in den Util-Klassen unterstützten Standard-Klassen, für die keine gesonderte Import-Anweisung notwendig ist. Diese sind von uns getestet und entsprechend freigegeben.
-
Externe Klassen sind durch einen gesonderten Import im Skript oder durch eine voll-qualifizierte Angabe des Klassennamens erkennbar.
-
Werden Klassen aus der JBoss-Bibliothek oder dem Groovy-Umfeld hinzugefügt, kann CURSOR Software AG nach einem Update keine Funktionsgarantie mehr geben, da diese Bibliotheken in neueren Versionen vorliegen können und evtl. nicht mehr kompatibel sind.
-
Werden externe Bibliotheken im JBoss eingebunden und in Skripten importiert, liegt die Verantwortung hierfür beim Skript-Ersteller (im Kundenprojekt).
-
Der Support erlischt hiermit nicht für die gesamte Skript-Klasse oder den BPM-Prozess sondern nur für den entsprechenden Code-Abschnitt.
Kann ich in Skripten eigene Klassen erzeugen?
-
In CURSOR-Skripten eigene Klassen zu erzeugen ist zwar möglich, bietet aber kaum einen Mehrwert
-
Es fehlt die Code-Editor-Unterstützung für diese Klassen und für eine Json-Umwandlung kann bspw. auch ein Map-Objekt genutzt werden
-
Diese Klassen können weder als Parameter- noch als Rückgabe-Typ in der Skript-Bibliothek verwendet werden
-
Objekte dieser Klassen sind als Prozess-Variablen gültig. Die Klassen-Definition gilt nur lokal für dieses Skript und nicht global für die CRM-Anwendung, d. h. in anderen Skripten oder bei der Deserialisierung von Variablen in der Prozess-Engine.
-
Wird in zwei Skript-Aktionen "dieselbe" Klasse definiert, so sind es doch zwei unterschiedliche Klassen
-
-
Eine Weiterverarbeitung dieser Objekte führte bereits zu bekannten Fehlern bei der Deserialisierung z. B. aus Prozessvariablen oder in den Rest-Schnittstellen!
NOCH FRAGEN?
Sprechen Sie Ihre Consultants an, die Ihre individuellen Fragen beantworten werden!