Juni 2021
Entwicklungen und Neuerungen an Goobi workflow im Juni 2021
- Auslagerung einiger Statistiken zu Plugins mit Auffrischung der Nutzeroberfläche
- Implementierung einer neuen Such-Syntax
- Überarbeitung der internen Ordnerstruktur zur Einhaltung der Maven-Konvention
- Ausbau der Plugin-Dokumentationen
Goobi unterstützt nun die Konvertierung des Metadatenformats LIDO zu METS. So ist es von nun an zum Beispiel möglich, eine LIDO Datei zu importieren und intern wieder als METS-Datei zu speichern. Genauso lässt sich eine vorliegende METS-Datei auch wieder als LIDO-Datensatz exportieren.

Konvertierung von METS zu LIDO und zurück
Bisher wurden Bilder in LIDO als
<linkResource>
innerhalb des Elements <resourceRepresentation>
erwartet:<lido:administrativeMetadata>
<lido:resourceWrap>
<lido:resourceSet>
<lido:resourceRepresentation lido:type="local">
<lido:linkResource>00000001.jpg</lido:linkResource>
</lido:resourceRepresentation>
</lido:resourceSet>
</lido:resourceWrap>
</lido:administrativeMetadata>
Mit den Entwicklungen in diesem Monat ist es nun möglich geworden, dass Bilder stattdessen auch als
<resourceID>
angegeben werden können. Dies ist insbesondere für die Datenübernahme aus der Applikation MuseumPlus hilfreich:<lido:administrativeMetadata>
<lido:resourceWrap>
<lido:resourceSet>
<lido:resourceID>00000001.tif</lido:resourceID>
</lido:resourceSet>
</lido:resourceWrap>
</lido:administrativeMetadata>
Zu beachten ist: Wenn ein Bild zu einem Unterelement gehört, so muss die Angabe innerhalb des
<lido>
Elements erfolgen, das dieses Unterelement beschreibt.Vor kurzem hatten wir den sogenannten Variablen-Replacer dahingehend erweitert, dass dieser nun auch IIIF-URL für die zugehörigen Bilder eines Vorgangs in Skriptaufrufen erlaubt. Hier mussten wir noch einmal etwas nachkorrigieren, damit das Encoding der URLs für die jeweiligen Anwendungsfälle passt.
Die Vokabularverwaltung in Goobi workflow ermöglicht es, in der Nutzeroberfläche kontrollierte Vokabulare zu verwalten und diese im Metadateneditor als Auswahlmöglichkeiten für Metadatenfelder zu nutzen. Besonders praktisch ist hierbei, dass die Beschreibung für eine bestimmte Entität geändert werden kann und dadurch, dass in der METS-Datei nur auf einen Vokabular-Eintrag verlinkt wird, der Eintrag automatisch auch in allen Vorgängen aktualisiert wird. Aufgrund dieser Vorzüge wird die Vokabularverwaltung in immer mehr Projekten verwendet.

