Übersicht
Groovy ist eine der in Fess verfügbaren Skriptsprachen. Sie läuft auf der Java Virtual Machine (JVM) und ermöglicht es Ihnen, bei hoher Kompatibilität mit Java Skripte mit einer prägnanteren Syntax zu schreiben.
Wichtig
Ab Fess 15.9 wird Groovy als fess-script-groovy-Plugin bereitgestellt, und das Plugin ist nicht Teil der Distribution. Installieren Sie es über die Seite System > Plugin in der Administrationsoberfläche oder mit bin/fess-setup install plugin fess-script-groovy. Für eine manuelle Installation legen Sie die entsprechende JAR-Datei (Beispiel: fess-script-groovy-15.9.0.jar) im Verzeichnis app/WEB-INF/plugin/ ab und starten Fess nach der Installation neu.
Die Standard-Skriptsprache ist ab Fess 15.9 JavaScript. Eine Skript-Konfiguration ohne hinterlegten Skripttyp wird als Groovy behandelt, sodass eine vor 15.9 erstellte Konfiguration mit ihrem Groovy-Skript nach dem Upgrade unverändert weiterläuft. Wenn Sie ab 15.9 eine neue Konfiguration mit Groovy anlegen, setzen Sie den Skripttyp explizit auf groovy. Für JavaScript siehe JavaScript-Skripting-Leitfaden.
Grundlegende Syntax
Variablendeklaration
Zeichenkettenoperationen
Collection-Operationen
Bedingte Verzweigung
Schleifenverarbeitung
Datenspeicher-Skripte
Beispiele fuer Skripte zur Datenspeicher-Konfiguration.
Bemerkung
In Datenspeicher-Skripten wird jede Feldname=Ausdruck-Zeile unabhaengig als einzelner Ausdruck ausgewertet. Daher koennen import-Anweisungen, mehrzeilige def-Deklarationen und mehrzeilige Kontrollstrukturen, die mehrere Felder gleichzeitig setzen (z. B. if-Bloecke), nicht verwendet werden. Wenn Sie Java-Klassen verwenden, schreiben Sie diese als einzelnen Ausdruck mit vollstaendig qualifiziertem Klassennamen (FQCN), und verwenden Sie fuer bedingte Werte den Ternaeroperator pro Feld (zum Beispiel url=data.published ? data.url : null ). Der hier verwendete Variablenname data ist nur ein Beispiel; der tatsaechliche Variablenname haengt vom verwendeten Datenspeicher-Konnektor ab. Details finden Sie unter Datenspeicher-Crawl.
Grundlegendes Mapping
URL-Generierung
Inhaltsverarbeitung
Datumsverarbeitung
Verfuegbare Objekte
Die in Skripten verfuegbaren Objekte variieren je nach Ausfuehrungskontext.
| Kontext | Objekt | Beschreibung |
|---|---|---|
| Alle Kontexte | container | DI-Container. Wird fuer den Zugriff auf Komponenten ueber container.getComponent("...") verwendet |
| Geplante Aufgaben | executor | Job-Ausfuehrungssteuerung ( JobExecutor ). Erforderlich fuer die Unterstuetzung des Jobstopps |
| Datenspeicher | (Connector-spezifisch) | Von jedem Datenspeicher bereitgestellte Datensatzvariablen. Der Variablenname haengt vom Konnektor ab |
| Pfad-Mapping | url , matcher | Die zu konvertierende URL-Zeichenkette und das Ergebnis des Regulaerausdruck-Abgleichs ( Matcher ). Verfuegbar in Ersetzungseinstellungen mit dem Praefix groovy: |
| Dokument-Boost | (Dokumentfelder) | Jedes Feld des Zieldokuments ist als Variable verfuegbar (wird in Bedingungs- und Boost-Wert-Ausdruecken verwendet) |
Geplante Aufgaben-Skripte
Beispiele fuer Groovy-Skripte in geplanten Aufgaben. In geplanten Aufgaben sind container und executor verfuegbar. Durch Uebergabe von executor an die execute()-Methode des Jobs wird die Jobstoppsteuerung aktiviert.
Bemerkung
Ein geplantes Aufgaben-Skript wird als vollstaendiges Groovy-Skript in einem einzigen Durchlauf ausgewertet. Daher koennen Sie im Gegensatz zu Datenspeicher-Skripten import-Anweisungen, mehrzeilige def-Deklarationen und mehrzeilige Kontrollstrukturen verwenden. Die nachfolgenden Beispiele unter „Java-Klassen verwenden“, „Zugriff auf Fess-Komponenten“, „Fehlerbehandlung“ und „Debugging und Protokollausgabe“ setzen ebenfalls diesen vollstaendigen Skript-Kontext voraus.
Crawl-Aufgabe ausfuehren
Bedingtes Crawling
Mehrere Aufgaben nacheinander ausfuehren
Java-Klassen verwenden
Innerhalb von Groovy-Skripten koennen Sie Java-Standardbibliotheken und Fess-Klassen verwenden.
Datum und Uhrzeit
Dateioperationen
HTTP-Kommunikation
Warnung
Der Zugriff auf externe Ressourcen beeintraechtigt die Leistung, halten Sie ihn daher auf ein Minimum.
Zugriff auf Fess-Komponenten
Sie koennen mit container auf Fess-Komponenten zugreifen.
System-Helfer
Konfigurationswerte abrufen
Suchen ausfuehren
Fehlerbehandlung
import-Anweisungen muessen am Anfang des Skripts stehen (sie koennen nicht innerhalb von Bloecken wie try-catch platziert werden). Mit try-catch koennen Ausnahmen abgefangen und Job-Fehler gesteuert werden.
Debugging und Protokollausgabe
Protokollausgabe
Debug-Ausgabe
Best Practices
Einfach halten: Komplexe Logik vermeiden und lesbaren Code schreiben
Null-Pruefungen:
?.und?:Operatoren nutzenAusnahmebehandlung: Unerwartete Fehler mit geeignetem try-catch behandeln
Protokollausgabe: Protokolle fuer einfacheres Debugging ausgeben
Leistung: Zugriff auf externe Ressourcen minimieren
Referenzinformationen
Skripting-Übersicht - Skripting-Übersicht
JavaScript-Skripting-Leitfaden - JavaScript-Skripting-Leitfaden (die Standard-Skriptsprache)
Datenspeicher-Crawl - Datenspeicher-Konfigurationsleitfaden
Scheduler - Scheduler-Konfigurationsleitfaden