Einführung
In diesem Tutorial wird gezeigt, wie Sie Groovy-Skripte implementieren, um mit Datenrastern und Datenrasteriteratoren zu arbeiten. Sie verwenden bedingte Logik, um die Hintergrundfarben in einem Datenraster festzulegen, Performance-Benchmarking zu implementieren und Standarddatenwerte in einem Raster festzulegen.
Hintergrund
Eine Datenrasterschnittstelle bietet Zugriff auf die POV-/Zeilen-/Spaltenheaderzellen und stellt verschiedene Iteratoren für die Iteration über die Datenzellen bereit.
Voraussetzungen
Für praktische Tutorials zu Cloud EPM müssen Sie möglicherweise einen Snapshot in Ihre Cloud EPM Enterprise Service-Instanz importieren. Bevor Sie einen Tutorial-Snapshot importieren können, müssen Sie eine andere Cloud EPM Enterprise Service-Instanz anfordern oder Ihre aktuelle Anwendung und Ihren aktuellen Geschäftsprozess entfernen. Der Tutorial-Snapshot wird weder über Ihre vorhandene Anwendung oder Ihren vorhandenen Geschäftsprozess importiert, noch wird er die Anwendung oder den Geschäftsprozess, mit dem Sie derzeit arbeiten, automatisch ersetzen oder wiederherstellen.
Bevor Sie mit diesem Tutorial beginnen, müssen Sie:
- Haben Sie Serviceadministratorzugriff auf eine Cloud EPM Enterprise Service-Instanz.
- Laden Sie diesen Snapshot hoch, und importieren Sie ihn in Ihre Planning-Instanz.
Hinweis:
Wenn beim Importieren des Snapshots Migrationsfehler auftreten, führen Sie die Migration erneut aus, ausgenommen die HSS-Shared Services-Komponente sowie die Artefakte der Sicherheits- und Benutzervoreinstellungen in der Core-Komponente. Weitere Informationen zum Hochladen und Importieren von Snapshots finden Sie in der Dokumentation Migration für Oracle Enterprise Performance Management Cloud verwalten.Tipp:
Die Skripte, die Sie für dieses Tutorial benötigen, sind in jedem Abschnitt als Textdateien verknüpft.Hintergrundfarbe mit bedingter Logik festlegen
In diesem Abschnitt implementieren Sie ein Groovy-Skript, um die Hintergrundfarbe für Zellen mit dem Datenwert #MISSING auf Farbe █ (0x00BFFF) einzustellen, Zellen mit einem Datenwert kleiner oder gleich 50000 auf Farbe █ (0xFF8C00) und Zellen mit Datenwerten größer als 50000 auf Farbe █ (0x00FA9A).
Hinweis:
Nachdem Sie ein Groovy-Skript definiert haben, kann es im Gegensatz zu Datenvalidierungsregeln, die im Kontext jedes Formulars definiert werden müssen, mit jedem beliebigen Formular verknüpft werden.- Öffnen Sie Calculation Manager, und erstellen Sie eine Regel mit dem Namen Groovy Set Background Color im Cube Plan1.
- Ändern Sie im Regeleditor die Designeroption in Skript bearbeiten, und setzen Sie den Skripttyp auf Groovy-Skript.
- Kopieren Sie dieses Skript und fügen Sie es in den Editor ein:
- Klicken Sie in der Symbolleiste auf
(Speichern), um das Skript zu speichern, und klicken Sie dann auf
(Validieren und bereitstellen), um das Skript zu validieren und bereitzustellen. Klicken Sie auf OK, wenn Sie dazu aufgefordert werden. Schließen Sie Calculation Manager.
- Öffnen Sie im Navigator den Formularmanager, und wählen Sie das Formular EmployeeDriverForm aus.
- Bearbeiten Sie das Formular, und ordnen Sie die Groovy Set-Hintergrundfarbe der Regel zu, die nach dem Laden ausgeführt werden soll. Speichern Sie das Formular, und schließen Sie das Fenster "Formularmanager".
- Klicken Sie im Navigator oder auf der Homepage auf Daten. Öffnen Sie das Formular EmployeeDriverForm, und prüfen Sie, ob das Skript die Zellen entsprechend markiert.


