Startseite
jump to top

Startseite / Vorlagenentwicklung / Scripting / Do's and Don'ts

Do's and Don'ts

Importieren von Klassen

FirstSpirit- oder Java-Klassen sollten aus Performance-Gründen immer im Header eines Skripts importiert werden.
Beispiel:

//!Beanshell
// Schlecht
if (myVar instanceof java.lang.String) {
print("its a string!");
}
//!Beanshell
// Gut!
import java.lang.String;
if (myVar instanceof String) {
print("its a string!");
}

Beim Scripting mit BeanShell gibt es einige wenige Regeln, an die sich ein Vorlagenentwickler halten sollte, um Skripte wartungsarm und effizient zu gestalten.

Sperren von Objekten (Locking)

Das Setzen von Sperren (Locks) sollte immer nach folgendem Schema erfolgen:

//!Beanshell
import de.espirit.firstspirit.access.store.LockException;

try {
elm.setLock(true, false);
try {
...
elm.save("some comment", false);
} catch (Exception e) {
// catch handling
} finally {
elm.setLock(false, false);
}
} catch (LockException e) {
// Element locked, catch handling
}

Nur damit ist ein sicheres Entfernen der Sperre garantiert.

Iteration über die Kinder eines Elementes

Es kommt häufig vor, dass man über alle Kinder eines bestimmten Elementes (z. B. Ordner) iterieren möchte.

Wichtig ist dabei zu beachten, dass die Liste (insbesondere, wenn rekursiv alle Kinder betrachtet werden) sehr lang sein kann und daher immer mit Iteratoren (niemals mit Arrays oder kompletten Listen) gearbeitet werden sollte.

Hier ein Code-Beispiel für die korrekte Iteration über die Kinder eines Elementes im Baum, wobei die Kinder nach einer bestimmten Klasse (hier „MyClass“) gefiltert werden.

//!Beanshell

// ..Ermittlung der Variable folder...

for (elem : folder.getChildren(MyClass.class, true).iterator()) {
print(elm.getSomeValue(...));
}

Logausgaben

Die Ausgabe eines Ausdrucks oder einer Variablen erfolgt in BeanShell über das Kommando print():

//!Beanshell
// Schlecht
print()

Diese Ausgabe sollte durch eine differenzierte Ausgabe über die drei Logging-Methoden:

  • logInfo
  • logError
  • logDebug

ersetzt werden. Die Log-Methoden stehen im jeweiligen Skript-Kontext zur Verfügung.

Beispiel:

 //!Beanshell
// gut
context.logDebug(...)
Extras - Erweiterte Protokollierung aktivieren

Extras - Erweiterte Protokollierung aktivieren

Der Vorteil ist: Die Protokollierung von Skripten kann auf einfache Art beeinflusst werden. So kann für Skripte beispielsweise eine „erweiterte Protokollierung“ im FirstSpirit SiteArchitect aktiviert werden (siehe Abbildung oder Extras (→Handbuch FirstSpirit SiteArchitect)).

Bestimmte Informationen werden nur in der erweiterten Protokollierung angezeigt bzw. ausgegeben und können zum Debugging eines Skripts genutzt werden. Ist das nicht mehr erwünscht, kann die Protokollierung einfach wieder deaktiviert werden.

© 2005 - 2020 e-Spirit AG | Alle Rechte vorbehalten. | FirstSpirit 2020-07 | Datenschutz | Impressum | Kontakt