Tja … Das war der Plan, aber am Ende war das Design des entwickelten Servers nicht so wie gedacht.
Ich gebe Euch mal ein bisschen Hintergrund zu der ganzen Geschichte und probiere mich kurz zu fassen.
Vor vielen Jahren kam während einer Schulung bei einem Kunden der Wunsch auf Vokabulare zu verwalten. Daraufhin wurde während der Dienstreise Abends im Hotel, auf dem Flughafen, in der Bahn und am darauf folgenden Wochenende das Plugin “Vokabularverwaltung” entwickelt. Intern als JSON Datei im Dateisystem serialisiert…
Dann wünschte sich kurze Zeit später ein Kunde daraus ein Glossar im Goobi viewer anzuzeigen. Also wurde dieser erweitert um die JSON Dateien entgegen zu nehmen und innerhalb einer CMS-Seite als Glossar zu rendern.
Das Plugin war dann immer mal wieder in verschiedenen Projekten im Einsatz aber wir sind da an Limits gestoßen. Also sind zwei Entscheidungen getroffen worden:
- Das Plugin wird direkt in den Goobi workflow Core integriert
- Die Datenspeicherung wird von einer JSON Datei im Dateisystem in die SQL Datenbank überführt
Als die Vokabularverwaltung dann Teil des Kerns war kamen auf einmal viele neue Einsatzszenarien zutage für die das absolut prädestiniert ist. Allerdings wurde das halt nie dafür entwickelt, sondern der eigentliche Fokus der Entwicklung bestand nur aus dem was der Kunde auf der Dienstreise wollte und wo das in einer Nacht- und Nebel Aktion entwickelt wurde sowie der Goobi viewer Erweiterung des zweiten Kunden…
Der Status war ab diesem Zeitpunkt so, dass der Bereich etwas suggerierte zu können was es prinzipiell auch gut und einfach können würde, wenn man es denn dann entwickeln würde. Es bestand und besteht eine Diskrepanz aus dem was Anwender denken das es kann und dem was der Code hergibt.
Der Bereich wurde auch beständig weiterentwickelt. Immer in die Richtung die gerade benötigt wurde. Zum Beispiel um verschiedene Datenformate, ein internes XML aber auch SKOS oder JSKOS meine ich. Und so kamen immer wieder lose Enden zu Tage an denen man dachte: Ähhh … und warum geht es hier jetzt nicht weiter?
Einer der Bereiche war das, wo wir uns über den Vokabularserver Gedanken gemacht haben. Denn die Situation ist gerade, dass in der METS-Datei ein Eintrag aus einem Vokabular mit einer URL referenziert werden kann die dann XML, JSON etc. ausliefern kann mit weiteren Informationen. Genau so wie ein GND, VIAF oder Geonames Eintrag. Aber hier sind jetzt genau zwei lose Enden:
- Die URL verweist auf einen Goobi workflow REST Endpoint, die METS-Datei ist im Goobi viewer und Goobi workflow ist in ganz vielen Einrichtungen nicht von extern erreichbar. Es steht also eine URL in der METS-Datei und wenn die jemand auflösen will um mehr Informationen zum Eintrag zu bekommen geht das nicht
- Der Goobi viewer Indexer kann damit noch nicht umgehen. Er kann zwar GND, VIAF oder Geonames weil das alles mal beauftragt und implementiert wurde, aber er hat keine Unterstützung für den Goobi workflow internen Vokabularserver
Wir können an der Stelle immer nur Schrittweise vorgehen und versuchen eins nach dem anderen weiterzuentwickeln. Und eine Idee war es jetzt einen unabhängigen Dienst, den Vokabularserver zu entwickeln, der dann auf dem Goobi viewer Server als Dienst läuft. Dieser Dienst wird über HTTPS / REST und einfache CRUD Befehle angesprochen. In Goobi workflow gibt es das UI für die Vokabularverwaltung und weil der Dienst auf dem Goobi viewer Server läuft können wir die URLs so gestalten, dass sie immer von überall weltweit auch aufrufbar sind.
Idee war auch aus Goobi workflow heraus direkt auf dem Vokabularserver zu arbeiten, damit es immer einen Single-Point-of-Truth gibt.
Allerdings wurde dann der Authority Server nicht so entwickelt wie gedacht. Es wurde entwickelt, dass man in Goobi workflow auf einen Knopf drückt und dann wird eine Kopie dahin geschoben und die URLs in den METS-Dateien waren auch nicht angepasst. Aufgrund personeller Veränderungen und auch weil die Implementierung nicht dem entspricht was eigentlich initial gedacht war haben wir die Software nicht veröffentlicht.
Wir gehen hier jetzt gerade einen anderen Weg. Die Vokabulare sollen in der Zukunft einen zentralen Punkt in Goobi workflow einnehmen. Dafür arbeiten wir jetzt in kleinen Schritten an verschiedenen Stellen. Ab dem nächsten Release heißt der Bereich “Vokabulare” und wir haben an einigen Stellen bei Spaltenbenennungen oder Icons Änderungen vorgenommen um das konsistenter zu dem Rest der Bedienung zu machen. Parallel haben wir im letzten Jahr bereits begonnen überall dort wo es sinnvoll ist mit Kunden zu besprechen, dass bei potentiellen Beauftragungen mittel für die Erweiterung des Bereichs eingeplant werden. Das können kleinere aber auch größere Dinge sein. Gerne gebe ich Euch Beispiele für kleinere Einschränkungen die auch gut und gerne über Supportstunden bearbeitet werden können
Aber auch an anderen Stellen arbeiten wir. Zum Beispiel investieren wir gerade viel Zeit darein um die Metadatenbibliothek UGH mit Unit Tests abzudecken, da wir die Konfigurationsmöglichkeiten konzentrieren möchten. Einstellungen aus der goobi_digitalCollections.xml oder der goobi_metadataDisplayRules.xml sollen nach unseren Plänen nämlich in Vokabulare oder den Regelsatz wandern.
Das sind aber langfristige Pläne und nichts was wir heute ankündigen und dann in zwei Monaten da ist. Wir haben niemanden der uns diese Arbeiten finanziert, deswegen laufen sie immer mal nebenher aber Support und Projekte mit Entwicklungsaufträgen genießen Priorität.
So. Nun ist die Antwort doch etwas länger geworden, aber vielleicht bringt sie etwas Klarheit in die aktuelle Sachlage