operation.grid.dataCellIterator.each {if(it.missing) {
it.bgColor = 0x00BFFF
} else if(it.data <= 50000)
it.bgColor = 0xFF8C00
else if(it.data > 50000) it.bgColor = 0x00FA9A
}
Das Skript iteriert über jede Datenzelle im aktuellen Datenraster
operation.grid
, das von dataCellIterator
zurückgegeben wird.
Die implizite Variable "it" bezieht sich auf das aktuelle Element, über das iteriert wird. In diesem Fall verweist die Variable "it" auf die aktuelle Datenzelle, die von dataCellIterator
zurückgegeben wird.
Tipp:
Sie können auch eine explizit benannte Variable wie "cell" verwenden, wie im folgenden Beispiel gezeigt:operation.grid.dataCellIterator.each { cell -> if(cell.missing) { cell.bgColor = 0x00BFFF } }
Für die aktuelle Datenzelle sucht das Skript nach einem fehlenden Wert.
Hinweis:
Beachten Sie, dasscell.data
0 (Null) für Zellen zurückgibt, die #MISSING oder Null sind. Um eine Zelle auf #MISSING und nicht auf Null zu prüfen, können Sie die Eigenschaft cell.missing
verwenden. Um eine Zelle auf Nullwert und nicht auf #MISSING zu prüfen, können Sie eine Bedingung wie cell.data == 0 && !cell.missing
verwenden. Wenn TRUE, setzt das Skript die Hintergrundfarbe der Zelle auf
0x00BFFF
( █ )
Das Skript prüft, ob der Datenwert kleiner oder gleich 50000 ist.
Wenn TRUE, setzt das Skript die Hintergrundfarbe der Zelle auf
0xFF8C00
( █ )
Wenn der Datenwert der Zelle mehr als 50000 beträgt, setzt das Skript die Hintergrundfarbe der Zelle auf
0x00FA9A ( █ )




Profilerstellung und Debugging des Skripts
In diesem Abschnitt lernen Sie, wie Sie Iteratoren verwenden, die von der DataGrid-Schnittstelle bereitgestellt werden, den Code profilieren und Debugginganweisungen zur Jobkonsole hinzufügen.
- Öffnen Sie Calculation Manager, und erstellen Sie eine Regel mit dem Namen Groovy Iterator-Performance im Cube Plan1.
- Ändern Sie im Regeleditor die Designeroption in Skript bearbeiten, und setzen Sie den Skripttyp auf Groovy-Skript.
- Kopieren Sie dieses Skript und fügen Sie es in den Editor ein:
- Klicken Sie in der Symbolleiste auf
(Speichern), um das Skript zu speichern, und klicken Sie dann auf
(Validieren und bereitstellen), um das Skript zu validieren und bereitzustellen. Klicken Sie auf OK, wenn Sie dazu aufgefordert werden. Schließen Sie Calculation Manager.
- Öffnen Sie im Navigator den Formularmanager, und wählen Sie das Formular EmployeeDriverForm aus.
- Bearbeiten Sie das Formular, und ordnen Sie die Groovy Iterator-Regelperformance zu, die nach dem Speichern ausgeführt werden soll. Speichern Sie das Formular, und schließen Sie das Fenster "Formularmanager".
- Klicken Sie im Navigator oder auf der Homepage auf Daten. Öffnen Sie das Formular EmployeeDriverForm, und ändern Sie das Mindestgehalt für Gehaltsgruppe 1 in 35000 und den Mindestbonus für Gehaltsgruppe 2 in 2000.
- Speichern und schließen Sie das Formular. Navigieren Sie zur Konsole "Jobs".
- Klicken Sie auf Groovy-Iteratorperformance, um die Jobdetails anzuzeigen. Klicken Sie auf den Status Abgeschlossen, um die Logmeldungen anzuzeigen, die vom Groovy-Skript gedruckt wurden.