Die Vokabularverwaltung von Goobi findet immer mehr Einsatz
Ein Problem bei der Verwendung der Vokabulare kann entstehen, wenn nach dem Export der Daten auch der Goobi viewer auf die gleichen Vokabulare zugreifen soll, da die Goobi workflow Installation häufig von außerhalb des Einrichtungsnetzes nicht erreichbar, da sie sich hinter eine Firewall befindet. Aus diesem Grund haben wir einen neuen Vokabularserver entwickelt, auf den Goobi workflow alle Änderungen an den in diesem Sinne konfigurierten Vokabularen spiegelt. In die Metadaten der METS-Datei wird in einem solchen Fall die URL der Datensätze im öffentlich zugänglichen Vokabularserver eingetragen, der bei intranda gehostet und entsprechend weltweit erreichbar ist. So kann der Goobi viewer dann auch ohne Probleme auf die Vokabulare zugreifen und erhält so immer aktuelle Datensätze aus dem Vokabular.
Der Code zu diesem Server ist bisher noch nicht veröffentlicht und befindet sich im intranda-internen Git-Repository: https://gitea.intranda.com/intranda/goobi-authority-server. Dort befindet sich auch die noch interne Dokumentation im Repository: https://gitea.intranda.com/intranda/goobi-authority-server/src/branch/master/goobi-authority-server/docs/AuthorityServer.md. Über den Zeitpunkt der Veröffentlichung dieses Projektes haben wir bisher noch nicht entschieden. Zuvor möchten wir den Quellcode noch einem Review unterziehen und auch die Dokumentation aufbereiten und übersetzen.
Schon seit den ersten Tagen von Goobi existiert die Möglichkeit, dass Vorgänge auf der Basis einer Katalogabfrage erzeugt werden und somit die Daten aus dem Katalog nachnutzen. Leider ist jedoch die Antwort der jeweiligen Kataloge manchmal nicht so, dass Goobi beispielsweise die Publikationstypen verlässlich aus den zu erwartenden Feldern interpretieren kann. Daher gibt es schon lange die Möglichkeit, die Katalogantwort vor deren Auswertung mit dem sogenannten Beautifier zu manipulieren. Dies ging in der Vergangenheit bereits mit PICA-Datensätzen. Neu hinzugekommen ist nun, dass diese Möglichkeiten jetzt auch für MARC-Datensätze bestehen. Eine solche Konfiguration kann beispielsweise so aussehen:
In diesem Beispiel wird der Leader an Position
19
mit einem Leerzeichen (\u0020
) ersetzt, sofern im Leader an Position 6
der Wert e
steht.<beautify>
<setvalue tag="leader19" subtag="" value="\u0020">
<condition tag="leader6" subtag="" value="e" />
</setvalue>
</beautify>
Dieses Beispiel zeigt, wie bei einem Datensatz einer OPAC-Anfrage das Feld
<controlfield tag="999">
mit dem Wert KXP
erzeugt wird.<beautify>
<setvalue tag="999" subtag="" value="KXP" />
</beautify>
Diese Beispiel zeigt, wie ein Feldinhalt geändert werden kann. Hier wird das Feld
041$a
mit dem Wert ger
ersetzt, sofern es den Wert lat
enthält.<beautify>
<setvalue tag="041" subtag="a" value="ger">
<condition tag="041" subtag="a" value="lat" />
</setvalue>
</beautify>
Unter der folgenden URL ist die Konfiguration für Kataloge und auch die Festlegung des Beautifiers dokumentiert:

7.2 goobi_opac.xml
Goobi workflow (Deutsch)
https://docs.goobi.io/goobi-workflow-de/admin/7/7.2
Und weiter ging die wilde Fahrt auch in diesem Monat was die Accessibility-Optimierungen angeht. Man erhält schon den Eindruck, dass es sich hier um eine Lebensaufgabe handelt. Aber es fühlt sich doch immerhin schon danach an, als ob wir auf der Zielgeraden sind. Schauen wir mal, wie es im nächsten Monat aussieht. :)

Accessibility ist wichtiger als viele denken!
https://github.com/intranda/goobi-workflow/commit/bcc76fa67841af7a7fe2a50a1fe3398c12554d1c
https://github.com/intranda/goobi-workflow/commit/70f65c14ab97a2394a7d5b0d7baa98c6bc433af2
https://github.com/intranda/goobi-workflow/commit/b6bd4dad318910aa8d0aa98a8e8ea0d54ba469a3
https://github.com/intranda/goobi-workflow/commit/17b88937cc79b71c1914533aa85b3685c5ca01fc
https://github.com/intranda/goobi-workflow/commit/5806a5e8e5e011d2ac5ac6c68da2dfa950ec4a01
https://github.com/intranda/goobi-workflow/commit/106283895a5604de04c809d2e3a7bcfa99d8fc93
Das Kompilieren von Goobi workflow ist nun nicht mehr festgelegt auf die schon recht betagte Version 8 von Java. Stattdessen ist von nun an nicht mehr nur der Betrieb mit Java 11 möglich sondern auch das Kompilieren.

