Bei der Migration zu einer aktualisierten Version von Groovy können bestimmte Probleme auftreten, die behoben werden müssen. Ein Programm namens Groovy Script Validator hilft bei der Suche nach den Regeln, die angepasst werden müssen, und stellt einen Bericht zu Problemen bereit, die behoben werden müssen.
Note:
Groovy Script Validator ist nur verfügbar, wenn Ihre Anwendung von Benutzern erstellte Groovy-Geschäftsregeln enthält. Informationen zum Ausführen von Groovy Script Validator finden Sie unter Groovy-Skripte validieren.
Nachdem Sie Groovy Script Validator über Ihre Anwendung ausgeführt haben, können Sie Validierungsprobleme anhand der Informationen in diesem Thema beheben.
Allgemeine Richtlinien
Verwenden Sie explizite Datentypen anstelle von def. Beispiel: Geben Sie den expliziten Datentyp für Variablen an, wie z.B. String, int, List<String> oder Map<String,Integer>.
Hinweis: Wenn Sie das Schlüsselwort def verwenden und es vom Validierungstool nicht gekennzeichnet wird, können Sie es unverändert lassen.
Wenn beim Arbeiten mit Gleitkommazahlen ein Fehler auftritt, verwenden Sie das Suffix "d", um sicherzustellen, dass die Gleitkommazahlen als "Double" anstatt "BigDecimal" behandelt werden. Beispiel: it.data = 1212121212.111d.
Wenn Sie eine Fehlermeldung erhalten, die Sie nicht verstehen, stellen Sie sicher, dass die erste Zeile des Skripts wie folgt aussieht: /*RTPS: */
Auch wenn Sie keine RTPs verwenden, muss die erste Zeile diesen Text enthalten.
Wenn Sie RTPs verwenden, fügen Sie diese der ersten Zeile wie folgt hinzu: /*RTPS: {selectedDepartment} {hireDate} {newEmployeeName} */.
Note:
Ab dem Oktober-Update (25.10) müssen Sie im Rahmen des Validierungsprozesses veraltete Datumsfunktionen nicht mehr durch entsprechende Kalenderfunktionen ersetzen. Dieses Problem wird behoben und tritt künftig nicht mehr auf. Die Methoden "Date.format()", "Date.getAt()", "Date.parse()" usw. funktionieren künftig, und es werden keine Validierungsfehler mehr angezeigt.
Fehler und empfohlene Korrekturen
Table 3-2 Fehler und empfohlene Korrekturen
| Fehler | Beispielcode | Mögliche Ursache | Mögliche Lösung |
|---|---|---|---|
|
Folgende Eigenschaft nicht vorhanden: |
N/V |
Das kann darauf zurückzuführen sein, dass das RTPS-Modell nicht verwendet wird und dass die Variablen über eckige Klammern oder geschweifte Klammern referenziert werden. Das führt dazu, dass die Groovy-Engine versucht, die Variablen als Groovy-Ausdrücke auszuwerten. |
Verwenden Sie |
|
Wert vom Typ |
|
Der Fehler tritt auf, da die Listendaten nicht explizit eingegeben werden. Groovy behandelt sie daher als |
Führen Sie einen der folgenden Schritte aus, um dieses Problem zu beheben:
|
|
Wert vom Typ |
|
Der Fehler tritt auf, da das zuzuweisende Objekt nicht explizit eingegeben oder nicht explizit in |
Um dieses Problem zu beheben, müssen Sie den Wert in Verwenden Sie die Syntax Beispiel:
|
|
Wert vom Typ |
|
Der Fehler tritt auf, da |
Um dieses Problem zu beheben, fügen Sie die Cast-Funktion Beispiel:
|
|
Folgendes kann nicht aufgerufen werden:
mit Argumenten [java.util.List <java.lang.Object>, java.util.List <java.lang.Object>] |
|
Der Fehler tritt auf, da die Argumente |
Um dieses Problem zu beheben, geben Sie den Datentyp der Variablen an. Beispiel:
|
|
Folgendes kann nicht aufgerufen werden:
mit Argumenten
|
|
Der Fehler tritt auf, da die Argumente |
Um dieses Problem zu beheben, fügen Sie die Cast-Funktion Beispiel:
|
|
Folgendes kann nicht aufgerufen werden:
mit Argumenten
|
|
Der Fehler tritt auf, da die Argumente |
Um dieses Problem zu beheben, fügen Sie die Cast-Funktion Beispiel:
|
|
Keine übereinstimmende Methode |
|
Der Fehler tritt auf, da die Methode |
Geben Sie Folgendes ein, um dieses Problem zu beheben:
|
|
Keine übereinstimmende Methode |
|
Der Fehler tritt auf, da die Formatierungsmethode, die in früheren Groovy-Versionen verfügbar war, jetzt nicht mehr verfügbar ist. |
Geben Sie Folgendes ein, um dieses Problem zu beheben:
|
|
Keine übereinstimmende Methode |
List <Cube> cube = operation.application.getCubes() Dimension dimScenario = operation.application.getDimension("Scenario", cube.toArray(new Cube[cube.size()])) |
|
Führen Sie einen der folgenden Schritte aus, um dieses Problem zu beheben:
|