def benchmark(GridIterator itr) {def start = currentTimeMillis()
itr.each { println "$it.memberNames, cell data: $it.data, $it.formattedValue" }
def elapsed = currentTimeMillis() - start println "\nTime taken by iterator: $elapsed"
} println "Iterate over all data cells in this data grid...\n"
benchmark operation.grid.dataCellIterator()
println "Iterate over edited data cells in this data grid...\n" benchmark operation.grid.dataCellIterator({DataCell cell -> cell.edited})
println "Iterate over Min Salary and Min Bonus data cells in this data grid...\n" benchmark operation.grid.dataCellIterator('Min Salary', 'Min Bonus')
![]()
Definieren Sie eine Utilitymethode namens
benchmark()
, die das angegebene GridIterator
verwendet, um über seine Zellen zu iterieren und die Liste der Elementnamen aus allen Dimensionen, die in der Zelle dargestellt werden, zusammen mit den zugehörigen Daten ausgibt. Es druckt auch die Zeit, die der Iterator benötigt.
Timer starten.
Wiederholen Sie die Iteration über jede Zelle mit dem angegebenen
GridIterator
, und geben Sie die Liste der Elementnamen aus allen Dimensionen aus, die in der Zelle dargestellt werden, zusammen mit dem Datenwert und dem formatierten Wert. $it.data
gibt den numerischen Wert für die Zelle zurück, und $it.formattedValue
gibt nicht numerische Werte zurück, wie Text, Smart List oder Datum, wie vom Benutzer eingegeben.
Drucken Sie die vom Iterator benötigte Zeit in die Jobkonsole.
Debugging-Meldung in Jobkonsole protokollieren
Rufen Sie die Methode
benchmark()
mit einem Iterator auf, um über jede Zelle im aktuellen Datenraster zu iterieren.
Rufen Sie die Methode benchmark() mit einem Iterator auf, um über die bearbeiteten Zellen im aktuellen Datenraster zu iterieren.
Tipp:
Dieser Iterator kann mit jeder Eigenschaft im Objekt DataCell verwendet werden, die einen booleschen Wert zurückgibt, z.B. gesperrt, fehlt, gültig, readOnly, validIntersection usw. Rufen Sie die Methode
benchmark()
mit einem Iterator auf, um über die Datenzellen "Min. Gehalt" und "Min. Bonus" im aktuellen Datenraster zu iterieren.





