Quando si esegue la migrazione a una versione aggiornata di Groovy, è possibile che si verifichino alcuni problemi che devono essere risolti. Un programma denominato Convalida script Groovy consente di trovare le regole da modificare e fornisce un report in modo da poter risolvere eventuali problemi.
Note:
Convalida script Groovy è disponibile solo quando l'applicazione contiene regole business Groovy create dall'utente. Per informazioni su come eseguire Convalida script Groovy, fare riferimento alla sezione Convalida di script Groovy.
Dopo aver eseguito Convalida script Groovy dall'applicazione, utilizzare le informazioni contenute in questo argomento per risolvere i problemi di convalida.
Linee guida generali
Utilizzare i tipi di dati espliciti anziché def. Ad esempio, specificare il tipo di dati esplicito per le variabili, ad esempio String, int, List<String> o Map<String,Integer>.
Nota: se si utilizza def senza il flag dello strumento di convalida, è possibile lasciarlo invariato.
Se si verifica un errore durante l'utilizzo di numeri a virgola mobile, utilizzare il suffisso "d" per assicurarsi che i numeri a virgola mobile vengano trattati come "double" anziché come "BigDecimal". Ad esempio, it.data = 1212121212.111d.
Se si visualizza un errore incomprensibile, verificare che la prima riga dello script sia simile alla seguente: /*RTPS: */
Anche in assenza di prompt runtime, assicurarsi che questa sia la prima riga.
Se sono presenti prompt runtime, aggiungerli alla prima riga come indicato di seguito: /*RTPS: {selectedDepartment} {hireDate} {newEmployeeName} */.
Note:
A partire dall'aggiornamento di ottobre (25.10), non sarà più necessario sostituire le funzioni Date non più valide con le funzioni Calendar corrispondenti nell'ambito del processo di convalida. Questo sarà risolto e non sarà più un problema. I metodi Date.format(), Date.getAt(), Date.parse() e così via funzioneranno e non visualizzeranno più errori di convalida.
Errori e correzioni suggerite
Table 3-2 Errori e correzioni suggerite
| Errore | Codice di esempio | Possibile causa | Possibile soluzione |
|---|---|---|---|
|
Nessuna proprietà di questo tipo: |
N/D |
Questo può essere il risultato del mancato utilizzo del modello RTPS e dell'utilizzo di parentesi quadre o graffe per fare riferimento alle variabili. In questo modo il motore Groovy tenterà di valutare questi elementi come espressioni Groovy. |
Utilizzare |
|
Impossibile assegnare un valore del tipo |
|
L'errore si verifica perché i dati elenco (List) non vengono digitati in modo esplicito, pertanto Groovy li considera come |
Per risolvere il problema, eseguire una delle operazioni descritte di seguito.
|
|
Impossibile assegnare un valore del tipo |
|
L'errore si verifica perché l'oggetto assegnato non viene digitato in modo esplicito o convertito tramite cast in |
Per risolvere il problema, eseguire la conversione del valore tramite cast in Utilizzare la sintassi Ad esempio:
|
|
Impossibile assegnare un valore del tipo |
|
L'errore si verifica perché |
Per risolvere il problema, aggiungere il cast Ad esempio:
|
|
Impossibile chiamare quanto segue:
con argomenti [java.util.List <java.lang.Object>, java.util.List <java.lang.Object>] |
|
L'errore si verifica perché gli argomenti |
Per risolvere il problema, specificare il tipo di dati della variabile. Ad esempio:
|
|
Impossibile chiamare quanto segue:
con argomenti
|
|
L'errore si verifica perché gli argomenti |
Per risolvere il problema, aggiungere il cast Ad esempio:
|
|
Impossibile chiamare quanto segue:
con argomenti
|
|
L'errore si verifica perché gli argomenti |
Per risolvere il problema, aggiungere il cast Ad esempio:
|
|
Impossibile trovare il metodo corrispondente |
|
L'errore si verifica perché il metodo |
Per risolvere il problema, immettere quanto segue:
|
|
Impossibile trovare il metodo corrispondente |
|
L'errore si verifica perché il metodo format, precedentemente disponibile nelle versioni di Groovy meno recenti, non è più disponibile. |
Per risolvere il problema, immettere quanto segue:
|
|
Impossibile trovare il metodo corrispondente |
List <Cube> cube = operation.application.getCubes() Dimension dimScenario = operation.application.getDimension("Scenario", cube.toArray(new Cube[cube.size()])) |
Viene passato un elemento |
Per risolvere il problema, eseguire una delle operazioni descritte di seguito.
|