Auszug aus der Konsole nach dem Kompilieren von Goobi workflow mit Java 11
Für diejenigen, die Goobi gern einmal selbst kompilieren möchten, gibt es hier einmal eine Mini-Zusammenfassung, wie man dies selbst durchführen kann:
# install needed packages
sudo apt install git
sudo apt install maven
# checkout Goobi workflow from GitHub
git clone https://github.com/intranda/goobi-workflow.git
# go into the Goobi workflow project
cd goobi-workflow/Goobi/
# compile Goobi workflow
mvn package
JSON Web Tokens (JWTs) werden in Goobi workflow an immer mehr Stellen eingesetzt, um anderen Programmen oder auch Personen zu erlauben, bestimmte Aktionen für eine gewisse Zeit auszuführen. Bisher musste hierzu im Vorfeld ein
JWT-Secret
zwingend von Hand vorkonfiguriert werden, um diese Funktionalität nutzen zu können. Seit diesem Monat erzeugt Goobi workflow das JWT secret selbst, wenn es bisher noch nicht vorkonfiguriert wurde.
In der Standard-Installation ist das JWT-Secret noch auskommentiert und kann inidividuell konfiguriert werden
Bei der Implementierung der oben beschriebenen automatischen Generierung der JWT secrets, ist eine potentielle Sicherheitslücke aufgefallen: Die JWT keys wurden nicht rotiert, was einem Angreifer bei vielen abgefangenen Nachrichten eventuell ermöglicht hätte, das secret zu erraten. Dies wurde nun geändert und die keys werden alle 24 Stunden rotiert.
Ganz selten kommt es vor, dass Dateinamen von Bildern einzelner Vorgänge an Goobi vorbei umbenannt werden, so dass Goobi von diesen Umbenennungen bisher keine Kenntnis hatte und dies bei erneuten Exporten der METS-Dateien zu Problemen führen konnte.

Einstellung des Standard-Exports für METS-Dateien ohne Berücksichtigung des MIME-Types
Mit einer Anpassung des Standard-Exports umgehen wir diese Problematik nun. Denn im Falle der Projektkonfiguration, dass die METS-Datei dynamisch die Dateinamen abhängig vom erkannten MIME-Type (z.B. image/jpeg) erzeugt werden soll, erfolgt nun auch eine Aktualisierung der intern gespeicherten zwischenzeitlich geänderten Dateinamen innerhalb der METS-Datei. Somit werden solche potentiellen Fehlerfälle bei unabhängig von Goobi vorgenommenen Umbenennungen (z.B. angepasste Groß- und Kleinschreibung, geänderte Dateiendung) abgefangen.

Einstellung des Standard-Exports für METS-Dateien für die Berücksichtigung des MIME-Types
Wenig spektakulär für Nicht-Programmierer klingt eine aufwendige Umstellung die wir intern gerade vornehmen für weitere Code-Optimierungen. Wir verwenden hier gerade noch mehr die Programmbibliothek Lombok zur Code-Generierung von langweiligem aufgeblähtem aber leider notwenigem Quellcode, den man per Konvention innerhalb von Java-Applikationen haben muss.
Für diejenigen Leser, die selbst Java programmieren: Lombok ist definitiv einen Blick wert und übernimmt die automatische Generierung von Gettern, Settern, Konstruktoren und noch einiges mehr.

Generierung von Gettern und Settern durch Lombok
https://github.com/intranda/goobi-workflow/commit/17a0d32698c2c941cc7ec47317b08e0904dac756
https://github.com/intranda/goobi-workflow/commit/ef797453faf8c83a5bb6cd5096d04106cbebae18
https://github.com/intranda/goobi-workflow/commit/a3ee13e8559eceb29f059557fdf80bb093bf73fd
https://github.com/intranda/goobi-workflow/commit/5eb5eecb3dfe7e4bc103cd061b64d2b13dc17384
https://github.com/intranda/goobi-workflow/commit/afd5b82169ed063da7586ed9c329c5465785336f
https://github.com/intranda/goobi-workflow/commit/93b8d5cc45897e949322b79a8e3a7634bc1396c2
https://github.com/intranda/goobi-workflow/commit/16e903327281e247d6e3da84c4bf6224d89175f3
https://github.com/intranda/goobi-workflow/commit/665f4bd3e2d9b94d479f0fbdb89a0bea3f66d264
Die Metadatengruppen haben wir kürzlich bereich massiv erweitert. Für ein Projekt in Kroatien benötigten wir hier noch etwas Nacharbeit: Es war notwendig, dass Metdatengruppen auch dupliziert werden können, so dass diese nun korrekt alle zugehören Metadaten, Personen sowie Untergruppen mit duplizieren. Das spart einige unnötige manuelle Bearbeitungen.

Metadatengruppen lassen sich nun vollständig duplizieren
Last modified 2yr ago