Der erste Iterator druckt alle Zellen und die Datenwerte, der zweite Iterator druckt nur die beiden Zellen, die bearbeitet wurden, und der dritte Iterator druckt nur die Zellen für die Spalten "Min. Gehalt" und "Min. Bonus".
Standarddatenwerte festlegen
In diesem Abschnitt erfahren Sie, wie Sie die Standarddatenwerte im Raster mit der Schnittstelle DataGridBuilder
festlegen.
- Öffnen Sie Calculation Manager, und erstellen Sie eine Regel namens Groovy Reset Grade Data im Cube Plan1.
- Ändern Sie im Regeleditor die Designeroption in Skript bearbeiten, und setzen Sie den Skripttyp auf Groovy-Skript.
- Kopieren Sie dieses Skript und fügen Sie es in den Editor ein:
Cube cube = operation.application.getCube("Plan1")
DataGridBuilder builder = cube.getDataGridBuilder("MM/DD/YYYY")
builder.addPov('FY16', 'Current', 'USD', 'BegBalance', 'BU Version_1', 'No Entity')
builder.addColumn('Min Salary', 'Max Salary', 'Min Bonus', 'Max Bonus') builder.addRow(['Grade 1'], [30000, 50000, '#missing', '#missing']) builder.addRow(['Grade 2'], [40000, 60000, '#missing', 5000]) builder.addRow(['Grade 3'], [70000, 90000, '#missing', 10000]) DataGridBuilder.Status status = new DataGridBuilder.Status()
builder.build(status).withCloseable { DataGrid grid ->
println("Total number of cells accepted: $status.numAcceptedCells")
println("Total number of cells rejected: $status.numRejectedCells") println("First 100 rejected cells: $status.cellsRejected") cube.saveGrid(grid)
}
- Klicken Sie in der Symbolleiste auf
(Speichern), um das Skript zu speichern, und klicken Sie dann auf
(Validieren und bereitstellen), um das Skript zu validieren und bereitzustellen. Klicken Sie auf OK, wenn Sie dazu aufgefordert werden. Schließen Sie Calculation Manager.
- Öffnen Sie im Navigator den Formularmanager, und verknüpfen Sie die Regel "Groovy QK-Stufen zurücksetzen" mit dem Formular EmployeeDriverForm. Speichern Sie das Formular, und schließen Sie das Fenster "Formularmanager".
- Klicken Sie auf der Planning-Homepage auf Daten. Öffnen Sie das Formular EmployeeDriverForm, klicken Sie auf Aktionen, und wählen Sie Geschäftsregeln aus dem Dropdown-Menü aus. Klicken Sie auf Groovy: Gehaltsgruppendaten zurücksetzen, um die Regel auszuführen.
- Nachdem die Regel erfolgreich ausgeführt wurde, klicken Sie im Dialogfeld "Informationen" auf OK, und prüfen Sie, ob die Rasterdaten zurückgesetzt wurden.
- Schließen Sie das Formular, und navigieren Sie, um die Jobkonsole zu öffnen.
- Klicken Sie auf Groovy - Gehaltsgruppendaten zurücksetzen, um die Tätigkeitsdetails anzuzeigen. Klicken Sie auf den Status Abgeschlossen, um die Details anzuzeigen, wie viele Zellen akzeptiert und/oder abgelehnt wurden.
Cube-Objekt für den Cube "Plan 1" erstellen
Ruft eine DataGridBuilder für den Cube ab. Definieren Sie das Format, in dem das Skript die Datumswerte bereitstellt.
Hinweis:
Die DataGridBuilder unterstützt auch das Speichern von Daten im Namen eines Systembenutzers, indemExecuteAsUser
als zweiter Parameter akzeptiert wird. Wenn Sie Daten als Systembenutzer speichern, können Daten gespeichert werden, ohne die Sicherheit des aktuellen Benutzers anzuwenden. Gültige Werte für ExecuteAsUser
sind CURRENT_USER
(Standard) und SYSTEM_USER
, wie im folgenden Beispiel dargestellt:DataGridBuider builder = cube.dataGridBuilder("MM/DD/YYYY", SYSTEM_USER)
Erstellen Sie ein Datenraster, indem Sie die POV-Elemente, Spaltenelemente und Zeilen mit Datenwerten hinzufügen.
Erstellen Sie ein Statusobjekt für das Objekt DataGrid, das im nächsten Schritt erstellt wurde.
Erstellen Sie das Objekt DataGrid mit dem Konstrukt withCloseable. Das Konstrukt schließt das Objekt DataGrid, wenn der Codeblock die Ausführung abschließt. Dies ist wichtig, um sicherzustellen, dass das Objekt DataGrid nach Abschluss der Vorgänge nicht mehr im Speicher geöffnet bleibt.
Drucken Sie die Anzahl der Zellen, die vom Builder akzeptiert oder abgelehnt wurden, in die Jobkonsole. Schreibgeschützte Zellen werden abgelehnt.
Speichern Sie das Daten-Grid.
Das Raster wird automatisch geschlossen.





Nächste Anleitung
Verwandte Links
Weitere Lernressourcen
Sehen Sie sich weitere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem Oracle University, um verfügbare Schulungsressourcen anzuzeigen.
Die Produktdokumentation finden Sie im Oracle Help Center.
Mit Datenrastern und Iteratoren in Groovy arbeiten
G42658-01
September 2025