Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 179 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

Deutsch

Loading...

Administration

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Dashboards

Loading...

Loading...

Exporte

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Generisch

Loading...

Importe

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Metadaten

Loading...

Loading...

OPAC

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Wiederholte Jobs

Loading...

Loading...

Statistiken

Loading...

Loading...

Arbeitsschritte

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Copy Master-Anchor

Goobi Administration Plugin für das Kopieren einer Anchor-Datei zu allen zugehörigen Bänden

Übersicht

Name
Wert

Identifier

intranda_administration_copymasteranchor

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

20.07.2024 19:04:29

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz des Administration Plugins für die automatisierte Übernahme einer zentralen Anchor-Datei eines Bandes (z.B. von Zeitschriften oder Mehrbändigen Werken) zu anderen Bänden innerhalb von Goobi workflow.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

/opt/digiverso/goobi/plugins/administration/plugin-administration-copyanchor-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin-administration-copyanchor-gui.jar

Es existiert derzeit keine Konfigurationsdatei für dieses Plugin.

Überblick und Funktionsweise

Wenn das Plugin korrekt installiert und konfiguriert wurde, ist es innerhalb des Menüpunkts Administration zu finden.

Definition eines Master-Anchors

Nach der vollständigen Einrichtung des Plugins kann dieses verwendet werden. Dazu wird zunächst innerhalb desjenigen Bandes, der als Master-Anchor markiert werden soll, das neu definierte Metadatum InternalNote hinzugefügt und als Wert AnchorMaster eingetragen. Im folgenden Screenshot wird dies einmal verdeutlicht:

Der somit angepasste Zeitschriftenband wurde mit dieser Änderung als Master definiert. Von nun an dienen die dort verwendeten Metadaten des übergeordneten Werkes (z.B. der Zeitschrift) als Vorgabe für alle anderen zugehörigen Bände. Änderungen, die für alle Bände innerhalb der Anchor-Dateien vorgenommen werden sollen, erfolgen daher von nun an innerhalb dieses Datensatzes.

Übernahme der Metadaten für alle zugehörigen Bände

Sowie innerhalb eines Goobi-Vorgangs ein Band als Master festgelegt wurde, kann das Plugin dazu genutzt werden, alle Metadaten des Masters auf alle zugehörigen Bände zu übertragen. Gehen Sie dazu folgendermaßen vor:

Öffnen Sie zunächst das Plugin mittels des Menüs Administration und darin des Menüpunktes Kopieren von Master-Anchor Daten.

Geben Sie in dem Inputfeld des Plugins den Katalog-Identifier des übergeordneten Werkes ein (z.B. die ID der Zeitschrift) und klicken sie anschließend auf den Butten Kopiervorgang starten. Hiermit wird der Kopiervorgang aufgerufen, der die Metadaten des Master-Anchor-Datensatzes automatisch in alle zugehörigen Bände (z.B. alle Bände der Zeitschrift) übernimmt.

Konfiguration

Das Plugin verfügt nicht über eine eigene Konfigurationsdatei. Dennoch ist eine Anpassung des verwendeten Regelsatzes zwingende Voraussetzung für den Betrieb des Plugins. Beispielhaft soll dies an einem Regelsatz aufgezeigt werden, der sich beispielsweise unter folgendem Pfad findet:

/opt/digiverso/goobi/rulesets/ruleset.xml

Innerhalb des Regelsatzes muss das Metadatum InternalNote definiert werden:

<MetadataType>
  <Name>InternalNote</Name>
  <language name="de">Interne Goobi-Anmerkung</language>
  <language name="en">Internal Note for Goobi</language>
</MetadataType>

Dieses Metadatum muss nun innerhalb der Definition der Bände erlaubt werden. Anhand eines Zeitschriftenbandes erfolgt dies beispielhaft so:

<DocStrctType topStruct="true">
  <Name>PeriodicalVolume</Name>
  <language name="de">Zeitschriftenband</language>
  <language name="en">Periodical volume</language>
  <!-- Definitions of other metadata and structure elemtents skipped here -->
  <metadata num="*">InternalNote</metadata>
</DocStrctType>

Mittels dieser Anpassung am Regelsatz sind die Vorbereitungen für die Verwendung des Plugins bereits abgeschlossen.

https://github.com/intranda/goobi-plugin-administration-copyanchor

Übersicht

Dokumentation für die Plugins der Open-Source-Software Goobi workflow von intranda

Auf den folgenden Seiten finden Sie die einzelnen zumeist kleineren Dokumentationen für verschiedene Plugins und Erweiterungen für Goobi workflow. Bitte wählen Sie zunächst im linken Bereich innerhalb des Inhaltsverzeichnisses das gewünschte Plugin aus, um zu Dokumentation zu gelangen.

Bitte beachten Sie, dass es innerhalb von Goobi workflow verschiedene Arten von Plugins für die jeweiligen Anwendungsszenarien gibt:

Export Plugins

Export Plugins dienen für den Export von Daten aus Goobi workflow zu einem anderen System. Sie werden entweder automatisch im Rahmen des Workflows ausgeführt oder durch einen manuellen Klick auf das entsprechende Icon in der Vorgangsliste. Installiert werden sie üblicherweise innerhalb dieses Pfades:

/opt/digiverso/goobi/plugins/export/

Die Einrichtung von Export Plugins innerhalb von Goobi erfolgt so, dass sie innerhalb eine Workflows für einen Arbeitsschritt aus der Liste der Step-Plugins ausgewählt werden und zusätzliche die Checkbox Export aktiviert wird. Üblicherweise wird ausserdem auch die Checkbox Automatische Aufgabe mit ausgewählt, um die Exporte automatisch in Verlauf des Workflows ausführen zu lassen.

Manche Export Plugins verfügen über eine eigene Konfigurationsdatei. Diese ist im allgemeinen so benannt wie das Plugin selbst und befindet sich üblicherweise unter folgendem Pfad:

/opt/digiverso/goobi/config/

Step Plugins

Step Plugins dienen für eine Erweiterung von Aufgaben innerhalb des Goobi Workflows. Mit solchen Plugins läßt sich beispielsweise eine individuelle Funktionalität in den Workflow integrieren, die Goobi nicht out-of-the-box mitbringt. Beispiele für solche Plugins sind unter anderem besondere Konvertierungsplugins, Erfassungsmasken, Bildmanipulationen etc.

Installiert werden solche Step Plugins in den Ordner:

/opt/digiverso/goobi/plugins/step/

Verfügt ein Plugin neben der eigentlichen Funktionalität ausserdem über eine Nutzeroberfläche, so muss der Teil der Nutzeroberfläche zusätzlich in diesen Ordner installiert werden:

/opt/digiverso/goobi/plugins/GUI/

Grundsätzlich werden Step Plugins in Goobi so eingerichtet, dass diese innerhalb einer Aufgabe als Plugin ausgewählt werden.

Zu beachten ist noch, dass es innerhalb von Step Plugins derzeit drei unterschiedliche Typen gibt:

Typ
Beschreibung

No GUI

Das Plugin bringt keine eigene Nutzeroberfläche mit und wird serverseitig im Hintergrund ausgeführt. Beispiel: Ein Plugin für die automatische Konvertierung von Bildern in ein anderes Dateiformat.

Part GUI

Das Plugin bringt einen Teil für eine Nutzeroberläche mit und wird innerhalb einer bearbeiteten Aufgabe optisch so integriert als wäre es Teil des Goobi Kerns. Hier kann der Nutzer mit der Nutzeroberfläche interagieren. Beispiel: Ein Plugin für den Upload von Bildern innerhalb einer Aufgabe.

Full GUI

Das Plugin bringt eine vollständige Nutzeroberfläche mit. Diese ist nicht unmittelbar in die Aufgabe integriert. Stattdessen wirde dem Nutzer ein Button angeboten, um das Plugin betreten zu können, so dass er dann darin mit dem Plugin interagieren kann. Beispiel: Plugin für die Bildkontrolle.

Manche Step Plugins verfügen über eine eigene Konfigurationsdatei. Diese ist im allgemeinen so benannt wie das Plugin selbst und befindet sich üblicherweise unter folgendem Pfad:

/opt/digiverso/goobi/config/

Opac Plugins

Opac Plugins dienen zur Kommunikation mit externen Datenquellen. Typische Beispiele hierfür sind Plugins für die Anbindung von Bibliothektskatalogen oder Datenbanken. Hierfür existieren je nach Datenquelle verschiedene Implementierungen, um die jeweilig zu verwendende Schnittstelle korrekt anzusprechen.

Opac Plugins werden üblicherweise unterhalb dieses Pfads installiert:

/opt/digiverso/goobi/plugins/opac/

Nach der Installation eines solchen Plugins steht es innerhalb der Anlegemaske für Vorgänge in Goobi in dem Feld Suche im Opac zur Verfügung.

Import Plugins

Import Plugins dienen für die Ausführung von größeren Massenimporten. Anders als bei Opac Plugins wird hier nicht Vorgang für Vorgang aus einer Datenquelle abgefragt. Stattdessen werden bei den Import Plugins die Daten meist zugleich für hunderte oder tausende Daten übernommen, die oft in unterschiedlichsten Formaten vorliegen. Gängige Beispiele sind hier unter anderem Import Plugins für das Einspielen von SQL-Dumps, Excel-Tabellen oder sonstigen proprietären Datenquellen.

Die Installation der Import Plugins erfolgt im Ordner:

/opt/digiverso/goobi/plugins/import/

Der Einsatz dieser Plugins erfolgt in einer eigenen Maske für Massenimporte, in der man den unterschiedlichen Importmechanismus sowie das gewünschte Plugin auswählt, bevor anschließend eine Auswahl der Daten erfolgt.

Einige Import Plugins verfügen über eine eigene Konfigurationsdatei. Diese ist im allgemeinen so benannt wie das Plugin selbst und befindet sich üblicherweise unter folgendem Pfad:

/opt/digiverso/goobi/config/

Administration Plugins

Für einige besondere Anwendungsfälle stehen Administration Plugins bereit. Die Besonderheit dabei ist, dass diese Plugins funktionell nicht eingeschränkt sind. Sie sind nicht explizit an einer vorgegebenen Stelle innerhalb des Workflows integriert noch werden sie zu einem definierten Moment ausgeführt. Stattdessen bieten sie zumeist eine eigenen Nutzeroberfläche und bieten eine eigenständige Funktionalität als Erweiterung von Goobi an. Beispiele hierfür sind unter anderem administrative Eingriffe in mehrere Vorgangsdaten oder auch die Verwaltung von kontrollierten Vokabularen.

Die Installation der Administration Plugins erfolgt im Ordner:

/opt/digiverso/goobi/plugins/administration/

Da die meisten Administration Plugins neben der eigentlichen Funktionalität ausserdem über eine Nutzeroberfläche verfügen, so muss diese zusätzlich in folgenden Ordner installiert werden:

/opt/digiverso/goobi/plugins/GUI/

Manche Administration Plugins verfügen über eine eigene Konfigurationsdatei. Diese ist im allgemeinen so benannt wie das Plugin selbst und befindet sich üblicherweise unter folgendem Pfad:

/opt/digiverso/goobi/config/

Workflow Plugins

Die Workflow Plugins sind technisch sehr ähnlich zu den Administration Plugins. Auch sie können eine eigenständige Nutzeroberfläche für die Bereitstellung zusätzlicher Funktionalität anbieten. Im Gegensatz zu den Adminstration Plugins ist der Zugriff auf diese Plugins jedoch auch ohne administrative Rechte innerhalb von Goobi möglich, so dass üblicherweise ein größerer Benutzerkreis Zugriff auf diese Funktionen erhält.

Die Installation der Workflow Plugins erfolgt im Ordner:

/opt/digiverso/goobi/plugins/workflow/

Da die meisten Workflow Plugins neben der eigentlichen Funktionalität ausserdem über eine Nutzeroberfläche verfügen, so muss diese zusätzlich in folgenden Ordner installiert werden:

/opt/digiverso/goobi/plugins/GUI/

Manche Administration Plugins verfügen über eine eigene Konfigurationsdatei. Diese ist im allgemeinen so benannt wie das Plugin selbst und befindet sich üblicherweise unter folgendem Pfad:

/opt/digiverso/goobi/config/

Dashboard Plugins

Mit den Dashboard Plugins besteht die Möglichkeit, dass statt der Standardstartseite ein besonderes Dashboard mit zusätzlicher Funktionalität bereitgestellt wird. Diese könnte beispielsweise bereits einige statistische Informationen anzeigen, die integration mit anderen Systemen aufzeigen und auch einen Einblick in das aktuelle Monitoring geben.

Die Installation der Dashboard Plugins erfolgt im Ordner:

/opt/digiverso/goobi/plugins/dashboard/

Die Nutzeroberfläche der Dashboards muss zusätzlich in folgenden Ordner installiert werden:

/opt/digiverso/goobi/plugins/GUI/

Einige Dashboard Plugins verfügen über eine eigene Konfigurationsdatei. Diese ist im allgemeinen so benannt wie das Plugin selbst und befindet sich üblicherweise unter folgendem Pfad:

/opt/digiverso/goobi/config/

Außerdem ist zu beachten, dass individuelle Dashboards stets innerhalb der Hauptkonfigurationsdatei goobi_config.properties aktiviert werden müssen. Dies erfolgt beispielsweise wie folgt:

dashboardPlugin=intranda_dashboard_extended

Statistik Plugins

Zur Bereitstellung individueller Statistiken stehen die Statistik Plugins zur Verfügung. Abhängig davon, welche dieser Plugins installiert sind, können so verschiedenste Statistische Auswertungen erfolgen, die entweder als Diagramme, als Tabellen oder auch als Download in verschiedenen Formaten erfolgen können.

Die Installation der Statistik Plugins erfolgt im Ordner:

/opt/digiverso/goobi/plugins/statistics/

Die Nutzeroberfläche der Dashboards muss zusätzlich in folgenden Ordner installiert werden:

/opt/digiverso/goobi/plugins/GUI/

Validation Plugins

Die Validation Plugins dienen in Goobi dafür, dass vor Abschluß eines Arbeitsschrittes zunächst sichergestellt wird, dass Daten so vorliegen wie gewünscht. Ist die Durchführung der Validierung nicht erfolgreich, so kann der Nutzer die Aufgabe nicht abschließen und somit auch nicht aus seiner Aufgabenliste entfernen.

Die Installation der Validation Plugins erfolgt im Ordner:

/opt/digiverso/goobi/plugins/validation/

Anschließend muss für den gewünschten Arbeitsschritt das Validierungsplugin innerhalb der Aufgabe im Feld Validierungsplugin entsprechend ausgewählt werden.

Einige Validation Plugins verfügen über eine eigene Konfigurationsdatei. Diese ist im allgemeinen so benannt wie das Plugin selbst und befindet sich üblicherweise unter folgendem Pfad:

/opt/digiverso/goobi/config/

Generische Plugins

Bei den generischen Plugins handelt es sich um Plugins, die perspektivisch an verschiedenen Stellen der Nutzeroberfläche integriert werden können. Derzeitig können sie entweder direkt in die Menüleiste oben oder in die Fußleiste unten integriert werden.

Die Installation der generischen Plugins erfolgt im Ordner:

/opt/digiverso/goobi/plugins/generic/

Die Nutzeroberfläche der generischen Plugins muss zusätzlich in folgenden Ordner installiert werden:

/opt/digiverso/goobi/plugins/GUI/

REST Plugins

Mittels der REST Plugins verfügt Goobi über eine weitere Möglichkeit, dass externe Systeme mit Goobi kommunizieren. Im Gegensatz zur Web-API erfolgt hier die Kommunikation allerdings über REST und findet größtenteils über JSON statt.

Die Installation von REST Plugins erfolgt in folgendem Ordner:

/opt/digiverso/goobi/lib/

Ebenso wie die Web-API Plugins verfügen auch die REST Plugins über keine eigene Nutzeroberfläche. Auch wird die Berechtigung für den Zugriff über die gleiche Konfigurationsdatei gesteuert und kontrolliert damit den Zugriff von ausgewählten IP-Adressen und unter Prüfung einer Authentifizierung. Für die REST Plugins erfolgt die Konfiguration dabei in folgender Datei:

/opt/digiverso/goobi/config/goobi_rest.xml

Konfiguration des Plugins

Nach der Durchführung der Installation des Plugins und der zugehörigen Datenbank muss ebenfalls noch eine Konfiguration des Plugins erfolgen. Diese findet innerhalb der Konfigurationsdatei plugin_intranda_administration_archive_management.xml statt und ist beispielhaft wie folgt aufgebaut:

Allgemeine Konfiguration

Im Bereich <export> wird die Anbindung an den Goobi viewer konfiguriert. Hier wird der Ort festgelegt, an den ein Export als EAD-XML erfolgt und welche Bestände exportiert werden sollen. Der Export erfolgt automatisch in regelmäßigen Abständen oder kann manuell aus der Nutzeroberfläche gestartet werden.

Im zweiten Bereich <backup> kann ein automatisches Backup der einzelnen Bestände konfiguriert werden. Dabei wird für jeden Bestand eine eigene Datei erzeugt. Es kann definiert werden, wie viele Backups vorgehalten werden sollen und welches Tool zum Erzeugen der Backups genutzt werden soll. Falls ein Passwort für den Datenbank-Zugriff benötigt wird, kann dies hier ebenfalls konfiguriert werden.

Anschließend folgt ein wiederholbarer <config> Block. Über das wiederholbare Element <archive> kann festgelegt werden, für welche Dateien der <config>-Block gelten soll. Soll es einen Default-Block geben, der für alle Dokumente gelten soll, kann * genutzt werden.

Mittels <processTemplateId> wird festgelegt, auf Basis welcher Produktionsvorlage die Goobi-Vorgänge erstellt werden sollen.

Konfiguration der Generierung von Vorgangstiteln

Die Parameter <lengthLimit> <separator> <useIdFromParent> und <title> werden verwendet, um die Benennung des zu erzeugenden Vorgangs zu konfigurieren:

  • Der Wert <lengthLimit> setzt ein Längenlimit für alle Tokens außer dem manuell gesetzten Präfix und Suffix. Die Voreinstellung ist 0, begrenzt die Länge also nicht.

  • Der Parameter <separator> definiert das Trennzeichen, das verwendet werden soll, um alle separaten Tokens zu kombinieren. Die Voreinstellung ist _.

  • Der Parameter <useIdFromParent> konfiguriert, wessen ID für die Erstellung des Vorgangstitels verwendet werden soll. Wenn er auf true gesetzt ist, wird die ID des übergeordneten Knotens verwendet. Andernfalls wird die ID des aktuellen Knotens verwendet.

  • Der Parameter <title> konfiguriert, welche Metadaten für die Titelgenerierung genutzt werden sollen. Dabei kann das Attribut value einen statischen Text oder das Attribut name den Namen eines Metadatenfeldes beinhalten. Mittels type wird gesteuert, was mit dem Wert geschehen soll NORMAL fügt das Feld unverändert ein, CAMEL_CASE ersetzt Leerzeichen und lässt jedes Wort mit einem Großbuchstaben starten, AFTER_LAST_SEPARATOR fügt das Feld immer am Ende an, BEFORE_FIRST_SEPARATOR fügt es immer am Anfang an. Wenn kein title konfiguriert wurde, wird der Vorgangstitel auf Basis der node ID gebildet.

Konfiguration der Verknüpfung zwischen Knoten und Vorgang

Die beiden Parameter <nodeIdentifierField> und <processIdentifierField> dienen zur Verknüpfung zwischen Knoten und Vorgang. Im Feld <nodeIdentifierField> steht der Name des Feldes, das den Identifier des Knotens enthält. Dabei kann jedes konfigurierte Feld genutzt werden. Wenn nicht anders angegeben, wird id genutzt. In <processIdentifierField> steht das Metadatum, in dem der Identifier des Knotes gespeichert werden soll. Üblicherweise ist dies NodeId.

Wenn eine neue EAD Datei importiert wird oder der Button "Verweise zu Vorgängen aktualisieren" genutzt wird, wird in allen Vorgängen nach dem konfigurierten Metadatum gesucht. Anschließend wird verglichen, ob das Metadatum den Wert enthält, der im Feld in einem Knoten eingetragen ist. Wenn dies der Fall ist, wird eine Verknüpfung zwischen Knoten und Vorgang erstellt. Bei allen Knoten, zu denen kein Treffer gefunden wurde, werden eventuell vorhandene Verweise entfernt.

Konfiguration der Metadatenfelder

Anschließend folgt eine Liste von <metadata> Elementen. Darüber wird gesteuert, welche Felder angezeigt werden, importiert werden können, wie sie sich verhalten sollen und ob es Validierungsregeln gibt.

Pflichtangaben

Jedes Metadatenfeld besteht aus mindestens den folgenden Pflichtangaben:

Optionale Angaben

Des weiteren gibt es noch eine Reihe weiterer optionaler Angaben:

Beispiele für verschiedene Feld-Konfigurationen

Einfaches Eingabefeld

Textfeld

Auswahlliste

Mehrfachauswahl

Validierung von Datumsangaben im ISO 8601 Format

Validierung von Datumsangaben im EDTF Format

Anbindung eines kontrollierten Vokabulars

Verknüpfung auf einen anderen Knoten innerhalb des Bestandes

Suche in der GND

Suche in Geonames

Suche in VIAF

Konfiguration der Anzeige der Bereiche

In der Standardeinstellung sind die einzelnen Bereiche 1. Identifikation, 2. Kontext, 3. Inhalt und innere Ordnung, 4. Zugangs- und Benutzungsbedingungen, 5. Sachverwandte Unterlagen, 6. Anmerkungen und 7. Verzeichnungskontrolle aus Platzgründen eingeklappt und werden nicht angezeigt. Damit sie bereits beim auswählen eines Knotens ausgeklappt und angezeigt werdden, kann das Element <showGroup level="1" /> verwendet werden. Über die Ordnungsnummer im Attribut level wird gesteuert, welcher Bereich ausgeklappt wird. Um auch unausgefüllte Metadaten gleich anzuzeigen, ohne sie mittels Badge hinzuzufügen, kann innerhalb der <metadata> Definition das Attribut showField="true" genutzt werden.

Konfiguration des XML Namensraums

Die beiden Elemente <eadNamespaceRead> und <eadNamespaceWrite> legen fest, welche XML Namespaces zum lesen und schreiben von EAD Dokumenten verwendet werden sollen. Üblicherweise enthalten beide den gleichen Wert. Es können jedoch auch EAD2 Dokumente gelesen und als EAD3 Dokumente exportiert werden. Dann müssen die entsprechenden Namespaces definiert werden und bei den xpath Ausdrücken der einzelnen Metadaten darauf geachtet werden, dass beide Varianten angeggeben sind. Daher ist es einfacher, den beigelegten Konverter zu nutzen und die Konvertierung von EAD2 nach EAD3 vor dem einspielen der Dokumente zu machen.

  • Namespace für ead2 (deprecated): urn:isbn:1-931666-22-9

  • Namespace für ead3 (aktuell): http://ead3.archivists.org/schema/

  • Namespace für ead4 (im draft Status): https://archivists.org/ns/ead/v4

Wert
Beschreibung
Wert
Beschreibung
<config_plugin>
    <export>
        <!-- configure export for a specific inventory -->
        <file name="sample.xml">
            <folder>/opt/digiverso/viewer/hotfolder/</folder>
        </file>
        
        <!-- default export for all inventories without a specific  -->
        <file name="*">
            <folder>/opt/digiverso/viewer/hotfolder/</folder>
        </file>
    </export>

    <backup>
        <!-- backup folder -->
        <folder>CHANGEME</folder>
        <!-- number of backups for each inventory -->
        <numberOfFiles>10</numberOfFiles>
        <!-- tool to create the backup files -->
        <tool>/usr/bin/mysqldump</tool>
        <!-- database password. The user name, database name, tables etc. can be recognized automatically, but the password must be entered.-->
        <!-- Leave it empty if access is possible without authentication (e.g. configured in ~/.my.cnf)  -->
        <password></password>
    </backup>


    <config>
        <!-- define the name(s) of all archives for the plugin -->
        <archive>*</archive>
        <!-- default title for a new node -->
        <nodeDefaultTitle>Document</nodeDefaultTitle>

        <!-- configurations for generating process titles -->

        <!-- maximum length of the body token that will be used to generate a new process title -->
        <!-- the specifically set HEAD token and TAIL token will not be affected by this limit -->
        <!-- if the limit is positively configured, then CAMEL_CASE_LENGTH_LIMITED will be applied upon every body token, otherwise CAMEL_CASE will be applied -->
        <lengthLimit>0</lengthLimit>
        <!-- separator string that will be used to combine the tokens -->
        <separator>_</separator>

        <!-- use id from parent node instead of id from node -->
        <useIdFromParent>false</useIdFromParent>

        <!-- Optional title generation, if nothing is configured, process titles are built based on the node ID -->
        <!-- attribute value: contains a static text. If it is empty, it is assumed that a metadata value is being searched for -->
        <!-- attribute name: contains the metadata name to use -->
        <!-- attribute type: can be NORMAL (use text as it is), CAMEL_CASE (each word begins with an upper case letter), 
             AFTER_LAST_SEPARATOR (insert at the end), BEFORE_FIRST_SEPARATOR (insert in front) -->

        <!-- 
        <title name="shelfmarksource" type="NORMAL"    />
        <title name="static" type="CAMEL_CASE" value="STATIC TEXT"  />
        <title name="CatalogIDDigital" type="AFTER_LAST_SEPARATOR"    />
        -->

        <!-- // configurations for generating process titles // -->

        <!-- configuration for node/process mapping -->
        <!-- it will be used during ead import or when the button to update references is used -->
        
        <!--
            nodeIdentifierField contains the identifying value of the node 
            processIdentifierField contains the name of the metadata where the node value is stored
            If both fields contain the same value, a link between node and process is created
        --> 
        <!-- 
        <nodeIdentifierField>id</nodeIdentifierField>
        <processIdentifierField>NodeId</processIdentifierField>
        -->
        <!-- define metadata fields. All fields are displayed on the UI based on the level and the order within this file.
                - @name: contains the internal name of the field. The value can be used to translate the field in the messages files. The field must start with a letter and can not contain any white spaces.
                - @level: metadata level, allowed values are 1-7:
                    * 1: metadata for Identity Statement Area 
                    * 2: Context Area 
                    * 3: Content and Structure Area
                    * 4: Condition of Access and Use Area
                    * 5: Allied Materials Area
                    * 6: Note Area
                    * 7: Description Control Area
                - @xpath: contains a relative path to the ead value. The root of the xpath is either the <ead> element or the <c> element
                - @xpathType: type of the xpath return value, can be text, attribute, element (default)
                - @repeatable: defines if the field can exist once or multiple times, values can be true/false, default is false
                - @visible: defines if the field is displayed on the UI, values can be true/false, default is true
                - @showField: defines if the field is displayed as input field (true) or badge (false, default), affects only visible metadata
                - @fieldType: defines the type of the input field. Posible values are input (default), textarea, dropdown, multiselect, vocabulary, nodelink, gnd, geonames, viaf
                - @rulesetName: internal name of the metadata in ruleset. If missing or empty, field is not imported into process metadata
                - @importMetadataInChild: defines if the field is imported or skipped in processes for child elements 
                - @validationType: defines a validation rule, allowed values are unique, required, regex, date, list or any combined values (e.g. date+required)
                - @regularExpression defines a regular expression that gets used for validation type regex
                - validationError: message to display in case of validation errors
                - value: list of possible values for dropdown and multiselect lists
                - vocabulary: name of the vocabulary
                - searchParameter: distinct the vocabulary list by the given condition. Syntax is fieldname=value, field is repeatable
         -->

        <!-- internal fields, not visible on the UI -->

        <metadata xpath="./ead:control/ead:maintenancestatus/@value" xpathType="attribute" name="maintenancestatus" level="1" repeatable="false" visible="false" />
        
        <metadata xpath="./ead:control/ead:maintenanceagency/ead:agencyname" xpathType="element" name="agencycode" level="1" repeatable="false" fieldType="input" />

        <!-- repository data group -->
        <metadata xpath="./ead:archdesc/ead:did/ead:repository" group="true" name="repository" level="1" repeatable="true" visible="false" fieldType="group" rulesetName="Repository">
            <metadata xpath="@label" xpathType="attribute" name="repositoryLabel" level="1" repeatable="false" visible="true" rulesetName="RepositoryLabel" />
            <metadata xpath="ead:address/ead:addressline" xpathType="element" name="repositoryaddressline" level="1" repeatable="true" visible="true" rulesetName="RepositoryAddress" />
            <metadata xpath="ead:extref/@href" xpathType="attribute" name="extrefhref" level="1" repeatable="true" visible="true" rulesetName="RepositoryLink" />
            <metadata xpath="ead:extref" xpathType="element" name="extref" level="1" repeatable="true" visible="true" rulesetName="RepositoryLinkName" />
        </metadata>


        <!--  Identity Statement Area -->
        <metadata xpath="./ead:control/ead:recordid" xpathType="element" name="recordid" level="1" repeatable="false" fieldType="input" rulesetName="RecordID" />
        
        <metadata xpath="./ead:control/ead:filedesc/ead:titlestmt/ead:titleproper" xpathType="element" name="titleproper" level="1" repeatable="false" visible="true" />

        <metadata xpath="./ead:control/ead:eadid" xpathType="element" name="eadid" level="1" repeatable="false" showField="false" fieldType="input" rulesetName="EADID" />

        <metadata xpath="(./ead:archdesc/ead:did/ead:unitid[not(@type)] | ./ead:did/ead:unitid[not(@type)])[1]" xpathType="element" name="unitid" level="1" repeatable="false" showField="false" fieldType="input" rulesetName="UnitID" />

        <metadata xpath="./ead:did/ead:unitid[@type='shelfmark']" xpathType="element" name="Shelfmark" level="1" repeatable="true" rulesetName="shelfmarksource" validationType="unique">
            <validationError>The value has already been used.</validationError>
        </metadata>
        
        <metadata xpath="(./ead:archdesc/ead:did/ead:unittitle | ./ead:did/ead:unittitle)[1]" xpathType="element" name="unittitle" level="1" repeatable="false" fieldType="textarea" rulesetName="TitleDocMain" importMetadataInChild="false" searchable="true" showField="true" />
        
        <metadata xpath="(./ead:archdesc/ead:did/ead:unitdate | ./ead:did/ead:unitdate)" xpathType="element" name="unitdate" level="1" repeatable="false" rulesetName="PublicationYear" importMetadataInChild="false" validationType="date" searchable="true" showField="true">
            <validationError>The value must be entered either as a year in the format YYYY or as a date in the format YYYY-MM-DD.</validationError>
        </metadata>
        
        <metadata xpath="(./ead:archdesc/ead:did/ead:unitdatestructured | ./ead:did/ead:unitdatestructured)[1]" xpathType="element" name="unitdatestructured" level="1" repeatable="false" validationType="date" rulesetName="DateOfOrigin" showField="true">
            <validationError>The value must be entered either as a year in the format YYYY or as a date in the format YYYY-MM-DD.</validationError>
        </metadata>

        <metadata xpath="(./ead:archdesc/@level | ./@level)[1]" xpathType="attribute" name="descriptionLevel" level="1" repeatable="false" fieldType="dropdown" validationType="list">
            <value>collection</value>
            <value>fonds</value>
            <value>class</value>
            <value>recordgrp</value>
            <value>series</value>
            <value>subfonds</value>
            <value>subgrp</value>
            <value>subseries</value>
            <value>file</value>
            <value>item</value>
            <value>otherlevel</value>
        </metadata>

        <metadata xpath="(./ead:archdesc/ead:did/ead:physdescstructured|./ead:did/ead:physdescstructured)" xpathType="element" name="physdescstructured" level="1" repeatable="true"
            rulesetName="physdesc" group="true" fieldType="group" visible="true">
            <metadata xpath="ead:quantity" xpathType="element" name="physdescquantity" level="1" repeatable="false" rulesetName="Quantity" visible="true" />
            <metadata xpath="ead:unittype" xpathType="element" name="physdescunittype" level="1" repeatable="false" rulesetName="Unittype" visible="true" />
        </metadata>

        <metadata xpath="(./ead:archdesc/ead:did/ead:physdesc/ead:extent|./ead:did/ead:physdesc/ead:extent)" xpathType="element" name="physdesc" level="1" repeatable="false"
            rulesetName="physicalDescriptionExtent" />

        <!-- Context Area -->
        <metadata xpath="(./ead:archdesc/ead:did/ead:origination[@label='Creator']/ead:persname|./ead:did/ead:origination[@label='Creator']/ead:persname)[1]" xpathType="element" name="origination" level="2" repeatable="true" rulesetName="Provenience" />
        
        <metadata xpath="(./ead:archdesc/ead:did/ead:origination[@label='Creator']/ead:corpname|./ead:did/ead:origination[@label='Creator']/ead:corpname)[1]" xpathType="element" name="originationcorpname" level="2" repeatable="true" rulesetName="Provenience" />

        <metadata xpath="(./ead:archdesc/ead:odd|./ead:odd)" xpathType="element" name="oddnote" level="2" repeatable="true" visible="true" group="true" fieldType="group">
            <metadata xpath="ead:head" xpathType="element" name="role" level="2" repeatable="false" visible="true" fieldType="input" />
            <metadata xpath="ead:p" xpathType="element" name="person" level="2" visible="true" repeatable="false" fieldType="input" />
        </metadata>

        <metadata xpath="(./ead:archdesc/ead:bioghist/ead:p | ./ead:bioghist/ead:p)[1]" xpathType="element" name="bioghist" level="2" repeatable="true" fieldType="textarea" rulesetName="BiographicalInformation" />

        <metadata xpath="(./ead:archdesc/ead:custodhist/ead:p|./ead:custodhist/ead:p)" group="true" name="custodhist" level="2" repeatable="true" visible="true" fieldType="group" rulesetName="InventoryHistoryGroup">
            <metadata xpath="ead:head" xpathType="element" name="AcquisitionMethod" level="2" repeatable="false" visible="false" fieldType="input" rulesetName="AcquisitionMethod" />
            <metadata xpath="ead:list/ead:item" xpathType="element" name="AcquisitionAgent" level="2" repeatable="false" visible="false" fieldType="input" rulesetName="AcquisitionAgent" />
            <metadata xpath="ead:p" xpathType="element" name="AcquisitionNotes" level="2" repeatable="false" visible="false" fieldType="textarea" rulesetName="AcquisitionNotes" />
        </metadata>

        <!-- Content and Structure Area -->
        <metadata xpath="(./ead:archdesc/ead:scopecontent/ead:p | ./ead:scopecontent/ead:p)[1]" xpathType="element" name="scopecontent" level="3" repeatable="false" fieldType="textarea" rulesetName="ContentDescription" />
        
        <metadata xpath="(./ead:archdesc/ead:appraisal/ead:p | ./ead:appraisal/ead:p)[1]" xpathType="element" name="appraisal" level="3" repeatable="false" fieldType="textarea" rulesetName="AppraisalInformation" />
        
        <metadata xpath="(./ead:archdesc/ead:arrangement/ead:p | ./ead:arrangement/ead:p)[1]" xpathType="element" name="arrangement" level="3" repeatable="false" fieldType="textarea" rulesetName="Arrangement" />

        <!-- accruals group-->
        <metadata xpath="(./ead:archdesc/ead:accruals|./ead:accruals)" group="true" name="accruals" level="3" repeatable="true" visible="true" fieldType="group" rulesetName="AccrualsGroup">
            <metadata xpath="ead:head" xpathType="element" name="accruals_head" level="3" repeatable="false" visible="true" rulesetName="Title" />
            <metadata xpath="ead:p" xpathType="element" name="accruals_p" level="3" repeatable="false" visible="true" rulesetName="Description" />
            <metadata xpath="ead:chronlist/ead:chronitem/ead:datesingle" xpathType="element" name="accruals_date" level="3" repeatable="false" visible="true" rulesetName="Date" validationType="date" />
        </metadata>

        <!-- Condition of Access and Use Area -->
        <metadata xpath="(./ead:archdesc/ead:accessrestrict|./ead:accessrestrict)" group="true" name="accessrestrict" level="4" repeatable="true" visible="true" fieldType="group" rulesetName="AccessRestrictGroup">
            <metadata xpath="(ead:p|ead:p)" xpathType="element" name="accessrestrict_value" level="4" repeatable="false" fieldType="dropdown" rulesetName="RestrictionOnAccessLicense" importMetadataInChild="true">
                <value>open access</value>
                <value>restricted</value>
            </metadata>
            <metadata xpath="ead:chronlist/ead:chronitem/ead:datesingle" xpathType="element" name="accessrestrict_date" level="3" repeatable="false" visible="true" rulesetName="Date" validationType="date" />
        </metadata>

        <metadata xpath="(./ead:archdesc/ead:userestrict/ead:p | ./ead:userestrict/ead:p)[1]" xpathType="element" name="userestrict" level="4" repeatable="false" fieldType="dropdown" importMetadataInChild="true" rulesetName="UseRestriction">
            <value>CC0 1.0</value>
            <value>CC BY 4.0</value>
            <value>CC BY-SA 4.0</value>
            <value>CC BY-ND 4.0</value>
            <value>CC BY-NC 4.0</value>
            <value>CC BY-NC-SA 4.0</value>
            <value>CC BY-NC-ND 4.0</value>
        </metadata>

        <metadata xpath="./ead:did/ead:langmaterial/ead:language" xpathType="element" name="langmaterial" level="4" repeatable="true" fieldType="textarea" rulesetName="DocLanguage" importMetadataInChild="false">
            <value>ger</value>
            <value>eng</value>
            <value>fre</value>
            <value>ita</value>
            <value>lat</value>
            <value>spa</value>
            <value>ara</value>
            <value>heb</value>
        </metadata>

        <metadata xpath="(./ead:archdesc/ead:did/ead:langmaterial[@label='font'] | ./ead:did/ead:langmaterial[@label='font'])[1]" xpathType="element" name="font" level="4" repeatable="false" fieldType="multiselect" rulesetName="FontType" importMetadataInChild="false">
            <value>antiqua</value>
            <value>fracture</value>
            <value>handwritten</value>
            <value>mixed</value>
            <value>no text</value>
        </metadata>

        <metadata xpath="(./ead:archdesc/ead:phystech/ead:p | ./ead:phystech/ead:p)" xpathType="element" name="phystech" level="4" repeatable="false" fieldType="textarea" rulesetName="PhysTech" />
        
        <metadata xpath="(./ead:archdesc/ead:otherfindaid|./ead:otherfindaid)" group="true" name="otherfindaid" level="4" repeatable="true" visible="true" fieldType="group" rulesetName="OtherFindAidGroup">
            <metadata xpath="(ead:head|ead:head)" xpathType="element" name="otherfindaid_type" level="4" repeatable="false" fieldType="input" rulesetName="Type" />
            <metadata xpath="ead:p/ead:ref" xpathType="element" name="otherfindaid_link" level="4" repeatable="false" fieldType="input" rulesetName="OtherFindAid" />
            <metadata xpath="ead:p/ead:ptr" xpathType="element" name="otherfindaid_node" level="4" repeatable="false" fieldType="nodelink" rulesetName="OtherFindAid" />
        </metadata>

        <!-- Allied Materials Area -->

        <!-- Location of Originals group-->
        <metadata xpath="(./ead:archdesc/ead:originalsloc|./ead:originalsloc)" group="true" name="originalsloc" level="5" repeatable="true" visible="true" fieldType="group" rulesetName="OriginalsLocationGroup">
            <metadata xpath="ead:p/ead:name" xpathType="element" name="originalsloc_person" level="5" repeatable="false" visible="true" rulesetName="Person" fieldType="input" />
            <metadata xpath="ead:p/ead:subject" xpathType="element" name="originalsloc_shelfmark" level="5" repeatable="false" visible="true" rulesetName="shelfmarksource" />
            <metadata xpath="ead:p/ead:ref" xpathType="element" name="originalsloc_link" level="4" repeatable="false" fieldType="input" rulesetName="RepositoryLink" />
        </metadata>

        <!-- Alternative Form Available group-->
        <metadata xpath="(./ead:archdesc/ead:relatedmaterial|./ead:relatedmaterial)" group="true" name="altformavail" level="5" repeatable="true" visible="true" fieldType="group" rulesetName="CopyLocationGroup">
            <metadata xpath="ead:p/ead:name" xpathType="element" name="altformavail_person" level="5" repeatable="false" visible="true" rulesetName="Person" fieldType="input" />
            <metadata xpath="ead:p/ead:subject" xpathType="element" name="altformavail_shelfmark" level="5" repeatable="false" visible="true" rulesetName="shelfmarksource" />
            <metadata xpath="ead:p/ead:ref" xpathType="element" name="altformavail_link" level="4" repeatable="false" fieldType="input" rulesetName="RepositoryLink" />
        </metadata>

        <metadata xpath="(./ead:archdesc/ead:separatedmaterial/ead:p|./ead:separatedmaterial/ead:p)[1]" xpathType="element" name="separatedmaterial" level="5" repeatable="true" rulesetName="SeparatedMaterial" fieldType="nodelink" />
        
        <metadata xpath="(./ead:archdesc/ead:bibliography|./ead:bibliography)[1]" xpathType="element" name="bibliography" level="5" repeatable="false" rulesetName="BibliographicCitation" />

        <!-- Note Area -->
        <metadata xpath="(./ead:archdesc/ead:note/ead:p|./ead:note/ead:p)[1]" xpathType="element" name="didnote" level="6" repeatable="true" fieldType="textarea" rulesetName="DidNote" />
       
        <metadata xpath="./ead:control/ead:localtypedeclaration" xpathType="element" name="Conventions" level="6" repeatable="false" fieldType="textarea" rulesetName="ConventionDeclaration" />
        
        <metadata xpath="./ead:processinfo/ead:chronlist/ead:chronitem/ead:datesingle" xpathType="element" name="DescriptionDates" level="6" repeatable="false" fieldType="textarea" rulesetName="DescriptionDates" />


        <!-- Description Control Area -->
        <metadata xpath="./ead:archdesc/ead:processinfo/ead:list/ead:item" xpathType="element" name="editorName" level="7" repeatable="true" fieldType="textarea" visible="false" />

        <metadata xpath="./ead:processinfo/ead:p" xpathType="element" name="ArchivistNote" level="7" repeatable="false" fieldType="textarea" rulesetName="ArchivistNote" />

        <metadata xpath="./ead:control/ead:conventiondeclaration/ead:abbr" xpathType="element" name="conventiondeclaration" level="7" repeatable="false" fieldType="multiselect">
            <value>ISAD(G)</value>
            <value>NCARules</value>
            <value>ISO 8601</value>
            <value>DACS</value>
        </metadata>

        <metadata xpath="./ead:control/ead:maintenancehistory/ead:maintenanceevent" group="true" name="maintenancehistory" level="7" repeatable="true" visible="false" fieldType="group">
            <metadata xpath="ead:eventtype" xpathType="element" name="eventtype" level="1" repeatable="false" visible="false" />
            <metadata xpath="ead:agent" xpathType="element" name="agent" level="1" repeatable="false" visible="false" />
            <metadata xpath="ead:eventdescription" xpathType="element" name="eventdescription" level="1" repeatable="false" visible="false" />
            <metadata xpath="ead:eventdatetime" xpathType="element" name="eventdatetime" level="1" repeatable="false" visible="false" />
        </metadata>

        <!-- viaf sample
        <metadata xpath="./ead:archdesc/ead:index/ead:indexentry/ead:corpname/ead:part" xpathType="element" name="Corporate" level="7" repeatable="true" searchable="true" showField="true" fieldType="viaf"
        searchFields="210__a; 111__a; 100__a; 110__a; 150__a; 151__a;" displayFields="001=NORM_IDENTIFIER; 0247_a=URI; 1001_a=NORM_NAME; 1001_d=NORM_LIFEPERIOD; 1001_q=NORM_SEX; 375__a=NORM_SEX;" />
        -->

        <!-- geonames sample
        <metadata xpath="./ead:archdesc/ead:index/ead:indexentry/ead:geogname/ead:part[@localtype='place']" xpathType="element" name="Place" level="7" repeatable="true" fieldType="geonames" visible="true" />
        -->
        <!-- gnd sample
        <metadata xpath="./ead:archdesc/ead:index/ead:indexentry/ead:persname/ead:part" xpathType="element" name="Person" level="7" repeatable="true" fieldType="gnd" visible="true" />
        -->

        <!-- extend configured areas -->
        <showGroup level="1" />

        <!--
        <showGroup level="2" />
        <showGroup level="3" />
        <showGroup level="4" />
        <showGroup level="5" />
        <showGroup level="6" />
        <showGroup level="7" />

        -->

        <treeView>
            <!-- tree view: display/hide node id-->
            <showNodeId>false</showNodeId>
        </treeView>

        <!-- enables template and project name selection in process creation area -->
        <showProjectSelection>false</showProjectSelection>
        <!-- 
        possible namespaces: 
            ead2: urn:isbn:1-931666-22-9
            ead3: http://ead3.archivists.org/schema/
            ead4: https://archivists.org/ns/ead/v4 
        -->
        <eadNamespaceRead>http://ead3.archivists.org/schema/</eadNamespaceRead>
        <eadNamespaceWrite>http://ead3.archivists.org/schema/</eadNamespaceWrite>

        <node name="file" ruleset="File" icon="fa fa-file-text-o" processTemplateId="456" />
        <node name="folder" ruleset="Folder" icon="fa fa-folder-open-o" processTemplateId="456" />
        <node name="image" ruleset="Picture" icon="fa fa-file-image-o" processTemplateId="456" />
        <node name="audio" ruleset="Audio" icon="fa fa-file-audio-o" processTemplateId="456" />
        <node name="video" ruleset="Video" icon="fa fa-file-video-o" processTemplateId="456" />
        <node name="other" ruleset="Other" icon="fa fa-file-o" processTemplateId="456" />
    </config>
    
    
    <config>
        <archive>ead2 sample</archive>
        <processTemplateId>2</processTemplateId>
        <nodeDefaultTitle>Document</nodeDefaultTitle>
        
        <lengthLimit>25</lengthLimit>
        
        <separator>_</separator>
        
        <useIdFromParent>false</useIdFromParent>
        
        <useShelfmarkAsId>false</useShelfmarkAsId>

        <metadata xpath="./ead:eadheader[@countryencoding='iso3166-1'][@dateencoding='iso8601'][@langencoding='iso639-2b'][@repositoryencoding='iso15511'][@scriptencoding='iso15924']/ead:eadid/@mainagencycode" xpathType="attribute" name="mainagencycode" level="1" repeatable="false" visible="false"/>
        <metadata xpath="./ead:eadheader/ead:profiledesc/ead:creation/@normal" xpathType="attribute" name="normalcreationdate" level="1" repeatable="false" visible="false"/>
        <metadata xpath="./ead:eadheader/ead:profiledesc/ead:creation" xpathType="element" name="creationdate" level="1" repeatable="false" visible="false"/>
        <metadata xpath="./ead:eadheader/ead:filedesc/ead:titlestmt/ead:titleproper" xpathType="element" name="titlestmt" level="1" repeatable="false" visible="false"/>

        <!--  Identity Statement Area -->
        <metadata xpath="./ead:control/ead:maintenanceagency/ead:agencycode" xpathType="element" name="agencycode" level="1" repeatable="false" fieldType="input"/>
        <metadata xpath="./ead:eadheader/ead:eadid" xpathType="element" name="eadid" level="1" repeatable="false" showField="false" fieldType="input" rulesetName="EADID"/>
        <metadata xpath="./ead:control/ead:recordid" xpathType="element" name="recordid" level="1" repeatable="false" fieldType="input" rulesetName="RecordID"/>
        <metadata xpath="(./ead:archdesc/ead:did/ead:unitid[not(@type)] | ./ead:did/ead:unitid[not(@type)])[1]" xpathType="element" name="unitid" level="1" repeatable="false" showField="false" fieldType="input" rulesetName="UnitID"/>

        <metadata xpath="./ead:did/ead:unitid[@type='Vorl. Nr.']" xpathType="element" name="Number" level="1" repeatable="true" />
        <metadata xpath="./ead:did/ead:unitid[@type='Altsignatur']" xpathType="element" name="Shelfmark" level="1" repeatable="true" rulesetName="shelfmarksource" validationType="unique">
            <validationError>Der Wert wurde an anderer Stelle bereits verwendet</validationError>
        </metadata>
        <metadata xpath="(./ead:archdesc/ead:did/ead:unittitle | ./ead:did/ead:unittitle)[1]" xpathType="element" name="unittitle" level="1" repeatable="false" fieldType="textarea" rulesetName="TitleDocMain" importMetadataInChild="false" />
        <metadata xpath="(./ead:archdesc/ead:did/ead:unitdate | ./ead:did/ead:unitdate)[1]" xpathType="element" name="unitdate" level="1" repeatable="false" rulesetName="PublicationYear" importMetadataInChild="false" regularExpression="\\d{4}" validationType="regex">
            <validationError>Der Wert ist keine vierstellige Jahreszahl</validationError>
        </metadata>
        <metadata xpath="(./ead:archdesc/ead:did/ead:unitdatestructured | ./ead:did/ead:unitdatestructured)[1]" xpathType="element" name="unitdatestructured" level="1" repeatable="false"  rulesetName="DateOfOrigin"/>
        <metadata xpath="(./ead:archdesc/@level | ./@level)[1]" xpathType="attribute" name="descriptionLevel" level="1" repeatable="false" fieldType="dropdown">
            <value>collection</value>
            <value>fonds</value>
            <value>class</value>
            <value>recordgrp</value>
            <value>series</value>
            <value>subfonds</value>
            <value>subgrp</value>
            <value>subseries</value>
            <value>file</value>
            <value>item</value>
            <value>otherlevel</value>
        </metadata>

        <metadata xpath="(./ead:archdesc/ead:did/ead:physdesc | ./ead:did/ead:physdesc)[1]" xpathType="element" name="physdesc" level="1" repeatable="false" rulesetName="Format" />
        <metadata xpath="(./ead:archdesc/ead:did/ead:physdescstructured | ./ead:did/ead:physdescstructured)[1]" xpathType="element" name="physdescstructured" level="1" repeatable="false" rulesetName="physicalDescriptionExtent" />

        <!-- Context Area -->
        <metadata xpath="(./ead:archdesc/ead:did/ead:origination | ./ead:did/ead:origination)[1]" xpathType="element" name="origination" level="2" repeatable="true" rulesetName="Provenience"/>
        <metadata xpath="(./ead:archdesc/ead:odd/ead:head | ./ead:odd/ead:head)[1]" xpathType="element" name="role" level="2" repeatable="false" fieldType="vocabulary">
            <vocabulary>Rollen</vocabulary>
            <!--<searchParameter>type=visible</searchParameter>-->
        </metadata>
        <metadata xpath="(./ead:archdesc/ead:odd/ead:p | ./ead:odd/ead:p)[1]" xpathType="element" name="person" level="2" repeatable="false"/>

        <metadata xpath="(./ead:archdesc/ead:dsc/ead:bioghist | ./ead:dsc/ead:bioghist)[1]" xpathType="element" name="bioghist" level="2" repeatable="true" fieldType="textarea" rulesetName="BiographicalInformation" />
        <metadata xpath="(./ead:archdesc/ead:dsc/ead:custodhist | ./ead:dsc/ead:custodhist)[1]" xpathType="element" name="custodhist" level="2" repeatable="false" fieldType="textarea" rulesetName="InventoryHistory"/>
        <metadata xpath="(./ead:archdesc/ead:dsc/ead:acqinfo | ./ead:dsc/ead:acqinfo)[1]" xpathType="element" name="acqinfo" level="2" repeatable="false" fieldType="dropdown" rulesetName="AquisitionInformation" >
            <value>value 1</value>
            <value>value 2</value>
            <value>...</value>
        </metadata>

        <!-- Content and Structure Area -->
        <metadata xpath="(./ead:archdesc/ead:dsc/ead:scopecontent | ./ead:dsc/ead:scopecontent)[1]" xpathType="element" name="scopecontent" level="3" repeatable="false" fieldType="textarea" rulesetName="ContentDescription"/>
        <metadata xpath="(./ead:archdesc/ead:dsc/ead:appraisal | ./ead:dsc/ead:appraisal)[1]" xpathType="element" name="appraisal" level="3" repeatable="false" fieldType="textarea" rulesetName="AppraisalInformation"/>
        <metadata xpath="(./ead:archdesc/ead:dsc/ead:accruals | ./ead:dsc/ead:accruals)[1]" xpathType="element" name="accruals" level="3" repeatable="true" fieldType="textarea" rulesetName="Additions"/>
        <metadata xpath="(./ead:archdesc/ead:dsc/ead:arrangement | ./ead:dsc/ead:arrangement)[1]" xpathType="element" name="arrangement" level="3" repeatable="false" fieldType="textarea" rulesetName="Arrangement"/>

        <!-- Condition of Access and Use Area -->
        <metadata xpath="(./ead:archdesc/ead:dsc/ead:accessrestrict | ./ead:dsc/ead:accessrestrict)[1]" xpathType="element" name="accessrestrict" level="4" repeatable="false" fieldType="dropdown" rulesetName="RestrictionOnAccessLicense" importMetadataInChild="true">
            <value>open access</value>
            <value>restricted</value>
            <value>required registration</value>
        </metadata>

        <metadata xpath="(./ead:archdesc/ead:dsc/ead:userestrict | ./ead:dsc/ead:userestrict)[1]" xpathType="element" name="userestrict" level="4" repeatable="false" fieldType="dropdown" importMetadataInChild="true" rulesetName="UseRestriction">
            <value>damaged</value>
            <value>good condition</value>
        </metadata>

        <metadata xpath="(./ead:archdesc/ead:did/ead:langmaterial[@label='Language']/ead:language | ./ead:did/ead:langmaterial[@label='Language']/ead:language)[1]" xpathType="element" name="langmaterial" level="4" repeatable="false" fieldType="multiselect" rulesetName="DocLanguage" importMetadataInChild="false">
            <value>eng</value>
            <value>ger</value>
            <value>dut</value>
            <value>fre</value>
            <value>esp</value>
            <value>ita</value>
            <value>lat</value>
            <value>pol</value>
            <value>rus</value>
            <value>swe</value>
        </metadata>

        <metadata xpath="(./ead:archdesc/ead:did/ead:langmaterial[@label='font'] | ./ead:did/ead:langmaterial[@label='font'])[1]" xpathType="element" name="font" level="4" repeatable="false" fieldType="multiselect" rulesetName="FontType" importMetadataInChild="false">
            <value>antiqua</value>
            <value>fracture</value>
            <value>handwritten</value>
            <value>mixed</value>
            <value>no text</value>
        </metadata>

        <metadata xpath="(./ead:archdesc/ead:dsc/ead:phystech | ./ead:dsc/ead:phystech)[1]" xpathType="element" name="phystech" level="4" repeatable="false" fieldType="textarea" rulesetName="PhysTech" />
        <metadata xpath="(./ead:archdesc/ead:dsc/ead:otherfindaid | ./ead:dsc/ead:otherfindaid)[1]" xpathType="element" name="otherfindaid" level="4" repeatable="false" fieldType="textarea" rulesetName="OtherFindAid"/>

        <!-- Allied Materials Area -->
        <metadata xpath="(./ead:archdesc/ead:dsc/ead:originalsloc | ./ead:dsc/ead:originalsloc)[1]" xpathType="element" name="originalsloc" level="5" repeatable="false" fieldType="dropdown" rulesetName="OriginalsLocation">
            <value>value 1</value>
            <value>value 2</value>
        </metadata>
        <metadata xpath="(./ead:archdesc/ead:dsc/ead:altformavail | ./ead:dsc/ead:altformavail)[1]" xpathType="element" name="altformavail" level="5" repeatable="false" fieldType="dropdown" rulesetName="AlternativeFormAvailable">
            <value>value 1</value>
            <value>value 2</value>
        </metadata>
        <metadata xpath="(./ead:archdesc/ead:dsc/ead:relatedmaterial/ead:separatedmaterial | ./ead:dsc/ead:relatedmaterial/ead:separatedmaterial)[1]" xpathType="element" name="separatedmaterial" level="5" repeatable="false" rulesetName="SeparatedMaterial"/>
        <metadata xpath="(./ead:archdesc/ead:dsc/ead:bibliography | ./ead:dsc/ead:bibliography)[1]" xpathType="element" name="bibliography" level="5" repeatable="false" rulesetName="BibliographicCitation"/>


        <!-- Note Area -->
        <metadata xpath="(./ead:archdesc/ead:did/ead:didnote | ./ead:did/ead:didnote)[1]" xpathType="element" name="didnote" level="6" repeatable="false" fieldType="textarea" rulesetName="DidNote"/>
        <metadata xpath="(./ead:archdesc/ead:dsc/ead:odd | ./ead:dsc/ead:odd)[1]" xpathType="element" name="oddnote" level="6" repeatable="false" fieldType="textarea" rulesetName="Odd" />

        <!-- Description Control Area -->
        <metadata xpath="./ead:control/ead:conventiondeclaration" xpathType="element" name="conventiondeclaration" level="7" repeatable="false" fieldType="multiselect" rulesetName="ConventionDeclaration">
            <value>val 1</value>
            <value>val 2</value>
            <value>val 3</value>
            <value>val 4</value>
        </metadata>

        <eadNamespaceRead>urn:isbn:1-931666-22-9</eadNamespaceRead>
        <eadNamespaceWrite>urn:isbn:1-931666-22-9</eadNamespaceWrite>

        <!-- root nodes -->
        <node name="archive" icon="fa fa-archive" processTemplateId="456" rootNode="true" allowProcessCreation="false">
            <child>tectonics</child>
            <child>inventory</child>
            <child>folder</child>
        </node>

        <!-- folder level nodes -->
        <node name="inventory" icon="fa fa-sitemap" processTemplateId="456" rootNode="true" allowProcessCreation="false">
            <child>folder</child>
            <child>tectonics</child>
            <child>inventory</child>
        </node>
        <node name="tectonics" icon="fa fa-archive-o" processTemplateId="456" rootNode="true" allowProcessCreation="false">
            <child>tectonics</child>
            <child>folder</child>
        </node>

        <node name="folder" ruleset="Folder" icon="fa fa-folder-open-o" processTemplateId="456" allowProcessCreation="false">
            <child>folder</child>
            <child>file</child>
            <child>image</child>
            <child>audio</child>
            <child>video</child>
            <child>other</child>
        </node>

        <!-- item level nodes -->
        <node name="file" ruleset="File" icon="fa fa-file-text-o" processTemplateId="456" allowProcessCreation="true" />
        <node name="image" ruleset="Picture" icon="fa fa-file-image-o" processTemplateId="456" allowProcessCreation="true" />
        <node name="audio" ruleset="Audio" icon="fa fa-file-audio-o" processTemplateId="456" allowProcessCreation="true" />
        <node name="video" ruleset="Video" icon="fa fa-file-video-o" processTemplateId="456" allowProcessCreation="true" />
        <node name="other" ruleset="Other" icon="fa fa-file-o" processTemplateId="456" allowProcessCreation="true" />

    </config>
    
    
</config_plugin>

name

Mit diesem Wert wird das Feld identifiziert. Es muss daher eine eindeutige Bezeichnung enthalten. Sofern der Wert nicht noch extra in den messages Dateien konfiguriert wurde, wird er auch als Label des Feldes genutzt.

level

Hiermit wird definiert, in welchem Bereich das Metadatum eingefügt wird. Dabei sind die Zahlen 1-7 erlaubt: 1. Identifikation, 2. Kontext, 3. Inhalt und innere Ordnung, 4. Zugangs- und Benutzungsbedingungen, 5. Sachverwandte Unterlagen, 6. Anmerkungen, 7. Verzeichnungskontrolle

xpath

Definiert einen XPath Ausdruck, der sowohl zum Lesen aus vorhanden EAD Dateien als auch zum Schreiben der EAD Datei genutzt wird. Der Pfad ist im Fall des Hauptelements relativ zum <ead> Element, bei allem anderen Knoten immer relativ zum <c> Element.

@xpathType

Hiermit wird definiert, ob der XPath Ausdruck ein element (default), ein attribute oder einen text zurückliefert.

@visible

Hierüber kann gesteuert werden, ob das Metadatum in der Maske angezeigt wird oder versteckt ist. Das Feld darf die beiden Werte true (default) und false enthalten.

@repeatable

Definiert, ob das Feld wiederholbar ist. Das Feld darf die beiden Werte true und false (default) enthalten.

@showField

Definiert, ob das Feld in der Detailanzeige geöffnet angezeigt wird, auch wenn noch kein Wert vohanden ist. Das Feld darf die beiden Werte true und false (default) enthalten.

@rulesetName

Hier kann ein Metadatum aus dem Regelsatz angegeben werden. Wenn für den Knoten ein Goobi-Vorgang erstellt wird, wird das konfigurierte Metadatum erstellt.

@importMetadataInChild

Hierüber kann gesteuert werden, ob das Metadatum auch in Goobi-Vorgängen von Kind-Knoten erstellt werden soll. Das Feld darf die beiden Werte true und false (default) enthalten.

@fieldType

Steuert das Verhalten des Feldes. Möglich sind input (default) , textarea, dropdown, multiselect, vocabulary, nodelink, gnd, geonames, viaf

value

Dieses Unterelement wird nur bei den beiden Typen dropdown und multiselect genutzt und enthält die möglichen Werte, die zur Auswahl stehen sollen.

vocabulary

Dieses Unterelement enthält den Namen des zu verwendenden Vokabulars. Es wird nur ausgewertet, wenn vocabulary, dropdown oder multiselect im Typ des Feldes gesetzt ist und keine <value> Elemente konfiguriert wurden. Die Auswahlliste enthält jeweils den Hauptwert der Records.

searchParameter

Mit diesem wiederholbaren Unterfeld können Suchparameter definiert werden, mit denen das Vokabular gefiltert wird, die Syntax ist fieldname=value.

@validationType

Hier kann eingestellt werden, ob das Feld validiert werden soll. Dabei sind unterschiedliche Regeln möglich, die sich kombinieren lassen. unique prüft, dass der Inhalt des Feldes nicht noch einmal an einer anderen Stelle genutzt wurde, mittels required wird sichergestellt, dass das Feld einen Wert enthhält. Mit dem Typ regex kann geprüft werden, ob der ausgefüllte Wert einem regulären Ausdruck entspricht, date prüft, ob der Wert einem EDTF Datum entspricht und list testet, ob der verwendete Wert in der konfigurierten Liste enthalten ist.

Es können auch mehrere Validierungsregeln kombiniert werden, zum Beispiel unique+required, regex+required, regex+unique oder date+required. In diesem Fall müssen alle angegeben Regeln erfüllt werden.

@regularExpression

Hier wird der reguläre Ausdruck angegeben, der bei der regex Validierung genutzt werden soll. WICHTIG: der Backslash muss dabei durch einen zweiten Backslash maskiert werden. Eine Klasse wird daher nicht durch \w, sondern durch \\w definiert.

validationError

Dieses Unterfeld enthält einen Text, der angezeigt wird, wenn der Feldinhalt gegen die Validierungsregeln verstößt.

@searchable

Hierüber kann gesteuert werden, ob das Metadatum in der erweiterten Suche als Feld angeboten werden soll. Das Feld darf die beiden Werte true und false (default) enthalten.

<metadata xpath="./ead:control/ead:maintenanceagency/ead:agencycode" xpathType="element" name="agencycode" level="1" repeatable="false" fieldType="input"/>
<metadata xpath="(./ead:archdesc/ead:did/ead:unittitle | ./ead:did/ead:unittitle)[1]" xpathType="element" name="unittitle" level="1" repeatable="false" fieldType="textarea" rulesetName="TitleDocMain" importMetadataInChild="false" />
<metadata xpath="(./ead:archdesc/@level | ./@level)[1]" xpathType="attribute" name="descriptionLevel" level="1" repeatable="false" fieldType="dropdown">
    <value>collection</value>
    <value>fonds</value>
    <value>class</value>
    <value>recordgrp</value>
    <value>series</value>
    <value>subfonds</value>
    <value>subgrp</value>
    <value>subseries</value>
    <value>file</value>
    <value>item</value>
    <value>otherlevel</value>
</metadata>
        <metadata xpath="(./ead:archdesc/ead:did/ead:langmaterial[@label='font'] | ./ead:did/ead:langmaterial[@label='font'])[1]" xpathType="element" name="font" level="4" repeatable="false"
            fieldType="multiselect" rulesetName="FontType" importMetadataInChild="false">
            <value>antiqua</value>
            <value>fracture</value>
            <value>handwritten</value>
            <value>mixed</value>
            <value>no text</value>
        </metadata>
<metadata xpath="(./ead:archdesc/ead:did/ead:unitdate | ./ead:did/ead:unitdate)[1]" xpathType="element" name="unitdate" level="1" repeatable="false" rulesetName="PublicationYear" importMetadataInChild="false" regularExpression="^([0-9]{4}\\-[0-9]{2}\\-[0-9]{2}|[0-9]{4})(\\s?\\-\s?([0-9]{4}\\-[0-9]{2}\\-[0-9]{2}|[0-9]{4}))?$" validationType="regex">
  <validationError>Der Wert ist keine Datumsangabe. Erlaubte Werte sind entweder Jahreszahlen (YYYY), exakte Datumsangaben (YYYY-MM-DD) oder Zeiträume (YYYY - YYYY, YYYY-MM-DD-YYYY-MM-DD)</validationError>
</metadata>
<metadata xpath="(./ead:archdesc/ead:did/ead:unitdate | ./ead:did/ead:unitdate)[1]" xpathType="element" name="unitdate" level="1" repeatable="false" rulesetName="PublicationYear" importMetadataInChild="false" validationType="date">
  <validationError>Der Wert ist keine Datumsangabe</validationError>
</metadata>
<metadata xpath="(./ead:archdesc/ead:dsc/ead:acqinfo | ./ead:dsc/ead:acqinfo)[1]" xpathType="element" name="acqinfo" level="2" repeatable="false" fieldType="vocabulary" rulesetName="AquisitionInformation" >
  <vocabulary>Aquisition</vocabulary>
  <searchParameter>type=visible</searchParameter>
  <searchParameter>active=true</searchParameter>
</metadata>
        <metadata xpath="(./ead:archdesc/ead:relatedmaterial/ead:ref | ./ead:relatedmaterial/ead:ref)" xpathType="element" name="nodelink" fieldType="nodelink" level="5" repeatable="false" />
            <metadata xpath="./ead:archdesc/ead:index/ead:indexentry/ead:persname/ead:part" xpathType="element" name="Person" level="7" repeatable="true" fieldType="gnd" visible="true" />
            <metadata xpath="./ead:archdesc/ead:index/ead:indexentry/ead:geogname/ead:part[@localtype='place']" xpathType="element" name="Place" level="7" repeatable="true" fieldType="geonames" visible="true" />
            <metadata xpath="./ead:archdesc/ead:index/ead:indexentry/ead:corpname/ead:part" xpathType="element" name="Corporate" level="7" repeatable="true"
                searchable="true" showField="true" fieldType="viaf" searchFields="210__a; 111__a; 100__a; 110__a; 150__a; 151__a;"
                displayFields="001=NORM_IDENTIFIER; 0247_a=URI; 1001_a=NORM_NAME; 1001_d=NORM_LIFEPERIOD; 1001_q=NORM_SEX; 375__a=NORM_SEX;" />

Erzeugung der Export-Verzeichnisse

Der Export aus dem Ausgangssystem besteht aus bis zu drei Teilschritten. Bevor der Export jedoch stattfinden kann, muss zunächst innerhalb des Rollensystems von Goobi workflow festgelegt werden, dass der Nutzer über die Berechtigungen für den Export verfügen muss. Informationen über die vorzunehmenden Konfigurationen finden sich hier:

Nach der Konfiguration der benötigen Benutzerrechte kann der eigentliche Export beginnen. In den meisten Fällen wird hierfür lediglich der erste der folgenden drei Teilschritte notwendig sein.

1. Teilschritt: Erzeugung der Export-Dateien für Vorgänge

Für die meisten Einsatzzwecke wird lediglich dieser Teilschritt zum Erzeugen der Export-Dateien für alle gewünschten Vorgänge benötigt. Hierbei wird für alle ausgewählten Vorgänge innerhalb des Dateisystems im Ordner jedes ausgewählten Vorgangs eine xml-Datei mit allen relevanten Informationen über den Vorgang aus der Datenbank erzeugt.

Export mittels GoobiScript

Um einen solchen Export für mehrere Vorgänge zusammen durchzuführen, besteht die Möglichkeit, diesen mittels GoobiScript zu starten. Hierzu wird das folgende GoobiScript-Kommando benötigt:

action:exportDatabaseInformation

Nach der Ausführung dieses GoobiScripts findet sich in jedem Vorgangsordner die jeweilige Export-xml-Datei (z.B. 5_db_export.xml).

Manueller Export für einzelne Vorgänge

Um einen solchen Export für einen einzelnen Vorgang durchzuführen, besteht die Möglichkeit, diesen innerhalb der Details eines Vorgangs zu starten. Klicken Sie hierzu einfach auf das entsprechende Icon für den Export.

Im Gegensatz zum Export über GoobiScript wird hierbei ein Download der xml-Datei gestartet, die die Datenbankinformationen beinhaltet.

2. Teilschritt: Export der Produktionsvorlagen

Hinweis: Dieser Teilschritt ist optional und wird nur in seltenen Fällen benötigt.

Ist gewünscht, dass nicht nur Vorgänge von einem Goobi workflow zu einem anderen übertragen werden, können auch Exportdaten für Produktionsvorlagen erzeugt werden. Da GoobiScript allerdings nicht innerhalb des Bereichs für Produktionsvorlagen verfügbar ist, kann dieser Export aus dem bereitgestellten Plugin Goobi-to-Goobi Export innerhalb des Menüs Administration erfolgen.

Klicken Sie hierzu nun auf den Button Erzeuge Dateien mit Informationen über die Produktionsvorlagen. Hierdurch wird für jede Produktionsvorlage ebenfalls eine xml-Datei mit den Datenbankinformationen im Dateisystem gespeichert und kann für den Transfer zu dem Zielsystem verwendet werden.

3. Teilschritt: Export der Infrastruktur

Hinweis: Dieser Teilschritt ist optional und wird nur in seltenen Fällen benötigt.

Sollen neben den eigentlichen Goobi-Vorgängen auch weitergehende Informationen über die Infrastruktur von einem Goobi workflow zu einem anderen übertragen werden, besteht die Möglichkeit, diese innerhalb des Export-Plugins ebenfalls exportieren zu lassen. Wählen Sie hierzu innerhalb des Plugins Goobi-to-Goobi Export die bereitgestellten Checkboxen aus, um gezielt Einfluss auf den Export vorzunehmen. Folgende Parameter stehen hierfür zur Verfügung:

Option
Bedeutung

LDAP Gruppen

Exportiert die vorhandenen LDAP Gruppen

Benutzer

Export der aktiven Nutzer

Deaktivierte Nutzer berücksichtigen

Zusätzlich zu den aktiven Nutzern ebenso die deaktivierten Nutzer mit exportieren

Erzeuge neue Passwörter

Festlegung, ob die bestehenden Passwörter der Nutzer mit exportiert werden sollen. In dem Fall, dass die Checkbox gesetzt ist, müssen auf dem Zielsystem nach dem Import für die importierten Nutzer neue Passwörter gesetzt werden.

Benutzergruppen

Export der Nutzergruppen, Berechtigungen und zusätzlichen Rollen

Zuweisung zu Benutzergruppen

Export aller dem Nutzer zugewiesenen Gruppen

Projekte

Export der Projekte

Zuweisung zu Projekten

Export aller dem Nutzer zugewiesenen Projekte

Regelsätze

Export der Regelsatzinformationen

Laufzettel

Export der Laufzettelinformationen

Inklusive der Dateien

Festlegung ob die exportierte zip-Datei die Regelsätze und Laufzettel beinhalten soll

Nach der Auswahl der gewünschten Informationen und dem Klick auf den Button Download der Infrastruktur als zip-Datei erzeugt Goobi eine zip-Datei und bietet diese mit dem Namen goobi-to-goobi-export.zip zum Download an. Diese zip-Datei enthält nun sämtliche ausgewählten Informationen aus der Goobi-Datenbank für den Transfer zu dem Zielsystem.

Goobi-to-Goobi

Administration Plugins für eine Migration von einem Goobi workflow System zu einem anderen Goobi workflow System

Übersicht

Einführung

Mit den beiden hier beschriebenen Plugins ist ein Datentransfer von einem Goobi workflow System zu einem anderem Goobi workflow System (Goobi-to-Goobi) möglich. Diese Dokumentation erläutert die Installation, Konfiguration sowie die Verwendung der zugehörigen Plugins.

Installation und Konfiguration

Bevor die Verwendung des Export- und Import-Mechanismus erfolgen kann, müssen verschiedene Installations- und Konfigurationsschritte durchlaufen werden. Diese sind hier im Detail beschrieben:

Arbeitsweise

Der Mechanismus für einen Datentransfer von einem Goobi workflow System zu einem anderem Goobi workflow System (Goobi-to-Goobi) ist in drei große Arbeitsschritte aufgeteilt.

Diese drei Arbeitsschritte gestalten sich folgendermaßen:

a) Erzeugung der Export-Verzeichnisse

Im ersten Arbeitsschritt erfolgt auf dem Ausgangssystem eine Anreicherung der Daten innerhalb des Dateisystems mit denjenigen Informationen, die Goobi intern in der Datenbank für jeden Vorgang gespeichert hat. Mit der Ausführung dieses Arbeitsschrittes wird somit in den Ordner eines jeden Goobi-Vorgangs eine zusätzliche xml-Datei geschrieben, die die Datenbankinformationen über den Workflow und einige weitere notwendigen Daten enthält.

b) Transfer der Export-Verzeichnisse

Nach der vollständigen Erzeugung und Anreicherung der Export-Verzeichnisse auf dem Ausgangssystem können diese auf den Server des Zielsystems transferiert werden. Dies kann auf verschiedene Arten erfolgen. Aufgrund der Datenmengen hat sich hierfür vorrangig ein Transfer mittels rsync bewährt.

c) Einspielen der Export-Verzeichnisse

Nachdem die Export-Verzeichnisse erfolgreich auf das Zielsystem transferiert wurden, können die Daten dort eingespielt werden. Hierzu müssen die Daten an der richtigen Stelle im System abgelegt werden und auch einige weitere Vorkehrungen hinsichtlich der Infrastruktur vorbereitet sein.

Transfer der Export-Verzeichnisse

Nachdem die Erzeugung der Export-Verzeichnisse durchgeführt wurde, können die Vorgangsordner vom Ausgangssystem zu Zielsystem kopiert werden. Je nachdem, um welche Datenmengen es sich hierbei handelt können verschiedene Methoden für den Transfer zum Einsatz kommen.

Transfer mittels einer externen Festplatte

Soll für den Transfer eine externe Festplatte zum Einsatz kommen, kann mittels des cp-Befehls der Kopiervorgang vom Ausgangssysetm auf die Festplatte und später wieder von der Festplatte auf das Zielsystem erfolgen.

Beispielaufruf für den Kopiervorgang vom Ausgangssystem auf die externe Festplatte:

Beispielsaufruf für den Kopiervorgang von der externen Festplatte auf das Zielsystem:

Transfer über das Internet

Wenn zwischen dem Ausgangssystem und dem Zielsystem eine Netzwerkverbinung hergestellt werden kann, ist ein Datentransfer über die Kommandos scp oder rsync möglich. Der Vorteil des Transfers mittels rsync besteht dabei darin, dass eine gegebenenfalls auftretende Unterbrechung der Verbindung wieder aufgenommen werden kann, ohne den gesamten Transfer wieder von vorn beginnen zu müssen.

Beispielhaft sieht ein solcher Aufruf folgendermassen aus:

Soll der Aufruf nur bestimmte Verzeichnisse übertragen, eine maximale Bandbreite nutzen und auch andere Daten ausschließen, könnte ein solcher Aufruf auch etwas umfangreicher werden:

Transfer in ein S3 Bucket eines AWS-Systems

Zum Export in ein S3 Bucket nach AWS kann das Skript s3sync.py verwendet werden.

Name
Wert

Installation
cp -r /opt/digiverso/goobi/metadata/* /external_harddisk/export/
cp -r /external_harddisk/export/* /opt/digiverso/TEMP/
rsync -avhP --stats /opt/digiverso/goobi/metadata/ ZIELSYSTEM:/opt/digiverso/TEMP/
rsync -avhP --stats --bwlimit=10000 --exclude 'taskmanager' --exclude '*.xml.*' /opt/digiverso/goobi/metadata/{1,2,3,4,5,6,7,8,9,10} ZIELSYSTEM:/opt/digiverso/TEMP/
Installation
Erzeugung der Export-Verzeichnisse
Transfer der Export-Verzeichnisse
Einspielen der Export-Verzeichnisse

Identifier

intranda_administration_goobi2goobi_export intranda_administration_goobi2goobi_import_infrastructure intranda_administration_goobi2goobi_import_data

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:11:13

Wiederherstellung von archivierten Bildordnern

Goobi Administration Plugin für die Wiederherstellung von Bildordnern von externem Storage

Übersicht

Einführung

Dieses Plugin für Goobi workflow stellt Bildordner wieder her, die zuvor mit dem Plugin goobi-plugin-step-archiveimagefolder archiviert wurden.

Installation

Das Plugin besteht insgesamt aus den folgenden zu installierenden Dateien:

Diese Dateien müssen in den richtigen Verzeichnissen installiert werden, so dass diese nach der Installation in folgenden Pfaden vorliegen:

Für eine Nutzung dieses Plugins muss der Nutzer über die korrekte Rollenberechtigung verfügen. Bitte weisen Sie daher der Benutzergruppe die Rolle Plugin_administration_restorearchivedimagefolders zu.

Überblick und Funktionsweise

Das Plugin bietet eine grafische Oberfläche an, die über das Menü Administration geöffnet werden kann. Dort kann dann ein Suchfilter verwendet werden, wie er auch an anderen Stellen von Goobi workflow (z.B. für die Vorgangsliste) verwendet wird. Mit einem Klick auf Plugin ausführen, werden dann die für die über den eingegebenen Filter gefundenen Vorgänge die Bilder wieder hergestellt. Die Nutzeroberfläche aktualisiert sich automatisch.

Konfiguration

Die Konfigurationsdatei ist im Moment leer, muss aber trotzdem vorliegen.

Die Information, woher die Daten geholt werden sollen, sind im jeweiligen Vorgangsordner in einer XML-Datei vom Archivierungs-Plugin hinterlegt worden.

Für die Authentifizierung an ssh-Servern wird an den üblichen Stellen ($USER_HOME/.ssh) nach public keys gesucht. Andere Authentifizierungsmethoden wie username/password sind nicht vorgesehen.

Name
Wert
https://github.com/intranda/goobi-plugin-administration-goobi2goobi-import
goobi_plugin_administration_restorearchivedimagefolders-base.jar
goobi_plugin_administration_restorearchivedimagefolders-gui.jar
plugin_intranda_administration_restorearchivedimagefolders.xml
/opt/digiverso/goobi/plugins/administration/plugin_intranda_administration_restorearchivedimagefolders-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin_intranda_administration_restorearchivedimagefolders-gui.jar
/opt/digiverso/goobi/config/plugin_intranda_administration_restorearchivedimagefolders.xml
<config_plugin>
  <!-- currently no configuration is needed -->
</config_plugin>

Identifier

intranda_administration_restorearchivedimagefolders

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:16:07

https://github.com/intranda/goobi-plugin-administration-restore-archived-image-folders

Bedienung des Plugins

Die folgenden Funktionen stehen innerhalb des Plugins für das Archive-Management zur Verfügung:

Auswahl von vorhandenen Beständen

Nachdem das Plugin geöffnet wurde, wird zunächst eine Liste der zur Verfügung stehenden Archivbestände angezeigt. Hier kann der Nutzer einen Archivbestand auswählen und mit der Bearbeitung beginnen.

Alternativ dazu kann ebenfalls ein neuer Archivbestand erzeugt werden. In diesem Fall muss zunächst ein Name für den Bestand vergeben werden. Der Name muss eindeutig sein, da darüber die Identifikation erfolgt. Außerdem sollten keine Sonderzeichen wie :/\ genutzt werden, da der Name auch Grundlage für den Dateiname des EAD-Exports ist.

Als dritte Möglichkeit kann eine vorhandene Datei importiert werden. Hier kann eine EAD-Datei ausgewählt und hochgeladen werden. Wenn noch kein Bestand mit dem Namen der Datei existiert, wird die Datei als neuer Bestand importiert und direkt geöffnet. Falls der Name schon in Verwendung ist, kann nach einer Rückfrage der bestehende Bestand mit dem Inhalt der EAD-XML Datei überschrieben werden.

Sofern der Nutzer über die Berechtigung zur Erstellung neuer Bestände verfügt, kann mit dem entsprechenden Button ebenfalls eine Kopie eines Bestandes erstellt werden. Dabei wird ein neuer Bestand erstellt und alle Knoten mit all ihren Metadaten kopiert. Einzige Ausnahme ist hierbei die ID der Knoten. Diese werden automatisch neue erstellt und den Knoten zugewiesen.

Nach der Auswahl des zu bearbeitenden Archivbestandes wird der Nutzer in die Bearbeitungsmaske weitergeleitet. Hier läßt sich nun im linken Bereich der Strukturbaum bearbeiten. Im rechten Bereich können die Details des jeweils ausgewählten Knoten bearbeitet werden.

Durch einen Klick auf die Buttons Abbrechen (Leserechte) oder Archivbestand speichern und verlassen (Schreibrechte) wird man wieder auf die Seite zur Auswahl eines Archivbestandes geleitet.

Strukturbaum bearbeiten

Im linken Bereich der Bearbeitungsmaske lässt sich die Struktur des Archivbestandes bearbeiten. Hier lassen sich alle Knoten inklusive ihrer Hierarchie auf einen Blick einsehen. Vor jedem Element befindet sich ein Icon, mit dem sich die Unterelemente des Knotens anzeigen oder ausblenden lassen. Um einen Knoten auszuwählen, kann er angeklickt werden. Er wird dann farbig hervorgehoben und die Details des ausgewählten Knotens werden auf der rechten Seite angezeigt. Wenn ein Knoten im linken Bereich der Bearbeitungsmaske ausgewählt wurde, können ausserdem die Buttons am rechten Rand der linken Box genutzt werden, um den Knoten zu ändern. Folgende Optionen sind hierbei möglich:

Funktion
Erläuterung

Neuen Knoten einfügen

Mit diesem Button kann ein neuer Knoten als Unterknoten an das Ende der bereits vorhandenen Unterknoten angefügt werden.

Mehrere Unterknoten an dieser Stelle einfügen

Öffnet ein Popup, in dem sich beliebig viele Knoten erstellen lassen.

Verweise aktualisieren

Prüft, ob für die Knoten des Bestands Vorgänge existieren. Diese Aktion aktualisiert gegebenenfalls die Verweise.

Fehlende Vorgänge erstellen

Generiert für den ausgewählten Knoten und alle Kindknoten Vorgänge, falls für diese Knoten noch keine Vorgänge existieren.

Knoten löschen

Hiermit läßt sich der ausgewählte Knoten inklusive aller Unterknoten löschen. Achtung: Diese Funktion kann nicht auf der Ebene des Hauptknotens genutzt werden.

Validierung ausführen

Mit dieser Funktion läßt sich eine Validierung des ausgewählten Knotens ausführen. Verstöße gegen die konfigurierten Validierungsvorgaben werden entsprechend aufgelistet.

Nach oben bewegen

Dieser Button erlaubt das Verschieben des ausgewählten Knotens nach oben innerhalb der gleichen Hierarchieebene.

Nach unten bewegen

Dieser Button erlaubt das Verschieben des ausgewählten Knotens nach unten innerhalb der gleichen Hierarchieebene.

In der Hierarchie nach unten bewegen

Mit diesem Button ist es möglich, den ausgewählten Knoten auf eine tiefere Hierarchiestufe zu verschieben.

In der Hierarchie nach oben bewegen

Mit diesem Button ist es möglich, den ausgewählten Knoten auf eine höhere Hierarchiestufe zu verschieben.

Knoten an andere Stelle bewegen

Mit dieser Funktion öffnet sich eine andere Bearbeitungsmaske, die es ermöglicht, den aktuell ausgewählten Knoten an einer ganz andere Stelle des Hierarchiebaums zu verschieben. Hierbei wird die komplette Hierarchie angezeigt, so dass derjenige Knoten ausgewählt werden kann, innerhalb dessen der ausgewählte Knoten als Unterknoten eingefügt werden soll.

Knoten duplizieren

Öffnet ein Popup, in dem bei ausgewählten Metadaten (Attribute visible und showField) ein Präfix oder Suffix festgelegt werden kann. Die Aktion dupliziert den ausgewählten Knoten und alle Kindelemente und fügt den neuen Metadaten die angegebenen Präfixe und Suffixe hinzu.

Um mehrere Unterknoten auf einmal zu generieren, muss die Anzahl der zu erstellenden Knoten und deren Typ festgelegt werden. Anschließend können verschiedene Metadaten definiert werden, die in alle neuen Knoten eingetragen werden. Dabei kann entweder der gleiche Text in allen Feldern genutzt werden, ein Identifier generiert werden oder ein Text mit anschließendem Zähler generiert werden. Hierbei lässt sich das Zählerformat und der Startwert festlegen.

Im oberen Bereich der Hierarchieanzeige kann darüber hinaus auch eine Suche innerhalb der Metadaten der Knoten erfolgen. Dabei werden die gefundenen Knoten samt Hierarchie angezeigt und farbig hervorgehoben. Um die Suche wieder zurückzusetzen genügt es, den Inhalt des Suchbegriffs wieder zu leeren und entsprechen eine leere Suche auszuführen. Alternativ kann der Button auf der linken Seite des Suchfeldes genutzt werden.

Rechts neben dem Feld kann die erweiterte Suche genutzt werden. Hier kann gezielt in einzelnen Feldern gesucht werden. Welche Felder zur Verfügung stehen, kann über die Konfigurationsdatei gesteuert werden (Attribut searchable="true" innerhalb von <metadata>).

Bearbeitung eines ausgewählten Knotens

Sofern im linken Bereich ein Knoten ausgewählt wurde, werden im rechten Bereich die Details des ausgewählten Knotens angezeigt.

Der rechte Bereich ist dabei in mehrere Kategorien aufgeteilt. Im obersten Teil des rechten Bereichs wird der dazugehörige Goobi-Vorgang angezeigt, sowie eine Möglichkeit zum Erzeugen des Laufzettels. Wenn für den Knoten noch kein Goobi-Vorgang erzeugt wurde, kann ein neuer Vorgang auf der Basis der konfigurierten Produktionsvorlage erstellt werden. Als Dokumententyp wird entprechend der Konfiguration der ausgewählte Knotentyp verwendet. Abhängig von der Konfiguration und dem verwendeten Regelsatz stehen bespielsweise folgende Optionen zur Verfügung:

  • Folder / Ordner

  • File / Akte

  • Image / Bild

  • Audio

  • Video

  • Other / Sonstiges

Unterhalb des Dokumententyps werden die einzelnen Metadaten des Knotens aufgelistet. Sie sind gemäß des ISAD(G)-Standards in die folgenden Bereiche aufgeteilt:

  • Identifikation

  • Kontext

  • Inhalt und innere Ordnung

  • Zugangs- und Benutzungsbedingungen

  • Sachverwandte Unterlagen

  • Anmerkungen

  • Verzeichnungskontrolle

Jeder dieser Bereiche lässt sich einzeln auf- und zuklappen. Auch wenn hierbei ein Bereich zugeklappt ist, läßt sich sehr einfach erkennen, welche Metadaten pro Bereich möglich und welche bereits ausgefüllt sind. Die einzelnen Metadaten werden dabei als verschieden hervorgehobene Badges angezeigt. Ein dunkler Hintergrund zeigt an, dass für diese Metadatum bereits ein Wert erfasst wurde. Ein heller Hintergrund hingeben bedeutet, dass dieses Feld noch ohne Inhalt ist. Sofern ein Feld wiederholbar angelegt werden kann, enthält der Badge ein Plus-Icon.

Wenn die Details eines Bereiches ausgeklappt werden, erfolgt eine Anzeige der einzelnen Metadaten. Standardmäßig werden dabei nur diejenigen Felder angezeigt, die bereits über einen Wert verfügen. Weitere Felder lassen sich durch einen Klick auf eines der Badges hinzufügen. Über das Minus-Icon lassen sich Felder wieder entfernen.

Validierung der Metadaten

Sowohl der Button Download als EAD Datei als auch der Button Validierung ausführen stellen sicher, dass die Metadaten valide sind. Dabei werden die konfigurierten Regeln angewendet und es wird geprüft, ob einzelne Werte dagegen verstoßen. Ist dies der Fall, werden die betroffenen Knoten im linken Bereich farbig hervorgehoben. Wird ein solcher invalider Knoten ausgewählt, werden die betroffenen Badges rot dargestellt und in den Metadaten wird neben der Umrandung auch der konfigurierte Fehlertext angezeigt.

Eine fehlgeschlagene Validierung verhindert nicht das Speichern des Archivbestandes oder das Erzeugen von Goobi-Vorgängen.

Speichern der Daten

Sofern die Bearbeitung nicht nur im read-only Modus erfolgt, werden Daten immer automatsich gespeichert, wenn man Knoten einfügt oder löscht, zu einem anderen Knoten wechselt, den Bestand exportiert, eine Kopie davon erstellt oder Verweise erstellt oder die Bearbeitung mittels Speichern und verlassen beendet.

Export und Download

Die beiden Buttons zum Download als EAD Datei und Viewer export erzeugen eine neue EAD auf Basis des aktuellen Zustandes der Knoten. Dabei wird mit Ausnahme des obersten Knoten jeder Knoten als eigentständiges <c>-Element dargestellt. Die Daten des obersten Knoten werden innerhalb von <archdesc> unterhalb des <ead> Elements geschrieben.

Beim Viewer export wird die erzeugte Datei in den Hotfolder des Goobi viewers geschrieben, beim Download hingegen kann sie lokal gespeichert werden.

Die erzeugte Datei enthält dabei alle Metadaten in der Form, in der sie in der Konfigurationsdatei angegeben wurden. Dabei wird der Inhalt des xpath Attributs der Metadaten genutzt. Wenn für ein Feld keine Angabe existiert, handelt es sich um ein intenes Metadatum, das nicht als EAD exportiert wird.

Installation und Konfiguration

Für die Inbetriebnahme des Goobi-to-Goobi-Mechanismus müssen sowohl auf dem Ausgangssystem als auch auf dem Zielsystem verschiedene Plugins installiert und Konfigurationen vorgenommen werden. Diese werden hier detailliert beschrieben.

1. Ausgangssystem

Zunächst einmal muss das Ausgangssystem für den Export vorbereitet werden. Hierzu gehört zunächst einmal die Installation des korrekten Plugins. Im Anschluss daran, muss lediglich eine Berechtigung für die entsprechenden Nutzer konfiguriert werden, um den Export zu erlauben.

1.1. Installation

Auf dem Ausgangssystem muss zunächst das Plugin plugin_intranda_administration_goobi2goobi_export für die Erzeugung der Export-Verzeichnisse installiert werden. Dazu müssen die folgenden beiden Dateien an die entsprechenden Pfade kopiert werden:

/opt/digiverso/goobi/plugins/administration/plugin_intranda_administration_goobi2goobi_export.jar
/opt/digiverso/goobi/plugins/GUI/plugin_intranda_administration_goobi2goobi_export-GUI.jar

Zu beachten ist hierbei, dass diese Dateien für den Nutzer tomcat lesbar sein müssen.

1.2. Konfiguration

Um dem Nutzer zu ermöglichen, dass dieser einen Export der Daten durchführen kann, muss dieser über die folgenden Rollen verfügen:

Datenbankdetails exportieren
Plugin_goobi2goobi_export

Diese Rollen können innerhalb der Benutzergruppen von Goobi workflow konfiguriert werden. Wählen Sie dazu einfach die Rollen auf der rechten Seite aus oder tragen diese in das Eingabefeld und Klicken anschließend auf das Plus-Icon.

Mit dieser Konfiguration ist die Vorbereitung auf Seiten des Ausgangssystem bereits abgeschlossen.

2. Zielsystem

Auch das Zielsystem muss für den Import vorbereitet werden. Nach der Installation des entsprechenden Plugins und der zugehörigen Konfigurationsdateien, müssen noch einige Konfigurationen geprüft bzw. vorgenommen werden.

2.1. Installation

Auf dem Zielsystem muss zunächst das Plugin plugin_intranda_administration_goobi2goobi_import für die Einspielen der Export-Verzeichnisse installiert werden. Dazu müssen die folgenden beiden Dateien an die entsprechenden Pfade kopiert werden:

/opt/digiverso/goobi/plugins/administration/plugin_intranda_administration_goobi2goobi_import.jar
/opt/digiverso/goobi/plugins/GUI/plugin_intranda_administration_goobi2goobi_import-GUI.jar

Nach der Installation des eigentlichen Plugins müssen ebenfalls die zugehörigen Konfigurationsdateien installiert werden. Diese befinden sich unter folgenden Pfaden:

/opt/digiverso/goobi/config/plugin_intranda_administration_goobi2goobi_import_data.xml
/opt/digiverso/goobi/config/plugin_intranda_administration_goobi2goobi_import_infrastructure.xml

Auch hier ist wieder zu beachten, dass die installierten Dateien alle für den Nutzer tomcat lesbar sein müssen.

2.2. Allgemeine Konfiguration

Um einem Nutzer die Durchführung des Imports zu ermöglichen, muss dieser über die folgende Rolle verfügen:

Plugin_goobi2goobi_import

Diese Rolle kann innerhalb der Benutzergruppen von Goobi workflow konfiguriert werden, indem sie auf der rechten Seite in das Eingabefeld eingetragen und mittels Klick auf das Plus-Icon übernommen wird.

2.3. Konfiguration für den Import der Infrastruktur

Um während des Imports der Infrastruktr Einfluss auf die zu importierenden Daten zu nehmen, kann eine Anpassung der Konfigurationsdatei plugin_intranda_administration_goobi2goobi_import_infrastructure.xml erfolgen. Diese Konfiguration kann beispielhaft wie folgt aussehen:

<config_plugin>
    <config>
        <project name="intranda test project">
            <newProjectName>new project name</newProjectName>
            <!-- filegroups -->
            <filegroup name="SDB">
                <newFilegroupName>OBJECTS</newFilegroupName>
                <path>file:///opt/digiverso/viewer/media/$(meta.CatalogIDDigital)/</path>
                <mimeType>image/jp2</mimeType>
                <fileSuffix>jp2</fileSuffix>
                <folderValidation></folderValidation>
            </filegroup>
            <fileFormatInternal>Mets</fileFormatInternal>
            <fileFormatDmsExport>Mets</fileFormatDmsExport>
            <exportConfiguration useDmsImport="true" dmsImportCreateProcessFolder="false" dmsImportTimeOut="0" dmsImportRootPath="/opt/digiverso/viewer/hotfolder" dmsImportImagesPath="/opt/digiverso/viewer/hotfolder" dmsImportSuccessPath="/opt/digiverso/viewer/success" dmsImportErrorPath="/opt/digiverso/viewer/error" />
            <metsConfiguration metsRightsOwnerLogo="" metsRightsOwnerSite="" metsRightsOwnerMail="" metsDigiprovReference="" metsDigiprovPresentation="" metsDigiprovReferenceAnchor="" metsPointerPath="" metsPointerPathAnchor="" metsPurl="" metsContentIDs="" metsRightsSponsor="" metsRightsSponsorLogo="" metsRightsSponsorSiteURL="" metsRightsLicense="" />
        </project>

        <docket name="example docket">
            <newDocketName>first docket</newDocketName>
            <newFileName>docket.xsl</newFileName>
        </docket>

        <ruleset name="example ruleset">
            <newRulesetName>default ruleset</newRulesetName>
            <newFileName>ruleset.xml</newFileName>
        <ruleset>

        <ldap name="default ldap">
            <newLdapName>default ldap</newLdapName>
            <ldapConfiguration homeDirectory="" gidNumber="" dn="" objectClass="" sambaSID="" sn="" uid="" description="" displayName="" gecos="" loginShell="" sambaAcctFlags="" sambaLogonScript="" sambaPrimaryGroupSID="" sambaPwdMustChange="" sambaPasswordHistory="" sambaLogonHours="" sambaKickoffTime="" />
        </ldap>

        <usergroup name="Administration">
            <newUsergroupName>Admin</newUsergroupName>
            <addRole>administration_import_data</addRole>
            <removeRole>administration_export_data</removeRole>
            <addUser>johndoe</addUser>
            <removeUser>testadmin</removeUser>
        </usergroup>

        <user name="testadmin">
            <addAssignedProject>test project</addAssignedProject>
            <removeAssignedProject>example project</removeAssignedProject>
            <configuration place="" ldapgroup="" tablesize="" shortcut="" displayDeactivatedProjects="" displayFinishedProcesses="" displaySelectBoxes="" displayIdColumn="" displayBatchColumn="" displayProcessDateColumn="" displayLocksColumn="" displaySwappingColumn="" displayModulesColumn="" displayMetadataColumn="" displayThumbColumn="" displayGridView="" displayAutomaticTasks="" hideCorrectionTasks="" displayOnlySelectedTasks="" displayOnlyOpenTasks="" displayOtherTasks="" metsDisplayTitle="" metsLinkImage="" metsDisplayPageAssignments="" metsDisplayHierarchy="" metsDisplayProcessID="" customColumns="" customCss=""/>
        </user>
    </config>
</config_plugin>

In der dieser Konfigurationsdatei sind sämtliche Felder optional. Fehlt ein Feld, wird dessen Wert während der Konfiguration nicht überschrieben. Ist das Feld hingegen leer, wird es ebenfalls leer importiert, ansonsten wird es mit dem Wert aus dieser Konfigurationsdatei überschrieben. Die Felder zum Hinzufügen oder Entfernen sind grundsätzlich wiederholbar.

2.4. Konfiguration für den Import der Daten

Für den Import der Daten auf dem Zielsystem kann in der Konfigurationsdatei plugin_intranda_administration_goobi2goobi_import_infrastructure.xml festgelegt werden, wo sich Daten befinden und wie diese während des Imports verarbeitet werden sollen. Diese Konfiguration kann beispielhaft wie folgt aussehen:

<?xml version="1.0"?>
<config_plugin>
    <globalConfig>
        <dbExportPrefix>import/</dbExportPrefix>
        <importPath>/opt/digiverso/goobi/metadata/</importPath>
        <bucket>example-workflow-data</bucket>
        <createNewProcessIds>true</createNewProcessIds>
        <temporaryImportFolder>/opt/digiverso/transfer/</temporaryImportFolder>
    </globalConfig>
    <config>
        <rulename>Project A</rulename>
        <rulename>Project B</rulename>
        <step name="Example to delete" type="delete" />
        <step name="Example to change" type="change">
            <newStepName>New step name</newStepName>
            <priority>5</priority>
            <order>3</order>
            <useHomeDirectory>0</useHomeDirectory>
            <stepStatus>0</stepStatus>
            <types metadata="true" automatic="false" readImages="false" writeImages="false" export="false" validateOnExit="true" finalizeOnAccept="false" delayStep="false" updateMetadataIndex="false" generateDocket="false" batchStep="false" stepPlugin="" validationPlugin="" />
            <scriptStep scriptStep="true" scriptName1="script 1" scriptPath1="/bin/bash ..." scriptName2="" scriptPath2="" scriptName3="" scriptPath3="" scriptName4="" scriptPath4="" scriptName5="" scriptPath5="" />
            <httpStep httpStep="true" httpMethod="POST" httpUrl="http://itm.example.com/itm/service" httpJsonBody="{ .... } " httpCloseStep="false" />
            <usergroup>Administration</usergroup>
            <usergroup>AutomaticTasks</usergroup>
        </step>
        <step name="Example to change" type="insertAfter" >
            <newStepName>Export task</newStepName>
            <order>120</order>
            <stepStatus>0</stepStatus>
            <types automatic="true" export="true" stepPlugin="special_export_plugin" />
            <usergroup>AutomaticTasks</usergroup>
        </step>
        <docket name="Default docket">
            <newDocketName>docket</newDocketName>
            <newFileName>docket.xsl</newFileName>
        </docket>
        <project name="Project A">
            <newProjectName>Project B</newProjectName>
        </project>
        <property name="CollectionName">
            <oldPropertyValue>Digitised</oldPropertyValue>
            <newPropertyName>Collection</newPropertyName>
            <newPropertyValue>default_collection</newPropertyValue>
        </property>
        <ruleset name="Default">
            <newRulesetName>default ruleset</newRulesetName>
            <newFileName>ruleset.xml</newFileName>
        </ruleset>
        <metadata name="CatalogIDDigital" type="change">
            <valueConditionRegex>/b\d+(?:_\d+)?/</valueConditionRegex>
            <valueReplacementRegex>s/^(.+)$/IMPORT_$1/g</valueReplacementRegex>
            <position>all</position>
        </metadata>
        <metadata name="PhysicalLocation" type="delete">
            <position>top</position>
        </metadata>
        <metadata name="Testmetatda" type="add">
            <valueReplacementRegex>example text</valueReplacementRegex>
            <position>top</position>
        </metadata>
        <skipProcesslog>true</skipProcesslog>
        <skipUserImport>true</skipUserImport>
    </config>
</config_plugin>

Im oberen Bereich der Datei werden einige generelle Einstellungen vorgenommen, die für alle Importe gelten. Im Anschluss an diese allgemeinen Einstellungen folgen die einzelnen konfigurierten Regeln.

Allgemeine Einstellungen: globalConfig

Element
Beispiel
Bedeutung

dbExportPrefix

import/

Diese Angabe wird benötigt, wenn die zu importierenden Datenbankinformationen nicht als xml-Dateien im jeweiligen Vorgangsordner liegen. Die Angabe enthält den Pfad zu den Datenbankinformationen innerhalb eines s3-Buckets und wird bei Importen in ein lokales Dateisystem nicht benötigt.

importPath

/opt/digiverso/goobi/metadata/

Zielverzeichnis, in das die Daten importiert werden sollen.

bucket

example-workflow-data

Name des s3-Buckets, in dem die zu importierenden Daten liegen. Dieser Wert wird bei Importen in ein lokales Dateisystem nicht benötigt.

createNewProcessIds

false

Dieser Parameter definiert, ob die Vorgangs-Identifier aus dem alten System erneut genutzt werden sollen, oder ob neue IDs erzeugt werden sollen.

temporaryImportFolder

/opt/digiverso/transfer/

Mit diesem Parameter wird der Pfad zu dem Ordner angegeben, in dem die zu importierenden Daten liegen. Der Wert muss nur konfiguriert werden, wenn er sich vom Wert innerhalb von importPath unterscheidet.

Die einzelnen Regeln für die Importdurchführungen werden innerhalb des <config> Elements definiert werden. Der Name der Regel wird in <rulename> festgelegt. Wenn während des Imports keine Regel explizit ausgewählt wurde, wird diese über den Projektnamen des Vorgangs ermittelt. Das Feld ist wiederholbar, so dass mehrere identische Regeln erzeugt werden können, wenn zum Beispiel ein gleicher Workflow in verschiedenen Projekten genutzt wird.

Arbeitsschritte innerhalb der Workflows: step

Mittels <step> lassen sich einzelne Schritte des Vorgangs manipulieren. Alle Felder sind optional. Wenn sie nicht angegeben wurden, wird der originale Wert genutzt. Andernfalls wird das Feld mit dem konfigurierten Feldinhalt überschrieben. Wenn das Feld vom Typ String ist, kann es auch leer angegeben werden, um es zu leeren.

Element
Beispiel
Bedeutung

@name

Example task

Enthält den Namen des zu ändernden Schrittes.

@type

delete

Dieser Wert enthält den Typ der Manipulation. Als Werte sind delete, change, insertBefore, insertAfter möglich.

newStepName

new step name

Neuer Name des Schrittes.

priority

5

Neue Priorität des Schrittes.

order

10

Reihenfolge des Schrittes.

useHomeDirectory

0

Steuert, ob in das Homeverzeichnis des Nutzers verlinkt werden soll.

stepStatus

0

Setzt den Schrittstatus. Erlaubte Werte sind 0 (locked), 1 (open), 2 (inwork), 3 (done), 4 (error) und 5 (deactivated).

types

automatic="true"

Enthält in Attributen die verschiedenen Einstellungen eines Schrittes.

scriptStep

scriptStep="true" scriptName1="script 1" scriptPath1="/bin/true"

Definiert Skripte für die Arbeitsschritte.

httpStep

httpStep="true" httpMethod="POST" httpUrl="http://itm.example.com/itm/service"

Definiert die Konfiguration des HTTP Aufrufs für den Schritt.

usergroup

Administration

Name der zugewiesenen Benutzergruppe. Dieser Wert ist wiederholbar, um mehrere Nutzergruppen zu definieren.

Laufzettel: docket

In diesem Element kann der zugewiesene Laufzettel ersetzt werden. Die zu nutzende xsl-Datei muss auf dem Server existieren. Wenn bereits ein Docket mit den neuen Angaben definiert wurde, wird dieses verwendet, andernfalls wird ein neues Docket definiert und in der Datenbank gespeichert.

Element
Beispiel
Bedeutung

@name

Default docket

Name des bisher verwendeten Laufzettels. Die Änderung findet nur statt, wenn der Vorgang bisher einen Laufzettel mit diesem Namen verwendet hat.

newDocketName

docket

Neuer Name des Laufzettels.

newFileName

docket.xsl

Neuer Dateiname für den Laufzettel.

Projekt: project

Mit dieser Regel kann das zugewiesene Projekt geändert werden. Das Projekt muss bereits existieren. Änderungen an den Projekten selbst können über Infrastruktur importieren vorgenommen werden.

Element
Beispiel
Bedeutung

@name

Project A

Altes Projekt

newProjectName

Project B

Neues Projekt

Eigenschaften: property

Diese Regel dient zur Manipulation von Vorgangseigenschaften.

Element
Beispiel
Bedeutung

@name

CollectionName

Name der anzupassenden Eigenschaft.

oldPropertyValue

Digitised

Wert der anzupassenden Eigenschaft. Wenn ein Wert angegeben wird, muss die Eigenschaft diesen Wert enthalten.

newPropertyName

Collection

Neuer Name der Eigenschaft. Optional.

newPropertyValue

default collection

Neuer Wert der Eigenschaft. Optional.

Regelsatz: ruleset

Mit dieser Regel kann der zugewiesene Regelsatz geändert werden. Falls der Regelsatz noch nicht existiert, wird er neu angelegt und in der Datenbank gespeichert. Die xml-Datei des Regelsatzes selbst muss auf dem Server existieren.

Element
Beispiel
Bedeutung

@name

Default

Name des bisher verwendeten Regelsatzes.

newRulesetName

default ruleset

Neuer Name für den Regelsatz.

newFileName

ruleset.xml

Neuer Dateiname für den Regelsatz. Dieser muss auf dem Zielsystem existieren.

Metadaten: metadata

Mit dieser Regel können die Metadaten verändert werden. Dabei können Werte von vorhandenen Metadaten geändert, neue hinzugefügt oder existierende Metadaten gelöscht werden.

Element
Beispiel
Bedeutung

@name

CatalogIDDigital

Interner Name des Metadatums.

@type

change

Art der Änderung. Erlaubte Werte sind add, change und delete.

position

top

Beschreibt die Stelle, an der die Änderung durchgeführt werden soll. Erlaubte Werte sind all, anchor, top und physical.

valueConditionRegex

/PPN\d+\w?(?:_\d+)?/

Dieser reguläre Ausdruck prüft, ob der bisherige Feldinhalt einem definierten Wert entspricht. Bei dieser Angabe kann es sich um einen festen Wert oder einen regulären Ausdruck handeln.

valueReplacementRegex

s/^PPN(.+)$/$1/g

Wurde als @type der Wert change verwendet, enthält dieser Parameter einen regulären Ausdruck für die Manipulation des bisherigen Metadatums. Wurde als @type hingegen add gewählt, wird der Feldinhalt als Wert des Metadatums verwendet.

Weitere Konfigurationen

Innerhalb einer Regel können weitere allgemeine Einstellungen festgelegt werden.

Element
Beispiel
Bedeutung

skipProcesslog

true

Festlegung, ob das Vorgangslog des Ausgangssystem übernommen werden soll (false) oder ob es ignoriert werden soll (true).

skipUserImport

true

Festlegung, ob die Benutzer von importierten Aufgaben eines Workflows innerhalb von Goobi als gelöschte Nutzer angelegt werden sollen (false) oder ob die Informationen über die Ausführung durch konkrete Personen ignoriert werden und so anonymisiert werden sollen. (true).

Archiv-Management

Goobi Administration Plugin für die Verwaltung von Archivbeständen

Übersicht

Name
Wert

Identifier

intranda_administration_archive_management

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

16.09.2024 13:07:31

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz des Administration Plugins für die Verwaltung von Archivbeständen aus Goobi workflow heraus. Dabei werden die Daten mehrerer Bestände verwaltet und erlauben auch kleinen Archiven eine standardisierte Datenerfassung ohne Inbetriebnahme einer kostenpflichtigen Drittsoftware. Der Export als standardisierte EAD-Dateien ist jederzeit möglich und kann auch automatisch in regelmäßigen Abständen durchgeführt werden.

Installation

Installation des Plugins

Das Plugin besteht insgesamt aus den folgenden zu installierenden Dateien

plugin-administration-archive-management-base.jar
plugin-administration-archive-management-gui.jar
plugin-administration-archive-management-job.jar
plugin-administration-archive-management-lib.jar
plugin_intranda_administration_archive_management.xml

Diese Dateien müssen in den richtigen Verzeichnissen installiert werden, so dass diese nach der Installation in folgenden Pfaden vorliegen:

/opt/digiverso/goobi/plugins/administration/plugin-administration-archive-management-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin-administration-archive-management-gui.jar
/opt/digiverso/goobi/plugins/GUI/plugin-administration-archive-management-job.jar
/opt/digiverso/goobi/plugins/GUI/plugin-administration-archive-management-lib.jar

Darüber hinaus benötigt das Plugin noch zusätzlich eine Konfigurationsdatei, die an folgender Stelle liegen muss:

/opt/digiverso/goobi/config/plugin_intranda_administration_archive_management.xml

Überblick und Funktionsweise

Das Plugin für die Bearbeitung von Archivbeständen findet sich unterhalb des Menüpunkts Administration.

Zur Nutzung des Plugins ist zunächst notwendig, dass der Nutzer über das Recht Plugin_Administration_Archive_Management verfügt. Sollte dieses Recht noch noch nicht zugewiesen worden sein, erhält der Nutzer folgenden Hinweis:

Die entsprechenden Rechte müssen den jeweiligen Benutzergruppen daher zunächst zugewiesen werden.

Nachdem die benötigten Rechte zugewiesen wurden und ggf. ein neuer Login erfolgte, kann die Nutzung des Plugins erfolgen.

Dabei hat der Nutzer erst einmal nur lesenden Zugriff. Um auch Daten ändern zu können, stehen folgende weitere Rechte zur Verfügung, die ggf. zusätzlich zugeweisen werden können:

Berechtigung
Erläuterung

Plugin_Administration_Archive_Management_Write

Schreibender Zugriff auf die Daten

Plugin_Administration_Archive_Management_Upload

Hochladen bzw. Einspielen vonb (neuen) EAD-Dateien

Plugin_Administration_Archive_Management_New

Erstellung von neuen Beständen

Plugin_Administration_Archive_Management_Vocabulary

Berechtigung zur Erweiterung von Auswahllisten aus Vokabularen

Plugin_Administration_Archive_Management_Inventory_NAME

Zugriff auf einzelne ausgewählte Bestände, wobei der Suffix NAME durch den Namen des Bestands zu ersetzen ist

Plugin_Administration_Archive_Management_All_Inventories

Zugriff auf alle Bestände

Plugin_Administration_Archive_Management_Delete

Löschen des ausgewählten Bestandes

Plugin_Administration_Archive_Management_Process

Erstellen von Vorgängen

Eine detaillierte Erläuterung über die Bedienung des Plugins bzw. dessen Funktionen findet sich auf dieser Seite:

Konfiguration

Nach erfolgter Installation erfolgt die Konfiguration des Plugins und der zugehörigen Oberfäche innerhalb der Konfigurationsdatei plugin_intranda_administration_archive_management.xml. Diese ist auf der folgenden Seite detailliert beschrieben:

Data Poller

Goobi Administration Plugin für die periodische Aktualisierung bestehender METS-Dateien mit Inhalten aus einer Datenabfrage

Übersicht

Name
Wert

Identifier

intranda_administration_data_poller

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

07.10.2024 13:54:01

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz des Administration-Plugins für die automatisiert wiederholte Abfrage von Daten (z.B. aus einem Katalog) zur Aktualisierung von Datensätzen in Goobi workflow.

Installation

Das Plugin besteht insgesamt aus den folgenden zu installierenden Dateien

plugin-administration-data-poller-base.jar
plugin-administration-data-poller-gui.jar
plugin-administration-data-poller-job.jar
plugin-administration-data-poller-lib.jar

Diese Dateien müssen in den richtigen Verzeichnissen installiert werden, so dass diese nach der Installation in den folgenden Pfaden vorliegen:

/opt/digiverso/goobi/plugins/administration/plugin-administration-data-poller-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin-administration-data-poller-gui.jar
/opt/digiverso/goobi/plugins/GUI/plugin-administration-data-poller-job.jar
/opt/digiverso/goobi/plugins/GUI/plugin-administration-data-poller-lib.jar

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

/opt/digiverso/goobi/config/plugin_intranda_administration_data_poller.xml

Überblick und Funktionsweise

Das Data Poller Plugin wird automatisch durch Goobi aktiviert. Seine Laufzeit beginnt zu der konfigurierten Startzeit und wiederholt sich entsprechend der konfigurierten Anzahl an Stunden, bspw. alle 24 Stunden, also einmal täglich.

Möchte ein Nutzer zusätzlich zu dieser Automatik ebenfalls Zugriff auf die Nutzeroberfläche des Plugins haben, so muss er einer Benutzergruppe angehören, die hierfür das folgende Plugin-spezifische Recht erhalten hat:

Plugin_Goobi_DataPoller

Um dieses Recht zuzuweisen, muss der gewünschten Nutzergruppe zunächst die Berechtigung im rechten Bereich eingetragen werden.

Sollte die Berechtigung für die Benutzergruppe neu eingetragen werden, so muss sich der Nutzer zunächst einmal neu in Goobi einloggen, um diese Berechtigungsstufe verwenden zu können. Anschließend kann er im Menü Administration auf das Plugin Data Poller klicken und dort auch jederzeit eine Aktualisierung der Datensätze mittels Abfrage manuell neu anstoßen.

Automatische Backups

Sollte das Plugin für einen Vorgang aktualisierte Metadaten finden und daher die METS-Datei aktualisieren, so wird zunächst automatisch ein Backup der aktuellen METS-Datei meta.xml und sofern relevant auch der meta_anchor.xml erzeugt. Das Backup wird neben der aktualisierten METS-Datei gespeichert.

Logging innerhalb des Journals

Die Updates der Metadaten durch das Plugin finden üblicherweise vollautomatisch im Hintergrund statt. Um dennoch jederzeit für einen Datensatz nachvollziehen zu können, was mit diesem zwischenzeitlich passierte, werden die Ereignisse geloggt. Zu jedem Vorgang, für den es Änderungen aus diesem Plugin gab, werden daher automatisch detaillierte Einträge innerhalb des Journals eingefügt. Diese enthalten neben dem Zeitstempel unter anderem eine genaue Auflistung der geänderten Metadatenfelder samt der Inhalte. Somit ist es jederzeit möglich, auch den vorherigen bzw. den neuen Wert nachvollziehen zu können.

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_administration_data_poller.xml und kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>

	<!-- multiple different rules can be defined for individual use cases.
        you can specify a start time and a delay in hours. the rule will only be executed if
        enabled is true. A rule can be of type filter or hotfolder. If the type hotfolder is
        used you must specify the path inside a path element in the rule.
    -->
	<rule title="SampleProject" enabled="false" startTime="22:00:00" delay="24">

		<!-- filter which items to run through please notice that filters that contain blanks
        need to be surrounded by quotation marks -->
		<filter>project:SampleProject</filter>
		<!--
		<filter>"project:Manuscript items"</filter>
        <path>/opt/digiverso/goobi/import/</path>
        -->

		<!-- which catalogue to use (GBV, Wiener, CBL Adlib ...) -->
		<catalogue>Wiener</catalogue>
		
		<!-- which catalogue field to use and which identifier to use for the 
		catalogue request (use standard variable replacer compatible value here) -->
		<catalogueField fieldName="12" fieldValue="$(meta.CatalogIDDigital)" />

		<!-- define if existing structure subelements shall be kept (true),
        otherwise a complete new mets file is created and overwrites the
        existing one (false) -->
		<mergeRecords>true</mergeRecords>

		<!-- define if children shall be analysed as well. If a sub element contains an 
		identifier, the metadata will get imported as well -->
		<analyseSubElements>true</analyseSubElements>

		<!-- execute an automatic export of updated records;
        this is only executed if mergeRecords is set to true -->
		<exportUpdatedRecords>false</exportUpdatedRecords>

       <!-- fieldList: Must have a mode attribute which can contain either blacklist or whitelist as a value.
            blacklist: All fields are updated except the defined ones. This is a potential dangerous setting!
            whitelist: Only the definied fields are updated. All others are skipped. 
            field: Use the internal metadata names from the ruleset as field definition
        -->
         <fieldList mode="blacklist">
            <field>viewerinstance</field>
            <field>singleDigCollection</field>
            <field>pathimagefiles</field>
            <field>_urn</field>
            <field>_representative</field>
         </fieldList>
        
		<!-- alwaysExecuteStepList: specify steps that shall be performed after each run of the rule
            step: name of the step that shall be executed
         -->
        <alwaysExecuteStepList>
            <step>resize images</step>
       </alwaysExecuteStepList>

        <!-- internal timestamp for the plugin to know when the rule was last executed -->
        <lastRun>1551731078691</lastRun>

	</rule>

	<rule type="filter" title="Archive project" enabled="false" startTime="21:00:00" delay="48">
		<filter>project:Archive</filter>
		<catalogue>K10Plus</catalogue>
		<catalogueField fieldName="12" fieldValue="$(meta.CatalogIDDigital)" />
		<mergeRecords>true</mergeRecords>
		<analyseSubElements>true</analyseSubElements>
		<exportUpdatedRecords>false</exportUpdatedRecords>
        <fieldList mode="whitelist">
		  <field>Author</field>
		  <field>PublicationYear</field>
		  <field>Subject</field>
		  <field>CreatorsAllOrigin</field>
        </fieldList>
	</rule>

	<rule type="filter" title="Manuscript project" enabled="false" startTime="23:00:00" delay="24">
		<filter>"project:Manuscript items"</filter>
		<catalogue>K10Plus</catalogue>
		<catalogueField fieldName="12" fieldValue="$(meta.CatalogIDDigital)" />
		<mergeRecords>true</mergeRecords>
		<analyseSubElements>true</analyseSubElements>
		<exportUpdatedRecords>false</exportUpdatedRecords>
        <fieldList mode="blacklist">
		  <field>TitleDocMain</field>
		  <field>CatalogueIDDigital</field>
		  <field>DocLanguage</field>
        </fieldList>fieldList mode="blacklist">
	</rule>

</config_plugin>

Attribute des rule Elementes

Attribut
Erläuterung

type

Hier kann der Typ der rule bestimmt. Es kann zwischen hotfolder und filter gewählt werden. Je nach Typ müssen innerhalb der rule zusätzliche Parameter angegeben werden. Diese werden in den Unterabschnitten unter dieser Tabelle beschrieben.

title

An dieser Stelle wird ein interner Name angegeben, der hauptsächlich für die Nutzeroberfläche zur Unterscheidung der unterschiedlichen Regeln dient

startTime

Mit diesem Parameter wird die Startzeit festgelegt, zu der das Plugin diese Regel ausführen soll.

delay

Hiermit kann festgelegt werden, wie häufig das Plugin ausgeführt werden soll. Die Angabe erfolgt in Form von Stunden.

enabled

Die Regel wird nur ausgeführt, wenn das Attribut enabled den Wert true annimmt.

Unterelemente des rule Elementes

Element/Attribut
Erläuterung

catalogue

Hier kann definiert werden, welcher Katalog für die Abfrage von neuen Daten verwendet werden soll. Hierbei handelt es sich um die Bezeichnung eines Kataloges, wie er innerhalb der globalen Goobi-Katalogkonfiguration innerhalb von goobi_opac.xml definiert wurde. catalogue hat die Unterelemente fieldName und fieldValue.

fieldName

Ist ein Attribut des catalogue-Elementes und steuert, innerhalb welchen Feldes der Katalog abgefragt wird. Häufig ist dieser Wert 12.

fieldValue

Ist ein Attribut des catalogue-Elementes. Definition desjenigen Metadatums aus der METS-Datei, das für die Abfrage des Katalogs verwendet werden soll. Üblicherweise handelt es sich hierbei um denjenigen Identifier, der auch bei der erstmaligen Katalogabfrage verwendet wurde und der zumeist innerhalb der Metadatums ${meta.CatalogIDDigital} gespeichert vorliegt.

exportUpdatedRecords

Wenn dieser Wert auf true gesetzt wird, so erfolgt im Anschluss an die Katalogabfrage für all diejenigen Datensätze ein erneuter Datenexport, die im Verlauf der Katalogabfrage auch tatsächlich aktualisiert wurden. Als Datenexport wird in diesem Fall derjenige Arbeitsschritt ausgeführt, der als erster Export-Arbeitsschritt innerhalb des Workflows für den Vorgang definiert wurde. Damit ist üblicherweise der Export und damit die Veröffentlichung des Vorgangs innerhalb der Goobi viewers gemeint. Zu beachten ist hierbei, dass die Vorgänge nur dann exportiert werden, wenn der Mechanismus für mergeRecords ebenfalls auf truegesetzt ist.

mergeRecords

Wenn der Wert true gesetzt ist, wird die bestehende METS-Datei mit den aktuellen Daten aus dem Katalog aktualisiert. Eventuelle zusätzliche Metadaten können für die Aktualisierung ausgeschlossen werden. Auch bleibt der logische und physische Strukturbaum innerhalb der METS-Datei unverändert. Wenn der Wert auf false gesetzt wird, dann wird die bestehende METS-Datei vollständig durch eine neue METS-Datei ersetzt, die mittels der Katalogabfrage generiert wurde.

analyseSubElements

Mit diesem Element lässt sich definieren, ob auch Metadaten für bereits innerhalb der METS-Dateien vorhandene Strukturelemente vom Katalog abgefragt werden sollen. Hierfür muss pro Unterelement das festgelegte Metadatum für den abzufragenden Identifier vorhanden sein.

fieldList

Hier stehen die Modi blacklist und whitelist zur Verfügung. Falls der Modus whitelist gewählt wird, können hier die Metadatenfelder definiert werden, die durch eine Katalogabfrage aktualisiert werden sollen. Falls der Modus blacklist verwendet wird, können mehrere Metadatenfelder definiert werden, die keinesfalls durch eine Katalogabfrage geändert werden sollen. Dies ist insbesondere für diejenigen Felder sinnvoll, die nicht aus einer Katalogabfrage kommen und daher zuvor zusätzlich zu den Katalogdaten erfasst wurden. Typische Beispiele für solche Felder sind unter anderem singleDigCollection, accesscondition und pathimagefiles. Bitte beachten Sie, dass dieser Parameter nur dann Anwendung findet, wenn der Wert für mergeRecords auf true steht.

alwaysExecuteStepList

Hier können die Titel der automatischen Schritte angegeben werden, die bei einem Durchlauf des Datapollers ausgeführt werden sollen. Die Titel befinden sich dabei in einem step-Element. Es können mehrere Schritte angegeben werden.

zusätzliche Elemente/Parameter - rule type filter

Parameter
Erläuterung

filter

Mittels des Filters können ein oder mehrere Goobi-Projekte definiert werden, für die die hier definierten Regeln gelten sollen. Mittels * gilt die Regel für sämtliche Projekte. Enthaltene Leerzeichen innerhalb des Filters müssen genau wie innerhalb der Goobi-Oberfläche mit Anführungszeichen umschlossen werden.

Zusätzliche Elemente/Parameter - rule type hotfolder

Parameter
Erläuterung

path

Hier muss der Pfad des Hotfolders angegeben werden, in dem sich die zu importierenden Dateien befinden.

createMissingProcesses

Wenn dieser Schalter aktiviert wird, werden für Dateien, die keinem vorhandenen Vorgang zugeordnet werden können, neue Vorgänge angelegt.

workflow

Hier kann angegeben werden, welche Vorlage für die neuen Vorgänge verwenden soll.

fileHandling fileFilter

Hier kann ein Regex-Filter spezifiziert werden, um die Dateinamen der Dateien im Hotfolder zu filtern. Ein einfacher Filter wäre z. B. *\.xml. Dieser Filter würde sicherstellen, dass nur XML-Dateien im Ordner verarbeitet werden.

Konfigurationseditor

Dies ist ein Plugin für den Goobi workflow, mit dem alle wichtigen Konfigurationsdateien von Goobi workflow bearbeitet werden können.

Übersicht

Name
Wert

Identifier

intranda_administration_config_file_editor

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:43:22

Einführung

Dieses Plugin dient zur direkten Bearbeitung der verschiedenen Konfigurationsdateien von Goobi workflow direkt aus der Benutzeroberfläche innerhalb des Webbrowsers.

Installation

Das Plugin besteht insgesamt aus den folgenden zu installierenden Dateien:

plugin_intranda_administration_config_file_editor_base-base.jar
plugin_intranda_administration_config_file_editor_gui-base.jar
plugin_intranda_administration_config_file_editor.xml

Diese Dateien müssen in den richtigen Verzeichnissen installiert werden, so dass diese nach der Installation unter den folgenden Pfaden vorliegen:

/opt/digiverso/goobi/plugins/administration/plugin_intranda_administration_config_file_editor-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin_intranda_administration_config_file_editor-gui.jar
/opt/digiverso/goobi/config/plugin_intranda_administration_config_file_editor.xml

Dieses Plugin verfügt über eine eigene Berechtigungsstufe für die Verwendung. Aus diesem Grund müssen Nutzer über die erforderlichen Rechte verfügen.

Bitte weisen Sie daher der Benutzergruppe der entsprechenden Nutzer das folgende Recht zu:

Plugin_administration_config_file_editor

Überblick und Funktionsweise

Nach der Installation ist das Plugin in einem eigenen Eintrag im Menü Administration zu finden, von wo es geöffnet werden kann.

Nach dem Öffnen werden auf der linken Seite alle Konfigurationsdateien von Goobi aufgelistet. Diese kann man durch Anklicken des jeweiligen Icons öffnen, um sie zu bearbeiten.

Bitte beachten Sie, dass die Konfigurationsdatei dieses Plugins aus Sicherheitsgründen standardmäßig nicht in der Liste erscheint und nur für Superadministratoren bearbeitbar ist.

Es werden außerdem keine versteckten Dateien und keine Dateien aus versteckten Ordnern angezeigt.

Öffnet man eine Datei, erscheint auf der rechten Seite ein Texteditor, in dem die Datei bearbeitet werden kann. Bearbeitet und speichert man eine Datei, wird im definierten Backupverzeichnis automatisch ein Backup angelegt.

Entsprechend des eingestellten Wertes in der Konfigurationsdatei bleibt hier eine gewisse Anzahl an älteren Backups erhalten, bevor diese durch neuere ersetzt werden.

Wurde eine Datei verändert und wird ohne zuvor zu speichern ein Wechsel zu einer anderen Datei versucht, bekommt der Bearbeiter eine Rückfrage, wie mit den Änderungen zu verfahren ist.

Innerhalb von Goobi können für Konfigurationsdateien Hilfetexte definiert werden, die für die Bearbeitung in diesem Editor behilflich sein können. Die hinterlegten Hilfetexte werden dabei abhängig von der derzeit geöffneten Datei im linken Bereich angezeigt und verfügen auch über die Möglichkeit, dass hier mit Formatierungen gearbeitet wird.

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_administration_config_file_editor.xml und kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

<?xml version="1.0" encoding="UTF-8" ?>
<config_plugin>
    <!--
    The configFileDirectories element contains a list of directories
    that are used to collect all displayed files in the browser interface.

    Each directory should be an absolute path that contains xml or properties files.
    Other file types are not supported until now.
    The directory name may end with a slash (/), otherwise it will be added automatically.

    Backups are automatically created in a subfolder called "backup/".
    You can override this with the optional attribute backupFolder="myOwnBackupPath/".
    IMPORTANT: The directory must be an absolute path while the backupFolder parameter must be a relative path.
    The backup directory name may end with a slash (/), otherwise it will be added automatically.
    To save backup files in the selected configuration directory, overwrite the backup folder with backupFolder="".

    By default 8 backup files are kept, older files will be deleted.
    You can override this with the optional attribute backupFiles="".

    You can filter the displayed configuration files in a directory with the fileRegex="" parameter.
    If the parameter is not used or is empty, it will be ignored.
    -->

    <configFileDirectories>
        <directory backupFiles="16">/opt/digiverso/goobi/config/</directory>
        <directory backupFolder="wizzardBackup/" backupFiles="4">/opt/digiverso/layoutwizzard/</directory>
        <directory backupFolder="itmPluginsBackup/" backupFiles="4" fileRegex=".*\.xml">/opt/digiverso/itm/plugins/config/</directory>
        <directory backupFolder="itmBackup/" fileRegex=".*\.xml">/opt/digiverso/itm/config/</directory>
        <!--
        Example:
        <directory backupFolder="exampleBackup/" backupFiles="12" fileRegex="*\.xml">/opt/digiverso/example/config/</directory>
        -->
    </configFileDirectories>

</config_plugin>

Die Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

Parameter
Erläuterung

configFileDirectories

Dies ist die Liste, die alle ausgewählten Konfigurationsdateipfade beinhaltet. Der in Goobi Workflow voreingestellte Konfigurationsdateipfad wird immer verwendet.

directory

Konfigurationsdateien aus dem hier angegebenen absoluten Pfad werden in der Benutzeroberfläche angezeigt. Der Pfad wird ignoriert, wenn er nicht existiert.

backupFolder

Dieser Parameter gibt einen relativen Pfad in directory an, in dem die Backup-Dateien gespeichert werden sollen. Standardmäßig wird backup/ verwendet, wenn der Parameter nicht angegeben wird. Um Backupdateien im selben Verzeichnis wie directory speichern zu lassen, überschreiben Sie den Wert mit backupFolder="".

backupFiles

Dieser ganzzahlige Wert gibt an, wie viele Backup-Dateien pro Konfigurationsdatei gespeichert bleiben, bevor sie durch neue Backups überschrieben werden. Der Standardwert beträgt 8.

fileRegex

Dieser Parameter ermöglicht eine Filterung der angezeigten Konfigurationsdateien in dem entsprechenden Ordner. Es kann ein beliebiger Regex-Ausdruck eingetragen werden. Wird dieser Parameter nicht verwendet oder ein leerer Text angegeben, so werden alle Dateien angezeigt.

Sollen Hilfetexte zu einzelnen Konfigurationsdateien angezeigt werden, so müssen diese innerhalb der messages-Dateien hinterlegt werden. Hierzu wird beispielsweise in diesen Dateien eine Anpassung vorgenommen:

/opt/digiverso/goobi/config/messages_de.properties
/opt/digiverso/goobi/config/messages_en.properties

Für jede Konfigurationsdatei kann dort in der jeweiligen Datei ein Wert wie die folgenden eingetragen werden.

Deutsche Fassung innerhalb der Datei messages_de.properties:

plugin_administration_config_file_editor_help_goobi_projects.xml = Dies ist ein Hilfetext für die Konfiguration der Anlegemaske. <br/>Hier kann eine <i>Beschreibung</i>, die <b>formatiert</b> ist.<br/><br/><pre>Und auch Quellcode kann hier stehen</pre>

Englische Fassung innerhalb der Datei messages_en.properties:

plugin_administration_config_file_editor_help_goobi_projects.xml = This is a help text for the creation mask. <br/>You can add a <i>Description</i> here, which is <b>formatted</b>.<br/><br/><pre>And you can put source code here as well</pre>

Zu beachten ist hierbei, dass jeweils der Präfix plugin_administration_config_file_editor_help_ vor dem Namen der Konfigurationsdatei angefügt wird.

Barcode Scanner Dashboard

Dashboard Plugin für das automatische Übernehmen bzw. Abschließen von Arbeitsschritten sowie zur Änderung von Standortangaben mittels Barcode-Scanner

Übersicht

Einführung

Dieses Dashboard-Plugin wurde entwickelt, um die Verwendung eines Barcode-Scanners in Goobi Workflow zu erleichtern. Es ermöglicht auf der rechten Seite der Oberfläche verschiedene Aktionen, wie z.B. das Annehmen und Abschließen von Aufgaben oder auch das Ändern des Standorts für Objekte.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

Um zu konfigurieren, wie sich das Plugin verhalten soll, können verschiedene Werte in der Konfigurationsdatei angepasst werden. Die Konfigurationsdatei befindet sich üblicherweise hier:

Für eine Nutzung dieses Plugins muss der Nutzer innerhalb der Einstellungen für das Dashboard den Wert intranda_dashboard_barcode auswählen.

Überblick und Funktionsweise

Um dieses Dashboard-Plugin zu nutzen, muss man es zunächst über Einstellungen -> Allgemein -> Dashboard aktivieren und sich dann ggf. neu anmelden. Wenn das Plugin korrekt installiert und konfiguriert wurde, sollte es bereits unter dem Menüpunkt Dashboard aktiviert sein.

Auf der rechten Seite befindet sich ein Formular mit verschiedenen Aktionen. Sie können eine auswählen, indem Sie darauf klicken. Wird die Aktion Nur Ortsänderung gewählt, gibt es ein zusätzliches Eingabefeld, das den Namen des neuen Orts erwartet.

Für alle Aktionen gibt es ein obligatorisches Eingabefeld, in dem der Titel des Goobi-Vorgangs erwartet wird. Dieses Feld wird nach dem Laden automatisch fokussiert, um die Verwendung eines Barcodescanners zu erleichtern. Durch Anklicken des Buttons Ausführen wird die gewählte Aktion ausgeführt, und es werden Meldungen über den Erfolg ausgegeben. Die durchgeführte Aktion sowie der Eingabeort werden zur Erleichterung weiterer Anwendungen gespeichert. Sie bleiben unverändert, bis eine manuelle Änderung vorgenommen wird.

Im Fall, dass Ortwechsel erfasst werden, sind diese auch zu einem späteren Zeitpunkt jederzeit innerhalb des Journals noch nachvollziehbar.

Der jeweils aktuelle Aufenthaltsort des Objektes wird darüber hinaus in einer eigenen Eigenschaft gespeichert.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_dashboard_barcode.xml wie hier aufgezeigt:

Die folgende Tabelle enthält eine Zusammenstellung der Parameter und ihrer Beschreibungen:

Einspielen der Export-Verzeichnisse

Der Import von Daten auf dem Zielsystem findet mittels zweier verschiedener Plugins statt. Diese müssen zunächst installiert und entsprechend konfiguriert werden. Mehr Informationen über deren Installation und Konfiguration finden sich hier:

Nach der erfolgreichen Installation, kann mit dem eigentlichen Import fortgefahren werden. Hierbei ist zu unterscheiden zwischen dem reinen Import von Vorgängen und dem Import einer exportierten Infrastruktur. Je nach Projekt kann dabei der Import der Infrastruktur als erster Arbeitsschritt erforderlich zu sein.

1. Importieren der Infrastruktur

Im Bereich für den Import der Infrastruktur kann die zuvor exportierte Infrastruktur des Ausgangssystems eingespielt werden. Öffnen Sie hierfür zunächst das Plugin Goobi-to-Goobi Import - Infrastruktur im Menü Administration.

An dieser Stelle läßt sich nun eine zip-Datei hochladen, die zuvor auf dem Ausgangssystem erzeugt wurde. Nach dem erfolgreichen Upload wird die Datei auf dem Server entpackt und analysiert. Der Nutzer erhält anschließend eine Zusammenfassung über die zu importierenden Daten.

Wenn bereits Nutzer, Projekte, Gruppen etc. im Zielsystem existieren, die den gleichen Namen wie die zu importierenden Daten besitzen, zählen sie nicht zu den neu zu importierenden Daten und können nicht überschrieben werden. Nach der Auswahl der importierenden Daten kann der Import mit einem Klick auf Import der Infrastruktur durchführen gestartet werden.

Sollte es gewünscht sein, kann während des Imports eine Manipulation der Daten erfolgen. Dies ist durch eine Anpassung der Konfigurationsdatei plugin_intranda_administration_goobi2goobi_import_infrastructure.xml möglich. Genaueres hierzu findet sich im Bereich Konfiguration für den Import der Infrastruktur hier:

2. Importieren von Vorgängen

Um die Vorgänge von dem Ausgangssystem importieren zu können, müssen diese zunächst erfolgreich exportiert und auf das Zielsystem transferiert worden sein. Wie der Transfer der zum Teil sehr großen Datenmengen erfolgen kann ist hier beschrieben:

Nach dem vollständigen Transfer der Daten zum Zielsystem können Sie den Import der Daten starten. Dazu öffnen Sie im Menü Administration das Plugin Goobi-to-Goobi Import - Daten. Dort werden im oberen Bereich der Nutzeroberfläche die konfigurierten Regeln für den Import angezeigt. Werden diese Regeln auf dem Zielsystem bearbeitet, so können Sie jederzeit durch einen Klick auf den Button Regeln neu einlesen neu geladen werden.

Im unteren Bereich der Nutzeroberfläche findet der eigentliche Import statt. Dort kann der Nutzer als erstes durch einen Klick auf Dateien neu einlesen nach den zu importierenden Daten suchen. Wenn diese Suche aufgrund der großen Datenmenge länger als 10 Sekunden dauert, findet die weitere Suche im Hintergrund statt und der Nutzer bekommt die Rückmeldung, dass er die Seite bitte nach einiger Zeit noch einmal aktualisieren soll.

Wenn nach der Suche der zu importierenden Daten erfolgreich Dateien aufgelistet werden, können diese nun ausgewählt werden. Dazu können sie entweder einzeln markiert werden, oder man lässt Goobi durch einen Klick auf Select all alle auswählen. Dazu muss die Regel ausgewählt werden, die für den Import angewendet werden soll. Diese lässt sich entweder direkt auswählen oder kann mittels Autodetect rule ermittelt werden. In diesem Fall wird geprüft, ob es eine Regel gibt, die dem Namen des Projektes entspricht, dem der Vorgang zugeordnet wurde.

Ein Klick auf den Button Import der Daten durchführen startet anschließend den eigentlichen Import. Während dieses Imports wird für jeden ausgewählten Vorgang ein internes Goobi-Ticket erstellt und an die interne Warteschlange (Message Queue) übermittelt. Die einzelnen Tickets werden im Hintergrund abgearbeitet und die Vorgänge so sukzessive importiert.

Eine genaue Konfiguration des Imports sowie der zugrundeliegenden Regeln kann innerhalb der Konfigurationsdatei plugin_intranda_administration_goobi2goobi_import_data.xml erfolgen. Weitere Informationen über diese Konfiguration findet sich im im Abschnitt Konfiguration für den Import der Daten:

Öffnen eines vorhandenen Archivbestandes
Anlegen eines neuen Archivbestandes
Import einer EAD-Datei
Bearbeitungsmaske für den Archivbestand
Mehrere Knoten einfügen
Suche innerhalb des Bestandes
Erweiterte Suche
Anzeige einer fehlerhaften Validierung
Dem Zeitschriftenband wurde das Metadatum InternalNote mit dem Wert AnchorMaster zugewiesen
Anpassungen an diesem Anchor können mit dem Plugin von nun an für alle zugehörigen Bände übernommen werden
Öffnen des Plugins über das Menü Administration
Ausführen des Kopiervorgangs
Export Plugin für Fedora innerhalb einer Aufgabe
Step Plugin für die Bildkontrolle innerhalb einer Aufgabe
Step Plugin für die Bildkontrolle innerhalb einer Aufgabe
Opac Plugin für die Abfrage von Daten aus einer externen Datenquelle (Katalog)
Import Plugin für die Datenübernahme aus Excel als Datenquelle
Der Regelsatzeditor als Administration Plugin
Das Workflow Plugin für das Masseneinspielen von Bildern für die automatische Zuordnung zu den bestehenden Vorgängen
Ein Dashboard Plugin mit erweiterten Informationen zur Goobi Instanz
Statistik Plugin für die Anzeige der abgeschlossenen Aufgaben pro Jahr
Validation Plugin für die Validierung von Dateinamen nach dem Einspielen von Bildern
Barcode Scanner Plugin in der Menüleiste
Eingabefeld
Textarea
Auswahlliste
Mehrfachauswahl
Verknüpfung
Auswahl des Knotens
GND Feld
Geonames Feld
VIAF Feld
Exportierte xml-Datei innerhalb eines Vorgangsordners
Aufrufen des Exports mittels GoobiScript
Vorgangsdetails mit dem Icon für den Export der Daten in eine zip-Datei
Nutzeroberfläche des Plugins Goobi-to-Goobi Export
Exportierte xml-Datei innerhalb des Ordners einer Produktionsvorlage
Heruntergeladene zip-Datei mit Informationen über die Infrastruktur
Funktionsweise des Goobi-to-Goobi Datenaustausches
Korrekt zugewiesene Rolle für die Nutzer
User interface of the plugin
Hinzufügen der benötigten Export-Rechte zur Benutzergruppe
Hinzufügen der benötigten Import-Rechte zur Benutzergruppe

Betreten des Plugins
Hinweis auf fehlende Nutzerrechte
Zuweisung der benötigten Nutzerrechte

Benutzergruppe mit zugewiesener Berechtigung
Oberfläche des Data Pollers
Möglichkeit, die Ergebnisse eines Testlaufs herunterzuladen
Heruntergeladene Excel-Datei
Mehrere Versionen der METS-Dateien werden als Backup aufgehoben
Innerhalb des Vorgangslogs sind die Änderungen des Data Pollers nachvollziehbar

Kein Zugriff ohne korrekte Rechte
Korrekt zugewiesenes Recht für die Nutzer
Geöffnetes Plugin ohne geladene Datei
Geöffnetes Plugin mit geladener Datei
Gespeicherte Datei
Dateien innerhalb des Backup-Verzeichnisses
Nachfrage bei ungespeicherten Daten
Hilfetexte für die jeweiligen Konfigurationsdateien
Name
Wert
Parameter
Erläuterung

Bedienung des Plugins
Konfiguration des Plugins
/opt/digiverso/goobi/plugins/dashboard/plugin_intranda_dashboard_barcode.jar
/opt/digiverso/goobi/plugins/GUI/plugin_intranda_dashboard_barcode-GUI.jar
/opt/digiverso/goobi/config/plugin_intranda_dashboard_barcode.xml
<?xml version="1.0" encoding="UTF-8"?>

<config_plugin>
	
	<!-- number of previous tasks that shall be shown -->
	<tasks-latestChanges-size>37</tasks-latestChanges-size>
	
	<!-- display the option to accept tasks -->
	<show-accept-option>true</show-accept-option>
	​
	<!-- display the option to finish tasks -->
	<show-finish-option>true</show-finish-option>
	​
	<!-- display the option to accept and finish tasks as one action -->
	<show-accept-and-finish-option>true</show-accept-and-finish-option>
	​
	<!-- display the option to change the location -->
	<show-change-location-option>true</show-change-location-option>
	
	<!-- define which filter shall be used to find the processes. Use {BARCODE} 
	as placeholder for the input field content (e.g. "meta:*:{BARCODE}" ) -->
	<filter>meta:*:{BARCODE}</filter>
	
</config_plugin>

tasks-latestChanges-size

Dieser Parameter legt fest, wie viele erledigten Aufgaben in der linken Tabelle angezeigt werden sollen.

show-accept-option

Dieser Parameter legt fest, ob der Button für die Annahme von Aufgaben aktiviert werden soll. Default ist hierfür false.

show-finish-option

Dieser Parameter legt fest, ob der Button für die Beendigung von Aufgaben aktiviert werden soll. Default ist hierfür false.

show-accept-and-finish-option

Dieser Parameter legt fest, ob der Button für die Annahme von Aufgaben und deren Beendigung aktiviert werden soll. Default ist hierfür false.

show-change-location-option

Dieser Parameter legt fest, ob der Button für den Ortswechsel aktiviert werden soll. Default ist hierfür false.

Auswahl des Dashboards in den Nutzereinstellungen
Das Annehmen und Abschließen von Aufgaben
Die Erfassung eines Ortswechsels
Gespeicherte Informationen zum Ortswechsel im Journal
Aktueller Ort innerhalb einer Eigenschaft
Nutzeroberfläche für das Hochladen einer Infrastruktur auf dem Zielsystem
Anzeige der analysierten Daten aus der zu importierenden Infrastruktur
Nutzeroberfläche für den Import
Nutzeroberfläche mit Anzeige der Details zu Regeln
https://github.com/intranda/goobi-plugin-administration-archive-management
https://github.com/intranda/goobi-plugin-administration-data-poller
https://github.com/intranda/goobi-plugin-administration-config-file-editor
Installation
Installation
Transfer der Export-Verzeichnisse
Installation

Identifier

intranda_dashboard_barcode

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

21.09.2024 11:37:28

Paginierung zurücksetzen

Goobi Administration Plugin für das Zurücksetzen der Paginierung für mehrere Vorgänge

Übersicht

Name
Wert

Identifier

intranda_administration_reset_pagination

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:13:09

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz des Administration Plugins für das automatisierte Zurücksetzen der Paginierung innerhalb einer großen Anzahl an Vorgängen innerhalb von Goobi workflow.

Installation

Das Plugin besteht insgesamt aus den folgenden zu installierenden Dateien:

plugin-intranda-administration-reset-pagination-base.jar
plugin-intranda-administration-reset-pagination-gui.jar
plugin_intranda_administration_reset_pagination.xml

Diese Dateien müssen in den richtigen Verzeichnissen installiert werden, so dass diese nach der Installation in folgenden Pfaden vorliegen:

/opt/digiverso/goobi/plugins/administration/plugin-intranda-administration-reset-pagination-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin-intranda-administration-reset-pagination-gui.jar
/opt/digiverso/goobi/config/plugin_intranda_administration_reset_pagination.xml

Überblick und Funktionsweise

Wenn das Plugin korrekt installiert und konfiguriert wurde, ist es innerhalb des Menüpunkts Administration zu finden. Nach dem Betreten können in der Oberfläche die oben beschriebenen Parameter noch einmal individuell angepasst werden.

Nach dem Klick auf den Button Plugin ausführen startet die Aktualisierung der METS-Dateien. Ein Fortschrittsbalken informiert über den Fortschritt. Innerhalb der Tabelle werden die bereits verarbeiteten Vorgänge aufgelistet und der jeweilige Status über den Erfolg der Durchführung angezeigt.

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_administration_reset_pagination.xml und kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

<config_plugin>
	
	<!-- default filter to use -->
	<filter>stepdone:export</filter>
	
</config_plugin>
Parameter
Erläuterung

filter

Mit diesem Parameter kann ein Filter als Standard festgelegt werden. Dieser wird beim Betreten des Plugins automatisch vorausgefüllt, kann dann aber je nach Wunsch bei jeder Verwendung des Plugins innerhalb der Nutzeroberfläche angepasst werden.

Für eine Nutzung dieses Plugins muss der Nutzer über die korrekte Rollenberechtigung verfügen. Bitte weisen Sie daher der Benutzergruppe die Rolle Plugin_administration_reset_pagination zu.

Kompatibilität mit Regelsatz

Goobi Administration Plugin für das Prüfen der Regelsatzkompatibilität für mehrere Vorgänge

Übersicht

Name
Wert

Identifier

intranda_administration_ruleset_compatibility

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:16:33

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz des Administration Plugins für das automatisierte Prüfung einer großen Anzahl an Vorgängen innerhalb von Goobi workflow mit dem zugewiesenen Regelsatz. Eventuelle Inkompatibilitäten mit den jeweiligen Regelsätzen werden ermittelt und eine entsprechende Meldung über die konkrete Inkompatibilität angezeigt.

Installation

Das Plugin besteht insgesamt aus den folgenden zu installierenden Dateien:

plugin_intranda_administration_ruleset_compatibility-base.jar
plugin_intranda_administration_ruleset_compatibility-gui.jar
plugin_intranda_administration_ruleset_compatibility.xml

Diese Dateien müssen in den richtigen Verzeichnissen installiert werden, so dass diese nach der Installation in folgenden Pfaden vorliegen:

/opt/digiverso/goobi/plugins/administration/plugin_intranda_administration_ruleset_compatibility-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin_intranda_administration_ruleset_compatibility-gui.jar
/opt/digiverso/goobi/config/plugin_intranda_administration_ruleset_compatibility.xml

Für eine Nutzung dieses Plugins muss der Nutzer über die korrekte Rollenberechtigung verfügen. Bitte weisen Sie daher der Benutzergruppe die Rolle Plugin_administration_ruleset_compatibility zu.

Überblick und Funktionsweise

Wenn das Plugin korrekt installiert und konfiguriert wurde, ist es innerhalb des Menüpunkts Administration zu finden. Nach dem Betreten können in der Oberfläche die oben beschriebenen Parameter noch einmal individuell angepasst werden.

Nach dem Klick auf den Button Plugin ausführen startet die Prüfung der METS-Dateien. Ein Fortschrittsbalken informiert über den Fortschritt. Innerhalb der Tabelle werden die bereits verarbeiteten Vorgänge aufgelistet. Eventuelle Inkompatibilitäten werden unmittelbar angezeigt. Darüber hinaus besteht die Möglichkeit, direkt den Metadateneditor einzelner Vorgänge zu betreten.

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_administration_ruleset_compatibility.xml und kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

<config_plugin>
	
	<!-- default filter to use -->
	<filter>stepdone:export</filter>
	
</config_plugin>
Parameter
Erläuterung

filter

Mit diesem Parameter kann ein Filter als Standard festgelegt werden. Dieser wird beim Betreten des Plugins automatisch vorausgefüllt, kann dann aber je nach Wunsch bei jeder Verwendung des Plugins innerhalb der Nutzeroberfläche angepasst werden.

Regelsatzeditor

Dies ist ein Administration Plugin für Goobi workflow. Es ermöglicht die Bearbeitung von Ruleset-Dateien direkt aus der Benutzeroberfläche.

Übersicht

Name
Wert

Identifier

intranda_administration_ruleset_editor

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:09:29

Einführung

Dieses Plugin dient zur direkten Bearbeitung der Regelsatzdateien von Goobi workflow direkt aus der Benutzeroberfläche innerhalb des Webbrowsers.

Installation

Das Plugin besteht insgesamt aus den folgenden zu installierenden Dateien:

plugin-intranda-administration-ruleset-editor-base.jar
plugin-intranda-administration-ruleset-editor-gui.jar
plugin_intranda_administration_ruleset_editor.xml

Diese Dateien müssen in den richtigen Verzeichnissen installiert werden, so dass diese nach der Installation unter den folgenden Pfaden vorliegen:

/opt/digiverso/goobi/plugins/administration/plugin-intranda-administration-ruleset-editor-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin-intranda-administration-ruleset-editor-gui.jar
/opt/digiverso/goobi/config/plugin_intranda_administration_ruleset_editor.xml

Dieses Plugin verfügt über eine eigene Berechtigungsstufe für die Verwendung. Aus diesem Grund müssen Nutzer über die erforderlichen Rechte verfügen.

Bitte weisen Sie daher der Benutzergruppe der entsprechenden Nutzer das folgende Recht zu:

Plugin_administration_ruleset_editor

Überblick und Funktionsweise

Nach der Installation ist das Plugin in einem eigenen Eintrag im Menü Administration zu finden, von wo es geöffnet werden kann.

Nach dem Öffnen werden auf der linken Seite alle Regelsätze von Goobi aufgelistet. Diese kann man durch Anklicken des jeweiligen Icons öffnen, um sie zu bearbeiten.

Öffnet man eine Datei, erscheint auf der rechten Seite ein Texteditor, in dem die Datei bearbeitet werden kann. Bearbeitet und speichert man eine Datei, wird im definierten Backupverzeichnis automatisch ein Backup angelegt.

Entsprechend des eingestellten Wertes in der Konfigurationsdatei bleibt hier eine gewisse Anzahl an älteren Backups erhalten, bevor diese durch neuere ersetzt werden.

Wurde eine Datei verändert und wird ohne zuvor zu speichern ein Wechsel zu einer anderen Datei versucht, bekommt der Beareiter eine Rückfrage, wie mit den Änderungen zu verfahren ist.

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_administration_ruleset_editor.xml und kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

<config_plugin>
	
	<!-- By editing a ruleset file in the browser GUI, a backup file will be stored in the backup directory -->
	<rulesetBackupDirectory>/opt/digiverso/goobi/rulesets/backup/</rulesetBackupDirectory>

	<!-- backup files will be stored as ruleset.xml.1, ruleset.xml.2, ..., ruleset.xml.n -->
	<numberOfBackupFiles>10</numberOfBackupFiles>
	
</config_plugin>

Die Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

Parameter
Erläuterung

rulesetBackupDirectory

Hiermit wird der Pfad für die Backup-Dateien festgelegt, wo nach dem Bearbeiten die Backups der Regelsatzdateien gespeichert werden sollen.

numberOfBackupFiles

Dieser ganzzahlige Wert gibt an, wie viele Backup-Dateien pro Regelsatzdatei gespeichert bleiben, bevor sie durch neue Backups überschrieben werden.

Einzelseitenexport

Dieses Export Plugin für Goobi workflow erzeugt einen spezifischen Export von Einzelseiten als mehrere METS-Dateien pro Vorgang. Jedes Strukturelement resultiert dabei in einer eigenen METS-Datei.

Übersicht

Einführung

Dieses Plugin dient für einen speziellen Export von mehreren METS-Dateien pro Vorgang. Aus einer einzigen METS-Datei innerhalb von Goobi workflow entstehen so während des Exports für jedes enthaltene Strukturelement eine eigene METS-Datei mit den zugehörigen Bilddateien.

Diese Plugin wurde für das Bundesdenkmalamt in Österreich entwickelt und ist funktionell auf dessen Bedürfnisse ausgerichtet und somit gegebenenfalls nicht für andere Anwendungsfälle unmittelbar einsetzbar.

Installation

Das Plugin besteht insgesamt aus den folgenden zu installierenden Dateien:

Diese Datei muss in dem folgenden Verzeichnis installiert werden:

Überblick und Funktionsweise

Zur Inbetriebnahme des Plugins muss dieses für einen oder mehrere gewünschte Aufgaben im Workflow aktiviert werden. Dies erfolgt wie im folgenden Screenshot aufgezeigt durch Auswahl des Plugins intranda_export_singleImage aus der Liste der installierten Plugins.

Da dieses Plugin üblicherweise automatisch ausgeführt werden soll, sollte der Arbeitsschritt im Workflow als automatisch konfiguriert werden. Darüber hinaus muss die Aufgabe als Export-Schritt markiert sein.

Nachdem das Plugin vollständig installiert und eingerichtet wurde, wird es üblicherweise automatisch innerhalb des Workflows ausgeführt, so dass keine manuelle Interaktion mit dem Nutzer erfolgt. Stattdessen erfolgt der Aufruf des Plugins durch den Workflow im Hintergrund und führt die folgenden Arbeiten durch:

Für jedes Strukturelement innerhalb der METS-Datei wird während des Exports eine eigenständige METS-Datei erzeugt, zu der die jeweiligen Bilddateien zugehörig mitexportiert werden. Die Gesamt-METS-Datei wird nicht mit exportiert. Die Anzahl der somit erzeugten METS-Dateien weicht entsprechend von der Anzahl der Goobi Vorgänge ab und entspricht der Anzahl der vorhandenen Strukturelemente.

Konfiguration

Dieses Plugin verfügt über keine eigene Konfigurationsdatei.

Erweitertes Dashboard

Dashboard Plugin für erweiterte Anzeige von Informationen

Übersicht

Einführung

Dieses Dashboard Plugin ermöglicht durch eine detaillierte Darstellung einen verbesserten Überblick. Es können beispielsweise die zuletzt bearbeiteten Aufgaben oder relevante Statistiken angezeigt werden.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

Für eine Nutzung dieses Plugins muss der Nutzer innerhalb der Einstellungen für das Dashboard den Wert intranda_dashboard_extended auswählen.

Überblick und Funktionsweise

Wenn das Plugin korrekt installiert ist und Nutzer sich dieses als Dashboard eingestellt haben, ist es nach dem Login in Goobi workflow anstelle der Startseite sichtbar.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_dashboard_extended.xml wie hier aufgezeigt:

Die folgende Tabelle enthält eine Zusammenstellung der Parameter und ihrer Beschreibungen:

Individueller Export für das DMS Imagen Media Archive Management

Export Plugin für Goobi workflow zum Erzeugen spezieller Exportformate in die Software Imagen Media Archive Management

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Export-Plugins für die Erzeugung spezieller Exportpakete für die Software Imagen Media Archive Management. Innerhalb des Plugins werden hierbei derzeit 5 spezielle Publikationstypen berücksichtigt und jeweils individuell verarbeitet.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

Nach der Installation des Plugins kann dieses innerhalb des Workflows für die jeweiligen Arbeitsschritte ausgewählt und somit automatisch ausgeführt werden. Ein Workflow könnte dabei beispielhaft wie folgt aussehen:

Für die Verwendung des Plugins muss dieses in einem Arbeitsschritt ausgewählt sein:

Überblick und Funktionsweise

Dieses Plugin wird innerhalb des Workflows automatisch als Export-Plugin ausgeführt und erzeugt innerhalb eines konfigurierten Verzeichnisses die jeweils benötigten Daten. Dabei handelt es sich je nach Publikationstyp um:

  • Bilddateien

  • Plaintext-Dateien mit OCR-Ergebnissen

  • ALTO-Dateien mit OCR-Ergebnissen

  • METS-Dateien

  • METS-Anchor-Dateien

  • XML-Export-Dateien

Insbesondere der Aufbau der XML-Export-Dateien ist je nach Publikationstyp sehr unterschiedlich. Hier einmal ein Beispiel für ein Generic Print-Publikationstyp:

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_export_adm_bsme.xml wie hier aufgezeigt:

Die darin verwendeten Parameter werden hier detailliert:

Für eine einfachere Inbetriebnahme befindet sich in install-Ordner des Plugins einn Verzeichnis mit den zwei passende Regelsätze als Referenz, die zu der hier aufgeführte Konfigurationsdatei passen.

Fedora Export

Goobi Plugin für den Export von Goobi-Vorgängen in ein Fedora Repository

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz des Fedora Export Plugins in Goobi workflow.

Installation

Das Plugin muss in den folgenden Ordner installiert werden:

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

Überblick und Funktionsweise

Es muss ein Export Schritt konfiguriert werden:

  • Export DMS

  • Automatische Aufgabe

  • Plugin für Arbeitsschritt: FedoraExport

Bei der Ausführung des Schrittes wird ein Export des Goobi Vorgangs (analog zum Export ins Dateisystem) in das konfigurierte Fedora Repository unter Berücksichtigung der Konfiguration (siehe oben) eingespielt.

Die Daten des Vorgangs lassen sich anschließend über das folgende URL-Muster im Repository abrufen:

Beispiele für die URLs nach erfolgreichem Ingest nach Fedora

URL des Datensatzes

URL für die METS-Datei

URL für die Master-Bilder

URL für die Derivate der Bilder

Konfiguration

Die Konfiguration erfolgt über die Konfigurationsdatei intranda_export_fedora.xml und kann im laufenden Betrieb angepasst werden.

Export für Zeitungen in das Portal der Deutschen Digitalen Bibliothek

Goobi Export Plugin zur Erstellung der METS Struktur für den Import in das Zeitungsportal der DDB

Übersicht

Einführung

Das Plugin dient zur Erstellung der METS Struktur für den Import in das Zeitungsportal der Deutschen Digitalen Bibliothek. Dabei wird für die Gesamtaufnahme einer Zeitung eine METS-Anchor Datei erzeugt, für jeden exportierten Jahrgang wird eine weitere METS-Anchor Datei erzeugt und innerhalb der Gesamtaufnahme verlinkt. Der Jahrgang enthält weitere Strukturen für Monat und Tag.

Jede Ausgabe wird als einzelne METS Dateien erstellt und in der METS-Anchor Datei des Jahrgangs verlinkt. Die Ausgabe kann weitere Strukturdaten wie Artikelbeschreibungen oder Beilagen enthalten. Hier wird auch auf die digitalisierten Bilder verwiesen.

Installation

Das Plugin besteht aus der folgenden Datei:

Diese Datei muss in dem richtigen Verzeichnis installiert werden, so dass diese nach der Installation an folgendem Pfad vorliegt:

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

Überblick und Funktionsweise

Zur Inbetriebnahme des Plugins muss dieses für eine Aufgabe im Workflow aktiviert werden. Dies erfolgt wie im folgenden Screenshot aufgezeigt durch Auswahl des Plugins intranda_export_newspaper aus der Liste der installierten Plugins.

Da dieses Plugin üblicherweise automatisch ausgeführt werden soll, sollte der Arbeitsschritt im Workflow als automatisch konfiguriert werden. Darüber hinaus muss die Aufgabe als Export-Schritt markiert sein.

Daneben muss es noch einen weiteren, regulären Export Schritt geben, damit die verlinkten Bilder und ALTO Dateien über die Schnittstellen des Goobi viewers ausgeliefert werden können.

Nachdem das Plugin vollständig installiert und eingerichtet wurde, wird es üblicherweise automatisch innerhalb des Workflows ausgeführt, so dass keine manuelle Interaktion mit dem Nutzer erfolgt. Stattdessen erfolgt der Aufruf des Plugins durch den Workflow im Hintergrund und führt die folgenden Arbeiten durch:

Für jede Ausgabe wird eine eigene METS Datei erstellt, die zur Ausgabe gehörenden Bilder und OCR Daten verlinkt. Die Ausgabe kann weitere Unterelemente wie Artikel oder Beilagen haben.

Die einzelnen Ausgaben werden dann in einer METS Datei für den Jahrgang zusammengefasst. Die METS Dateien der Ausgaben sind innerhalb einer Struktur für Monat und Tag verlinkt.

Als letztes wird geprüft, ob im Zielverzeichnis ein Datensatz mit den Metadaten der Gesamtaufnahme existiert. Wenn nicht, wird eine METS Datei erstellt, ansonsten wird der Jahrgang in die Strukturdaten der Gesamtaufnahme eingetragen.

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_export_newspaper.xml und kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

Im ersten Bereich <export> werden einige globale Parameter gesetzt. Hier wird festgelegt, ob neben den Metsdateien auch Bilder exportiert werden sollen (<images> true/false), ob diese pro Ausgabe oder pro Jahrgang exportiert und in den Datensätzen verlinkt werden (<subfolderPerIssue> true/false), in welches Verzeichnis der Export durchgeführt werden soll (<exportFolder>) und welche Resolver für die METS Datei (<metsUrl>) und den Link auf den veröffentlichten Datensatz (<resolverUrl>) geschrieben werden sollen.

Im zweiten Bereich <metadata> werden eine Reihe von Metadaten definiert. Diese Felder müssen im Regelsatz existieren und werden zum Teil während des Exports von der Gesamtaufnahme in die einzelnen Ausgaben kopiert.

Der dritte Bereich <docstruct> definiert einige zu erzeugende Strukturelemente. Diese müssen ebenfalls im Regelsatz konfiguriert sein.

Fedora Export PROV

Goobi Plugin für den Export von Goobi-Vorgängen in ein Fedora Repository für das Public Record Office in Victoria

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz des Fedora Export Plugins in Goobi workflow.

Überblick und Funktionsweise

Es muss ein Export Schritt konfiguriert werden:

  • Export DMS

  • Automatische Aufgabe

  • Plugin für Arbeitsschritt: FedoraExport

Bei der Ausführung des Schrittes wird ein Export des Goobi Vorgangs (analog zum Export ins Dateisystem) in das konfigurierte Fedora Repository unter Berücksichtigung der Konfiguration (siehe oben) eingespielt.

Es werden für die Bildung der Container-URLs bzw. von zusätzlichen Container-Attributen folgende Vorgangseigenschaften hinzugezogen (und sind unter Umständen zwingend erforderlich):

  • barcode (enthält einen 10-stelligen Barcode oder eine 36-stellige PID)

  • unit_Item_code (nur bei Barcodes)

  • full_partial

Die Daten des Vorgangs lassen sich anschließend über das folgende URL-Muster im Repository abrufen:

Beispiele für die URLs nach erfolgreichem Ingest nach Fedora

Beispiel mit Barcode (barcode=“barcode123”):

Hauptcontainer für die Bilder

Container für die Master-Bilder

Container für die JP2-Derivate

Beispiel mit PID (barcode=“DB0027DB-F83B-11E9-AE98-A392051B17E6”):

Hauptcontainer für die Bilder

Container für die Master-Bilder

Container für die JP2-Derivate

Konfiguration

Die Konfiguration erfolgt über die Konfigurationsdatei intranda_export_fedora.xml und kann im laufenden Betrieb angepasst werden.

Der Block <config> ist wiederholbar und kann so in unterschiedlichen Projekten verschiedene Metadaten definieren. Die Unterelemente <workflow> wird zur Prüfung genutzt, ob der vorliegende Block für den aktuellen Schritt genutzt werden soll. Dabei wird geprüft, ob es einen Eintrag gibt, der sowohl den Workflow-Namen enthält. Ist dies nicht der Fall, wird der Block mit <workflow>*</workflow> verwendet.

Heris Export

Dies ist eine technische Dokumentation für das Heris Export Plugin. Es ermöglicht den Export von ausgewählten Bildern und ihren dazugehörigen Metadaten auf einen SFTP Server.

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Heris-Export-Plugins in Goobi.

Mithilfe dieses Plugins für Goobi workflow können die in einem vorherigen Arbeitsschritt ausgewählten Bilder und dazugehörige Metadaten in eine JSON-Datei exportiert werden. Der Export erfolgt anschließend via SFTP auf einen externen Server.

Installation

Um den Heris Export nutzen zu können, müssen folgende Dateien installiert werden:

Im Workflow muss ein automatischer Schritt eingefügt werden, bei dem das Plugin intranda_export_heris ausgewählt wurde. Dieser Schritt muss nach dem Arbeitsschritt mit dem Plugin Image Selection ausgeführt werden, in dem die Auswahl der zu exportierenden Bilder erfolgt.

Überblick und Funktionsweise

Wenn das Plugin ausgeführt wird, prüft es als erstes, ob in dem Arbeitsschritt mit dem Plugin Image Selection mindestens ein Bild ausgewählt wurde. Wenn dies der Fall ist, werden die folgenden Arbeiten durchgeführt:

  • Kopieren der ausgewählten Bilder in einen temporären Ordner

  • Prüfung, ob es bereits einen älteren Export für die aktuelle HERIS ID gibt

    • Falls ja, Erstellung eines Backups der alten JSON Datei, Download der alten JSON Datei

    • Prüfung, ob die ausgewählten Dateien den Bildnamen in der alten JSON Datei entsprechen

      • für jedes gleich bleibende Bild wird der alte Bild-Identifier ermittelt, um im neuen JSON wiederverwendet zu werden

      • jedes schon exportierte Bild, das im neuen Export nicht mehr vorhanden ist, wird remote gelöscht

      • jedes neue Bild, das im alten Export noch nicht existierte, wird wie ein komplett neuer Export behandelt

  • Ermittlung der Metadaten für die ausgewählten Bilder

  • Erstellung der JSON-Datei aus den ermittelten Metadaten, gegebenfalls unter Beibehaltung der alten Bild-IDs

  • Kopieren der erzeugten Daten an das Ziel

  • Löschen der temporären Daten

Konfiguration

Die Konfiguration erfolgt in der Datei plugin_intranda_export_heris.xml wie hier aufgezeigt:

Dabei ist der Bereich <config> wiederholbar und erlaubt so unterschiedliche Exporte für verschiedene Projekte oder Schritte.

Im Feld <propertyName> wird definiert, in welcher Eigenschaft die ausgewählten Bilder gespeichert sind. Dieser Wert muss mit der Konfiguration des Plugins Image Selection übereinstimmen.

Anschließend wird die JSON-Datei beschrieben. Das Feld <herisId> enthält das Metadatum, in dem die HERIS-ID gespeichert wird und im <jsonRootElement> wird der Name des JSON-Objects konfiguriert, in dem die einzelnen Bilder beschrieben werden.

Die einzelnen Felder der Bild-Objekte werden in der <field> Liste beschrieben. Jedes Feld verfügt über drei Angaben.

  • Im Attribut name wird definiert, wie das Element innerhalb der JSON Datei heißen soll.

  • Im Element selbst wird der Wert beschrieben.

  • Mittels type wird angegeben, um was für einen Typen es sich handelt. Je nach Typ wird der Wert anders interpretiert.

Dabei sind folgende Angaben möglich:

  • static: Der Wert wird unverändert als Text in das JSON geschrieben.

  • filename: Hier wird der Bildname gespeichert.

  • representative: Kann die Werte true/false enthalten. Das erste Bild der Liste wird als Repräsentant genutzt.

  • identifier: Enthält den Identifier des Bildes aus der HERIS-Datenbank. Bei einem Re-Export wird der vorherige Identfier wiederverwendet. Bei neuen Exporten bleibt das Feld leer.

  • metadata: Der Wert wird als Metadatum interpretiert und aus den Metadaten ermittelt. Das Metadatum wird zuerst im Unterelement Foto gesucht, dass dem Bild zugewiesen wurde. Wenn das nicht existiert, wird das Metadatum im Hauptelement Dokument erwartet.

Im letzten Block wird die SFTP Verbindung konfiguriert. Hier stehen Optionen für die Authentifizierung mittels Nutzername und Passwort, Nutzername und Key oder Nutzername und passwortgeschützten Key zur Verfügung.

Konfigurierbarer Export

Dieses Export plugin erlaubt einen sehr flexiblen Export von Goobi Vorgängen basierend auf individueller Konfiguration.

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz eines Export-Plugins in Goobi.

Mithilfe dieses Export-Plugins für Goobi können die Goobi-Vorgänge innerhalb eines Arbeitsschrittes gleichzeitig an mehrere Orte exportiert werden.

Installation

Dieses Plugin wird in den Workflow so integriert, dass es automatisch ausgeführt wird. Eine manuelle Interaktion mit dem Plugin ist nicht notwendig. Zur Verwendung innerhalb eines Arbeitsschrittes des Workflows sollte es wie im nachfolgenden Screenshot konfiguriert werden.

Das Plugin muss zunächst in folgendes Verzeichnis kopiert werden:

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_export_configurable-base.jar und über die Projekteinstellungen. Die Konfiguration kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

Der config-Block

Der Block <config> ist wiederholbar und kann so in unterschiedlichen Projekten verschiedene Metadaten definieren. Der Block mit <project>*</project> wird angewendet, wenn kein Block mit der Projektbezeichnung des Projektes existiert.

Der includeFolders-Block

Der includeFolders Block befindet sich innerhalb von jedem config-Element. Er steuert, welche Verzeichnisse für den Export berücksichtigt werden sollen.

Wird das jeweilige Attribut enabled als false konfiguriert wird, findet kein Export des entsprechenden Ordners statt.

Die Konfiguration des Zielordners kann innerhalb der Projekteinstellungen in der Nutzeroberfläche von Goobi workflow vorgenommen werden. Wenn dort die Checkbox für Erzeuge Vorgangsverzeichnis gesetzt ist, wird der Vorgang in einen Unterordner mit seinem Titel als Namen im Zielverzeichnis abgelegt.

Nutzeroberfläche des Plugins
Korrekt zugewiesene Rolle für die Nutzer

Korrekt zugewiesene Rolle für die Nutzer
Nutzeroberfläche des Plugins

Kein Zugriff ohne korrekte Rechte
Korrekt zugewiesenes Recht für die Nutzer
Geöffnetes Plugin ohne geladene Datei
Geöffnetes Plugin mit geladener Datei
Gespeicherte Datei
Dateien innerhalb des Backup-Verzeichnisses
Nachfrage bei ungespeicherten Daten
Name
Wert
Name
Wert
Parameter
Erläuterung
Name
Wert
Parameter
Erläuterung
Name
Wert

Parameter
Erläuterung
Name
Wert

Name
Wert

Parameter
Erläuterung
Name
Wert
Name
Wert
Parameter
Erläuterung
Parameter
Erläuterung
https://github.com/intranda/goobi-plugin-dashboard-barcode
plugin_intranda_export_bdaSingleImage-base.jar
/opt/digiverso/goobi/plugins/export/plugin_intranda_export_bdaSingleImage-base.jar
/opt/digiverso/goobi/plugins/dashboard/plugin-dashboard-extended-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin-dashboard-extended-gui.jar
/opt/digiverso/goobi/config/plugin_intranda_dashboard_extended.xml
<?xml version="1.0" encoding="UTF-8"?>

<config_plugin>
	
	<!-- intranda TaskManager -->
	<itm-show>false</itm-show>
	<itm-cache-time>180000</itm-cache-time>
	<itm-url>http://localhost:8080/itm/</itm-url>
	
	<!-- Nagios Monitoring -->
	<nagios-show>false</nagios-show>
	<nagios-cache-time>180000</nagios-cache-time>
	<nagios-host>host.example.org</nagios-host>
	<nagios-login>user</nagios-login>
	<nagios-password>pass</nagios-password>
	
	<!-- RSS-Feed e.g. of last imports -->
	<rss-show>true</rss-show>
	<rss-cache-time>900000</rss-cache-time>
	<rss-url>https://www.intranda.com/feed/</rss-url>
	<rss-title>News by intranda GmbH</rss-title>
	
	<!-- Search -->
	<search-show>true</search-show>
	
	<!-- Show tasks the user works on -->
    <tasks-show>true</tasks-show>
    <tasks-show-size>5</tasks-show-size>
    
    <!-- show recent history  -->
    <tasks-history>false</tasks-history>
    <!-- show history for configured tasks -->
    <tasks-history-title>Data import via Excel sheet</tasks-history-title>
    <tasks-history-title>Scanning</tasks-history-title>
    <tasks-history-title>Fileupload</tasks-history-title>
    <!-- include status changes for the last X days -->
    <tasks-history-period>7</tasks-history-period>
	
    <!-- show the last tasks of the user -->
    <tasks-latestChanges>true</tasks-latestChanges>
    <tasks-latestChanges-size>5</tasks-latestChanges-size>
    
    <!-- Statistics -->
	<statistics-show>true</statistics-show>
	
	<!-- Batches -->
	<batches-show>false</batches-show>
	<!-- define time range as months before and after the today date -->
	<batches-timerange-start>2</batches-timerange-start>
	<batches-timerange-end>4</batches-timerange-end>
	
	<!-- Process creation -->
	<processTemplates-show>true</processTemplates-show>
	<processTemplates-show-statusColumn>true</processTemplates-show-statusColumn>
	<processTemplates-show-projectColumn>true</processTemplates-show-projectColumn>
	<processTemplates-show-massImportButton>true</processTemplates-show-massImportButton>
	
    <!-- Message queue -->
    <queue-show>true</queue-show>

	<!-- HTML box -->
	<html-box-show>false</html-box-show>
	<html-box-title>Goobi to go - Sample accounts</html-box-title>
	<html-box-content><![CDATA[
		<p>This is the Goobi workflow instance inside of your Goobi-to-go environment. It contains some demonstration material as well as sample user accounts. In the following table you can see the list of all user accounts which are available inside of this Goobi-to-go package. <br/><br/>
		<table class="table table-hover table-nomargin dataTable table-bordered responsive">
			<thead>
				<tr>
					<th>Login</th>
					<th>Password</th>
					<th>User description</th>
				</tr>
			</thead>
			<tr>
				<td>testscanning</td>
				<td>test</td>
				<td>User account for uploading content</td>
			</tr>
			<tr>
				<td>testqc</td>
				<td>test</td>
				<td>User account for manual Image QA</td>
			</tr>
			<tr>
				<td>testmetadata</td>
				<td>test</td>
				<td>Account for metadata enrichment work</td>
			</tr>
			<tr>
				<td>testimaging</td>
				<td>test</td>
				<td>User account for manual image optimisation</td>
			</tr>
			<tr>
				<td>testprojectmanagement</td>
				<td>test</td>
				<td>Project manager account</td>
			</tr>
			<tr>
				<td>testadmin</td>
				<td>test</td>
				<td>Administrator account</td>
			</tr>
			<tr>
				<td>goobi</td>
				<td>goobi</td>
				<td>Administrator account</td>
			</tr>
			
		</table>
	]]></html-box-content>
	
</config_plugin>

<itm-show>

Dieser Parameter legt fest, ob die aktuell laufenden Jobs des intranda Task Managers angezeigt werden sollen.

<itm-cache-time>

Dieser Wert wird in Millisekunden angegeben und legt fest, wie oft die Werte aus dem intranda Task Manager aktualisiert werden sollen.

<itm-url>

Hier wird die URL angegeben, unter der der intranda Task Manager erreichbar ist.

<rss-show>

Dieser Parameter legt fest, ob Neuigkeiten angezeigt werden sollen, die per RSS-Feed abgefragt werden können.

<rss-cache-time>

Dieser Wert wird in Millisekunden angegeben und gibt an, wie oft der RSS-Feed aktualisiert werden soll.

<rss-url>

Dieser Paramter legt fest, von welcher Webseite der RSS-Feed geladen werden soll.

<rss-title>

Hier wird der Titel festgelegt, der über den Neuigkeiten stehen soll.

<search-show>

Dieser Parameter legt fest, ob das Suche-Formular angezeigt werden soll.

<tasks-show>

Dieser Parameter legt fest, ob der Bereich Kürzlich abgeschlossene Aufgaben angezeigt werden soll.

<tasks-show-size>

Hier wird festgelegt, wie viele der kürzlich abgeschlossenen Aufgaben angezeigt werden sollen.

<tasks-history>

Hiermit kann man sich den Verlauf der letzten Aufgaben anzeigen lassen.

<tasks-history-title>

Mithilfe dieses Parameters kann festgelegt werden, welcher Aufgabentyp angezeigt werden soll.

<tasks-history-period>

Dieser Parameter legt fest, wie lange die letzte Bearbeitung maximal zurückliegen darf (in Tagen), damit diese noch angezeigt wird.

<tasks-latestChanges>

Hier kann festgelegt werden, ob die zuletzt bearbeiteten Aufgaben angezeigt werden sollen.

<tasks-latestChanges-size>

Dieser Parameter gibt die Anzahl der letzten zu zeigenden Änderungen an.

<statistics-show>

Hier wird definiert, ob Statistiken angezeigt werden sollen.

<batches-show>

Dieser Parameter gibt, ob die Batches angezeigt werden sollen.

<batches-timerange-start>

Hier wird festgelegt, vor wie vielen Monaten die Batches angefangen wurden zu bearbeiten, damit diese angezeigt werden.

<batches-timerange-end>

Hier wird festgelegt, wie vielen Monate nach Beginn der Bearbeitung die Batches angezeigt werden.

<processTemplates-show>

Dieser Parameter legt fest, ob die Produktionsvorlagen angezeigt werden sollen.

<processTemplates-show-statusColumn>

Hier wird festgelegt, ob die Status-Spalte angezeigt werden soll.

<processTemplates-show-projectColumn>

Hier wird festgelegt, ob die Projekt-Spalte angezeigt werden soll.

<processTemplates-show-massImportButton>

Hier wird festgelegt, ob der Massenimport-Button angezeigt werden soll.

<queue-show>.

Dieser Parameter legt fest, ob im Dashboard angezeigt werden soll, wie viele Vorgänge gerade in der Warteschlange sind und in welchem Status sie sich befinden.

/opt/digiverso/goobi/plugins/export/plugin-export-adm-bsme-base.jar
/opt/digiverso/goobi/config/plugin_intranda_export_adm_bsme.xml
<?xml version="1.0" encoding="UTF-8"?>
<image>
  <ImageInfo>
    <Rights_to_Use>Yes</Rights_to_Use>
    <Right_Details>ADMN</Right_Details>
    <Media_Source>Goobi</Media_Source>
    <Media_Type>Image</Media_Type>
    <Publication_Name>الاتحاد - Al Ittihad</Publication_Name>
    <Source_Organization>Source Organization information</Source_Organization>
    <Barcode>123456789</Barcode>
    <Subject>Subject information</Subject>
    <Event_Date>2024-04-10</Event_Date>
    <Event_Name>Event Name information</Event_Name>
    <Photographer>Photographer information</Photographer>
    <Format>35mm</Format>
    <Persons_in_Image>Persons in Image information</Persons_in_Image>
    <location>Event Locations information</location>
    <Description>Description information</Description>
    <Backprint>Backprint information</Backprint>
    <Technical_Notes />
  </ImageInfo>
  <Files>
    <master>
      <Format>image/tiff</Format>
      <ResolutionUnit>PPI</ResolutionUnit>
      <Resolution>200.0</Resolution>
      <BitDepth>8</BitDepth>
      <ColorSpace>color</ColorSpace>
      <ScanningDevice>Bookeye 5</ScanningDevice>
      <ScanningDeviceID />
      <Width>1272</Width>
      <Height>1680</Height>
      <file>123456789-0001.tif</file>
    </master>
    <master>
      <Format>image/tiff</Format>
      <ResolutionUnit>PPI</ResolutionUnit>
      <Resolution>200.0</Resolution>
      <BitDepth>8</BitDepth>
      <ColorSpace>color</ColorSpace>
      <ScanningDevice>Bookeye 5</ScanningDevice>
      <ScanningDeviceID />
      <Width>1272</Width>
      <Height>1680</Height>
      <file>123456789-0002.tif</file>
    </master>
    <text Format="text/plain">123456789-0002.txt</text>
    <master>
      <Format>image/tiff</Format>
      <ResolutionUnit>PPI</ResolutionUnit>
      <Resolution>200.0</Resolution>
      <BitDepth>8</BitDepth>
      <ColorSpace>color</ColorSpace>
      <ScanningDevice>Bookeye 5</ScanningDevice>
      <ScanningDeviceID />
      <Width>1192</Width>
      <Height>1608</Height>
      <file>123456789-0003.tif</file>
    </master>
    <text Format="text/plain">123456789-0003.txt</text>
  </Files>
</image>
<config_plugin>

	<!-- directories where to export to -->
	<targetDirectoryNewspapers>/opt/digiverso/export/bsme/mnt/export/Newspapers/</targetDirectoryNewspapers>
	<targetDirectoryMagazines>/opt/digiverso/export/bsme/mnt/export/Magazines/</targetDirectoryMagazines>
	<targetDirectoryPositives>/opt/digiverso/export/bsme/mnt/export/Positives/</targetDirectoryPositives>
	<targetDirectoryNegatives>/opt/digiverso/export/bsme/mnt/export/Negatives/</targetDirectoryNegatives>
	<targetDirectorySlides>/opt/digiverso/export/bsme/mnt/export/Slides/</targetDirectorySlides>
	<targetDirectoryGeneric>/opt/digiverso/export/bsme/mnt/export/Generic/</targetDirectoryGeneric>

	<!-- additional PDF copy directory, leave empty if not needed -->
	<pdfCopyNewspapers>/opt/digiverso/export/bsme/mnt/pdf/Newspapers/</pdfCopyNewspapers>
	<pdfCopyMagazines>/opt/digiverso/export/bsme/mnt/pdf/Magazines/</pdfCopyMagazines>

	<!-- main viewer url -->
	<viewerUrl>https://adm.goobi.cloud/viewer/</viewerUrl>

	<!-- configured values to be used inside of the export xml, 
	    you can use variable replacer expressions here like e.g.: 
		- $(meta.CatalogIDDigital) 
		- $(meta.topstruct.TitleDocMain) 
		- $(process.Template) -->
	<volumeNumber>$(meta.CurrentNo)</volumeNumber>
	<rightsToUse>$(meta.AdmRightToUse)</rightsToUse>
	<rightsDetails>$(meta.AdmRightDetails)</rightsDetails>
	<source>Goobi</source>
	<mediaType>$(meta.AdmMediaType)</mediaType>
	<mediaGroup>$(meta.AdmMediaGroup)</mediaGroup>
	<sourceOrganisation>$(meta.AdmSourceOrganization)</sourceOrganisation>
	<frequency>$(meta.AdmIssueFrequency)</frequency>
	<eventName>$(meta.AdmEventName)</eventName>
	<eventNameEnglish>$(meta.AdmEventNameEnglish)</eventNameEnglish>
	<eventDate>$(meta.AdmEventDate)</eventDate>
	<eventTime>$(meta.AdmEventTime)</eventTime>
	<subject>$(meta.Subject)</subject>
	<subjectArabic>$(meta.AdmSubjectArabic)</subjectArabic>
	<subjectEnglish>$(meta.AdmSubjectEnglish)</subjectEnglish>
	<photographer>$(meta.AdmPhotographer)</photographer>
	<personsInImage>$(meta.AdmPersonsInImage)</personsInImage>
	<locations>$(meta.AdmEventLocations)</locations>
	<description>$(meta.Description)</description>
	<descriptionArabic>$(meta.AdmEventDescriptionArabic)</descriptionArabic>
	<editorInChief>$(meta.AdmEditorInChief)</editorInChief>
	<format>$(meta.Format)</format>
	<envelopeNumber>$(meta.AdmEnvelopeNumber)</envelopeNumber>
	<backprint>$(meta.AdmBackprint)</backprint>

	<!-- mets parameter -->
	<!-- if a field is empty or missing, project configuration is used -->
	<metsUrl addFileExtension="true">https://adm.goobi.cloud/viewer/sourcefile?id=
	</metsUrl>
	<resolverUrl>https://adm.goobi.cloud/viewer/piresolver?id=
	</resolverUrl>
	<metsPointerPath>https://adm.goobi.cloud/viewer/sourcefile?id=$(meta.topstruct.CatalogIDDigital).xml
	</metsPointerPath>
	<metsPointerPathAnchor>https://adm.goobi.cloud/viewer/sourcefile?id=$(meta.CatalogIDDigital).xml
	</metsPointerPathAnchor>
	<metsPointerAddFileExtension>true</metsPointerAddFileExtension>
	<rightsOwner>Abu Dhabi Media Company</rightsOwner>
	<rightsOwnerLogo>https://adm.goobi.cloud/viewer/resources/themes/reference/images/dfg_viewer_logo.png
	</rightsOwnerLogo>
	<rightsOwnerSiteURL />
	<rightsOwnerContact />
	<digiprovPresentation>https://adm.goobi.cloud/viewer/piresolver?id=$(meta.CatalogIDDigital)
	</digiprovPresentation>
	<digiprovReference />
	<digiprovPresentationAnchor>https://adm.goobi.cloud/viewer/piresolver?id=$(meta.topstruct.CatalogIDDigital)
	</digiprovPresentationAnchor>
	<digiprovReferenceAnchor />
	<rightsLicense />
	<rightsSponsor />
	<rightsSponsorLogo />
	<rightsSponsorSiteURL />
	<purl />
	<contentIds />

	<!-- global metadata settings -->
	<metadata>
		<purl>_purl</purl>
		<identifier>CatalogIDDigital</identifier>
		<issueDate>DateIssued</issueDate>
		<dateOfOrigin>DateOfOrigin</dateOfOrigin>
		<yearDate>CurrentNoSorting</yearDate>
		<titleLabel>TitleDocMain</titleLabel>
		<modsTitle>MainTitle</modsTitle>
		<issueNumber>CurrentNo</issueNumber>
		<issueName>IssueName</issueName>
		<issueNotes>AdmIssueNote</issueNotes>
		<sortNumber>CurrentNoSorting</sortNumber>
		<language>DocLanguage</language>
		<location>PhysicalLocation</location>
		<resourceType>TypeOfResource</resourceType>
		<anchorId>AnchorID</anchorId>
		<anchorTitle>AnchorTitle</anchorTitle>
		<accessConditionUse>AccessConditionUse</accessConditionUse>
		<accessConditionDetails>AccessConditionDetails
		</accessConditionDetails>
		<frequency>Frequency</frequency>
	</metadata>

	<docstruct>
		<newspaper>Newspaper</newspaper>
		<year>Year</year>
		<month>Month</month>
		<day>Day</day>
		<issue>NewspaperIssue</issue>
		<supplement>NewspaperSupplement</supplement>
		<newspaperStub>NewspaperStub</newspaperStub>
	</docstruct>

</config_plugin>

targetDirectoryNewspapers

Zielverzeichnis für Zeitungen

targetDirectoryMagazines

Zielverzeichnis für Zeitschriften

targetDirectoryPositives

Zielverzeichnis für Positives

targetDirectoryNegatives

Zielverzeichnis für Negative

targetDirectorySlides

Zielverzeichnis für Slides

targetDirectoryGeneric

Zielverzeichnis für Generic Prints

pdfCopyNewspapers

Zielverzeichnis zur Generierung von PDF-Dateien für Zeitungen

pdfCopyMagazines

Zielverzeichnis zur Generierung von PDF-Dateien für Zeitschriften

viewerUrl

URL für den Goobi viewer

rightsToUse

Angabe von Nutzungsrechten

rightsDetails

Details über die Nutzungsrechte

source

Angabe der Quelle der Digitalisate

mediaType

Typ der Medien

sourceOrganisation

Organisation, die für die Inhalte verantwortlich ist

frequency

Erscheinungshäufigkeit

eventName

Nennung des dokumentierten Ereignisses

eventDate

Angabe des Datums, wann das Ereignis stattfand

eventTime

Angabe des Uhrzeit, wann das Ereignis stattfand

subject

Allgemeine Schlagworte

subjectArabic

Angabe der Schlagworte in Arabisch

subjectEnglish

Angabe der Schlagworte in Englisch

photographer

Informationen zum Fotografen des Bildes

personsInImage

Abgebildete Personen im Bild

locations

Angabe zum Ort der Aufnahme

description

Erläuterungen und Beschreibungen zur Aufnahme

editorInChief

Verantwortlicher Herausgeber

format

Formatinformationen

envelopeNumber

Identifier des Umschlags, in dem die Dokumente aufbewahrt werden

backprint

Informationen über Inhalte auf der Rückseite

/opt/digiverso/goobi/plugins/export/plugin_intranda_export_fedora*.jar
/opt/digiverso/goobi/config/intranda_export_fedora.xml
http(s)://<Fedora REST endpoint>/records/&lt;CatalogIdDigital>/
<config_plugin>

    <!-- fedoraUrl: REST endpoint of the target Fedora application. -->
    <fedoraUrl>http://localhost:8888/fedora/rest</fedoraUrl>

    <!-- useVersioning: If true, for each run of the export step, a new revision of the process will be created. Default is true. -->
    <useVersioning>true</useVersioning>

    <!-- ingestMasterImages: If true, master images of the Goobi process will be ingested into the container /master. Default is true. -->
    <ingestMasterImages>true</ingestMasterImages>

    <!-- ingestMediaImages: If true, derivate images of the Goobi process will be ingested into the container /media. Default is true. -->
    <ingestMediaImages>true</ingestMediaImages>

    <!-- ingestMetsFile: If true, a METS/MODS file will be generated and ingested. Default is true. -->
    <ingestMetsFile>true</ingestMetsFile>

    <!-- exportMetsFile: If true, the METS/MODS file will be exported into the given destination folder. Default is true. -->
    <exportMetsFile>true</exportMetsFile>

</config_plugin>

fedoraUrl

REST Endpoint des Fedora Applikation

useVersioning

Wenn true gesetzt ist, wird die Revisionierung von Fedora verwendet. In diesem Fall wird für jeder Ausführung des Exportschrittes eine neue Revision des Vorgangs im Repository angelegt. Standardwert ist true.

ingestMasterImages

Wenn true gesetzt ist, werden die Master-Bilder des Vorgangs in den Subcontainer /master exportiert. Standardwert ist true.

ingestMediaImages

Wenn true gesetzt ist, werden die Derivate des Vorgangs in den Subcontainer /media exportiert. Standardwert ist true.

ingestMetsFile

Wenn true gesetzt ist, eine METS/MODS Datei erzeugt und im Container exportiert. Standardwert ist true.

exportMetsFile

Wenn true gesetzt ist, eine METS/MODS Datei erzeugt und in den üblichen Export-Ordner (z.B. /hotfolder) geschrieben. Standardwert ist true.

plugin_intranda_export_newspaper-base.jar
/opt/digiverso/goobi/plugins/export/plugin_intranda_export_newspaper-base.jar
/opt/digiverso/goobi/plugins/config/plugin_intranda_export_newspaper.xml
<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
    <export>
        <images>false</images>
        <subfolderPerIssue>false</subfolderPerIssue>
        <exportFolder>/tmp/export/</exportFolder>
        <metsUrl>https://viewer.example.org/viewer/metsresolver?id=</metsUrl>
        <resolverUrl>https://viewer.org/viewer/piresolver?id=</resolverUrl>
    </export>
    <metadata>
        <purl>_purl</purl>
        <zdbiddigital>CatalogIDPeriodicalDBDigital</zdbiddigital>
        <zdbidanalog>CatalogIDPeriodicalDB</zdbidanalog>
        <identifier>CatalogIDDigital</identifier>
        <issueDate>DateIssued</issueDate>
        <yearDate>CurrentNoSorting</yearDate>
        <titleLabel>TitleDocMain</titleLabel>
        <modsTitle>MainTitle</modsTitle>
        <volumeNumber>VolumeNo</volumeNumber>
        <issueNumber>CurrentNo</issueNumber>
        <sortNumber>CurrentNoSorting</sortNumber>
        <language>DocLanguage</language>
        <location>PhysicalLocation</location>
        <licence>UseAndReproductionLicense</licence>
        <resourceType>TypeOfResource</resourceType>
        <anchorId>AnchorID</anchorId>
        <anchorTitle>AnchorTitle</anchorTitle>
        <anchorZDBIdDigital>AnchorCatalogIDPeriodicalDBDigital</anchorZDBIdDigital>
    </metadata>
    <docstruct>
        <newspaper>Newspaper</newspaper>
        <year>Year</year>
        <month>Month</month>
        <day>Day</day>
        <issue>NewspaperIssue</issue>
        <newspaperStub>NewspaperStub</newspaperStub>
    </docstruct>
</config_plugin>
http(s)://<Fedora REST endpoint>/records/<barcode.substring(0,4)>/<barcode.sunstring(4,8)>/<barcode.substring(8,10)>/
<config_plugin>
    <config>
        <!-- which workflow to use for (can be more then one, otherwise use *) -->
        <workflow>*</workflow>

        <!-- general Fedora configuration data -->
        <fedoraUrl>http://localhost:8080/fedora/rest</fedoraUrl>
        <useVersioning>false</useVersioning>
        <!-- Basic HTTP authentication user name (optional) -->
        <userName>foo</userName>
        <!-- Basic HTTP authentication password (optional) -->
        <password>bar</password>

        <!-- which content to ingest -->
        <ingestMaster>true</ingestMaster>
        <ingestMedia>false</ingestMedia>
        <ingestJp2>false</ingestJp2>
        <ingestPdf>false</ingestPdf>

        <!-- command for specific property including the parameter for Barcode and for the unit-or-item-type -->
        <externalLinkContent>
            PREFIX crm: &lt;http://www.cidoc-crm.org/cidoc-crm/&gt;
            INSERT { &lt;&gt; crm:P70_documents &lt;http://example.com/code=[UNIT_ITEM_CODE]&amp;entityId=[BARCODE]#&gt; }
            WHERE { }
        </externalLinkContent>

        <!-- command for specific property including the parameter for PID -->
        <externalLinkContentPID>
            PREFIX crm:&lt;http://www.cidoc-crm.org/cidoc-crm/&gt;
            INSERT { &lt;&gt; crm:P70_documents &lt;http://example.com/resolver?pid=/[PID]#&gt; }
            WHERE { }
        </externalLinkContentPID>

        <!-- command for specific property including the parameter for full_partial -->
        <fullPartialContent>
            PREFIX crm: &lt;http://www.cidoc-crm.org/cidoc-crm/&gt;
            INSERT { &lt;&gt; crm:P3_has_note "[FULL_PARTIAL]" }
            WHERE { }
        </fullPartialContent>

        <!-- Property containing the public release date (optional)-->
        <availableMetadataQuery>
            PREFIX dcterms: &lt;http://purl.org/dc/terms/&gt;
            INSERT {
                &lt;&gt; dcterms:available "[DATE_AVAILABLE]" .
            }
            WHERE { }
        </availableMetadataQuery>

        <!-- Properties query for the /images container -->
        <imagesContainerMetadataQuery>
            PREFIX ldp: &lt;http://www.w3.org/ns/ldp#&gt;
            PREFIX pcdm: &lt;http://pcdm.org/models#&gt;
            INSERT {
                &lt;&gt; a ldp:DirectContainer\,pcdm:Object ;
                ldp:membershipResource &lt;[URL]&gt; ;
                ldp:hasMemberRelation pcdm:hasMember .
            }
            WHERE { }
        </imagesContainerMetadataQuery>

        <!-- Properties query for the /files container -->
        <filesContainerMetadataQuery>
            PREFIX ldp: &lt;http://www.w3.org/ns/ldp#&gt;
            PREFIX pcdm: &lt;http://pcdm.org/models#&gt;
            INSERT {
                &lt;&gt; a ldp:DirectContainer\,pcdm:Object ;
                ldp:membershipResource &lt;[URL]&gt; ;
                ldp:hasMemberRelation pcdm:hasFile .
            }
            WHERE { }
        </filesContainerMetadataQuery>

        <!-- Properties query for the /fcr:metadata part of a file -->
        <imageFileMetadataQuery>
            PREFIX exif: &lt;https://www.w3.org/2003/12/exif/ns#&gt;
            INSERT {
                &lt;&gt;  exif:imageLength [HEIGHT] ;
                exif:imageWidth [WIDTH] .
            }
            WHERE { }
        </imageFileMetadataQuery>

    </config>

    <config>
        <!-- which workflow to use for (can be more then one, otherwise use *) -->
        <workflow>My_special_workflow</workflow>
        ...
    </config>
</config_plugin>

fedoraUrl

REST Endpoint des Fedora Applikation

useVersioning

Wenn true gesetzt ist, wird die Revisionierung von Fedora verwendet. In diesem Fall wird für jeder Ausführung des Exportschrittes eine neue Revision des Vorgangs im Repository angelegt. Standardwert ist true.

userName, password

Optionale Basic HTTP Authentifizierung. Beide Werte müssen gesetzt sein, damit die Authentifizierung stattfindet.

ingestMaster

Wenn true gesetzt ist, werden die Master-Bilder des Vorgangs exportiert. Standardwert ist true.

ingestMedia

Wenn true gesetzt ist, werden die Derivate des Vorgangs exportiert. Standardwert ist true.

ingestJp2

Wenn true gesetzt ist, werden die JPEG2000-Bilder des Vorgangs in den Subcontainer /media exportiert. Standardwert ist true.

ingestPdf

Wenn true gesetzt ist, werden die PDFs des Vorgangs in den Subcontainer /media exportiert. Standardwert ist true.

ingestMetsFile

Wenn true gesetzt ist, eine METS/MODS Datei erzeugt und im Container Exportiert. Standardwert ist true.

exportMetsFile

Wenn true gesetzt ist, eine METS/MODS Datei erzeugt und in den üblichen Export-Ordner (z.B. /hotfolder) geschrieben. Standardwert ist true.

externalLinkContent

Externe URL mit Verwendung eines 10-stelligen Barcodes und des Unit Item Codes.

externalLinkContentPID

Externe URL mit Verwendung einer 36-stelligen PID.

fullPartialContent

availableMetadataQuery

Optionale SPARQL-Query, um das Veröffentlichungs-Datum als Attribut zum Root-Container des Werks hinzuzufügen. Die Prozesseigenschaft available muss hierfür gesetzt sein.

imagesContainerMetadataQuery

Optionale SPARQL-Query, um zusätzliche Attribute und Verlinkungen zum /images-Container hinzuzufügen.

filesContainerMetadataQuery

Optionale SPARQL-Query, um zusätzliche Attribute und Verlinkungen zum /files-Container hinzuzufügen.

imageFileMetadataQuery

Optionale SPARQL-Query, um für alle Bilddateien im Repository (unter z.B. ../00000001.tif/fcr:metadata) zusätzliche Attribute zu schreiben.

/opt/digiverso/goobi/plugins/export/plugin_intranda_export_heris-base.jar
/opt/digiverso/goobi/config/plugin_intranda_export_heris.xml
<config_plugin>
    <config>
        <project>*</project>
        <step>*</step>
        <propertyName>plugin_intranda_step_image_selection</propertyName>

        <herisId>HERIS-ID</herisId>
        <jsonRootElement>Bilder</jsonRootElement>

        <json_format>
            <field type="identifier" name="Id"><!-- re-use old existing id --></field>
            <field type="metadata" name="Titel">TitleDocMain</field>
            <field type="metadata" name="alt_text">TitleDocMain</field>
            <field type="representative" name="Symbolbild"></field>
            <field type="static" name="media_type">JPEG</field>
            <field type="metadata" name="Aufnahmedatum">DateRecorded</field>
            <field type="metadata" name="Copyright BDA">Copyright</field>
            <field type="filename" name="Dateiinformation"></field>
            <field type="metadata" name="publikationsfähig">Published</field>
            <field type="metadata" name="Migrierte Information"></field>
        </json_format>

        <!-- sftp credentials for username + password authentication -->
        <sftp use="true">
            <username>username</username>
            <password>password</password>
            <hostname>localhost</hostname>
            <knownHosts>~/.ssh/known_hosts</knownHosts>
            <sftpFolder>/path/to/remote/folder/</sftpFolder>
            <port>22</port>
        </sftp>

        <!-- sftp credentials for username + public/private key authentication -->
        <!-- 
        <sftp use="true">
            <username>username</username>
            <keyfile>/path/to/private/key</keyfile>
            <hostname>localhost</hostname>
            <knownHosts>~/.ssh/known_hosts</knownHosts>
            <sftpFolder>/path/to/remote/folder/</sftpFolder>
            <port>22</port>
        </sftp> 
        -->

        <!-- sftp credentials for password protected public/private key authentication -->
        <!-- 
        <sftp use="true">
            <username>username</username>
            <keyfile>/path/to/private/key</keyfile>
            <password>password</password>
            <hostname>localhost</hostname>
            <knownHosts>~/.ssh/known_hosts</knownHosts>
            <sftpFolder>/path/to/remote/folder/</sftpFolder>
            <port>22</port>
        </sftp> 
        -->
    </config>
</config_plugin>
/opt/digiverso/goobi/plugins/export/plugin_intranda_export_configurable-base.jar
/opt/digiverso/goobi/config/plugin_intranda_export_configurable.xml
<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
	<!-- order of configuration is: 
	1.) project name matches 
	2.) project is * -->
	<config>
		<project>Manuscript_Project</project>
		<!-- List of folders that are included in the export. Each option can be included with the element attribute. -->
		<includeFolders>
			<!-- By default, all images in media will be exported to a _media folder, in master to a _master, etc. -->
			<media enabled="true" />
			<master enabled="true" />
			<source enabled="false" />
			<import enabled="false" />
			<export enabled="false" />
			<itm enabled="false" />
			<!-- By default all ocr folders are exported. If the optional and repeatable sub-element 'sourceFolderSuffix' is specified, only the folders 
			with the explicitly configured suffix will be copied. -->
			<ocr enabled="true">
				<!-- Export ocr folders whose names end with 'txt' or 'alto'. -->
				<sourceFolderSuffix>txt</sourceFolderSuffix>
				<sourceFolderSuffix>alto</sourceFolderSuffix>
			</ocr>
			<validation enabled="false" />
		</includeFolders>
	</config>
	
	<config>
		<project>Archive_Project</project>
		<!-- For all folders except 'ocr' configured inside the element 'includeFolders', one can use a sub-element 'destinationFolder' to configure whether a default export
		or a configured export should be used. For 'ocr' folders this does not apply, since 'ocr' folder may contain folders in itself, which makes this configuration nonsense. -->
		<includeFolders>
			<!-- If any sub-element 'destinationFolder' is configured, then the default export will be replaced with a configured export. -->
			<!-- The sub-element 'destinationFolder' is optional and repeatable. -->
			<!-- For any configured sub-element 'destinationFolder', the attribute '@name' is MANDATORY, while the attribute '@exportFileRegex' is optional. -->
			<media enabled="true">
				<!-- If the sub-element 'destinationFolder' has no '@exportFileRegex' attribute, then an empty folder with the configured '@name' will be created if it does not exist yet. -->
				<destinationFolder name="Images" />
				<!--
				<destinationFolder name="Survey Forms" exportFileRegex=".*Survey Form.*" />
				<destinationFolder name="Images/PLINExterior" exportFileRegex=".*Exterior.*" />
				-->
			</media>
			<master enabled="true" >
				<!-- If the sub-element 'destinationFolder' has both attributes configured, then a folder with the configured '@name' will be created if it does not exist yet,
				and all files whose names match the configured regular expression will be copied into that new folder. -->
				<destinationFolder name="Files_ending_with_1/files" exportFileRegex=".*1\..*" />
				<!-- ATTENTION: the regular expression configured here should be of JAVA style. -->
				<destinationFolder name="Files containing 7" exportFileRegex=".*7.*" />
			</master>
			<source enabled="false" />
			<import enabled="false" />
			<export enabled="false" />
			<itm enabled="false" />
			<!-- By default all ocr folders are exported. If the optional and repeatable sub-element 'sourceFolderSuffix' is specified, only the folders 
			with the explicitly configured suffix will be copied. -->
			<ocr enabled="false">
				<!--
				<sourceFolderSuffix>txt</sourceFolderSuffix>
				<sourceFolderSuffix>alto</sourceFolderSuffix>
				-->
			</ocr>
			<validation enabled="false" />
			<!-- To make a generic folder configuration work, one also has to configure the goobi_config.properties. -->
			<!-- The element 'genericFolder' is optional and repeatable. -->
			<!-- ATTENTION: all folders configured inside 'genericFolder' will be exported, and there is no '@enabled' attribute to configure that. Make sure that all folders are
			also correctly configured in the goobi_config.properties, otherwise it would be problematic. -->
			<genericFolder>
				<!-- In order to use 'some_folder' to configure a generic folder, say 'some_image_folder', one has to configure the goobi_config.properties in the following way: -->
				<!-- process.folder.images.some_folder=some_image_folder -->
				<!-- The path to this 'some_image_folder' should be '{imagepath}/some_image_folder', e.g. /opt/digiverso/goobi/metadata/27/images/some_image_folder -->
				some_folder
				<!-- No attribute '@exportFileRegex' configured, create an empty folder with '@name' if it does not exist yet. -->
				<destinationFolder name="empty_folder" />
				<destinationFolder name="first" exportFileRegex="^1.*" />
				<destinationFolder name="second" exportFileRegex="^2.*" />
				<destinationFolder name="txt" exportFileRegex=".*\.txt" />
			</genericFolder>
			<genericFolder>
				anotherFolder
				<destinationFolder name="third" exportFileRegex="3.*" />
			</genericFolder>
		</includeFolders>
	</config>
	
	<config>
		<project>*</project>
		<!-- An export is triggered for each 'target' condition that applies. If no 'target' condition is set, then a normal export will be performed. -->
		<!-- The 'target' element is optional, but if configured, then all three attributes are MANDATORY: -->
		<!-- 1. The '@key' attribute accepts a Goobi variable of the form '{meta.metadata name}'. -->
		<!-- 2. The '@value' attribute will be used to specify the desired value of '@key'. If set "", then the condition will be met if the metadata is empty or not set. -->
		<!-- 3. The '@projectName' attribute should contain the name of the export project with whose settings the export is to take place. If set "", then the settings
		of the project of the operation will be used for export. -->
		<target key="{meta.ViewerInstance}" value="eivfaanddigihub" projectName="eivfExportProject" />
		<target key="{meta.ViewerInstance}" value="eivfaanddigihub" projectName="gihubExportProject" />
		<target key="{meta.ViewerInstance}" value="" projectName="" />
		<!-- Whether any existing MARC-XML data should be embedded in the exported metafile. If not configured, then the default value false will be used. -->
		<includeMarcXml>false</includeMarcXml>
		<!-- List of folders that are included in the export. Each option can be included with the element attribute. -->
		<includeFolders>
			<media enabled="false" />
			<master enabled="false" />
			<source enabled="false" />
			<import enabled="false" />
			<export enabled="false" />
			<itm enabled="false" />
			<!-- Use default settings to export all ocr folders. -->
			<ocr enabled="true" />
			<validation enabled="false" />
		</includeFolders>
	</config>
</config_plugin>

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Der <config>-Block mit dem project * wird immer verwendet, wenn kein anderer Block auf den Projektnamen passt.

target

Dieser Parameter hat 3 obligatorische Attribute: Im Parameter key sollte eine Goobi Variable der Form {meta.Metadatenname} verwendet werden. Im Attribut value kann dann der gewünschte Wert angegeben werden. Setzt man value="" So schlägt die Bedingung an, wenn das Metadatum leer oder nicht gesetzt ist. Im Attribut projectName sollte der Name des Exportprojektes, mit dessen Einstellungen der Export stattfinden soll, angegeben werden. Wird dem Attribut ein leerer String zugewiesen projectName="", so werden die Einstellungen des Projektes des Vorgangs zum Export verwendet. Wenn keine target condition gesetzt ist, wird ein normaler Export durchgeführt. Für jede target Bedingung, die zutrifft, wird ein Export angestoßen.

includeMarcXml

Dieser Parameter legt fest, ob evtl. vorhandene MARC-XML Daten in die exportierte Mets-Datei eingebettet werden sollen. Der Defaultwert ist false.

media

Hier kann definiert werden, ob und wie der media-Ordner exportiert werden soll.

master

Hier kann definiert werden, ob und wie der master-Ordner exportiert werden soll.

ocr

Hier kann definiert werden, ob und wie der ocr-Ordner exportiert werden soll.

source

Hier kann definiert werden, ob und wie der source-Ordner exportiert werden soll.

import

Hier kann definiert werden, ob und wie der import-Ordner exportiert werden soll.

export

Hier kann definiert werden, ob und wie der export-Ordner exportiert werden soll.

itm

Hier kann definiert werden, ob und wie der TaskManager-Ordner exportiert werden soll.

validation

Hier kann definiert werden, ob und wie der validation-Ordner exportiert werden soll.

genericFolder

Hier kann ein Ordner frei definiert werden, der exportiert werden soll.

sourceFolderSuffix

Dieses Unterelement vom ocr Element wird benötigt, wenn man OCR-Ordner mit verschiedenen Suffixen verwendet. Es wird das konkrete Suffix zum Export angeben.

destinationFolder

Das ist ein Unterelement von allen Ordner-Elementen ausschließlich dem ocr-Element. Mithilfe seiner zwei Attribute name und exportFileRegex kann definiert werden, welche Dateien in welche Verzeichnisse exportiert werden sollen.

Zuweisung des Plugins zu einer bestimmten Aufgabe
Auswahl des Dashboards in den Nutzereinstellungen
Nutzeroberfläche des Dashboards
Beispielhafter Aufbau eines Workflows
Konfiguration des Arbeitsschritts für den Export
Beispielhafter Einblick in ein Exportverzeichnis für mehrere Publikationstypen
Integration des Plugins in den Workflow
Integration des Plugins in den Workflow
Integration des Plugins in den Workflow
Integration des Plugins in den Workflow
Integration des Plugins in den Workflow
Projekteinstellungen innerhalb von Goobi workflow
https://github.com/intranda/goobi-plugin-administration-reset-pagination
https://github.com/intranda/goobi-plugin-administration-ruleset-compatibility
https://github.com/intranda/goobi-plugin-administration-ruleset-editor
http://localhost:8888/fedora/rest/records/PPN123456789/
http://localhost:8888/fedora/rest/records/PPN123456789/PPN123456789.xml
http://localhost:8888/fedora/rest/records/PPN123456789/master/master_00000001.tif
http://localhost:8888/fedora/rest/records/PPN123456789/master/master_00000002.tif
http://localhost:8888/fedora/rest/records/PPN123456789/master/master_00000003.tif
http://localhost:8888/fedora/rest/records/PPN123456789/media/00000001.tif
http://localhost:8888/fedora/rest/records/PPN123456789/media/00000002.tif
http://localhost:8888/fedora/rest/records/PPN123456789/media/00000003.tif
https://wiki.deutsche-digitale-bibliothek.de/display/DFD/Gesamtaufnahme+Zeitung+1.0
https://wiki.deutsche-digitale-bibliothek.de/display/DFD/Jahrgang+Zeitung+1.0
https://wiki.deutsche-digitale-bibliothek.de/display/DFD/Ausgabe+Zeitung+1.0
http://localhost:8888/fedora/rest/records/barc/ode1/234/images/
http://localhost:8888/fedora/rest/records/barc/ode1/234/images/1/files/master_00000001.tif
http://localhost:8888/fedora/rest/records/barc/ode1/234/images/2/files/master_00000002.tif
http://localhost:8888/fedora/rest/records/barc/ode1/234/images/3/files/master_00000003.tif
http://localhost:8888/fedora/rest/records/barc/ode1/234/images/1/files/00000001.jp2
http://localhost:8888/fedora/rest/records/barc/ode1/234/images/2/files/00000002.jp2
http://localhost:8888/fedora/rest/records/barc/ode1/234/images/3/files/00000003.jp2
http://localhost:8888/fedora/rest/records/
DB/00/27/DB/-F83B-11E9-AE98-A392051B17E6
/images/
http://localhost:8888/fedora/rest/records/
DB/00/27/DB/-F83B-11E9-AE98-A392051B17E6
/images/1/files/master_00000001.tif
http://localhost:8888/fedora/rest/records/
DB/00/27/DB/-F83B-11E9-AE98-A392051B17E6
/images/2/files/master_00000002.tif
http://localhost:8888/fedora/rest/records/
DB/00/27/DB/-F83B-11E9-AE98-A392051B17E6
/images/3/files/master_00000003.tif
http://localhost:8888/fedora/rest/records/
DB/00/27/DB/-F83B-11E9-AE98-A392051B17E6
/images/1/files/00000001.jp2
http://localhost:8888/fedora/rest/records/
DB/00/27/DB/-F83B-11E9-AE98-A392051B17E6
/images/2/files/00000002.jp2
http://localhost:8888/fedora/rest/records/
DB/00/27/DB/-F83B-11E9-AE98-A392051B17E6
/images/3/files/00000003.jp2

Identifier

intranda_export_singleImage

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

05.09.2024 06:55:52

Identifier

intranda_dashboard_extended

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

04.09.2024 10:34:23

Identifier

intranda_export_adm_bsme

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

14.10.2024 09:27:36

Identifier

intranda_export_fedora

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

13.08.2024 14:26:51

Identifier

intranda_export_newspaper

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 12:03:52

Identifier

prov_export_fedora

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

13.08.2024 14:28:03

Identifier

intranda_export_heris

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

13.08.2024 14:38:49

Identifier

intranda_export_configurable

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

07.09.2024 08:51:32

PDF-Export in Verzeichnisstruktur der NLI

Export Plugin für den Export von PDF-Dateien mit besonderer Ordner- und Dateibenennung für die Nationalbibliothek Israel.

Übersicht

Name
Wert

Identifier

intranda_export_nli_pdf_to_folder_structure

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

18.07.2024 01:42:57

Einführung

Diese Dokumentation erläutert das Plugin für den Export von PDF-Dateien mit besonderer Ordner- und Dateibenennung für die Nationalbibliothek Israel. Das Plugin erzeugt hierfür in einem definierten Verzeichnis die ggf. benötigten Unterordner und speichert eine vorhandene PDF-Datei aus dem Master-Ordner mit dem gewünschten Namen innerhalb der erzeugten Ordnerstruktur.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

/opt/digiverso/goobi/plugins/export/plugin-export-nli-pdf-to-folder-structure-base.jar
/opt/digiverso/goobi/config/plugin_intranda_export_nli_pdf_to_folder_structure.xml

Nach der Installation des Plugins kann dieses innerhalb des Workflows für die jeweiligen Arbeitsschritte ausgewählt und somit automatisch ausgeführt werden. Ein Workflow könnte dabei beispielhaft wie folgt aussehen:

Für die Verwendung des Plugins muss dieses in einem Arbeitsschritt ausgewählt sein:

Überblick und Funktionsweise

Das Plugin wird im Verlauf des Workflows automatisch ausgeführt und liest die Parameter aus der Konfigurationsdatei. Auf dieser Basis ermittelt das Plugin anschließend Metadaten aus dem jeweiligen Vorgang. Die somit ermittelten Informationen werden anschließend dafür genutzt, einen Verzeichnispfad für den Export zu generieren und das Verzeichnis zu erzeugen, wenn es nicht bereits existieren sollte. Anschließend generiert das Plugin einen Dateinamen, der auf einen Zähler endet. Der somit erzeugte Dateiname wird daraufhin überprüft, ob er schon in Verwendung ist, so dass ggf. der Zähler angepasst wird, um einen noch nicht verwendeten Dateinamen zu erhalten. Anschließend wird aus dem Master-Verzeichnis des Goobi-Vorgangs das erste PDF-Dokument ermittelt und unter dem vorher generierten Dateinamen innerhalb des Verzeichnispfades gespeichert.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_export_nli_pdf_to_folder_structure.xml wie hier aufgezeigt:

<config_plugin>
 
    <!-- export root folder (e.g. /opt/digiverso/export/nli) -->
	<exportFolder>/opt/digiverso/export/nli</exportFolder>
	
	<!-- metadata field with publication date information
		you can use variable replacer expressions here like e.g.: 
		- $(meta.CatalogIDDigital) 
		- $(meta.topstruct.TitleDocMain) 
		- $(process.Template) -->
	<metdataPublicationDate>$(meta.DateOfOrigin)</metdataPublicationDate>

	<!-- metadata field with code information 
		you can use variable replacer expressions here, too -->
	<metdataPublicationCode>$(meta.Type)</metdataPublicationCode>

	<!-- pattern to use for reading the date information -->
	<dateReadPattern>yyyy-MM-dd</dateReadPattern>

	<!-- pattern to use for writing the date information -->
	<dateWritePattern>yyyyMMdd</dateWritePattern>

</config_plugin>

Die darin verwendeten Parameter werden hier beschrieben:

Parameter
Erläuterung

exportFolder

Hauptverzeichnis für den Export (z.B. /opt/digiverso/export)

metdataPublicationDate

Metadatum für das Veröffentlichungsdatum; es kann hier die Syntax für den VariablenReplacer verwendet werden (z.B. $(meta.DateOfOrigin))

metdataPublicationCode

Metadatum für den Publikationscode; es kann hier die Syntax für den VariablenReplacer verwendet werden (z.B. $(meta.Type))

dateReadPattern

Pattern für das Einlesen des Veröffentlichungsdatum (z.B. yyyy-MM-dd)

dateWritePattern

Pattern für das Schreiben des aktuellen und des Veröffentlichungsdatums (z.B. ddMMyyyy)

Export ausgewählter Bilder

Dies ist eine technische Dokumentation für das Plugin zum Export ausgewählter Bilder. Es ermöglicht, den Export von ausgewählten Bildern an den konfigurierten Ort im Dateisystem oder per SCP.

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Plugin zum Export ausgewählter Bilder in Goobi workflow.

Mithilfe dieses Plugins für Goobi workflow können die Goobi-Vorgänge innerhalb eines Arbeitsschrittes die zuvor ausgewählten Bilder und auf Wunsch ebenso auch die zugehörige METS-Datei an einen konfigurierten Ort entweder im Dateisystem oder per SCP exportieren.

Installation

Dieses Plugin wird in den Workflow so integriert, dass es automatisch ausgeführt wird. Zur Verwendung innerhalb eines Arbeitsschrittes des Workflows sollte es wie im nachfolgenden Screenshot konfiguriert werden.

Das Plugin muss zunächst in folgendes Verzeichnis kopiert werden:

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_export_selected_images.xml. Die Konfiguration kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

ZOP Export

Dies ist eine technische Dokumentation für das ZOP Export Plugin. Es ermöglicht den Export in die ZOP Instanz der ZB Zürich.

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des ZOP-Export-Plugins in Goobi.

Mithilfe dieses Plugins für Goobi können die Goobi-Vorgänge innerhalb eines Arbeitsschrittes an den konfigurierten Ort für ZOP exportiert werden.

Installation

Dieses Plugin wird in den Workflow so integriert, dass es automatisch ausgeführt wird. Zur Verwendung innerhalb eines Arbeitsschrittes des Workflows sollte es wie im nachfolgenden Screenshot konfiguriert werden.

Das Plugin muss zunächst in folgendes Verzeichnis kopiert werden:

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_export_zop.xml. Die Konfiguration kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

HAAB Export

Dies ist eine technische Dokumentation für das Goobi Export-Plugin zum Export in unterschiedliche Verzeichnisse für die Klassik Stiftung Weimar

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz eines Export-Plugins in Goobi, wie es für die Klassik Stiftung Weimar innerhalb des Digitalisierungsprojektes benötigt wird.

Mit Hilfe dieses Export-Plugins für Goobi können die Goobi-Vorgänge innerhalb eines Arbeitsschrittes gleichzeitig an mehrere Orte exportiert werden. Dabei bleiben die Besonderheiten der Klassik Stiftung Weimar, wie die Nutzung der EPNs als Identifier sowie das Zusammenführen von Einbänden und Blattschnitten zu einem gemeinsamen Strukturelement, bestehen.

Installation

Das Plugin muss zunächst in folgendes Verzeichnis installiert werden:

Im Goobi-Konfigurationsverzeichnis muss im Rahmen der Installation die zusätzliche Plugin-Konfigurationsdatei unter dem folgenden Pfad bereitgestellt werden:

Konfiguration

Der Inhalt der Konfigurationsdatei ist folgendermaßen aufgebaut:

Mit Hilfe der Auflistung <exportFolder> können verschiedene Orte definiert werden, in die der Export erfolgen soll. Hierbei können beliebig viele Ordner definiert werden. Mindestens muss jedoch ein Ordner an dieser Stelle definiert sein.

Um das Export-Plugin nach der erfolgreichen Installation innerhalb des Workflows nutzen zu können, muss ein Arbeitsschritt definiert werden, bei dem die Funktion Export DMS aktiviert wurde. Darüber hinaus muss als Schritt-Plugin der Wert HaabExport eingetragen werden.

Altdatenimport für das Bundesdenkmalamt Österreich

Import-Plugin für den Import von Altdaten für das Bundesdenkmalamt in Österreich

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz des Plugins für den Massenimport von vorliegenden Altdaten des Bundesdenkmalamts in Österreich. Die Ausgangsbasis für den Import sind vorliegende Excel-Dateien sowie bereitgestellte Verzeichnisse mit Bilddateien. Der besondere Aufbau der Excel-Datei machte eine deutliche Überarbeitung des Standard-Excel-Import-Plugins notwendig, so dass dieses deutlich davon abweicht.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

Überblick und Funktionsweise

Um den Import zu nutzen, muss in den Produktionsvorlagen der Massenimportbereich geöffnet werden und im Reiter Dateiupload-Import das Plugin intranda_import_bka_bda ausgewählt werden. Anschließend kann eine Excel-Datei hochgeladen und importiert werden.

Der Import erfolgt anschließend zeilenweise. Dabei wird für jedes Objekt ein neuer Vorgang erzeugt und die konfigurierten Regeln angewendet. Wenn dabei ein valider Datensatz erzeugt wurde und der generierte Vorgangstitel noch nicht vergeben wurde, wird der Vorgang tatsächlich erzeugt und gespeichert. Innerhalb der Excel-Datei nachfolgende Zeilen, die zu dem zu erzeugenden Goobi-Vorgang gehören, werden abhängig von der Konfiguration mit dem gewünschten Strukturtyp erzeugt. Zugehörige Bilder werden hierbei ebenfalls automatisch übernommen und den erzeugten Strukturelementen und Vorgängen zugeordnet.

Konfiguration

Die Konfiguration erfolgt über die Datei plugin_intranda_import_bka_bda.xml. Diese Datei kann im laufenden Betrieb angepasst werden.

Individuelle Konfigurierbarkeit

Es ist sowohl möglich, eine globale Konfiguration für alle Produktionsvorlagen, als auch individuelle Einstellungen für einzelne Produktionsvorlagen zu erstellen. Dazu kann das Element config in der XML Datei wiederholt werden. Wenn in Goobi der Massenimport ausgewählt wurde, wird jeweils derjenige Konfigurationsblock gesucht, bei dem im Element template der Name der ausgewählten Produktionsvorlage steht. Existiert solch ein Eintrag nicht, wird die default-Konfiguration verwendet. Diese ist durch * gekennzeichnet.

Publikationstyp

Mit dem folgenden Parameter läßt sich der zu verwendende Publikationstyp global festlegen:

Jeder Vorgang, der in Goobi mit diesem Plugin angelegt wird, erhält den hier definierten Pulikationstyp.

Strukturtypen

Die Besonderheit dieses Plugins liegt darin, dass aus den sich teilweise wiederholenden Excel-Tabellenzeilen Strukturlemente generiert werden sollen, die zu dem zuvor erzeugten Publikationstyp als Unterelemente angelegt werden sollen. Der hierfür zu verwendende Typ wird mit diesem Parameter festgelegt:

Sammlung

Mit dem optionalen Element collection ist es möglich, eine Sammlung zu definieren, die in alle Datensätze eingefügt werden soll. Daneben können aber auch Sammlungen aus der Oberfläche ausgewählt werden, oder die Sammlung kann als Teil der Excel-Datei oder aus dem Katalog mit importiert werden.

Zeilenbereich

Die folgenden Elemente beschreiben den Aufbau der zu importierenden Excel-Datei.

In rowHeader wird definiert, in welcher Zeile die Spaltenüberschriften eingetragen wurden, die später für das Mapping relevant sind. Üblicherweise ist dies die erste Zeile. Dies kann bei mehrzeiligen Angaben jedoch auch davon abweichen.

Die Elemente rowDataStart und rowDataEnd beschreiben den Bereich, der die Daten enthält. Üblicherweise sind dies die Zeilen, die direkt dem rowHeader folgen, bei besonderen Formatierungen können jedoch auch Leerzeilen enthalten sein, die hierüber entfernt werden können.

Identifier

Der Eintrag identifierHeaderName enthält die Überschrift derjenigen Spalte, in der ein Identifier enthalten ist. Dieses Feld wird intern zur Identifikation der Zeilen genutzt. Bei einer OPAC Abfrage wird dieser Wert verwendet. Darüber hinaus wird dieser Wert ebenso für die Generierung des Vorgangstitels genutzt, wenn keine andere Generierung für Vorgangstitel angegeben wurde.

Vorgangstitel

Das Element processTitleRule dient zur Generierung des Vorgangstitel. Hier stehen dieselben Möglichkeiten zur Verfügung, die auch in der Goobi-Konfigurationsdatei goobi_projects.xml genutzt werden können.

Übernahme von Bildern

Mit Hilfe der Elemente imageFolderHeaderName, imageFolderPath und moveImages können zusätzlich zu den Metadaten auch Bilder importiert werden. In imageFolderHeaderName wird hierfür der Spaltenname eingetragen, in dem in der Excel-Datei die Ordnernamen zu finden sind, die die Bilder enthalten. Dort kann entweder ein absoluter Pfad oder auch ein relativer Pfad angegeben werden. Wenn hierbei ein relativer Pfad angegeben wird, muss das Element imageFolderPath den root Pfad zu den Bildern enthalten.

Mittels des ElementsmoveImages kann gesteuert werden, ob die Bilder kopiert oder verschoben werden sollen.

Import der Bilder aus einem S3-Speicher

Um Bilder aus einem S3-Speicher zu importieren, muss ebenfalls der oben beschriebene Parameter <imageFolderHeaderName> gesetzt sein. Die anderen beiden Elemente bei der Übernahme von Bildern beziehen sich auf Dateisystem Operationen und sind daher nicht notwendig. Stattdessen wird folgender Bereich genutzt:

Mittels <s3 use="true"> wird die Nutzung aktiviert. In <endpoint> und <bucketName> wird der S3 Speicher und bucket definiert und <accessKey> und <accessSecret> enthalten die Zugangsdaten. Falls die zu importierenden Pfade in <imageFolderHeaderName> nicht direkt im Bucket liegen, sondern in einem Unterbereich, kann der <prefix> dahin gesetzt werden. Die Pfade werden dann aus dem prefix und der Angabe in der Exceldatei zusammen gesetzt. Da verschieben prinzipbedingt bei S3 nicht möglich ist, können die Bilder nur kopiert werden. Sofern sie vom Ursprungspfad verschwinden sollen, müssen sie nach dem Import von Hand gelöscht werden.

Ausführung mittels GoobiScript

Das Element runAsGoobiScript steuert, ob ein Import asynchron im Hintergrund über die GoobiScript Warteschlange abgearbeitet werden soll oder ob der Import direkt innerhalb der Nutzersession verarbeitet werden soll. Hier muss abgewägt werden, welche Einstellung sinnvoll ist. Soll ein ein Import inklusive Bildern erfolgen oder enthält die Excel-Datei sehr viele Datensätze, so ist es vermutlich sinnvoller, diesen Import als GoobiScript durchzuführen.

Achtung: Wenn die Spalte identifierHeaderName keinen eindeutigen Identifier enthält oder nicht konfiguriert wurde, kann die Option runAsGoobiScript nicht genutzt werden.

Konfiguration der einzelnen Excel-Spalten

Über die Felder metadata, person und group können einzelne Spalten als Metadatum oder als Vorgangseigenschaft importiert werden. Dazu enthält jedes Feld eine Reihe von Attributen und Unterelementen.

Import von Metadaten

Mit dem Element metadata werden deskriptive Metadaten erzeugt.

Das Attribut headerName enthält den Spaltentitel. Die Regel greift nur dann, wenn die Excel-Datei eine Spalte mit diesem Titel enthält und die Zelle nicht leer ist. Von den beiden Attributen ugh und name muss mindestens eines existieren. Das Feld ugh kann den Namen eines Metadatums enthalten. Wenn dies der Fall ist (und das Metadatum für den konfigurierten Publikationstyp erlaubt ist), wird ein neues Metadatum erzeugt. Mittels name wird eine Eigenschaft mit diesem Namen erstellt.

Das Attribut docType wird relevant, wenn aus dem Katalog ein mehrbändiges Werk oder eine Zeitschrift importiert wurde. Darüber kann gesteuert werden, ob das Feld zur Gesamtaufnahme oder zum Band gehören soll.

Falls zusätzlich zum Inhalt noch eine weitere Spalte mit Normdatenidentifiern oder URIs existiert, kann diese Spalte im Attribut normdataHeaderName hinzugefügt werden.

Datenimport ohne Katalogabfrage für die ETH Zürich

Dieses Import Plugin für Goobi workflow erlaubt das Einspielen von Daten ohne Katalogabfrage, wie es für die ETH Zürich speziell für Mehrbändige Werke benötigt wird.

Übersicht

Einführung

Dieses Import-Plugin erlaubt das Einspielen von Daten ohne vorherige Katalogabfrage. Dabei werden in der Nutzeroberfläche Daten eingefügt, die zuvor aus einer Excel-Datei kopiert wurden und wo deren Spalten mittels TAB voneinander getrennt sind.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

Nach der Installation des Plugins, kann dieses aus der Übersicht der Produktionsvorlagen durch Nutzung des zweiten blauen Buttons neben der gewählten Produktionsvorlage betreten werden.

An dieser Stelle kann zwischen zwei verschiedenen Bereichen des Plugins gewählt werden. Es steht hier zur Auswahl, ob mit bibliothekarischen Objekten gearbeitet werden soll (plugin_import_eth_no_catalogue) oder mit Archivalien (plugin_import_eth_archival_objects).

Wenn das gewünschte Plugin betreten wurde, steht eine Nutzeroberfläche zur Verfügung, in der die einzuspielenden Daten ausgewählt bzw. hochgeladen werden können.

Überblick und Funktionsweise

Nach der Auswahl des richtigen Plugins können in der Nutzeroberfläche die Daten die entweder als CSV-Daten TAB-getrennt vorliegen oder die aus einer Excel-Datei kopiert werden in das Feld Datensätze eingefügt werden. Die Daten haben dabei den folgenden Aufbau:

Plugin: plugin_import_eth_no_catalogue

Acht Spalten für Karten

Wenn acht Spalten verwendet werden, haben diese den folgenden Aufbau:

Vier Spalten für Monographien und Mehrbändige Werke

Wenn vier Spalten verwendet werden, haben diese den folgenden Aufbau:

Plugin: plugin_import_eth_archival_objects

Zwei Spalten für Archivalien

Wenn zwei Spalten verwendet werden, haben diese den folgenden Aufbau:

Drei Spalten für Archivalien in Boxen

Wenn drei Spalten verwendet werden, haben diese den folgenden Aufbau:

Unmittelbar nach dem Einfügen der Daten und dem Klick auf Speichern startet das Anlegen der Vorgänge, ohne dass dabei ein Katalog abgefragt wird.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_import_eth_no_catalogue.xml wie hier aufgezeigt:

Die folgende Tabelle enthält eine Zusammenstellung der Parameter und ihrer Beschreibungen:

Stanford Export

Goobi Plugin für den Export von Goobi-Vorgängen in die Stanford University Digital Library

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz des Stanford Export Plugins in Goobi workflow.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

Für die Verwendung des Plugins muss dieses in einem Arbeitsschritt ausgewählt sein:

Überblick und Funktionsweise

Es muss ein Export Schritt konfiguriert werden:

  • Export DMS

  • Automatische Aufgabe

  • Plugin für Arbeitsschritt: intranda_export_stanford

Bei der Ausführung des Schrittes wird ein Export des Goobi Vorgangs (analog zum Export ins Dateisystem) in das konfigurierte Verzeichnis durchgeführt.

Dabei werden innerhalb des Ordners Unterordner basierend auf dem Identifier erzeugt. Der Identifier qx797sg1405 würde dabei folgende Struktur generieren: /path/to/folder/qx/797/sg/1405. Innerhalb dieses Ordners werden zwei weitere Ordner erstellt, metadata und content.

In content werden alle erzeugten images, und sofern vorhanden die ALTO Dateien und Einzelseiten PDFs geschrieben. Außerdem wird aus den Einzelseiten eine komplette PDF Datei erzeugt. Der Ordner metadata enthält eine XML Datei mit den Angaben zu den Dateien innerhalb des content Ordners

Anschließend wird die konfigurierte URL zur Rest API aufgerufen, um den ingest in das System zu starten.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_export_stanford.xml wie hier aufgezeigt:

Die folgende Tabelle enthält eine Zusammenstellung der Parameter und ihrer Beschreibungen:

VLM Export

Dies ist eine technische Dokumentation für das VLM Export Plugin. Es ermöglicht, den Export in eine VLM Instanz.

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des VLM-Export-Plugins in Goobi.

Mithilfe dieses Plugins für Goobi können die Goobi-Vorgänge innerhalb eines Arbeitsschrittes an den konfigurierten Ort für VLM exportiert werden.

Installation

Dieses Plugin wird in den Workflow so integriert, dass es automatisch ausgeführt wird. Zur Verwendung innerhalb eines Arbeitsschrittes des Workflows sollte es wie im nachfolgenden Screenshot konfiguriert werden.

Das Plugin muss zunächst in folgendes Verzeichnis kopiert werden:

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_export_vlm.xml. Die Konfiguration kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

Format der Bedingungen

Aktuell gibt es nur eine mögliche Art von Bedingungen, die variablematcher Bedingung. Diese Art der Bedingung prüft eine beliebige Variable, welche im Feld field definiert wird, gegen einen regulären Ausdruck, welcher im Feld matches definiert wird.

Eine Beispiel condition ist hier zu sehen:

Diese Bedingung hat den Typen variablematcher. Sie prüft das Feld {meta.singleDigCollection}, welches dem Metadatum singleDigCollection entspricht. Die Bedingung prüft, ob der Wert des Metadatums dem regulären Ausdruck \d{20} entspricht, also ob der Wert aus 20 Ziffern besteht.

Beispielhafter Aufbau eines Workflows
Konfiguration des Arbeitsschritts für die Nutzung des Plugins
Name
Wert
Name
Wert
Parameter
Erläuterung
Name
Wert
Name
Wert
Name
Typ
Beschreibung
Name
Wert
Spalte
Metadatum
Erläuterung
Spalte
Metadatum
Erläuterung
Spalte
Metadatum
Erläuterung
Spalte
Metadatum
Erläuterung
Parameter
Erläuterung
Name
Wert
Parameter
Erläuterung
Name
Wert
Parameter
Erläuterung
https://github.com/intranda/goobi-plugin-export-bda-single-image
https://github.com/intranda/goobi-plugin-dashboard-extended
https://github.com/intranda/goobi-plugin-export-adm-bsme
https://github.com/intranda/goobi-plugin-export-fedora
https://github.com/intranda/goobi-plugin-export-newspaper
https://github.com/intranda/goobi-plugin-export-fedora-prov
https://github.com/intranda/goobi-plugin-export-heris
https://github.com/intranda/goobi-plugin-export-configurable
/opt/digiverso/goobi/plugins/export/plugin_intranda_export_selected_images-base.jar
/opt/digiverso/goobi/config/plugin_intranda_export_selected_images.xml
<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
	<!-- 
	Order of configuration is: 
	1.) project name matches
	2.) project is * 
	-->

	<!-- There could be multiple config blocks. -->
	<!-- Please make sure that the project names of different config blocks are also different. -->
	<!-- Given two config blocks with the same project name, the settings of the first one will be taken. -->
	<config>
		<project>*</project>
		<step>*</step>
		<!-- whether or not to export a METS file, DEFAULT false -->
		<exportMetsFile>false</exportMetsFile>
		<!-- whether or not to create subfolders for the results in the target folder, DEFAULT false -->
		<createSubfolders>true</createSubfolders>
		<!-- the name of the process property which contains information of selected images -->
		<propertyName>plugin_intranda_step_image_selection</propertyName>
		<!-- name of the source folder, media | master | ... -->
		<sourceFolder>media</sourceFolder>
		<!-- absolute path to the target folder for the export, where there is no difference whether you append a '/' to the end or not -->
		<targetFolder>CHANGE_ME</targetFolder>
		
		<!-- whether or not to use scp for the export, DEFAULT false -->
		<useScp>false</useScp>
		<!-- name to login to the remote server via ssh, MANDATORY if useScp is set true  -->
		<scpLogin>CHANGE_ME</scpLogin>
		<!-- password to login to the remote server via ssh, MANDATORY if useScp is set true -->
		<scpPassword>CHANGE_ME</scpPassword>
		<!-- name or ip of the remote host that awaits the export, MANDATORY if useScp is set true -->
		<scpHostname>CHANGE_ME</scpHostname>		
	</config>
        
	<config>
		<project>Manuscript_Project</project>
		<step>*</step>
		<exportMetsFile>false</exportMetsFile>
		<createSubfolders>true</createSubfolders>
		<!-- propertyName can also be set using a goobi variable -->
		<propertyName>{process.NAME}</propertyName>
		<!-- media | master | ... -->
		<sourceFolder>media</sourceFolder>
		<!-- path can also be set using a goobi variable, where there is no difference whether you add a '/' between '}' and '..' or not -->	
		<targetFolder>{goobiFolder}../viewer/hotfolder/</targetFolder>
		
		<useScp>false</useScp>
		<scpLogin>CHANGE_ME</scpLogin>
		<scpPassword>CHANGE_ME</scpPassword>
		<scpHostname>CHANGE_ME</scpHostname>
	</config>

</config_plugin>
/opt/digiverso/goobi/plugins/export/plugin_intranda_export_zop-base.jar
/opt/digiverso/goobi/config/plugin_intranda_export_zop.xml
<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
	<!--
	Order of configuration is:
	1.) project name matches
	2.) project is *
	-->

	<!-- There could be multiple config blocks. -->
	<!-- Please make sure that the project names of different config blocks are also different. -->
	<!-- Given two config blocks with the same project name, the settings of the first one will be taken. -->
	<config>
		<!-- The name of the project. -->
		<!-- MANDATORY -->
		<project>Archive_Project</project>

		<!-- The name of the item identifier, e.g. CatalogIDDigital.  -->
		<!-- For one-volume works, the value of this Metadata field will be used as the folder's as well as the .ctl file's name. -->
		<!-- For multi-volume works, the value of this Metadata field will be used as the name's first part. -->
		<!-- MANDATORY -->
		<identifier>CatalogIDDigital</identifier>

		<!-- The name to be used to distinguish between different volumes of one book series. -->
		<!-- Alternatively one may also choose "TitleDocMain", just assure its difference between volumes. -->
		<!-- For one-volume works, the value of this Metadata field will not be used. BUT do NOT leave it blank anyway. -->
		<!-- For multi-volume works, the value of this Metadata field will be used as the second part of the folder's and the .ctl file's name. -->
		<!-- MANDATORY -->
		<volume>CurrentNoSorting</volume>

		<!-- The place you would like to use for the export. -->
		<!-- Absolute path expected. No difference whether you append the directory separator '/' to the end or not. -->
		<!-- If left blank, then the default setting '/opt/digiverso/viewer/hotfolder' will be used. -->
		<path></path>
		
		<!-- Whether or not use SFTP for the export. -->
		<!-- If true then use SFTP. If false then perform local export. -->
		<!-- If left blank, then the default setting 'false' will be used. -->
		<sftp>true</sftp>

		<!-- User name at the remote host. -->
		<!-- MANDATORY if sftp is set to be true. -->
		<username>CHANGE_ME</username>

		<!-- Name of the remote host. -->
		<!-- MANDATORY if sftp is set to be true. -->
		<hostname>CHANGE_ME</hostname>

		<!-- Path to the private key file, e.g. ~/.ssh/id_rsa -->
		<!-- The key is expected to be of PEM format, beginning with `BEGIN RSA PRIVATE KEY`. -->
		<!-- The OPENSSH format, beginning with `BEGIN OPENSSH PRIVATE KEY`, is not supported yet. -->
		<!-- MANDATORY if sftp is set to be true. -->
		<keyPath>CHANGE_ME</keyPath>
	</config>

	<config>
		<project>Manuscript_Project</project>
		<identifier>CatalogIDDigital</identifier>
		<volume>CurrentNoSorting</volume>
		<!-- Setting up path using a goobi variable. -->
		<!-- No difference whether you add a '/' between '}' and '..' or not. -->		
		<path>{goobiFolder}../viewer/hotfolder/</path>
		
		<sftp>false</sftp>
		<username></username>
		<hostname></hostname>
		<keyPath></keyPath>
	</config>

	<config>
		<project>*</project>
		<identifier>CatalogIDDigital</identifier>
		<volume>CurrentNoSorting</volume>
		<!-- Setting up path using an ABSOLUTE path. -->
		<path>/opt/digiverso/viewer/hotfolder</path>
		
		<!-- Use the default setting 'false'. -->
		<sftp></sftp>
		<username></username>
		<hostname></hostname>
		<keyPath></keyPath>
	</config>

</config_plugin>

identifier

Dieser Parameter legt fest, welches Metadatum als Ordnername verwendet werden soll.

volume

Dieser Parameter steuert, mit dem Inhalt welchen Metadatums die Unterverzeichnisse für Bände benannt werden sollen.

path

Dieser Parameter legt den Export-Pfad fest, wohin die Daten exportiert werden sollen. Erwartet wird ein absoluter Pfad.

sftp

Dieser Parameter legt fest, ob der Export mittels SFTP stattfinden soll.

username

Dieser Parameter legt fest, welcher Nutzername für die Anmeldung bei dem Remote-Host verwendet werden soll.

hostname

Dieser Parameter legt fest, wie der Remote-Host heißt.

keyPath

Dieser Parameter legt fest, mit welcher privaten Schlüssel bei username@hostname verwendet werden soll.

/opt/digiverso/goobi/plugins/export/plugin_intranda_export_Haab-base.jar
/opt/digiverso/goobi/config/plugin_HaabExportPlugin.xml
<config_plugin>
        <exportFolder>/opt/digiverso/viewer/hotfolder/</exportFolder>
        <exportFolder>/opt/digiverso/archive/</exportFolder>
</config_plugin>
/opt/digiverso/goobi/plugins/import/plugin_intranda_import_bka_bda.jar
/opt/digiverso/goobi/config/plugin_intranda_import_bka_bda.xml
<config_plugin>
       <config>
              <!-- which workflow template shall be used -->
              <template>BDA_Bildarchiv</template>
              <!-- publication type to create -->
              <publicationType>Kleinbilddia</publicationType>
              <imageType>Dia</imageType>
              <!-- which digital collection to use -->
              <collection>Dias</collection>
              <processTitleColumn>Buchtitel</processTitleColumn>
              <!-- define in which row the header is written, usually 1 -->
              <rowHeader>1</rowHeader>
              <!-- define in which row the data starts, usually 2 -->
              <rowDataStart>2</rowDataStart>
              <!-- define in which row the data ends, usually 20000 -->
              <rowDataEnd>10000</rowDataEnd>
              <!-- define if import shall use GoobiScript to run in the background -->
              <runAsGoobiScript>true</runAsGoobiScript>
              <!-- column for the path to the images -->
              <imageFolderHeaderName>filename</imageFolderHeaderName>
              
              <!-- s3 data -->
              <s3 use="true">
                     <endpoint>http://127.0.0.1:9000</endpoint>
                     <bucketName>workflow-upload-testing</bucketName>
                     <accessKey>minioadmin</accessKey>
                     <accessSecret>minioadmin</accessSecret>
                     <prefix>prefix/</prefix>
              </s3>

              <!-- individual metadata fields read from the excel columns -->
              <mainMetadata rulesetName="CatalogIDDigital" columnName="scanid" />
              <mainMetadata rulesetName="InternalNumber" columnName="interne_nummerierung" />
              <mainMetadata rulesetName="BookTitle" columnName="Buchtitel" />
              <mainMetadata rulesetName="BookID" columnName="BuchId" />
              <mainMetadata rulesetName="InventoryNumber" columnName="inventarnummer" />
              <mainMetadata rulesetName="Country" columnName="staat" />
              <mainMetadata rulesetName="ZIPCode" columnName="plz" />
              <mainMetadata rulesetName="FederalState" columnName="bundesland" />
              <mainMetadata rulesetName="PoliticalCommunity" columnName="gemeindename" />
              <mainMetadata rulesetName="KGNr" columnName="gemeindekz" />
              <mainMetadata rulesetName="Community" columnName="ortschaftsname" />
              <mainMetadata rulesetName="PGNr" columnName="ortskz" />
              <mainMetadata rulesetName="ObjectDescription" columnName="objekt" />
              <mainMetadata rulesetName="TitleDocMain" columnName="titel" />
              <mainMetadata rulesetName="Photographer" columnName="fotograf" />
              <mainMetadata rulesetName="Photographer" columnName="zweiter_fotograf" />
              <mainMetadata rulesetName="PublicationYear" columnName="Aufnahmejahr" />
              <mainMetadata rulesetName="Series" columnName="verweise_entstehung" />
              <mainMetadata rulesetName="SubSeries" columnName="verweise_serien" />
              <mainMetadata rulesetName="Remarks" columnName="anmerkungen" />
              <mainMetadata rulesetName="BookPage" columnName="buchseite" />
              <mainMetadata rulesetName="Label" columnName="objekttraegerbeschriftung" />
              <mainMetadata rulesetName="BoxNumber" columnName="Ablageort_Box" />
              <mainMetadata rulesetName="RegisterNumber" columnName="Ablageort_Register" />
              <mainMetadata rulesetName="Ressort" columnName="ressort" />
              <mainMetadata rulesetName="area" columnName="bereich" />
              <mainMetadata rulesetName="PhysicalLocation" columnName="standort" />
              <mainMetadata rulesetName="BDAArea" columnName="projekt" />
              <mainMetadata rulesetName="DateRecorded" columnName="created" />
              <mainMetadata rulesetName="DateModified" columnName="lastModified" />

              <imageMetadata rulesetName="ObjectType" columnName="type" />
              <imageMetadata rulesetName="ImportPath" columnName="filename" />
              <imageMetadata rulesetName="filesize" columnName="filesize" />
              <imageMetadata rulesetName="width" columnName="width" />
              <imageMetadata rulesetName="height" columnName="height" />
              <imageMetadata rulesetName="verticalresolution" columnName="verticalresolution" />
              <imageMetadata rulesetName="horizontalresolution" columnName="horizontalresolution" />
       </config>

       <config>
              <!-- which workflow template shall be used -->
              <template>*</template>
              <!-- publication type to create -->
              <publicationType>Document</publicationType>
              <imageType>Photograph</imageType>
              <!-- which digital collection to use
		<collection>General</collection>
		 -->
              <processTitleColumn>Vorgang</processTitleColumn>
              <!-- define in which row the header is written, usually 1 -->
              <rowHeader>1</rowHeader>
              <!-- define in which row the data starts, usually 2 -->
              <rowDataStart>2</rowDataStart>
              <!-- define in which row the data ends, usually 20000 -->
              <rowDataEnd>10000</rowDataEnd>
              <!-- define if import shall use GoobiScript to run in the background -->
              <runAsGoobiScript>true</runAsGoobiScript>
              <!-- column for the path to the images -->
              <imageFolderHeaderName>Importpfad Bildobjekt</imageFolderHeaderName>

              <!-- individual metadata fields read from the excel columns -->
              <mainMetadata rulesetName="CatalogIDDigital" columnName="DMDB-ID" />
              <mainMetadata rulesetName="HerisID" columnName="HERIS-ID" />
              <mainMetadata rulesetName="FederalState" columnName="Bundesland" />
              <mainMetadata rulesetName="Location" columnName="Ort" />
              <mainMetadata rulesetName="Address" columnName="Adresse" />
              <mainMetadata rulesetName="TitleDocMain" columnName="Objekttitel" />
              <mainMetadata rulesetName="Photographer" columnName="FotografIn" />
              <mainMetadata rulesetName="DateRecorded" columnName="Aufnahmejahr" />
              <mainMetadata rulesetName="DateRecordedInformation" columnName="Aufnahmedatum Zusatzinfo" />
              <mainMetadata rulesetName="KeyNumber" columnName="GZ" />
              <mainMetadata rulesetName="Condition" columnName="Erhaltungszustand des Objekts" />
              <mainMetadata rulesetName="Remarks" columnName="Sonstiges/Anmerkungen" />
              <mainMetadata rulesetName="ObjectType" columnName="Objekttyp" />
              <mainMetadata rulesetName="Series" columnName="Serie" />
              <mainMetadata rulesetName="SubSeries" columnName="Unterserie" />

              <imageMetadata rulesetName="View" columnName="Ansicht" />
              <imageMetadata rulesetName="shelfmarksource" columnName="Signatur" />
              <imageMetadata rulesetName="FormerFilePath" columnName="Ursprünglicher Dateipfad" />
              <imageMetadata rulesetName="Copyright" columnName="Rechteinhaber" />
              <imageMetadata rulesetName="ImportPath" columnName="Importpfad Bildobjekt" />
       </config>
</config_plugin>
<!-- which workflow template shall be used -->
<template>*</template>
<!-- publication type to create -->
<publicationType>Monograph</publicationType>
<imageType>Photograph</imageType>
<!-- which digital collection to use -->
<collection>Example collection</collection>
<!-- define in which row the header is written, usually 1 -->
<rowHeader>1</rowHeader>
<!-- define in which row the data starts, usually 2 -->
<rowDataStart>2</rowDataStart>
<!-- define in which row the data ends, usually 20000 -->
<rowDataEnd>20000</rowDataEnd>
<!-- define which column is the one to use for catalogue requests and to identify the row during the import -->
<identifierHeaderName>Identifier</identifierHeaderName>
<!-- Rules to generate the process title, the same syntax as in goobi_projects.xml can be used.
     Use the column names to get the right metadata values.
     If the field is missing or empty, the value of the identifier column is used.
-->
<processTitleRule>'StaticPrefix_'+Identifier</processTitleRule>
<!-- define which column contains the image folder name. Can be combined with <imageFolderPath> prefix or an absolute path.
      If the field is missing, empty or does not contain an existing directory, no images will be imported -->
<imageFolderHeaderName>image folder</imageFolderHeaderName>

<!-- prefix path to the image folder. Can be empty or missing if the import doesn't contain images or if the excel field contains absolute path  -->
<imageFolderPath>/mnt/images/</imageFolderPath>

<!-- defines, if images are moved from the source folder to the destination (true) or copied (false) -->
<moveImages>true</moveImages>
<s3 use="true">
       <endpoint>http://127.0.0.1:9000</endpoint>
       <bucketName>workflow-upload-testing</bucketName>
       <accessKey>minioadmin</accessKey>
       <accessSecret>minioadmin</accessSecret>
       <prefix>prefix/</prefix>
</s3>
<!-- Run the import as GoobiScript -->
<runAsGoobiScript>true</runAsGoobiScript>

headerName

Attribut

Spaltentitel in der Exceldatei

ugh

Attribut

Name des Metadatums

property

Attribut

Name der Eigenschaft

docType

Attribut

anchor oder child

normdataHeaderName

Attribut

Spaltentitel einer Spalte mit dazugehörigen Identifiern

opacSearchField

Attribut

Definition, welches Suchfeld für die Katalogabfrage verwendet werden soll. Dies ist für den Einsatz des JSON-Opac-Plugins notwendig.

/opt/digiverso/goobi/plugins/import/plugin-import-eth-no-catalogue-base.jar
/opt/digiverso/goobi/config/plugin_intranda_import_eth_no_catalogue.xml

1

Identifier

Hierbei handelt es sich um die Pflichtangabe des Identifiers.

2

Signatur

Hierbei handelt es sich um die Pflichtangabe der Signatur.

3

Sammlung

Hierbei handelt es sich um die Pflichtangabe der Sammlung.

4

Datum

Hierbei handelt es sich um die Pflichtangabe des Digitalisierungsdatums.

5

Einheiten

Hierbei handelt es sich um die Pflichtangabe der Einheiten.

6

Scans

Hierbei handelt es sich um die Pflichtangabe der Scans.

7

dpi

Hierbei handelt es sich um die Pflichtangabe der Auflösung.

8

Bemerkungen

Hierbei handelt es sich um die Pflichtangabe mit Bemerkungen.

1

MMS-ID

Wenn diese einen Unterstrich enthält, wird ein Mehrbändiges Werk angelegt, andernfalls eine Monographie. Hierbei handelt es sich um eine Pflichtangabe.

2

Signatur

Hierbei handelt es sich um eine Pflichtangabe.

3

Kollektion

Angabe der zuzuweisenden Kollektion. Hierbei handelt es sich um eine Pflichtangabe.

4

Titel

Hierbei handelt es sich um eine optionale Angabe.

1

Signatur

Hierbei handelt es sich um die Pflichtangabe der Signatur.

2

Datum

Hierbei handelt es sich um die Pflichtangabe des Digitalisierungsdatums.

1

Schachtel

Hierbei handelt es sich um die Pflichtangabe der Box-Nummer.

2

Mappe

Hierbei handelt es sich um die Pflichtangabe der Mappen-Nummer.

3

Datum

Hierbei handelt es sich um die Pflichtangabe des Digitalisierungsdatums.

<config_plugin>
	<config>

		<!-- which workflow template shall be used -->
		<template>*</template>

		<!-- define if import shall use GoobiScript to run in the background -->
		<runAsGoobiScript>false</runAsGoobiScript>

	</config>
</config_plugin>

template

Hiermit kann festgelegt werden für welche Produktionsvorlabe der jeweilige config-Block gelten soll.

runAsGoobiScript

Mit diesem Parameter kann festgelegt werden, ob der Import als GoobiScript im Hintergrund stattfinden soll.

/opt/digiverso/goobi/plugins/export/plugin_intranda_export_stanford.jar
/opt/digiverso/goobi/config/plugin_intranda_export_stanford.xml
<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
	<!-- this additional temporary destination folder can stay empty to get ignored -->
	<tempDestination>/tmp</tempDestination>
	<!-- this is the main folder where the result is exported to -->
	<destination>/tmp</destination>
	<metadataFileName>stubContentMetadata.xml</metadataFileName>
	<apiBaseUrl>http://example.com/</apiBaseUrl>
    <delay>10</delay>
	<endpoint>accession</endpoint>	
    <accessToken>Bearer abcdefghijklmnopqrstuvwxyz</accessToken>
    <queryParameter name="description" value="reaccession-via-goobi" />
    <queryParameter name="opening_user_name" value="goobi" />
    <queryParameter name="significance" value="major" />
</config_plugin>

tempDestination

Wenn das Element vorhanden und nicht leer ist, werden die Metadaten in diesen Ordner als dor_export_{objectId}.xml geschrieben

destination

Root Verzeichnis für die exportierten Daten

metadataFileName

Name der Metadaten-Datei, enthält Einträge zu jeder exportierten Datei

dela

Wenn das Element vorhanden ist und eine Zahl größer 0 enthält, wird nach dem erfolgreichen Export die konfigurierte Anzahl an Sekunden gewartet, bevor die Rest-API aufgerufen wird

apiBaseUrl

Basis-URL zur Rest-API

endpoint

Endpoint zur Rest-API

accessToken

Token, der für die Authentifizierung der Rest API benötigt wird

queryParameter

Enthält in den Attributen name und value einen query-Parameter, der zusätzlich als &name=value an die URL angehängt wird. Das Feld ist wiederholbar.

/opt/digiverso/goobi/plugins/export/plugin_intranda_export_vlm-base.jar
/opt/digiverso/goobi/config/plugin_intranda_export_vlm.xml
<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
	<!-- 
	Order of configuration is: 
	1.) project name matches
	2.) project is * 
	-->

	<!-- There could be multiple config blocks. -->
	<!-- Please make sure that the project names of different config blocks are also different. -->
	<!-- Given two config blocks with the same project name, the settings of the first one will be taken. -->
	<config>
		<!-- The name of the project -->
		<!-- MANDATORY -->
		<project>Archive_Project</project>
		
		<!-- The name of the system, e.g. AlmaIDDigital, AlephIDDigital, CatalogIDDigital.  -->
		<!-- This tag has the following two OPTIONAL attributes:
				- @anchorSplitter: if configured with a non-blank string, then it will be used to split the metadata value into two parts, where its head will be used 
						as the main folder's name, while its tail will be used as part of the volume's name. DEFAULT value is an empty string, i.e. no splitting expected.
				- @volumeFormat: only works when @anchorSplitter is configured with a non-blank string.
						It is used as the left padding if the volume's name is shorter than it. DEFAULT value is an empty string, i.e. no padding needed.
		 -->
		<!-- MANDATORY -->
		<identifier anchorSplitter="" volumeFormat="000">CatalogIDDigital</identifier>
	    
		<!-- The name to be used to distinguish between different volumes of one book series. -->
		<!-- Alternatively one may also choose "TitleDocMain", just assure its difference between volumes. -->
		<!-- Leave the default value unchanged if the book is a one-volume work. -->
		<!-- MANDATORY -->
		<volume>CurrentNoSorting</volume>
	    
		<!-- The place you would like to use for the export. -->
		<!-- Absolute path expected. No difference whether you append the directory separator '/' to the end or not. -->
		<!-- If left blank, then the default setting '/opt/digiverso/viewer/hotfolder' will be used. -->
		<path></path>
	    
		<!-- The prefix you would like to use for subfolders for different volumes. -->
		<!-- Leave it blank if no common prefix is needed. -->
		<subfolderPrefix>T_34_L_</subfolderPrefix>
		
		<!-- Whether or not use SFTP for the export. -->
		<!-- If true then use SFTP. If false then perform local export. -->
		<!-- If left blank, then the default setting 'false' will be used. -->
		<sftp>true</sftp>
		
		<!-- If true then use ssh key for connection. If false then use password. OPTIONAL. DEFAULT false. -->
		<useSshKey>false</useSshKey>
		
		<!-- Absolute path to the location of the file 'known_hosts'. -->
		<!-- If left blank, then the default setting '{user.home}/.ssh/known_hosts' will be used. OPTIONAL. -->
		<knownHosts></knownHosts>
		
		<!-- User name at the remote host. -->
		<!-- MANDATORY if sftp is set to be true. -->
		<username>CHANGE_ME</username>
		
		<!-- Name of the remote host. -->
		<!-- MANDATORY if sftp is set to be true. -->
		<hostname>CHANGE_ME</hostname>
		
		<!-- Port of the remote host. -->
		<!-- OPTIONAL. DEFAULT 22. -->
		<port>CHANGE_ME</port>
		
		<!-- Password to log into the remote host 'username'@'hostname'. -->
		<!-- MANDATORY if sftp is set to be true, while useSshKey is set to be false or not set. -->
		<password>CHANGE_ME</password>
		
		<!-- Path to the private key file, e.g. ~/.ssh/id_rsa -->
		<!-- The key is expected to be of PEM format, beginning with `BEGIN RSA PRIVATE KEY`. -->
		<!-- The OPENSSH format, beginning with `BEGIN OPENSSH PRIVATE KEY`, is not supported yet. -->
		<!-- MANDATORY if sftp and useSshKey are both set to be true. -->
		<keyPath>CHANGE_ME</keyPath>
	</config>
	
	<config>
		<project>Manuscript_Project</project>		
		<identifier>CatalogIDDigital</identifier>		
		<volume>CurrentNoSorting</volume>	
		<!-- Setting up path using a goobi variable. -->
		<!-- No difference whether you add a '/' between '}' and '..' or not. -->		
		<path>{goobiFolder}../viewer/hotfolder/</path>
		<!-- No common prefix needed. -->
		<subfolderPrefix></subfolderPrefix>
		
		<sftp>false</sftp>
		<!-- Use the default setting '{user.home}/.ssh/known_hosts'. -->
		<knownHosts></knownHosts>
		
		<username></username>
		<hostname></hostname>
		<password></password>
	</config>

	<!-- Apply this configuration only under the condition that the `singleDigCollection` in the metadata is a 20 digit number -->
	<config>
		<project>Manuscript_Project</project>		
		<identifier>CatalogIDDigital</identifier>		
		<volume>CurrentNoSorting</volume>		
		<path>/tmp/somewhere</path>
		<subfolderPrefix></subfolderPrefix>
		
		<condition>
            <type>variablematcher</type>
            <field>{meta.singleDigCollection}</field>
            <matches>\d{20}</matches>
        </condition>
		
		<sftp>false</sftp>
		<knownHosts></knownHosts>
		
		<username></username>
		<hostname></hostname>
		<password></password>
	</config>
	
	<config>
		<project>*</project>
		<identifier>CatalogIDDigital</identifier>
		<volume>CurrentNoSorting</volume>		
		<!-- Setting up path using an ABSOLUTE path. -->
		<path>/opt/digiverso/viewer/hotfolder</path>
		<!-- No common prefix needed. -->
		<subfolderPrefix></subfolderPrefix>
		
		<!-- Use the default setting 'false'. -->
		<sftp></sftp>
		<!-- Use the default setting '{user.home}/.ssh/known_hosts'. -->
		<knownHosts></knownHosts>
		
		<username></username>
		<hostname></hostname>
		<password></password>
	</config>

</config_plugin>

identifier

Dieser Parameter legt fest, welches Metadatum als Ordnername verwendet werden soll. Er hat zwei optionale Attribute @anchorSplitter und @volumeFormat, die für den Fall verwendet werden, dass der Wert dieses Identifiers selbst sowohl den Namen des Hauptordners als auch den Namen des Datenträgers enthält, getrennt durch den konfigurierten @anchorSplitter. @volumeFormat wird in diesem Fall als linker Auffüller für den Namen des Datenträgers verwendet.

volume

Dieser Parameter steuert, mit dem Inhalt welchen Metadatums die Unterverzeichnisse für Bände benannt werden sollen.

path

Dieser Parameter legt den Export-Pfad fest, wohin die Daten exportiert werden sollen. Erwartet wird ein absoluter Pfad.

condition

Dieses Element ist optional und kann mehrfach auftreten um Bedingungen zu definieren, unter welchen dieser Konfigurationsabschnitt verwendet werden kann. Das Format den condition Elements ist weiter unten beschrieben. Ein Konfigurationsabschnitt kann verwendet werden, wenn alle Bedingungen erfüllt sind. Wenn es mehrere Konfigurationsabschnitte gibt und mehr als eine verwendet werden könnte wird der Konfigurationsabschnitt mit den meisten Bedingungen ausgewählt (je spezieller die Bedingungen werden, desto höher ist die Priorität). Sollte das nicht eindeutig sein, wird ein beliebiger Konfigurationsabschnitt gewählt. In diesem Fall wird dem Benutzer eine Fehlermeldung angezeigt.

subfolderPrefix

Dieser Parameter beschreibt den Präfix, der für jeden Band eines mehrbändigen Werkes in der Ornderbezeichnung vorangestellt werden soll. (Beispiel T_34_L_: Hier steht T_34 für die Erkennung zur Erstellung eines Strukturknotens des Typs Band und das L gibt an, dass danach ein Text kommt.)

sftp

Dieser Parameter legt fest, ob der Export mittels SFTP stattfinden soll.

useSshKey

Dieser Parameter legt fest, ob die Verbindung zum Remote-Host mithilfe einer SSH Schlüssel Datei zu erledigen.

knownHosts

Dieser Parameter legt fest, wo die Datei namens known_hosts ist. Wenn keine Datei angegeben wurde, dann wird der Pfad {user.home}/.ssh/known_hosts genutzt. Sonst wird hier ein absoluter Pfad erwartet.

username

Dieser Parameter legt fest, welcher Nutzername für die Anmeldung bei dem Remote-Host verwendet werden soll.

hostname

Dieser Parameter legt fest, wie der Remote-Host heißt.

port

Dieser Parameter definiert die Portnummer des Remote-Hosts. DEFAULT 22.

password

Dieser Parameter definiert das Passwort, das für die Anmeldung mittels username@hostname verwendet werden soll.

keyPath

Dieser Parameter legt fest, wo sich die SSH Schlüssel Datei befindet, die für die Anmeldung mittels username@hostname verwendet werden soll.

<condition>
    <type>variablematcher</type>
    <field>{meta.singleDigCollection}</field>
    <matches>\d{20}</matches>
</condition>
Integration des Plugins in den Workflow
Integration des Plugins in den Workflow
Auswahl des Plugins zur Durchführung des Imports
Produktionsvorlage mit zusätzlichem blauen Button für den Massenimport
Nutzeroberfläche des Import-Plugins
Konfiguration des Arbeitsschritts für die Nutzung des Plugins
Integration des Plugins in den Workflow
https://github.com/intranda/goobi-plugin-export-nli-pdf-to-folder-structure

Identifier

intranda_export_selected_images

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 12:03:45

Identifier

intranda_export_zop

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 12:03:26

Identifier

HaabExport

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:45:20

Identifier

intranda_import_bka_bda

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

26.08.2024 11:04:12

Identifier

intranda_import_eth_no_catalogue

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

06.05.2025 14:30:04

Identifier

intranda_export_standford

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

04.09.2024 08:58:14

Identifier

intranda_export_vlm

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 12:03:37

Import von Datensätzen aus einer Excel-Datei

Dies ist die technische Dokumentation für das Plugin zum Import von Excel-Dateien.

Übersicht

Name
Wert

Identifier

intranda_import_excel

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

13.08.2024 14:33:43

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz des Plugins für den Massenimport von Datensätzen aus Excel-Dateien.

Installation

Das Plugin muss in den folgenden Ordner installiert werden:

/opt/digiverso/goobi/plugins/import/plugin_intranda_import_excel-base.jar

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

/opt/digiverso/goobi/config/plugin_intranda_import_excel.xml

Überblick und Funktionsweise

Um den Import zu nutzen, muss in den Produktionsvorlagen der Massenimportbereich geöffnet werden und im Reiter Dateiupload-Import das Plugin intranda_import_excel ausgewählt werden. Anschließend kann eine Excel-Datei hochgeladen und importiert werden.

Der Import erfolgt anschließend zeilenweise. Dabei wird für jede Zeile ein neuer Vorgang erzeugt und die konfigurierten Regeln angewendet. Wenn dabei ein valider Datensatz erzeugt wurde und der generierte Vorgangstitel noch nicht vergeben wurde, wird der Vorgang tatsächlich erzeugt und gespeichert.

Konfiguration

Die Konfiguration erfolgt über die Datei plugin_intranda_import_excel.xml. Diese Datei kann im laufenden Betrieb angepasst werden.

<config_plugin>
    <config>
        <!-- which workflow template shall be used -->
        <template>*</template>

        <!-- publication type to create -->
        <publicationType>Monograph</publicationType>

        <!-- which digital collection to use -->
        <collection>mycollection</collection>

        <!-- define if a catalogue shall get requested to import metadata -->
        <useOpac>true</useOpac>
        <!-- which catalogue to use (as default) -->
        <opacName>GBV PICA</opacName>
        <!-- which catalogue to use per record; if missing the default will be used -->
        <opacHeader>Catalogue</opacHeader>
        <searchField>12</searchField>

        <!-- define in which row the header is written, usually 1 -->
        <rowHeader>1</rowHeader>
        <!-- define in which row the data starts, usually 2 -->
        <rowDataStart>2</rowDataStart>
        <!-- define in which row the data ends, usually 20000 -->
        <rowDataEnd>20000</rowDataEnd>

        <!-- define which column is the one to use for catalogue requests -->
        <identifierHeaderName>PPN-A</identifierHeaderName>

        <!-- Rules to generate the process title, the same syntax as in goobi_projects.xml can be used.
            Use the column names to get the right metadata values.
            If the field is missing or empty, the value of CatalogIDDigital is used. -->
        <processTitleRule>2-Titel+'_'+PPN-O</processTitleRule>

        <!-- prefix path to the image folder. Can be empty or missing if the import doesn't contain images or if the excel field contains absolute path  -->
        <imageFolderPath>/opt/digiverso/images/</imageFolderPath>
        <!-- define which column contains the image folder name. Can be combined with <imageFolderPath> prefix or an absolute path.
        If the field is missing, empty or does not contain an existing directory, no images will be imported -->
        <imageFolderHeaderName>images</imageFolderHeaderName>

        <!-- defines, if images are moved from the source folder to the destination (true) or copied (false) -->
        <moveFiles>true</moveFiles>

        <!-- Run the import as GoobiScript -->
        <runAsGoobiScript>true</runAsGoobiScript>

        <!-- Overwrite any existing processes -->
        <replaceExistingProcesses>true</replaceExistingProcesses>

        <!-- define here which columns shall be mapped to which ugh metadata
            ugh: name of the metadata to use. if it is empty or missing, no metadata is generated
            headerName: title inside of the header column
            property: name of the process property. if it is empty or missing, no process property gets generated
            normdataHeaderName: title of the header column to use for a gnd authority identifier
            docType: define if the metadata should be added to the anchor or child element. Gets ignored, when the
            record is no multivolume. Default is 'child', valid values are 'child' and 'anchor' -->
        <metadata ugh="CatalogIDSource" headerName="PPN-A" />
        <metadata ugh="CatalogIDDigital" headerName="PPN-O" />
        <metadata ugh="TitleDocMain" headerName="2-Titel" />
        <metadata ugh="PlaceOfPublication" property="Ort" normdataHeaderName="4-GND-ORT" headerName="3-Ort" docType="anchor" />
        <metadata ugh="DocLanguage" headerName="10-DocLanguage" />

        <!-- a configuration for a person might look like this -->
        <person ugh="Author" normdataHeaderName="7-GND-Person" docType="child">
            <!-- use this field if the column contains the complete name -->
            <nameFieldHeader>11-Person</nameFieldHeader>
            <!-- set this field to true, if the name must be splitted into first- and lastname. The complete name gets written into lastname -->
            <splitName>true</splitName>
            <!-- define at which character the name is separated. @firstNameIsFirstPart defines, if the firstname is the first or last part of the name -->
            <splitChar firstNameIsFirstPart="false">, </splitChar>

            <!-- use this fields, if the firstname and lastname are in different columns -->
            <!--
            <firstnameFieldHeader>5-Vorname</firstnameFieldHeader>
            <lastnameFieldHeader>6-Nachname</lastnameFieldHeader>
            -->
        </person>

    </config>

    <config>
        <template>json_opac_import</template>
        <publicationType>Monograph</publicationType>
        <collection>DefaultCollection</collection>

        <useOpac>true</useOpac>
        <opacName>ArchiveSpace</opacName>
        <rowHeader>1</rowHeader>
        <rowDataStart>2</rowDataStart>
        <rowDataEnd>20000</rowDataEnd>

        <processTitleRule>aspace_uri+bib_id+'_'+barcode+holdings+item</processTitleRule>

        <runAsGoobiScript>false</runAsGoobiScript>

        <metadata opacSearchField="ao" headerName="aspace_uri" />
        <metadata opacSearchField="bib" headerName="bib_id" />
        <metadata opacSearchField="type" headerName="barcode" />
        <metadata opacSearchField="type" headerName="holdings" />
        <metadata opacSearchField="type" headerName="item" />
    </config>
</config_plugin>

Individuelle Konfigurierbarkeit

Es ist sowohl möglich, eine globale Konfiguration für alle Produktionsvorlagen, als auch individuelle Einstellungen für einzelne Produktionsvorlagen zu erstellen. Dazu kann das Element config in der XML Datei wiederholt werden. Wenn in Goobi der Massenimport ausgewählt wurde, wird jeweils derjenige Konfigurationsblock gesucht, bei dem im Element template der Name der ausgewählten Produktionsvorlage steht. Existiert solch ein Eintrag nicht, wird die default Konfiguration verwendet. Diese ist durch * gekennzeichnet.

<!-- which workflow template shall be used -->
<template>*</template>

Sammlung

Mit dem optionalen Element collection ist es möglich, eine Sammlung zu definieren, die in alle Datensätze eingefügt werden soll. Daneben können aber auch Sammlungen aus der Oberfläche ausgewählt werden, oder die Sammlung kann als Teil der Excel-Datei oder aus dem Katalog mit importiert werden.

<!-- which digital collection to use -->
<collection>Example collection</collection>

Katalogimport

Die nächsten vier Elemente useOpac, opacName, opacHeader und searchField steuern, ob während des Imports eine Katalogabfrage durchgeführt werden soll. Wenn useOpac den Wert true enthält, findet eine solche Abfrage statt. Hierzu werden der Katalog und das Suchfeld verwendet, die in den Feldern konfiguriert wurden. Der Name des Katalogs muss dabei einem Eintrag aus der Goobi-Konfigurationsdatei goobi_projects.xml entsprechen. Er kann entweder fest definiert werden im Parameter opacName oder auch dynamisch aus einer Zeile des jeweiligen Datensatzes (opacHeader) verwendet werden. Der Strukturtyp wird dabei automatisch anhand den OPAC-Daten erkannt.

<!-- define if an opac request is made -->
<useOpac>true</useOpac>
<!-- name of the configured catalogue -->
<opacName>K10Plus</opacName>
<!-- which catalogue to use per record; if missing the default will be used -->
<opacHeader>Catalogue</opacHeader>
<!-- field to search in -->
<searchField>12</searchField>

Wird hingegen kein OPAC genutzt, muss der Strukturtyp der anzulegenden Vorgänge im Feld publicationType angegeben werden. Der hier verwendete Name muss entsprechend innerhalb des Regelsatzes existieren. Wenn der OPAC genutzt werden soll, wird dieses Feld nicht ausgewertet.

<!-- publication type to create -->
<publicationType>Monograph</publicationType>

Zeilenbereich

Die folgenden Elemente beschreiben den Aufbau der zu importierenden Excel-Datei.

In rowHeader wird definiert, in welcher Zeile die Spaltenüberschriften eingetragen wurden, die später für das Mapping relevant sind. Üblicherweise ist dies die erste Zeile. Dies kann bei mehrzeiligen Angaben jedoch auch davon abweichen.

<!-- define in which row the header is written, usually 1 -->
<rowHeader>1</rowHeader>

rowDataStart und rowDataEnd beschreiben den Bereich, der die Daten enthält. Üblicherweise sind dies die Zeilen, die direkt dem rowHeader folgen, bei besonderen Formatierungen können jedoch auch Leerzeilen enthalten sein, die hierüber entfernt werden können.

<!-- define in which row the data starts, usually 2 -->
<rowDataStart>2</rowDataStart>
<!-- define in which row the data ends, usually 20000 -->
<rowDataEnd>20000</rowDataEnd>

Identifier

Der Eintrag identifierHeaderName enthält die Überschrift derjenigen Spalte, in der ein Identifier enthalten ist. Dieses Feld wird intern zur Identifikation der Zeilen genutzt. Bei einer OPAC Abfrage wird dieser Wert verwendet. Darüber hinaus wird dieser Wert ebenso für die Generierung des Vorgangstitels genutzt, wenn keine andere Generierung für Vorgangstitel angegeben wurde.

<!-- define which column is the one to use for catalogue requests and to identify the row during the import -->
<identifierHeaderName>Identifier</identifierHeaderName>

Vorgangstitel

Das Element processTitleRule dient zur Generierung des Vorgangstitel. Hier stehen dieselben Möglichkeiten zur Verfügung, die auch in der Goobi-Konfigurationsdatei goobi_projects.xml genutzt werden können.

<!-- Rules to generate the process title, the same syntax as in goobi_projects.xml can be used.
     Use the column names to get the right metadata values.
     If the field is missing or empty, the value of the identifier column is used.
-->
<processTitleRule>'StaticPrefix_'+Identifier</processTitleRule>

Hierbei kann die processTitleRule mit dem zusätzlichen Parameter replacewith versehen werden. Das hierbei angegebene Zeichen (bspw. replacewith="_") ersetzt alle Sonderzeichen durch ebendieses Zeichen.

Übernahme von Bildern

Mit Hilfe der Elemente imageFolderHeaderName, imageFolderPath und moveFiles können zusätzlich zu den Metadaten auch Bilder importiert werden. In imageFolderHeaderName wird hierfür der Spaltenname eingetragen, in dem in der Excel-Datei die Ordnernamen zu finden sind, die die Bilder enthalten. Dort kann entweder ein absoluter Pfad oder auch ein relativer Pfad angegeben werden. Wenn hierbei ein relativer Pfad angegeben wird, muss das Element imageFolderPath den root Pfad zu den Bildern enthalten.

Mittels des ElementsmoveFiles kann gesteuert werden, ob die Bilder kopiert oder verschoben werden sollen.

<!-- define which column contains the image folder name. Can be combined with <imageFolderPath> prefix or an absolute path.
      If the field is missing, empty or does not contain an existing directory, no images will be imported -->
<imageFolderHeaderName>image folder</imageFolderHeaderName>

<!-- prefix path to the image folder. Can be empty or missing if the import doesn't contain images or if the excel field contains absolute path  -->
<imageFolderPath>/mnt/images/</imageFolderPath>

<!-- defines, if images are moved from the source folder to the destination (true) or copied (false) -->
<moveFiles>true</moveFiles>

Ausführung mittels GoobiScript

Das Element runAsGoobiScript steuert, ob ein Import asynchron im Hintergrund über die GoobiScript Warteschlange abgearbeitet werden soll oder ob der Import direkt innerhalb der Nutzersession verarbeitet werden soll. Hier muss abgewägt werden, welche Einstellung sinnvoll ist. Soll ein ein Import inklusive Bildern erfolgen oder enthält die Excel-Datei sehr viele Datensätze, so ist es vermutlich sinnvoller, diesen Import als GoobiScript durchzuführen.

<!-- Run the import as GoobiScript -->
<runAsGoobiScript>true</runAsGoobiScript>

Achtung: Wenn die Spalte identifierHeaderName keinen eindeutigen Identifier enthält oder nicht konfiguriert wurde, kann die Option runAsGoobiScript nicht genutzt werden.

Konfiguration der einzelnen Excel-Spalten

Über die Felder metadata, person und group können einzelne Spalten als Metadatum oder als Vorgangseigenschaft importiert werden. Dazu enthält jedes Feld eine Reihe von Attributen und Unterelementen.

Import von Metadaten

Mit dem Element metadata werden deskriptive Metadaten erzeugt.

Name
Typ
Beschreibung

headerName

Attribut

Spaltentitel in der Exceldatei

ugh

Attribut

Name des Metadatums

property

Attribut

Name der Eigenschaft

docType

Attribut

anchor oder child

normdataHeaderName

Attribut

Spaltentitel einer Spalte mit dazugehörigen Identifiern

opacSearchField

Attribut

Definition, welches Suchfeld für die Katalogabfrage verwendet werden soll. Dies ist für den Einsatz des JSON-Opac-Plugins notwendig.

Das Attribut headerName enthält den Spaltentitel. Die Regel greift nur dann, wenn die Excel-Datei eine Spalte mit diesem Titel enthält und die Zelle nicht leer ist. Von den beiden Attributen ugh und name muss mindestens eines existieren. Das Feld ugh kann den Namen eines Metadatums enthalten. Wenn dies der Fall ist (und das Metadatum für den konfigurierten Publikationstyp erlaubt ist), wird ein neues Metadatum erzeugt. Mittels name wird eine Eigenschaft mit diesem Namen erstellt.

Das Attribut docType wird relevant, wenn aus dem Katalog ein mehrbändiges Werk oder eine Zeitschrift importiert wurde. Darüber kann gesteuert werden, ob das Feld zur Gesamtaufnahme oder zum Band gehören soll.

Falls zusätzlich zum Inhalt noch eine weitere Spalte mit Normdatenidentifiern oder URIs existiert, kann diese Spalte im Attribut normdataHeaderName hinzugefügt werden.

Import von Personen

Mittels des Elements person können automatisiert Personen angelegt werden.

Name
Typ
Beschreibung

ugh

Attribut

Name der Personenrolle

docType

Attribut

anchor oder child

normdataHeaderName

Attribut

Spaltentitel einer Spalte mit dazugehörigen Identifiern

firstnameFieldHeader

Element

Spaltentitel des Feldes für Vorname

lastnameFieldHeader

Element

Spaltentitel für Nachnamen

nameFieldHeader

Element

Spaltentitel für den kompletten Namen

splitName

Element

Definiert, ob der Wert in nameFieldHeader gesplittet werden soll

splitChar

Element

Element, an dem gesplittet wird. Default ist das erste Leerzeichen

firstNameIsFirstPart

Attribut

Definiert, in welcher Reihenfolge die Angaben gemacht wurden

Personen unterscheiden sich von normalen Metadaten dadurch, dass sie aus Vor- und Nachnamen bestehen. Diese Angabe kann in zwei verschiedenen Spalten stehen, dann werden die Elemente firstnameFieldHeader und lastnameFieldHeader genutzt. Stehen die Namen nur in einer Spalte, wird das Feld nameFieldHeader genutzt. In dem Fall wird geprüft, ob die Angaben nur den Nachnamen enthalten sollen, oder ob der Inhalt aufgesplittet werden muss. Dabei kann mit splitChar das Zeichen/die Sequenz gesetzt werden, an der die Aufsplittung erfolgen soll. Das Attribut firstNameIsFirstPart enthält die Information, ob der Name als Vorname Nachname oder Nachname Vorname zu importieren ist.

Import von Metadatengruppen

Mittels des Elements group können Metadatengruppen erstellt werden.

Name
Typ
Beschreibung

ugh

Attribut

Name der Metadatengruppe

docType

Attribut

anchor oder child

metadata

Element

Metadatum innerhalb der Gruppe

person

Element

Person innerhalb der Gruppe

Eine Metadatengruppe besteht aus mehreren Metadaten und Personen. Die Konfiguration der einzelnen Unterelemente erfolgt identisch zu den einzelnen Metadaten und Personen.

Barcode Scanner

Dieses Generic Plugin für Goobi workflow erlaubt das Scannen von Barcodes und konfigurierbare GoobiScripte ausführen zu lassen.

Übersicht

Name
Wert

Identifier

intranda_generic_barcodeScanner

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

03.04.2025 15:11:37

Einführung

Dieses Plugin erlaubt die Ausführung beliebiger, konfigurierbarer GoobiScripte durch das Scannen von parametrisierten Barcodes.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

/opt/digiverso/goobi/plugins/generic/plugin-generic-barcode-scanner-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin-generic-barcode-scanner-gui.jar
/opt/digiverso/goobi/config/plugin_intranda_generic_barcodeScanner.xml

Nach der Installation des Plugins kann dieses konfigurierbar an verschiedenen Stellen der Nuzteroberfläche eingebunden werden (beispielsweise als Barcode-Button in der Menüleiste).

Überblick und Funktionsweise

Beim Betreten des Plugins erscheint ein Dialogfenster, in dem Barcodes sowohl gescannt als auch generiert werden können.

Scan-Ansicht

In der Scanansicht des Plugins kann dann im Feld Barcode ein Barcode von Hand eingetragen oder über einen Barcodescanner gescannt werden.

Wenn der Barcode einem konfigurierten Barcodeformat entspricht, wird das entsprechende GoobiScript aktiv geschaltet.

Wenn das Plugin erneut betreten wird und dann ein Vorgangstitel gescannt wird, wird das zuvor aktivierte GoobiScript auf diesen Vorgang angewandt.

Anstelle von Vorgängen können auch Batches gescannt werden. In diesem Fall wird das GoobiScript für alle Vorgänge des Batches ausgeführt.

Konfigurationsansicht

In der Konfigurationsansicht des Plugins können für konfigurierte Barcodeformate Barcodes erzeugt werden. Wählen Sie hierzu ein Barcodeformat aus der Drop-Down Liste aus. Danach können für alle Parameter des Barcodeformats Werte eingetragen werden. Anschließend können Sie den so konfigurierten Barcode generieren lassen, um ihn beispielsweise via Drag-and-Drop in beliebigen anderen Programmen nachnutzen oder ausdrucken zu können.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_generic_barcodeScanner.xml wie hier aufgezeigt:

<config>
    <docking>MENU_BAR</docking>
    <barcode description="Setze Vorgangseigenschaft '{{1}}' auf '{{2}}'" pattern="ps_(.*)_(\d+)" sample="ps_Standort_54">
        ---
        action: propertySet
        name: {{1}}
        value: {{2}}
	</barcode>
</config>

Allgemeine Parameter

Der Block <config> enthält Parameter, die für alle generischen Plugins verwendet werden können:

Parameter
Erläuterung

docking

Mit diesem Element wird gesteuert, wo das Plugin eingebunden werden soll. Mit MENU_BAR kann das Plugin beispielsweise in der Hauptleiste eingeblendet werden. Das Element kann wiederholt werden, um das Plugin an mehreren Stellen einzubinden. Derzeit sind hierfür die Werte FOOTER und MENU_BAR wählbar, um das Plugin entweder in der Menüleiste oder in der Footerleiste anzuzeigen.

Weitere Parameter

Neben den allgemeinen Parametern stehen die folgenden Parameter für die weitergehende Konfiguration zur Verfügung:

Parameter
Erläuterung

barcode

Das barcode Element kann beliebig häufig wiederholt werden, um Barcodeformate zu spezifizieren. Ein Barcodeformat hat die Attribute description, pattern und sample. Die description ist eine textuelle Beschreibung des Barcodeformats. Falls das Barcodeformat Parameter enthalten kann, können diese mit {{n}} in die Beschreibung eingebunden werden. Hierbei ist n durch die Nummer des Parameters zu ersetzen, beginnend bei 1. Das pattern ist ein regulärer Ausdruck, der den gesamten Barcode beschreibt. Im regulären Ausdruck können mit Klammern Gruppen definiert werden. Das kann verwendet werden, um Teile des Barcodes als Parameter zu definieren. Im Falle der Beispielkonfiguration ist (\d+) eine Gruppe, die eine Zahl mit mindestens einer Ziffer beschreibt. Diese Gruppe ist dann als {{1}} (der erste Parameter) verwendbar. Das sample ist ein möglicher Beispielbarcode. Dieser wird bei der Barcodegenerierung verwendet, um mögliche Beispielbarcodes anzeigen zu können. Dieser Beispielbarcode muss zum regulären Ausdruck passen. Der Inhalt des barcode Elements ist ein beliebiges GoobiScript. Es können mit --- auch mehrere GoobiScripte hintereinander eingetragen werden. Mit {{n}} können die Parameter des Barcodes im GoobiScript verwendet werden.

Weil die Konfiguration etwas komplex ist, erklären wir sie am Beispiel des zweiten Barcodeformats in der Konfiguration:

Der Barcode hat die Beschreibung Setze Vorgangseigenschaft '{{1}}' auf '{{2}}'. Der reguläre Ausdruck ist ps_(.*)_(\d+) und ein Beispielbarcode könnte ps_Standort_54 sein. Der reguläre Ausdruck passt zu allen Eingaben die mit ps_ beginnen, danach kann irgendetwas beliebiges folgen, dann wieder ein Unterstrich _ gefolgt von einer Zahl mit mindestens einer Ziffer. Wird ein solcher Barcode gescannt, beispielsweise ps_Standort_54, wird folgendes GoobiScript aktiviert:

action: propertySet
name: Standort
value: 54

Die beiden Platzhalten {{1}} und {{2}} wurden hier bereits durch die Werte Standort und 54 des gescannten Barcodes ersetzt.

Wenn jetzt ein Vorgangstitel gescannt wird, wird dieses GoobiScript für den Vorgang ausgeführt. Das hat dann zur Folge, dass die Vorgangseigenschaft Standort auf den Wert 54 gesetzt wird.

Import von Zettelkatalogen aus KatZoom

Import-Plugin von Zettelkatalogen aus von Ordnerstrukturen des Systems KatZoom

Übersicht

Name
Wert

Identifier

intranda_import_katzoom

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

13.07.2024 14:38:25

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Plugins für die Datenübernahme von Zettelkatalogen aus dem System KatZoom nach Goobi workflow.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

/opt/digiverso/goobi/plugins/import/plugin-import-katzoom.jar
/opt/digiverso/goobi/config/plugin_intranda_import_katzoom.xml

Daneben muss das Plugin für das Archivmanagement installiert und konfiguriert sein. Eine Anleitung hierfür ist unter der folgenden Adresse zu finden: https://docs.goobi.io/goobi-workflow-plugins-de/administration/intranda_administration_archive_management

Überblick und Funktionsweise

Bei diesem Plugin handelt es sich um ein sogenanntes Import-Plugin. Öffnet man den Bereich für den Massenimport, kann anschließend das Plugin im Reiter Import aus Verzeichnis ausgewählt werden.

Das Plugin erwarten für dessen Ausführung innerhalb des konfigurierten Import-Ordners die folgende Struktur:

ank bis 45 Nominal/
	ank.ind
	ank.lli
	m001/
		z001/
			h001/
				c0000001.pdf
				c0000001.png
				c0000001.tif
				c0000001.txt
				c0000002.pdf
				c0000002.png
				c0000002.tif
				c0000002.txt
				o0000001.png
				[...]
				o0000001.png
			h002/
				[...]
ask bis 45 Schlagwort/
	ask.ind
	ask.lli
	m001/	
		[...]
hhn HHStA Nominal/
[...]

Der Nutzer kann nun im unteren Bereich des Plugins den zu importierenden Hauptordner auswählen, um den entsprechenden Zettelkatalog zu importieren. Hierbei ist zu beachten, dass immer ein kompletter Zettelkatalog auf einmal importiert wird. Teilimporte sind nicht vorgesehen.

Innerhalb des ausgewählten Ordners wird eine *.ind Datei und optional eine *.lli Datei erwartet. Die ind-Datei enthält für jeden Buchstaben die Nummer des ersten Datensatzes. Die lli-Datei hingegen enthält die Nummer des ersten Datensatzes zu einer Lade. Da die Laden nicht bei allen Zettelkatalogen existieren, ist diese Datei optional. Des weiteren wird eine Ordnerstruktur mit bis zu 3 Unterordnern erwartet, in denen die einzelnen Dateien liegen. Die Dateien beginnen immer mit einem Buchstaben gefolgt von einer fortlaufenden Nummer und der Dateiendung. Pro Objekt können verschiedenen Derivate existieren, die dann bis auf die Dateiendung gleich heißen. Eine Ausnahme ist ein heruntergerechnetes Vorschaubild, das mit einem anderen Buchstaben startet.

Alle Dateinamen werden gesammelt und anhand der Nummer aufsteigend sortiert. Es kann pro Zettelkatalog festgelegt werden, ob nur die Vorderseite (z.B. hhn HHStA Nominal) oder Vorder- und Rückseite gescannt wurden (z.B. ank bis 45 Nominal). Im ersten Fall wird aus jeder Nummer ein Datensatz erzeugt, im zweiten Fall aus jeder ungeraden Nummer. Die folgende, gerade Zahl ist dann die Rückseite des Datensatzes.

Für jeden Datensatz wird der dazugehörige Buchstabe, sofern vorhanden die Lade sowie die Positionen innerhalb des Katalogs, des Buchstaben und der Lade ermittelt. Diese Informationen werden mit der originalen Ordnerstruktur als Metadaten gespeichert.

Außerdem wird für jeden Zettelkatalog ein Bestand im Archivmanagement erzeugt. Dabei entspricht der Hauptknoten dem Katalog, anschließend folgen die Buchstaben. Innerhalb der Buchstaben gibt es optional die einzelnen Laden und darunter folgen die einzelnen Datensätze.

Die Bestände sind nach den einzelnen Katalogen benannt.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_import_katzoom.xml wie hier aufgezeigt:

<config_plugin>
    <config>

        <!-- which workflow template shall be used -->
        <template>*</template>
        <!-- define if import shall use GoobiScript to run in the background -->
        <runAsGoobiScript>false</runAsGoobiScript>
        
        <eadDatabaseName>eadStore</eadDatabaseName>
        <generateEadFile>true</generateEadFile>
        
        <!-- root folder, contains all index folder -->
        <importRootFolder>/opt/digiverso/import/</importRootFolder>

        <!-- list all indexes where backside was scanned -->
        <backsideScan>ask bis 45 Schlagwort</backsideScan>
        <backsideScan>ssk ÖSTA Schlagwort</backsideScan>
        <backsideScan>swk BKA Schlagwort</backsideScan>
        <backsideScan>ank bis 45 Nominal</backsideScan>
        <backsideScan>nka BKA Nominal</backsideScan>
        <!-- collection name -->
        <collection>Zettelkatalog</collection>
        <!-- docstruct type -->
        <doctype>Note</doctype>

        <!-- metadata -->
        <!-- contains the folder structure -->
        <folderStructure>FolderStructure</folderStructure>
        <!-- contains the total position -->
        <position>TotalPosition</position>
        <!-- assigned letter -->
        <letter>Letter</letter>
        <!-- position within the letter -->
        <letterPosition>LetterPosition</letterPosition>
        <!-- assigned tray -->
        <tray>Tray</tray>
        <!-- position within tray -->
        <trayPosition>TrayPosition</trayPosition>
    </config>
</config_plugin>

Zuerst wird innhalb von <template> definiert, für welche Produktionsvorlagen der Import gelten soll.

Anschließend erfolgt die Konfiguration des Archivbestandes innerhalb des Archivmanagement-Plugins sowie die Angabe des Import-Ordners, in dem die Ordner für die einzelnen Zettelkataloge erwartet werden. Das Element <backsideScan> enthält die Namen der Zettelkataloge, zu denen auch die Rückseite digitalisiert wurde. Fehlt ein Katalog in dieser Liste, geht der Import davon aus, dass nur die Vorderseite existiert.

Im Element <collection> kann der Name der Sammlung festgelegt werden. Diese Information wird in jeden Datensatz geschrieben. Das Element <doctype> enthält den zu erzeugenden Strukturtyp und die weiteren Angaben die Bezeichnungen der einzelnen Metadaten.

Import von Sisis SunRise Dateien

Dies ist die technische Dokumentation für das Plugin zum Import von Sisis SunRise-Dateien als Vorgänge in Goobi workflow.

Übersicht

Name
Wert

Identifier

intranda_import_sisis_sunrise_files

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 12:03:00

Einführung

Diese Dokumentation beschreibt die Installation, Konfiguration und Verwendung des Plugins zum Importieren von Sisis SunRise-Dateien.

Installation

Das Plugin muss in folgendem Ordner installiert werden:

/opt/digiverso/goobi/plugins/import/plugin_intranda_import_sisis_sunrise_file-base.jar

Es gibt auch eine Konfigurationsdatei, die sich an folgendem Ort befinden muss:

/opt/digiverso/goobi/config/plugin_intranda_import_sisis_sunrise_file.xml

Zusätzlich gibt es eine tags-Datei, deren Speicherort in der Konfigurationsdatei angegeben wird:

<tags>/path/to/tags.txt</tags>

Überblick und Funktionsweise

Um den Import zu nutzen, muss in den Produktionsvorlagen der Bereich "Massenimport" geöffnet werden und im Reiter "Datei-Upload-Import" das Plugin "intranda_import_sisis_sunrise_file" ausgewählt werden. Anschließend kann eine Sisis SunRise-Datei hochgeladen und importiert werden.

Der Import findet in mehreren Schritten statt. Zunächst wird die gesamte Datei eingelesen, und die Maps child-parent und parent-children werden erstellt und (als JSON-Dateien) im Goobi temp Ordner für den aktuellen Benutzer gespeichert. Diese Maps werden im nächsten Schritt zur Erstellung von Ankerdateien verwendet.

Die Sisis SunRise-Datei wird dann in einzelne Datensätze zerlegt. Für jeden Datensatz wird aus dem Katalog-Identifier (und einem eventuell in der Konfigurationsdatei angegebenen Präfix) der Prozesstitel generiert und geprüft, ob der Prozess bereits in Goobi existiert. Ist dies nicht der Fall, wird der Prozess angelegt und die konfigurierten Metadaten für Anchor und Volume in einem Ordner in dem in der Konfiguration angegebenen Ausgabepfad zwischengespeichert. Eventuelle Bilder werden in einen Unterordner images kopiert.

Im nächsten Schritt werden alle diese Ordner, die die MetsMods-Dateien und die Bilder enthalten, als Vorgänge in Goobi workflow importiert und in die entsprechenden Ordner in Goobi verschoben.

Konfiguration

Die Konfiguration erfolgt über die Konfigurationsdatei plugin_intranda_import_sisis_sunrise_file.xml und kann im laufenden Betrieb angepasst werden.

<config_plugin>
    <config>
        <!-- which workflow template shall be used -->
        <template>*</template>

        <!-- define if import shall use GoobiScript to run in the background -->
        <runAsGoobiScript>true</runAsGoobiScript>

        <!-- Ruleset for the MM files: -->
        <rulesetPath>src/test/resources/ruleset.xml</rulesetPath>

        <!-- Path to images: -->
        <imagePathFile>/opt/digiverso/import/images</imagePathFile>

        <!-- Ruleset for the MM files -->
        <tags>/opt/digiverso/import/tags.txt</tags>

        <!-- Use SGML files? -->
        <withSGML>false</withSGML>

        <!-- Path to SGML files, if withSGML -->
        <sgmlPath></sgmlPath>

        <!-- default publication type if it cannot be detected. If missing or empty, no record will be created -->
        <defaultPublicationType>Monograph</defaultPublicationType>

        <!-- Collection name -->
        <collection>Disserationen</collection>

        <!-- Prefix to add to every ID number -->        
        <idPrefix>mpilhlt_sisis_</idPrefix>

        <!-- Remove the image files from their original folders -->   
        <moveFiles>false</moveFiles>

       <!-- List of IDs to import. If empty, import all files -->
       <listIDs></listIDs>

    </config>
</config_plugin>

Die Konfiguration erlaubt unterschiedliche Konfigurationen für verschiedene Produktionsvorlagen. Dazu muss im Feld Template nur der Name des gewünschten Vorlage eingetragen werden. Der Eintrag mit dem Wert * wird für alle Vorlagen verwendet, für die keine eigene Konfiguration existiert.

Konfigurationselement
Verwendung

rulesetPath

Dies ist der Pfad zum Regelsatz für die MetsMods-Dateien.

imagePathFile

Dieser Parameter definiert den Pfad zu den Bilddateien, die sich entweder im Ordner selbst oder in Unterordnern mit dem Namen der Katalogkennung befinden.

tags

Dieser Parameter definiert die Übersetzungsdatei, die die Codes in Metadaten übersetzt.

withSGML

Wenn dieser Parameter auf true gesetzt ist, dann werden SGML-Dateien verwendet. Beachten Sie, dass dies derzeit nicht verwendet wird, sondern für eine spätere Version vorgesehen ist.

sgmlPath

Wenn SGML-Dateien verwendet werden, ist dies der Ordner, in dem sie sich befinden.

defaultPublicationType

Mit diesem Parameter wird der Typ des Dokuments definiert, wenn es keine Kinder oder Eltern hat. Ein Dokument mit Kindern wird als MultiVolumeWork importiert, die Kinder werden als Volumes importiert.

collection

Dies gibt die Metadaten singleDigCollection für die MetsMods-Dateien an, den Namen der Sammlung, zu der die Werke gehören.

listIDs

Hier definieren Sie den Pfad zu einer Textdatei, die eine Liste von Katalogkennungen enthält. Wenn dieses Feld nicht leer ist, dann werden nur Datensätze mit diesen Katalogkennungen aus der Sisis SunRise-Datei importiert.

Tags

Eine Tag-Datei kann etwa so aussehen:

0000 CatalogIDDigital
0014 shelfmarksource
0015 DocLanguage
0024 CurrentNoSorting
0025 CurrentNoSorting
0089 CurrentNo
0100 Author
0101 OtherPerson
0200 Corporation
0201 Corporation
0304 OtherTitle
0310 TitleDocMain
0331 TitleDocMain
0335 TitleDocSub1
0341 OtherTitle
0359 StatementOfResponsibility
0361 Note
0403 EditionStatement
0410 PlaceOfPublication
0412 PublisherName
0413 Printer
0425 PublicationYear
0432 Stock
0433 physicalDescriptionExtent
0440 PrintingLocation
0451 TitleDocMainSeries
0501 Note
0519 DissertationNote
0540 ISBN
0590 Resource
0655 URLbib
0902 SubjectTopic
0907 SubjectTopic
0912 SubjectTopic
0917 SubjectTopic
0922 SubjectTopic
0927 SubjectTopic
0932 SubjectTopic
0937 SubjectTopic
1371 OtherTitle

Jede Zeile enthält einen Code, gefolgt von dem Namen der Metadaten, in die er übersetzt werden soll. Jeder Metadatentyp in der Liste muss in dem Regelsatz definiert sein, der für das Projekt verwendet wird, in das die Datei importiert werden soll, und die CatalogIDDigital muss definiert sein, da sie zur Erstellung der Prozess-ID verwendet wird.

Archiv-Daten-Import

Dies ist eine technische Dokumentation für das Import Plugin von Archiv-Daten aus einer hierarchisch organisierten Exceldatei.

Übersicht

Name
Wert

Identifier

intranda_import_crown

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 12:03:18

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Importplugins für Archiv-Daten aus einer hierarchisch organisierten Exceldatei.

Mithilfe dieses Plugins können Daten aus einer Exceldatei importiert werden. Dabei werden die einzelnen Zeilen zu Goobi-Vorgängen konvertiert und es können Bilder automatisch mit importiert werden. Darüber hinaus wird ebenfalls eine hierarchische EAD-Tektonik erstellt.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

/opt/digiverso/goobi/plugins/import/plugin_intranda_import_crown-base.jar
/opt/digiverso/goobi/config/plugin_intranda_import_crown.xml

Überblick und Funktionsweise

Um den Import zu nutzen, muss in den Produktionsvorlagen der Massenimportbereich geöffnet werden und im Reiter Dateiupload-Import das Plugin intranda_import_crown ausgewählt werden. Anschließend kann eine Excel-Datei hochgeladen und importiert werden.

Die zu importierende Exceldatei muss beispielhaft eine folgende Struktur beinhalten:

Shelfmark

Comment

CR_1

Reichskrone

CR_1

comment

CR_1_A-H

Kronreif

CR_1_A-H

another comment

CR_1_A

Platte A, Stirnplatte

CR_1_A_GrPl

Grundplatte

CR_1_A_GrPl_1

Riss in Grundplatte (?)

CR_1_A_GrPl_2

Riss in Grundplatte und Grundplattenperldrahtumsäumung

CR_1_A_GrPl_3

Riss in Grundplatte

CR_1_A_GrPl_4

Riss in Grundplatte und Grundplattenperldrahtumsäumung

CR_1_A_GrPl_5

Deformierung von Grundplatte

CR_1_A_GrPl_6

Steg durch Öffnung in Grundplatte hinter Fa_4

CR_1_A_GrPl_7

4 Löcher in Grundplatte

CR_1_A_GrPl_8

Löcher in Grundplatte

CR_1_A_GrPl_9

4 Löcher in Grundplatte

CR_1_A_GrPl_10

angelöteter Span auf Grundplatte

CR_1_A_SchS

Scharnierstift

CR_1_A_SchR

Scharnierrohre

CR_1_A_SchR_1

Scharnierrohr

CR_1_A_SchR_2

Scharnierrohr

CR_1_A_SchR_3

Scharnierrohr

CR_1_A_GrUm

Grundplattenperldrahtumsäumung

CR_1_A_GrUm_1

Grundplattenperldrahtumsäumung

CR_1_A_GrUm_2

Grundplattenperldrahtumsäumung

CR_1_A_GrFi

Grundplattenfiliigrandekor

CR_1_A_RoeG

Röhrchen mit Granalien

CR_1_A_RoeG_1

Röhrchen mit Kugelpyramide

CR_1_A_RoeG_2

Röhrchen mit Kugelpyramide

Diese Excel-Datei wird während des Imports zeilenweise eingelesen und analysiert. Dabei wird zuerst geprüft, wie tief die aktuelle Zeile eingerückt wurde. Ist keine Einrückung vorhanden, liegt das root-Element der Tektonik vor. Ansonsten handelt es sich um Unterelemente. Das übergeordnete Element einer jeden Zeile ist dabei jeweils das letzte Element mit einer geringeren Einrückung.

Als nächstes wird der Inhalt der Zellen gelesen. Dabei werden sowohl die hierarchisch eingerückten Zellen als auch eventuell vorhandene fest definierte Spalten beachtet.

Welcher Inhalt zu welchem EAD- oder Metadatenfeld importiert wird, wird in der dazugehörigen Konfigurationsdatei festgelegt.

Wenn die erste Information innerhalb der Excel-Datei fett formatiert ist, wird für diese Zeile auch ein Vorgang erstellt und nach zugehörigen Bildern gesucht. Diese Bilder werden innerhalb eines konfigurierten Ordners in Unterordnern erwartet, die nach der Inventarnummer benannt sind. Diese können entweder flach in einer Ordnerliste organisiert sein oder der gleichen hierarchischen Struktur folgen wie die Tektonik.

Wird ein Ordner gefunden, werden alle darin enthaltenen Dateien aufgelistet und nach folgenden Regeln geprüft:

  1. ignoriere alle Daten, die kein tif, jpg oder ´wmv` sind

  2. ignoriere alle Dateien, die das Wort komprimiert´` enthalten

  3. wenn eine Datei ohne den suffix _bearbeitet gefunden wurde, prüfe, ob es eine Datei mit dem gleichen Namen und dem suffix _bearbeitet gibt. Falls ja, ignoriere die aktuelle Datei un nutze die Version mit _bearbeitet

  4. wenn eine jpg-Datei gefunden wurde, prüfe, ob es ein tif mit dem gleichen Namen gibt, falls ja, ignoriere die jpg-Datei und nutze das tif

Konfiguration

Die Konfiguration erfolgt in der Datei plugin_intranda_import_crown.xml:

<config_plugin>
	<config>
		<!-- which workflow template shall be used -->
		<template>*</template>

		<!-- define if import shall use GoobiScript to run in the background -->
		<runAsGoobiScript>false</runAsGoobiScript>
		
		<!-- first data row in excel file -->
		<startRow>7</startRow>

		<!-- basex database name and file name -->
        <basex>
            <database>EadStore</database>
            <filename>ead.xml</filename>
        </basex>

              <!-- metadata -->
        <metadata>
            <!-- document type for the process, can be a fixed value or a column header name -->
            <doctype>File</doctype>

            <!-- column header for the node type, leave it empty when a fixed type should be used (file for nodes with processes, folder for all other)  -->
            <nodetype></nodetype>
            
            <!-- process title metatada -->
            <!-- can be generated from other fields like "CatalogIDDigital + '_' + ContentDescription" , or use 'first' and 'second' to get the hierarchical information-->
            <title>first</title>

            <!--    
                - @eadField: name of the field in ead record
                - @metadataField: name of the metadata field in mets file
                - @identifier: one field must be marked as the identifier field
                - @level: metadata level, allowed values are 1-7:
                    * 1: metadata for Identity Statement Area 
                    * 2: Context Area 
                    * 3: Content and Structure Area
                    * 4: Condition of Access and Use Area
                    * 5: Allied Materials Area
                    * 6: Note Area
                    * 7: Description Control Area 
                    -->
            <firstField eadField="recordid" metadataField="CatalogIDDigital" level="1" identifier="true" />

            <!-- if enabled is set to false, the field is not searched in the hierarchical part. In this case, a
            separate configuration for the fixed area can exist -->
            <secondField enabled="true" metadataField="TitleDocMain" eadField="unittitle" level="1"/>

            <!-- fixed metadata columns-->
            <additionalField column="Shelfmark" eadField="Shelfmark" metadataField="shelfmarksource" level="1"/>
            <additionalField column="Comment" eadField="oddnote" metadataField="Odd" level="6"/>

        <!-- image folder name. Sub folder are organized by the identifier metadata -->
        <images>/opt/digiverso/import/crown/</images>


	</config>
</config_plugin>

Im Feld <template> wird definiert, für welche Produktionsvorlage die vorliegende Konfiguration angewendet werden soll. Da das <config>-Element wiederholbar ist, sind unterschiedliche Konfigurationen für verschiedene Produktionsvorlagen möglich. So kann es zum Beispiel für die Reichskrone eine andere Konfiguration geben als für den Reichsapfel.

Das Feld <runAsGoobiScript> steuert, ob der Import direkt in der Nutzersession oder im Hintergrund als GoobiScript ausgeführt wird. Bei größeren Exceldateien empfielt sich die Nutzung von GoobiScript.

<startRow> legt fest, welche Zeile die erste Datenzeile der Exceldatei ist. Damit können oberhalb weitere Informationen wie Header, Beschreibungen oder Hilfetexte angegeben werden, die dann vom Import ignoriert werden.

Der Bereich <basex> legt fest, wo die EAD-Tektonik gespeichert wird. Das Unterelement <database> enthält den Namen der BaseX-Datenbank, diese muss bereits existieren. In <filename> wird der Name der EAD-Datei festgelegt. Wenn dieser Name bereits verwendet wird, werden vorhandene Daten überschrieben.

Der root-Ordner der Bilder wird im <images> Element festgelegt. <metadata> enthält die zu verwendenden Metadaten. Mittels <doctype> wird der Strukturtyp definiert und die Felder <title>, <identifier> und <description> enthalten die Namen der Metadaten für Titel, Inventarnummer und Beschreibungstext.

Das Mapping der Metadaten passiert innerhalb des <metadata> Blocks. Hier wird in <doctype> festgelegt, welcher Publikationstyp für die einzelnen METS-Dateien verwendet werden soll.

Anschließend kann der zu verwendende Knotentyp definiert werden, falls dieser als Excelspalte vorhanden ist. Dies passiert in <nodetype>. Wenn dies nicht der Fall ist, kann das Feld leer gelassen werden. Dann wird für alle Knoten, für die ein Vorgang erstellt wurde, file genutzt, alle anderen Knoten bekommen den Typ folder.

In <title> wird die Generierung der Vorgangstitel konfiguiert. Hier gelten die selben Regeln wie in der normalen Anlegemaske. Zusätzlich stehen die beiden Schlüsselworte first und second zur Verfügung, um auf den Inhalt der beiden hierarchischen Felder zugreifen zu können.

Anschließend erfolgt die Konfiguration des Metadatenmappings zu EAD und METS/MODS. In <firstField> wird das erste hierarchische Feld definiert, <secondField> enthält optional den Inhalt des zweiten Feldes. Wenn nur mit einem Feld gearbeitet wird, kann es mittels enabled="false" deaktiviert werden. Zusätzliche, fest definierte Spalten lassen sich mittels <additionalField> konfigurieren. Hier muss im Attribut column angegeben werden, wie die Überschrift der Spalte lautet. Die anderen Konfigurationsoptionen sind identisch zu den anderen beiden. Das Feld metadataField definiert das zu verwendende Metadatum innerhalb der METS/MODS Datei. In eadField wird das entsprechende Feld im EAD-Knoten definiert und level gibt an, in welchem Bereich sich das Metadatum befindet.

Zusätzlich muss ein Feld als identifier="true" markiert werden. Der Inhalt dieses Feldes muss für jede Zeile innerhalb des Dokuments eindeutig sein und wird für die id der EAD-Knoten und das Metadatum NodeId verwendet. Es dient zur Verknüpfung zwischen EAD-Knoten und Goobi-Vorgang.

Datenimport mit CMI-Katalogabfrage für die Zentralbibliothek Zürich

Dieses Import Plugin für Goobi workflow erlaubt das Einspielen von Daten mit anschließender Katalogabfrage aus CMI, wie es für die Zentralbibliothek Zürich benötigt wird.

Übersicht

Einführung

Dieses Import-Plugin erlaubt das Einspielen von Daten mit CMI-Katalogabfrage. Dabei werden in der Nutzeroberfläche Daten eingefügt, die zuvor aus einer Excel-Datei kopiert wurden.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

Nach der Installation des Plugins, kann dieses aus der Übersicht der Produktionsvorlagen durch Nutzung des zweiten blauen Buttons neben der gewählten Produktionsvorlage betreten werden.

Wenn das Plugin betreten wurde, steht eine Nutzeroberfläche zur Verfügung, in der die einzuspielenden Daten ausgewählt bzw. hochgeladen werden können.

Überblick und Funktionsweise

Nach der Auswahl des richtigen Plugins können in der Nutzeroberfläche die Daten die entweder als CSV-Daten TAB-getrennt vorliegen oder die aus einer Excel-Datei kopiert werden in das Feld Datensätze eingefügt werden. Die Daten haben dabei den folgenden Aufbau:

Unmittelbar nach dem Einfügen der Daten und dem Klick auf Speichern startet das Anlegen der Vorgänge, ohne dass dabei ein Katalog abgefragt wird.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_import_zbz_cmi.xml wie hier aufgezeigt:

Die folgende Tabelle enthält eine Zusammenstellung der Parameter und ihrer Beschreibungen:

Import für Zeitschriftenartikel aus einem Endnote Export

Dies ist eine technische Dokumentation für das Plugin zum Import von Zeitungsartikeln inklusive Zusammenführung mit vorhandenen Prozessen.

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz des Plugins zum Import von Zeitschriftenartikeln aus einer aus Endnote exportierten Excel Datei.

Installation

Das Plugin muss in den folgenden Ordner installiert werden:

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

Überblick und Funktionsweise

Um den Import zu nutzen, muss in den Produktionsvorlagen der Massenimport Bereich geöffnet werden und im Reiter Dateiupload-Import das Plugin intranda_import_endnote auswählen. Anschließend kann eine Excel Datei hochladen und importiert werden.

Der Import erfolgt zeilenweise. Dabei wird für jede Zeile der Vorgangstitel aus den konfigurierten Feldern erzeugt und geprüft, ob der Jahrgang bereits in Goobi existiert. Ist dies nicht der Fall, wird der Vorgang neu angelegt und die konfigurierten Metadaten für anchor und volume importiert.

Nun wird geprüft, ob ein Heft erzeugt werden soll. Dies passiert auf Basis der Angabe der Spalte Issue. Wenn das Feld leer ist, wird der Artikel direkt an den Jahrgang angehängt, ansonsten wird nach dem richtigen Heft gesucht. Existiert es noch nicht, wird es ebenfalls erzeugt. Die Sortierung der Hefte basiert auf der Nummer der Spalte Issue.

Anschließend wird der Artikel erzeugt und dem Heft oder Jahrgang hinzugefügt. Sofern mehrere Artikel existieren, passiert die Sortierung anhand der Angabe der Startseite aus der Spalte Pages.

Konfiguration

Die Konfiguration erfolgt über die Konfigurationsdatei plugin_intranda_import_endnote.xml und kann im laufenden Betrieb angepasst werden.

Die Konfiguration erlaubt grundsätzlich verschiedene Konfigurationen für unterschiedliche Produktionsvorlagen. Dazu muss im Feld <template> nur der Name der gewünschten Vorlage eingetragen werden. Der Eintrag mit dem Wert * wird für alle Vorlagen verwendet, für die keine eigene Konfiguration existiert.

Das Element <processTitleGeneration> definiert die Regeln, mit denen der Vorgangstitel generiert werden soll. Dabei gelten die selben Konventionen wie in der goobi_projects.xml. Die beiden Werte ATS (Autor-Titel-Schlüssel) und TSL (Titelschlüssel) werden automatisch aus den vorliegenden Metadaten erzeugt, für die Nutzung weiterer Metadaten können die Spaltennamen aus der Exceldatei verwendet werden.

Die Elemente <anchorDocType>, <volumeDocType>, <issueDocType> und <articleDocType> definieren die Strukturelemente, die für die Elemente Zeitschrift, Jahrgang, Heft und Artikel verwendet werden sollen. Sie müssen im Regelsatz existieren.

Anschließend folgt das Mapping der Metadaten. Hierzu dient das Element <metadata>. Darin sind drei Atrribute erlaubt, in ugh wird der Metadatenname aus dem Regelsatz hinterlegt, in headerName die Überschrift der Spalte aus der Excel Datei und in docType wird definiert, ob das Metadatum in Zeitschriftentitel (anchor), Jahrgang (volume) oder Artikel (child) hinzugefügt werden soll.

Metadatenerweiterung zur Erstellung von Strukturelementen pro Bild

Metadatenerweiterung zur Erstellung von Strukturelementen pro Bild

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Plugins für Erstellung von Strukturelementen pro Bild innerhalb des Metadateneditors.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

Überblick und Funktionsweise

Bei diesem Plugin handelt es sich um ein sogenanntes Metadataeditor-Plugin. Es kann es im Metadateneditor im Menüpunkt für Plugins unter dem Namen Strukturelemente generieren ausgewählt werden.

Wenn es ausgewählt wird, öffnet sich ein Popup, in dem der gewünschte Typ der zu erzeugenden Strukturelemente gewählt werden kann. Hier stehen automatisch alle Strukturelemente zur Verfügung, die im Regelsatz für den vorliegenden Publikationstyp erlaubt wurden.

Außerdem lässt sich definieren, wie viele Bilder dem jeweiligen Strukturelement zugewiesen werden sollen, bevor das nächste Strukturelement erstellt wird und ob für das Strukturelement ein Titel erzeugt werden soll. Wenn diese Option aktiviert wurde, wird bei jedem Strukturelement der Dateiname ohne Endung als Titel eingetragen, sofern der Haupttitel im gewählten Typ erlaubt ist.

Die Generierung der Strukturelemente wird alle vorhandenen Elemente überschreiben.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_metadata_createStructureElements.xml wie hier aufgezeigt:

Die Konfiguration lässt sich auf Projekte einschränken oder auf bestimmte Publikationstypen. Dazu können in die Felder <project> und <doctype> genutzt werden. In <defaultType> kann definiert werden, welches Strukturelement in der Liste bereits vorausgewählt sein soll. Wenn das hier definierte Element nicht in der Liste des aktuellen Publikationstyps existiert oder leer ist, wird kein Element vorausgewählt. In <numberOfImagesPerElement> kann außerdem ein Wert für die Anzahl der Bilder pro Strukturelement vorbelegt werden. Hierbei muss es sich um eine positive, ganze Zahl handeln. Beide Werte lassen sich vom Nutzer in der Oberfläche ändern.

Datenimport mit ALMA-Katalogabfrage für die Zentralbibliothek Zürich

Dieses Import Plugin für Goobi workflow erlaubt das Einspielen von Daten mit anschließender Katalogabfrage aus ALMA, wie es für die Zentralbibliothek Zürich benötigt wird.

Übersicht

Einführung

Dieses Import-Plugin erlaubt das Einspielen von Daten mit ALMA-Katalogabfrage. Dabei werden in der Nutzeroberfläche Daten eingefügt, die zuvor aus einer Excel-Datei kopiert wurden.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

Nach der Installation des Plugins, kann dieses aus der Übersicht der Produktionsvorlagen durch Nutzung des zweiten blauen Buttons neben der gewählten Produktionsvorlage betreten werden.

Wenn das Plugin betreten wurde, steht eine Nutzeroberfläche zur Verfügung, in der die einzuspielenden Daten ausgewählt bzw. hochgeladen werden können.

Überblick und Funktionsweise

Nach der Auswahl des richtigen Plugins können in der Nutzeroberfläche die Daten die entweder als CSV-Daten TAB-getrennt vorliegen oder die aus einer Excel-Datei kopiert werden in das Feld Datensätze eingefügt werden. Die Daten haben dabei den folgenden Aufbau:

Unmittelbar nach dem Einfügen der Daten und dem Klick auf Speichern startet das Anlegen der Vorgänge, ohne dass dabei ein Katalog abgefragt wird.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_import_zbz_alma.xml wie hier aufgezeigt:

Die folgende Tabelle enthält eine Zusammenstellung der Parameter und ihrer Beschreibungen:

Publikationstyp ändern

Plugin für die Änderung des Publikationstyps für einen Goobi Vorgang

Übersicht

Einführung

Dieses Plugin ermöglicht die Änderung des Publikationstyps aus dem Metadateneditor von Goobi workflow.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

Nach der Installation steht die Funktionalität des Plugins innerhalb der REST-API von Goobi workflow zur Verfügung.

Überblick und Funktionsweise

Nachdem das Plugin installiert wurde, erscheint im Metadateneditor eine neue Funktion im Menü, die alle installierten und konfigurierten Plugins auflistet. Um das Plugin zur Änderung des Publikationstyps nutzen zu können, müssen zunächst im konfigurierten Projekt Templates erstellt werden. Diese Templates müssen mit den gewünschten Metadaten vorbelegt und die Vorgangseigenschaft für das Label muss vergeben werden. Sobald die Templates erstellt sind, stehen sie in einer Auswahlliste zur Verfügung.

Wählt der Benutzer das Plugin aus, öffnet sich ein Dialogfenster, in dem die vorhandenen Vorlagen für die verschiedenen Publikationstypen aufgelistet werden. Der Benutzer kann den gewünschten Publikationstyp auswählen und die Änderung speichern.

Beim Wechsel des Publikationstyps wird zuerst ein Backup der bestehenden Metadatendatei erstellt. Danach werden die Metadaten des ausgewählten Templates in den Vorgang kopiert. Wenn der alte Datensatz bereits Paginierung und Seitenzuweisungen enthält, werden diese Daten ebenfalls übernommen.

Abschließend wird für jedes konfigurierte Metadatum geprüft, ob es im alten Datensatz vorhanden war. Falls ja, wird dieses Metadatum, einschließlich Personen oder Gruppen, in den neuen Datensatz übertragen. Sollte im neuen Datensatz bereits ein entsprechendes Feld mit einer Default-Belegung vorhanden sein, wird dieses mit den originalen Daten überschrieben.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_metadata_changeType.xml wie hier aufgezeigt:

Die folgende Tabelle enthält eine Zusammenstellung der Parameter und ihrer Beschreibungen:

Datenimport ohne Katalogabfrage für die Zentralbibliothek Zürich

Dieses Import Plugin für Goobi workflow erlaubt das Einspielen von Daten ohne Katalogabfrage, wie es für die Zentralbibliothek Zürich speziell für Mehrbändige Werke benötigt wird.

Übersicht

Einführung

Dieses Import-Plugin erlaubt das Einspielen von Daten ohne vorherige Katalogabfrage. Dabei werden in der Nutzeroberfläche Daten eingefügt, die zuvor aus einer Excel-Datei kopiert wurden und wo deren Spalten mittels TAB voneinander getrennt sind.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

Nach der Installation des Plugins, kann dieses aus der Übersicht der Produktionsvorlagen durch Nutzung des zweiten blauen Buttons neben der gewählten Produktionsvorlage betreten werden.

Wenn das Plugin betreten wurde, steht eine Nutzeroberfläche zur Verfügung, in der die einzuspielenden Daten ausgewählt bzw. hochgeladen werden können.

Überblick und Funktionsweise

Nach der Auswahl des richtigen Plugins können in der Nutzeroberfläche die Daten die entweder als CSV-Daten TAB-getrennt vorliegen oder die aus einer Excel-Datei kopiert werden in das Feld Datensätze eingefügt werden. Die Daten haben dabei den folgenden Aufbau:

Unmittelbar nach dem Einfügen der Daten und dem Klick auf Speichern startet das Anlegen der Vorgänge, ohne dass dabei ein Katalog abgefragt wird.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_import_zbz_no_catalogue.xml wie hier aufgezeigt:

Die folgende Tabelle enthält eine Zusammenstellung der Parameter und ihrer Beschreibungen:

Auswahl des Plugins zur Durchführung des Imports

Barcode Plugin in der Menüleiste
Barcode scannen
Barcodeformat aktiviert
Vorgangsbarcode scannen
GoobiScript auf Vorgang anwenden
Barcode Generierung

Ausgewähltes Plugin im Bereich Ìmport aus Verzeichnis`

Außerdem muss die XML-Datenbank BaseX im Hintergrund laufen und korrekt eingerichtet sein. Die Installation wird detailliert beschrieben.

Auswahl des Plugins zur Durchführung des Imports
Name
Wert
Spalte
Metadatum
Erläuterung
Parameter
Erläuterung
Name
Wert
Name
Wert
Name
Wert
Spalte
Metadatum
Erläuterung
Parameter
Erläuterung
Name
Wert
Parameter
Erläuterung
Name
Wert
Spalte
Metadatum
Erläuterung
Parameter
Erläuterung
https://github.com/intranda/goobi-plugin-export-selected-images
https://github.com/intranda/goobi-plugin-export-zop
https://github.com/intranda/goobi-plugin-export-weimar-haab
https://github.com/intranda/goobi-plugin-import-bka-bda
https://github.com/intranda/goobi-plugin-import-eth-no-catalogue
https://github.com/intranda/goobi-plugin-export-stanford
https://github.com/intranda/goobi-plugin-export-vlm
hier
/opt/digiverso/goobi/plugins/import/plugin-import-zbz-cmi-base.jar
/opt/digiverso/goobi/config/plugin_intranda_import_zbz_cmi.xml

1

CMI-ID

Wenn diese einen Unterstrich enthält, wird ein Mehrbändiges Werk angelegt, andernfalls eine Monographie. Hierbei handelt es sich um eine Pflichtangabe.

<config_plugin>
	<config>

		<!-- which workflow template shall be used -->
		<template>*</template>

		<!-- define if import shall use GoobiScript to run in the background -->
		<runAsGoobiScript>true</runAsGoobiScript>

		<!-- name of the catalogue -->
		<catalogue>ZB-CMI</catalogue>
		<searchField>alma.mms_id</searchField>
		
	</config>
</config_plugin>

template

Hiermit kann festgelegt werden für welche Produktionsvorlabe der jeweilige config-Block gelten soll.

runAsGoobiScript

Mit diesem Parameter kann festgelegt werden, ob der Import als GoobiScript im Hintergrund stattfinden soll.

catalogue

Hier wird definiert, welcher Katalog für die Abfrage verwendet werden soll. Diese muss innerhalb der Konfigurationsdatei goobi_opac.xml definiert worden sein.

searchField

Mit diesem Parameter wird festgelegt, in welchem Feld des Katalogs die Suche nach dem Identifier erfolgen soll.

/opt/digiverso/goobi/plugins/import/plugin_intranda_import_endnote-base.jar
/opt/digiverso/goobi/config/plugin_intranda_import_endnote.xml
<config_plugin>
    <config>
        <template>*</template>
        <processTitleGeneration>TSL+'_'+ISSN+'_'+Volume</processTitleGeneration>
        <anchorDocType>Periodical</anchorDocType>
        <volumeDocType>PeriodicalVolume</volumeDocType>
        <issueDocType>PeriodicalIssue</issueDocType>
        <articleDocType>Article</articleDocType>

        <metadata ugh="CatalogIDDigital" headerName="Key" docType="child"/>
        <metadata ugh="PublicationYear" headerName="Publication Year" docType="volume"/>
        <metadata ugh="Author" headerName="Author" docType="child" />
        <metadata ugh="TitleDocMain" headerName="Title" docType="child"/>
        <metadata ugh="TitleDocMain" headerName="Publication Title" docType="anchor"/>
        <metadata ugh="ISSN" headerName="ISSN" docType="anchor"/>
        <metadata ugh="DOI" headerName="DOI" docType="child"/>
        <metadata ugh="URL" headerName="Url" docType="child"/>
        <metadata ugh="Abstract" headerName="Abstract Note" docType="child"/>
        <metadata ugh="Pages" headerName="Pages" docType="child"/>
        <metadata ugh="CurrentNo" headerName="Issue" docType="child"/>
        <metadata ugh="CurrentNo" headerName="Volume" docType="volume"/>
        <metadata ugh="DocLanguage" headerName="Language" docType="child"/>
        <metadata ugh="Note" headerName="Manual Tags" docType="volume"/>
    </config>
</config_plugin>
/opt/digiverso/goobi/plugins/metadata/plugin-metadataeditor-create-structure-elements-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin-metadataeditor-create-structure-elements-gui.jar
/opt/digiverso/goobi/config/plugin_intranda_metadata_createStructureElements.xml
<config_plugin>
    <config>
        <!-- To which project does the current section apply? 
        The field can be repeated to summarize different projects. 
        In addition, * can be used for any project -->
        <project>*</project>

        <!-- To which document type does the current section apply? 
        The field can be repeated to summarize different types. 
        In addition, * can be used for any type -->
        <doctype>*</doctype>

        <!-- default structure type. The value is preselected in the UI. Leave it blank if no preselection is needed -->
        <defaultType>Chapter</defaultType>

        <!-- define the default number of images, leave it blank if no default value is needed -->
        <numberOfImagesPerElement>2</numberOfImagesPerElement>
    </config>
</config_plugin>
/opt/digiverso/goobi/plugins/import/plugin-import-zbz-alma-base.jar
/opt/digiverso/goobi/config/plugin_intranda_import_zbz_alma.xml

1

MMS-ID

Wenn diese einen Unterstrich enthält, wird ein Mehrbändiges Werk angelegt, andernfalls eine Monographie. Hierbei handelt es sich um eine Pflichtangabe.

<config_plugin>
	<config>

		<!-- which workflow template shall be used -->
		<template>*</template>

		<!-- define if import shall use GoobiScript to run in the background -->
		<runAsGoobiScript>true</runAsGoobiScript>
		
		<!-- name of the catalogue -->
		<catalogue>ZB-ALMA</catalogue>
		<searchField>alma.mms_id</searchField>

	</config>
</config_plugin>

template

Hiermit kann festgelegt werden für welche Produktionsvorlabe der jeweilige config-Block gelten soll.

runAsGoobiScript

Mit diesem Parameter kann festgelegt werden, ob der Import als GoobiScript im Hintergrund stattfinden soll.

catalogue

Hier wird definiert, welcher Katalog für die Abfrage verwendet werden soll. Diese muss innerhalb der Konfigurationsdatei goobi_opac.xml definiert worden sein.

searchField

Mit diesem Parameter wird festgelegt, in welchem Feld des Katalogs die Suche nach dem Identifier erfolgen soll.

/opt/digiverso/goobi/mete/metadata/plugin_intranda_metadataeditor_changeType.jar
/opt/digiverso/goobi/plugins/GUI/plugin_intranda_metadataeditor_changeType-GUI.jar
/opt/digiverso/goobi/config/plugin_intranda_metadata_changeType.xml
<config_plugin>
    <!-- Eine Sektion enthält einen Konfigurationsblock. -->
    <section>
        <!-- Das Element project ist wiederholbar und definiert, innerhalb welcher
            Projekte diese section genutzt werden kann. -->
        <project>Project_A</project>
        <project>Project_B</project>
        <project>Archive_Project</project>
        
        <!-- property name, in dem das anzuzeigende Label gespeichert ist -->
        <titleProperty>Title</titleProperty>
        
        <!-- Das Element templateProject ist wiederholbar und definiert diejenigen
            Projekte in Goobi workflow, aus denen Template-Vorgänge geladen und genutzt
            werden sollen. Per Konvention ist festgelegt, dass der Ursprungsregelsatz
            und Templateregelsatz identisch sein müssen, damit ein Vorgang in dem
            Makro-Modal angezeigt wird. -->
        <templateProject>Template_1</templateProject>
        <templateProject>Template_2</templateProject>
        
        <!-- list of metadata to copy into the new template -->
        <metadata>CatalogIDDigital</metadata>
        <metadata>DisplayLayout</metadata>
    </section>
</config_plugin>

<section>

ist wiederholbar und erlaubt somit unterschiedliche Konfigurationen für verschiedene Projekte

<project>

legt fest, für welche Projekt(e) der aktuelle Bereich gilt; das Feld ist wiederholbar, um so eine gemeinsame Konfiguration für mehrere Projekte verwenden zu können

<titleProperty>

enthält den Namen der Vorgangseigenschaft, in dem das zu verwendende Label steht

<templateProject>

Name des Projekts, aus dem die Templates gelesen werden sollen. Es werden alle Vorgänge aus dem Projekt aufgelistet, die über ein Label verfügen.

<metadata>

Liste an Metadaten, die aus der originalen Datei in die neue Datei überführt werden sollen

/opt/digiverso/goobi/plugins/import/plugin-import-zbz-no-catalogue-base.jar
/opt/digiverso/goobi/config/plugin_intranda_import_zbz_no_catalogue.xml

1

MMS-ID

Wenn diese einen Unterstrich enthält, wird ein Mehrbändiges Werk angelegt, andernfalls eine Monographie. Hierbei handelt es sich um eine Pflichtangabe.

2

Signatur

Hierbei handelt es sich um eine Pflichtangabe.

3

Titel

Hierbei handelt es sich um eine optionale Angabe.

<config_plugin>
	<config>

		<!-- which workflow template shall be used -->
		<template>*</template>

		<!-- define if import shall use GoobiScript to run in the background -->
		<runAsGoobiScript>false</runAsGoobiScript>

	</config>
</config_plugin>

template

Hiermit kann festgelegt werden für welche Produktionsvorlabe der jeweilige config-Block gelten soll.

runAsGoobiScript

Mit diesem Parameter kann festgelegt werden, ob der Import als GoobiScript im Hintergrund stattfinden soll.

Produktionsvorlage mit zusätzlichem blauen Button für den Massenimport
Nutzeroberfläche des Import-Plugins
Auswahl des Plugins zur Durchführung des Imports
Öffnen des Plugins
Popup
Produktionsvorlage mit zusätzlichem blauen Button für den Massenimport
Nutzeroberfläche des Import-Plugins
Funktionalität des Plugins
Hier kann der Typ ausgewählt werden
Produktionsvorlage mit zusätzlichem blauen Button für den Massenimport
Nutzeroberfläche des Import-Plugins
https://github.com/intranda/goobi-plugin-import-excel
https://github.com/intranda/goobi-plugin-generic-barcode-scanner
https://github.com/intranda/goobi-plugin-import-katzoom
https://github.com/intranda/goobi-plugin-import-sisis-sunrise-file
https://github.com/intranda/goobi-plugin-import-crown

Identifier

intranda_import_zbz_cmi

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

23.08.2024 11:12:49

Identifier

intranda_import_endnote

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

15.08.2024 06:16:33

Identifier

intranda_metadata_createStructureElements

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

13.07.2024 14:38:34

Identifier

intranda_import_zbz_alma

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

23.08.2024 11:12:32

Identifier

intranda_metadata_changeType

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

04.09.2024 10:05:14

Identifier

intranda_import_zb_no_catalogue

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

23.08.2024 11:12:56

MAB-Dateien einlesen

Import Plugin für die Übersetzung von MAB2- und SGML-Daten in METS-MODS

Übersicht

Name
Wert

Identifier

intranda_import_mab

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.08.2024 10:43:21

Einführung

Das Programm untersucht die hinterlegte MAB2-Datei und übersetzt die Felder in Metadaten für eine METS-Datei. Falls vorhanden, wird auch eine SGML-Datei untersucht, um die Strukturdaten zu spezifizieren.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

/opt/digiverso/goobi/plugin/import/goobi-plugin-import-mab.jar
/opt/digiverso/goobi/config/goobi-plugin-import-mab.xml
/opt/digiverso/goobi/config/tags.txt

Die Datei goobi-plugin-import-mab.jar enthält die Programmlogik und ist eine ausführbares Datei.

Die Datei goobi-plugin-import-mab.xml ist die Konfigurationsdatei.

Überblick und Funktionsweise

Die Mappings mapMVW und mapChildren werden erzeugt. Dafür wird die jar-Datei gestartet, wobei der Pfad zur Konfigurationsdatei als erster Parameter und als weitere Parameter der/die Pfad(e) zu den MAB-Dateien übergeben werden, die bearbeitet werden sollen. Damit werden die Mapping-Dateien erzeugt und gespeichert.

  • Das Programm wird als JAR geöffnet, wobei der Pfad zur Konfigurationsdatei als einziger Parameter übergeben wird.

  • Aus der Konfigurationsdatei werden die Pfade zur MAB2-Datei usw. ausgelesen, und die MAB2-Datei wird durchgelesen..

  • Für jedes Dataset in der Datei wird ein METS-MODS-Dokument mit den passenden Metadaten erzeugt. Die Übersetzung der einzelnen Felder erfolgt mittels der Tags-Datei.

  • Wenn withSGML true ist, dann wird im Ordner sgmlPath nach SGML-Dateien gesucht, die die CatalogID als Namen haben. Das METS-MODS-Dokument erhält dann daraus die Struktur.

  • Für jede Seite im Dokument werden die passenden Bilder im Ordner imagePathFile gesucht, in den Unterordnern, die die CatalogID als Namen haben. Diese werden dann in den Image-Ordner kopiert, und Referenzen in der structMap erstellt.

  • BEMERKUNG: Aktuell werden die Bilder NICHT mit den korrekten Berechtigungen kopiert. Das bedeutet, dass vor dem Import in Goobi alle erzeugten Ordner und Dateien dem Benutzer tomcat8 mittels sudo chown -R tomcat8 * zugewiesen werden müssen!

  • Danach können die Vorgägne mit dem Goobi Plugin für den Folder Import importiert werden.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei goobi-plugin-import-mab.xml wie hier aufgezeigt:

<config_plugin>		
    <config>		
        <!-- which projects to use for (can be more than one, otherwise use *) -->		
        <project>Project</project>		
        		
        <!-- Ruleset for the MM files: -->		
        <rulesetPath>/opt/digiverso/goobi/rulesets/ruleset-mpi.xml</rulesetPath>		

        <!-- Path to images: -->		
        <imagePathFile>/opt/digiverso/import/dissertationen/</imagePathFile>		
                
        <!-- Folder where the files are to be copied -->		
        <outputPath>/opt/digiverso/import/diss-mm/</outputPath>		

        <!-- Mab file to read: -->		
        <mabFile>/opt/digiverso/import/dissertationen/data/diss.txt</mabFile>		
                
        <!-- Ruleset for the MM files: -->		
        <tags>/opt/digiverso/import/dissertationen/data/tags-full.txt</tags>		
                
        <!-- Use SGML files? -->		
        <withSGML>false</withSGML>		

        <!-- Path to SGML files, if withSGML: -->		
        <sgmlPath></sgmlPath>		

        <!-- default publication type if it cannot be detected. If missing or empty, no record will be created -->		
        <defaultPublicationType>Monograph</defaultPublicationType>		

        <!-- Collection name -->		
        <singleDigCollection>Dissertationen</singleDigCollection>   		

        <!-- Mapping for MultiVolumeWork to child Volumes: -->		
        <mapMVW>/opt/digiverso/import/dissertationen/data/map.txt</mapMVW>		
                
        <!-- Mapping for child Volumes to parent MultiVolumeWork: -->		
        <mapChildren>/opt/digiverso/import/dissertationen/data/reverseMap.txt</mapChildren>		

        <!-- For testing: stop the import after this many folders have been created. If 0, then import all.-->		
        <importFirst>10</importFirst>		

        <!-- List of IDs to import. If empty, import all files -->		
        <listIDs>/opt/digiverso/import/dissertationen/data/missing-image-ids.txt</listIDs>		

        <!-- All as monograph -->		
        <allMono>false</allMono>		
                
        <!-- For the import -->		
        <basedir>/opt/digiverso/import/diss-mm/</basedir>		
        <prefixInDestination>master_</prefixInDestination>		
        <suffixInDestination>_media</suffixInDestination>		

        <title>		
            <doctype doctypename="Monograph" processtitle="CatalogIDDigital" />		
            <doctype doctypename="Volume" processtitle="CatalogIDDigital" />		
            <doctype doctypename="MultiVolumeWork" processtitle="CatalogIDDigital" />		
        </title>		

        <moveFiles>true</moveFiles>		

    </config>		

</config_plugin>

Die folgende Tabelle enthält eine Zusammenstellung der Parameter und ihrer Beschreibungen:

Parameter
Erläuterung

project

Dieser Parameter dient zur Festlegung des Projekt, für das diese Konfiguration gelten soll.

rulesetPath

Dieser Parameter liefert den Pfad zur Ruleset-Datei für die METS-Dateien.

imagePathFile

Hier wird der Pfad zu den Image-Dateien angegeben, die im Unterordner mit dem Namen der CatalogId liegen.

outputPath

Dieser Parameter gibt an, wohin die fertigen METS-Ordner kopiert werden. Die Unterordner werden dabei nach der CatalogId benannt.

mabFile

Hier wird die MAB2-Datei spezifiziert, die gelesen werden soll.

tags

Dieser Parameter spezifiziert die Übersetzungsdatei, die MAB2-Codes in METS-Metadaten übersetzt.

withSGML

Wenn dieser Wert auf true gesetzt ist, wird im Ordner sgmlPath nach SGML-Dateien gesucht, deren Name der CatalogID entspricht. Diese Dateien werden genutzt, um die METS-Struktur zu erstellen.

defaultPublicationType

Dieses Element spezifiziert den METS-Typ der Dokumente für den Fall, dass diese keine Kinder oder Eltern haben. Ein Dokument mit Kindern wird als MultiVolumeWork importiert, während die Kinder als Volumes importiert werden.

singleDigCollection

Dieser Parameter spezifiziert die Metadaten für die singleDigCollection der METS-Dateien.

mapMVW

Das Element mapMVW gibt den Pfad zu einer JSON-Datei an, in der die MultiVolumeWork-IDs zusammen mit einer Liste der dazugehörigen Volume-IDs gespeichert sind.

mapChildren

Dieses Element spezifiziert den Pfad zu einer JSON-Datei, in der die MultiVolumeWork-IDs zusammen mit einer Liste der dazugehörigen Volume-IDs gespeichert sind.

importFirst

Dieser Parameter legt fest, wie viele Vorgänge zuerst angelegt werden sollen. Wenn der Wert 0 ist, werden alle Vorgänge erstellt.

listIDs

Dieser Parameter gibt den Pfad zu einer Textdatei an, in der eine Liste von IDs enthalten ist. Wenn die Datei existiert und nicht leer ist, werden nur Vorgänge für diese IDs erzeugt. Dies wird genutzt, um nachträglich geänderte oder verbesserte Vorgänge neu zu importieren.

allMono

Dieser Parameter ist auf "true" zu setzen, wenn alle zu importierenden Dokumente als Monograph gespeichert werden sollen, auch wenn sie Kinder enthalten, anstatt als Volume.

Ariadne Import

OPAC Plugin für die Datenübernahme aus Ariadne

Übersicht

Name
Wert

Identifier

Ariadne

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

14.08.2024 18:40:13

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Plugins. Mit Hilfe dieses Plugins können Daten aus dem Archivportal Mecklenburg-Vorpommern Ariadne abgefragt und in Goobi übernommen werden. Das Portal verfügt über eine OAI Schnittstelle, über die das Plugin die Daten in einem speziellen EAD-Goobi-Format bezieht.

Installation

Das Plugin besteht aus zwei Dateien:

plugin_intranda_opac_ariadne-base.jar
plugin_intranda_opac_ariadne.xml

Die Dateien müssen für den Nutzer tomcat lesbar an folgende Pfaden installiert werden:

/opt/digiverso/goobi/plugins/opac/plugin_intranda_opac_ariadne-base.jar
/opt/digiverso/goobi/config/plugin_intranda_opac_ariadne.xml

Überblick und Funktionsweise

In Goobi kann nun eine normale OPAC Abfrage ausgeführt werden. Dazu muss der Katalog Ariadne ausgewählt werden und der gewünschte Identifier eingetragen werden. Zu beachten ist, dass der Identifier einen Präfix obj- benötigt, also z.B. obj-5602376.

Konfiguration

In der Datei goobi_opac.xml muss die Schnittstelle zum gewünschten Katalogsystem bekannt gemacht werden. Dies geschieht durch einen Eintrag, der wie folgt aussieht:

<catalogue title="Ariadne">
    <config description="Ariadne EAD" address="https://ariadne.example.com" port="80" database="2.1" iktlist="IKTLIST-GBV.xml" ucnf="XPNOFF=1" opacType="Ariadne"/>
</catalogue>

Das Mapping der Metadaten findet in der Datei plugin_intranda_opac_ariadne.xml statt:

<config_plugin>

    <!-- url to the ariadne oai api -->
    <ariadneUrl>https://ariadne,example.com/?page_id=463&amp;verb=GetRecord&amp;metadataPrefix=goobi_ead&amp;identifier=ariadne-portal.uni-greifswald.de:</ariadneUrl>

    <!-- must match a title value in the doctype definition in goobi_opac.xml -->
    <doctype>file</doctype>

    <collection generate="true" prefix="prefix#other prefix#"/>

    <metadatalist>
        <!--
        ruleset: internal metadata name in prefs file
        xpath: xpath expression to evaluate
        element: element name to evaluate the xpath, possible values are c, did, parentC, parentDid, record
        doctype: logical or anchor
        xpathType: attribute or element (default)
        replace: regular expression to manipulate results
         -->

        <metadata ruleset="CatalogIDDigital" xpath="./@id" element="c" doctype="logical" xpathType="attribute" replace="\W"/>
        <metadata ruleset="TitleDocMain" xpath="./oai:unittitle" element="c" doctype="logical"/>
        <metadata ruleset="shelfmarksource" xpath="./oai:unitid[@type='Altsignatur' or not(@type)]" element="did" doctype="logical"/>
    </metadatalist>

</config_plugin>

Im Feld <ariadneUrl> wird die URL zur OAI-Schnittstelle konfiguriert.

Das Feld <doctype> enthält den Namen des Strukturelements. Der verwendete Name muss in der Datei goobi_opac.xml definiert sein. Wenn die Sammlung aus dem EAD-Dokument generiert werden soll, dann kann sie im Element <collection> konfiguriert werden. Dazu muss das Attribut generate auf true gesetzt werden. Innerhalb von prefix kann ein fester Präfix gesetzt werden, der dem Sammlungsnamen vorangesetzt wird. Alternativ kann die Sammlung auch wie ein normales Metadatum definiert werden.

Metadaten werden innerhalb der <metadatalist> definiert. Dort ist das wiederholbare <metadata> Element erlaubt. Dieses kann folgende Attribute besitzen:

Element
Beschreibung

ruleset

Name des Feldes im Regelsatz

xpath

XPath Ausdruck, mit dem der Wert im EAD Dokument gefunden werden kann

element

Name des Feldes, in dem der XPath Ausdruck angewendet wird. Erlaubt sind c, did, parentC, parentDid und record.

doctype

Definiert, wo der Wert eingetragen wird, mögliche Belegung ist logical oder anchor.

xpathType

Legt fest, ob der Wert in einem attribute oder element steht.

replace

Regulärer Ausdruck, um den gefundenen Wert zu manipulieren

EAD Datenübernahme

OPAC Plugin für die Datenübernahme von EAD Datensätzen am Beispiel des Universitätsarchives der HU Berlin

Übersicht

Name
Wert

Identifier

intranda_opac_ead

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

14.08.2024 18:41:40

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz einer XML-basierten Datenbank, um damit EAD Dateien zu verwalten und in Goobi zu integrieren.

Installation und Konfiguration

Vorbereitung des EAD-Speichers

Als technische Lösung für die Datenübernahme von EAD-Dateien wurde das Konzept eines EAD-Speichers gewählt. Dabei handelt es sich um eine XML-Datenbank, die wiederholt mit mehreren aktualisierten EAD-Dateien beliefert werden kann und anschließend ähnlich zu einem abfragbaren Katalog als Datenquelle dient, die sowohl von Goobi workflow als auch vom Goobi viewer abgefragt werden kann, um neben Detailinformationen eines Datensatzes ebenfalls Informationen über die Tektonik abfragen zu können.

Durch die Zwischenschaltung dieses EAD-Speichers ist sichergestellt, dass auch die EAD-Dateien jederzeit aktualisiert werden können und die einzelnen Datensätze daraus stets mit aktuellem Kontext angezeigt werden, auch wenn dieser sich seit der ersten Datenübernahme zwischenzeitlich geändert haben sollte.

Installation der XML-Datenbank BaseX

BaseX ist eine XML-Datenbank, in der die EAD Dateien verwaltet, analysiert und abgefragt werden können. Voraussetzung für die Installation von BaseX ist Java 1.8.

Zunächst muss der Download der Datenbank erfolgen:

Für die Installation von BaseX auf einem Linux System muss zunächst die zip Datei herunterladen und auf dem Server installiert werden. Dies könnte beispielsweise in diesem Pfad erfolgen:

/opt/digiverso/basex

Anschließend muss die Jetty-Konfiguration angepasst werden, so dass die Applikation nur auf localhost erreichbar ist. Dafür muss in der Konfigurationsdatei /opt/digiverso/basex/webapp/WEB-INF/jetty.xml sichergestellt werden, dass der host auf 127.0.0.1 steht:

  <Set name="host">127.0.0.1</Set>

Anschließend wird die Systemd Unit File an diesen Pfad installiert:

/etc/systemd/system/basexhttp.service

Diese hat folgenden Aufbau:

[Unit]
Description=BaseX HTTP server

[Service]
User=tomcat8
Group=tomcat8
ProtectSystem=full
ExecStart=/opt/digiverso/basex/bin/basexhttp
ExecStop=/opt/digiverso/basex/bin/basexhttp stop

[Install]
WantedBy=multi-user.target

Anschließend muss der Daemon neu geladen, die Unit-File aktiviert und die Datenbank neu gestartet werden:

systemctl daemon-reload
systemctl enable basexhttp.service
systemctl start basexhttp.service

Damit das Admin-Interface auch von extern erreichbar ist, kann dieses im Apache zum Beispiel mit dem folgenden Abschnitt konfiguriert werden:

    redirect 301 /basex http://bastel.fritz.box/basex/
    <Location /basex/>
            Require ip 188.40.71.142
            ProxyPass http://localhost:8984/ retry=0
            ProxyPassReverse http://localhost:8984/
    </Location>

Im Anschluß daran muss noch das Apache Modul proxy_http aktiviert und der Apache neu gestartet werden, damit die Anpassungen wirksam werden:

a2enmod proxy_http
systemctl restart apache2

Datenbank einrichten

Die XML Datenbank kann nach der Installation unter folgender URL erreicht werden:

Die Zugangsdaten lauten admin/admin. Nach dem ersten Anmelden sollte daher als erstes ein neues Passwort vergeben werden. Dazu muss der Menüeintrag Users geöffnet werden. Hier kann der Accountname angeklickt und das neue Passwort gesetzt werden.

Anschließend kann eine neue Datenbank für die EAD Dateien erzeugt werden. Dazu muss der Menüeintrag Databases ausgewählt werden. Mittels Create gelangt man in den Dialog dazu. Hier muss einTitel für die Datenbank vergeben werden. Alle anderen Einstellungen können so bleiben.

Dateien hinzufügen und löschen

Nachdem die Datenbank erstellt wurde, können nun EAD-XML-Dokumente hinzugefügt werden. Dazu kann unter Databases die erstellte Datenbank ausgewählt werden. Daraufhin öffnet sich ein Fenster, in dem die zur Datenbank gehörenden Dateien verwaltet werden können. Neue Dateien lassen sich über den Dialog Add auswählen und hochladen. Hier kann im Feld Input eine EAD-Datei ausgewählt werden. Mittels Add wird die Datei hinzugefügt und die Übersichtsseite geladen. Hier können auch Dateien entfernt werden. Dazu müssen sie mittels Checkbox markiert und dann über Delete gelöscht werden. Das Aktualisieren einer EAD-Datei ist nur über Löschen und erneutes Hinzufügen möglich.

Definition der Suchanfrage

Dazu muss im Verzeichnis /opt/digiverso/basex/webapp/ eine neue Datei eadRequest.xq erzeugt werden.

(: XQuery file to return an ead record :)
module namespace page = 'http://basex.org/examples/web-page';
declare default element namespace "urn:isbn:1-931666-22-9";

declare
  %rest:path("/search/{$identifier}")
  %rest:single
  %rest:GET
function page:getRecord($identifier) {
    let $ead := db:open('CHANGEME')/ead[//c[@level="file"][@id=$identifier]]
    let $record :=$ead//c[@level="file"][@id=$identifier]
    let $header := $ead/eadheader
    return
        <ead>
            {$header}
            {for $c in $record/ancestor-or-self::c
            return
                <c level="{data($c/@level)}" id="{data($c/@id)}">
                    {$c/did}
                    {$c/accessrestrict}
                    {$c/otherfindaid}
                    {$c/odd}
                    {$c/scopecontent}
                    {$c/index}
                </c>
            }
        </ead>
};

Dieses xquery-Modul wird ausgeführt, wenn Anfragen via GET an die Adresse /search/{$identifier} gestellt werden. Wenn ein anderer endpoint genutzt werden soll, kann dies im Bereich declare angepasst werden. Sobald eine Anfrage gestellt wird, wird die Funktion page:getRecord ausgeführt. In der ersten Zeile der Funktion muss der zu verwendende Datenbankname definiert werden. Für den Fall, dass die Informationen auf mehrere Datenbanken aufgeteilt wurden, müssen daher auch mehrere Dateien mit dieser Funktion verwendet werden. Dabei muss die Variable rest:path eindeutig definiert werden.

Änderungen an den Dateien oder den Datenbanken können jederzeit im laufenden Betrieb vorgenommen werden.

Goobi Anbindung

Nachdem die Datenbank eingerichtet wurde, kann sie in Goobi konfiguriert werden. Da sich die Metadaten deutlich von den bibliographischen Metadaten von Bibliotheken unterscheiden, sollte in Goobi ein eigenes Projekt und ein eigener Regelsatz genutzt werden. Zusätzlich muss das OPAC-Plugin goobi-plugin-opac-ead installiert werden.

Konfiguration der Datei goobi_opac.xml

Die Datei goobi_opac.xml muss um zwei weitere Einträge erweitert werden. Zum einen muss der zu verwendende Dokumententyp definiert werden. Dies passiert im Bereich <doctypes>:

<type isContainedWork="false" isMultiVolume="false" isPeriodical="false" rulesetType="SingleRecord" tifHeaderType="Record" title="Record">
    <label language="de">Akte</label>
    <label language="en">Record</label>
    <mapping>SingleRecord</mapping>
</type>

In diesem Beispiel wird der Typ Akte (SingleRecord im Regelsatz) verwendet.

Außerdem muss die Datenquelle definiert werden:

<catalogue title="EAD Import">
    <config address="http://localhost:8984/search/" database="hu-ead-example" description="EAD Import" iktlist="IKTLIST-GBV.xml"
            port="80" ucnf="UCNF=NFC&amp;XPNOFF=1" protocol="http://" opacType="ead" />
    <searchFields>
        <searchField  label="Identifier" value="8000" />
    </searchFields>
</catalogue>

Das Attribut title enthält den Namen, unter dem die Datenquelle in Goobi auswählbar ist. Das Element <config> enthält in address die URL zur zuvor definierten REST-Schnittstelle und in database den Namen der Datenbank.

Konfiguration des Plugins innerhalb von plugin_opac_ead.xml

Diese Datei ist im Ordner /opt/digiverso/goobi/config/ zu finden und enthält das Mapping der EAD-Elemente zu Goobi-Metadaten.

<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
    <namespaces>
        <namespace prefix="ead" uri="urn:isbn:1-931666-22-9" />
        <namespace prefix="oai" uri="http://www.openarchives.org/OAI/2.0/" />
    </namespaces>

    <documenttype isanchor="false">SingleRecord</documenttype>

<!--    
    <documenttype isanchor="true">VolumeRun</documenttype>
    <documenttype isanchor="false">Record</documenttype>
-->

    <mapping>
        <metadata name="TitleDocMain" xpath="//ead:c[@level='file']/ead:did/ead:unittitle" level="topstruct" xpathType="Element"/>
        <metadata name="CatalogIDDigital" xpath="//ead:c[@level='file']/@id" level="topstruct" xpathType="Attribute"/>
        <metadata name="CatalogIDSource" xpath="//ead:c[@level='file']/@id" level="topstruct" xpathType="Attribute"/>
        <metadata name="Dating" xpath="//ead:c[@level='file']/ead:did/ead:unitdate/@normal" level="topstruct" xpathType="Attribute"/>
        <metadata name="PublicationYear" xpath="//ead:c[@level='file']/ead:did/ead:unitdate" level="topstruct" xpathType="Element"/>
        <metadata name="shelfmarksource" xpath="//ead:c[@level='file']/ead:did/ead:unitid[@type='Signatur']" level="topstruct" xpathType="Element"/>
        <metadata name="AccessLicense" xpath="//ead:c[@level='file']/ead:accessrestrict/ead:p" level="topstruct" xpathType="Element"/>
        <metadata name="TitleDocSub1" xpath="//ead:c[@level='class']/ead:did/ead:unittitle" level="topstruct" xpathType="Element"/>
        <metadata name="Genre" xpath="//ead:c[@level='file']/ead:did/ead:physdesc/ead:genreform" level="topstruct" xpathType="Element"/>
        <metadata name="History" xpath="//ead:c[@level='collection']/ead:scopecontent[/ead:head/text() = 'Bestandsgeschichte']/ead:p" level="topstruct" xpathType="Element"/>
        <metadata name="Description" xpath="//ead:c[@level='collection']/ead:scopecontent[/ead:head/text() = 'Beschreibung']/ead:p" level="topstruct" xpathType="Element"/>
        <metadata name="SizeSourcePrint" xpath="//ead:c[@level='file']/ead:odd/ead:p" level="topstruct" xpathType="Element"/>
        <metadata name="Contains" xpath="//ead:c[@level='file']/ead:did/ead:abstract[@type='Enthält']" level="topstruct" xpathType="Element"/>
        <metadata name="singleDigCollection" xpath="concat(//ead:eadheader/ead:filedesc/ead:titlestmt/ead:titleproper\,'#'\, //ead:c[@level='collection']/ead:did/ead:unitid)" level="topstruct" xpathType="String"/>
    </mapping>
</config_plugin>

Im oberen Bereich werden die zur Verfügung stehenden Namespaces definiert, anschließend der zu erzeugende Strukturtyp. Hier kann mit Hilfe des Attributes isanchor="true/false" definiert werden, ob ein mehrbändiges Objekt oder ein eigenständiges Objekt erzeugt werden soll. Im Anschluss erfolgt im Bereich <mapping> das Mapping der Metadaten. Da in EAD die Unterscheidung zwischen Personen und anderen Metadaten nicht vorgesehen ist, können hier nur normale Metadaten angelegt werden. Jedes <metadata> enthält in name das Metadatum, so wie es im Regelsatz definiert wurde. In level wird angegeben, an welcher Stelle das Metadatum erzeugt werden soll. Mögliche Werte sind physical, topstruct und anchor.

Projektkonfiguration innerhalb der Datei goobi_projects.xml

Die Datei goobi_projects.xml benötigt eine neue Definition für den Publikationstyp und die neuen Metadaten.

<project name="EAD-Import">
    <createNewProcess>
        <itemlist>

            <!-- Title for Records -->
            <item docstruct="topstruct" from="prozess" isnotdoctype="multivolume" metadata="TitleDocMain" required="true" ughbinding="true"> Titel </item>
            <item docstruct="topstruct" from="prozess" isnotdoctype="multivolume" metadata="TitleDocSub1" required="false" ughbinding="true"> Weitere Titel</item>

            <!-- Identifer -->
            <item docstruct="topstruct" from="prozess" isdoctype="Record" metadata="CatalogIDDigital" required="true" ughbinding="true">Identifier</item>

            <!-- Sammlung -->
            <item docstruct="topstruct" from="prozess" isdoctype="Record" metadata="singleDigCollection" required="true" ughbinding="true">Sammlung</item>

            <item docstruct="topstruct" from="prozess" isdoctype="Record" metadata="Dating" ughbinding="true"> Datierung </item>
            <item docstruct="topstruct" from="prozess" isdoctype="Record" metadata="PublicationYear" ughbinding="true"> Erscheinungsjahr </item>
            <item from="prozess" isdoctype="Record" ughbinding="true" docstruct="topstruct" metadata="shelfmarksource"> Signatur </item>
            <item from="prozess" isdoctype="Record" ughbinding="true" docstruct="topstruct" metadata="AccessLicense"> Zugriffsbeschränkung </item>
            <item from="prozess" isdoctype="Record" ughbinding="true" docstruct="topstruct" metadata="Genre"> Genre </item>
            <item from="prozess" isdoctype="Record" ughbinding="true" docstruct="topstruct" metadata="History"> Bestandsgeschichte </item>
            <item from="prozess" isdoctype="Record" ughbinding="true" docstruct="topstruct" metadata="Description"> Beschreibung </item>
            <item from="prozess" isdoctype="Record" ughbinding="true" docstruct="topstruct" metadata="SizeSourcePrint"> Umfang </item>
            <processtitle isdoctype="Record">Identifier</processtitle>
            <hide>collections</hide>
        </itemlist>
        <opac use="true">
            <catalogue>EAD Import</catalogue>
        </opac>
        <templates use="true" />
        <defaultdoctype>Record</defaultdoctype>
        <metadatageneration use="true" />
    </createNewProcess>
    <tifheader>
        <Record>'|[[TYPE]]'+$Doctype+'|[[TITLE]]'+Title+'|[[AUTHORS]]'+Authors+'
            |[[YEAR]]'+Publishing year+'|[[PLACE]]'+Publishing place+'|[[FOLDER]]'+ATS+'_'+Identifier digital (a)+'|'
        </Record>
    </tifheader>
    <dmsImport />
    <validate/>
</project>

Nachdem diese Konfiguration abgeschlossen wurde, steht innerhalb von Goobi eine neue Datenquelle innerhalb der Anlegemaske für Vorgänge zur Verfügung. Diese kann nun mittels der Identifier in gleicher Weise abgefragt werden wie andere Datenquellen und Kataloge auch.

Generischer JSON Import

OPAC Plugin für die Datenübernahme von JSON Datensätzen

Übersicht

Name
Wert

Identifier

intranda_opac_json

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 12:02:24

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Plugins. Mit Hilfe dieses Plugins können Daten aus einem externen System abgefragt und in Goobi übernommen werden. Der Katalog muss eine API haben, über die Datensätze als JSON ausgeliefert werden können.

Installation

Das Plugin besteht aus drei Dateien:

plugin_intranda_opac_json-base.jar
plugin_intranda_opac_json-gui.jar
plugin_intranda_opac_json.xml

Die Datei plugin_intranda_opac_json-base.jar enthält die Programmlogik und muss für den Nutzer tomcat8 lesbar an folgendem Pfad installiert werden:

/opt/digiverso/goobi/plugins/opac/plugin_intranda_opac_json-base.jar

Die Datei plugin_intranda_opac_json-gui.jar enthält die Nutzeroberfläche und muss für den Nutzer tomcat8 lesbar an folgendem Pfad installiert werden:

/opt/digiverso/goobi/plugins/GUI/plugin_intranda_opac_json-gui.jar

Die Datei plugin_intranda_opac_json.xml muss ebenfalls für den Nutzer tomcat8 lesbar sein und unter folgendem Pfad liegen:

/opt/digiverso/goobi/config/plugin_intranda_opac_json.xml

Überblick und Funktionsweise

Wenn in Goobi nach einem Identifier gesucht wird, wird im Hintergrund eine Anfrage an die konfigurierte URL gestellt.

Passend zur oben beschriebenen Konfiguration entspricht dies etwa der folgenden URL:

https://example.com/opac?id=[IDENTIFIER]

Sind weitere Felder für die Katalogabfrage definiert, so werden diese ebenfalls in der Nutzeroberfläche angezeigt:

Sofern unter dieser URL ein gültiger Datensatz gefunden wird, wird dieser nach den innerhalb von recordType definierten Feldern durchsucht, in dem der Dokumententyp stehen soll. Wenn keine Felder definiert wurden oder sie nicht gefunden wurden, wird stattdessen der Typ aus dem konfigurierten Element defaultPublicationType genutzt. Mit dem ermittelten Typ wird dann das gewünschte Strukturelement erzeugt.

Im Anschluß daran werden die konfigurierten Ausdrücke der metadata und person der Reihe nach ausgewertet. Sofern mit einem Ausdruck Daten gefunden werden, wird das entsprechend angegebene Metadatum erzeugt.

Wurde innerhalb der Konfiguration mit dem Parameter showResultList festgelegt, dass eine Trefferliste zur Verfügung stehen soll, aus der der Nutzer einen Datensatz auswählen kann, so öffnet sich nach der Katalogabfrage ein Dialog wie der folgende:

Konfiguration

Die Konfiguration des Plugins erfolgt in den folgenden Dateien, die sich im Verzeichnis /opt/digiverso/goobi/config/ befinden.

goobi_opac.xml
plugin_intranda_opac_json.xml

In der Datei goobi_opac.xml muss die Schnittstelle zum gewünschten Katalogsystem bekannt gemacht werden. Dies geschieht durch einen Eintrag, der wie folgt aussieht:

<catalogue title="JSON">
    <config description="JSON OPAC" address="x"
    port="443" database="x" iktlist="x" ucnf="x" opacType="intranda_opac_json" />
</catalogue>

Das Attribut title enthält einen eindeutigen Namen. Das zu verwendende Plugin wird durch opacType bestimmt, das in diesem Fall intranda_opac_json sein muss. Die anderen Felder sind nicht erforderlich.

Die Zuordnung des JSON-Datensatzes zu den Goobi-Metadaten wird durch die Datei plugin_intranda_opac_json.xml bestimmt. Auf die Felder innerhalb des JSON-Datensatzes wird mit JSONPath, dem XPath-Äquivalent für JSON, verwiesen.

<config_plugin>
    <config name="Opac Name">

        <showResultList>true</showResultList>
        <urlForSecondCall>https://example.goobi.io/metadatacloud/api</urlForSecondCall>

        <field id="repository">
            <label>Repository</label>
            <select>1</select>
            <select>2</select>
            <select>3</select>
            <type>select</type>
            <defaultText>1</defaultText>
            <url></url>
        </field>

        <field id="id">
            <label>Identifier</label>
            <type>text</type>
            <defaultText></defaultText>
            <url></url>
        </field>

        <field id="type">
            <label></label>
            <type>select+text</type>
            <select>barcode</select>
            <select>holding</select>
            <select>item</select>
            <defaultText></defaultText>
            <url>https://example.com/repository/{repository.select}/}{type.select}/{type.text}?id={id.text}</url>
        </field>

        <authentication>
            <username>user</username>
            <password>password</password>
        </authentication>

        <defaultPublicationType>Monograph</defaultPublicationType>

        <metadata metadata="PublicationYear" field="$.date" />
        <metadata metadata="DocLanguage" field="$.language" />
        <metadata metadata="CatalogIDDigital" field="$.identifier" docType="volume" />
        <metadata metadata="CatalogIDDigital" field="$.children[?(@.itemCount > 1)].children[0].itemId" docType="volume" />
        <metadata metadata="CatalogIDDigital" field="$.uri" regularExpression="s/\/some-prefix\/(.+)/$1/g" docType="anchor" />
        <metadata metadata="shelfmarksource" field="$.identifierShelfMark" docType="volume" />
        <metadata metadata="TitleDocMain" field="$.title" docType="volume" />
        <metadata metadata="OtherTitle" field="$.alternativeTitle" docType="volume" />
        <metadata metadata="CurrentNo" field="$..children[0].children[0].sequenceNumber" docType="volume" />
        <metadata metadata="CurrentNoSorting" field="$..children[0].children[0].sequenceNumber" docType="volume" />

        <person metadata="Author" field="creator" firstname="s/^(.+?)\, (.+?)$/$2/g" lastname="s/^(.+?)\, (.+?)$/$1/g" validationExpression="/^.+?\, .+?\, .+$/" regularExpression="s/^(.+?)\, (.+?)\, .+/$1\, $2/g"/>
    </config>

    <config>
        <field id="id">
            <label>Identifier</label>
            <type>text</type>
            <defaultText></defaultText>
            <url>http://example.com/repositories/2/archival_objects/{id.text}</url>
        </field>
        <authentication>
            <username>user</username>
            <password>password</password>
            <loginUrl>http://example.com/users/{username}/login</loginUrl>
            <sessionid>session</sessionid>
            <headerParameter>Token</headerParameter>
        </authentication>
        <recordType field="[?(@.jsonmodel_type=='archival_object')]" docType="ArchivalObject" />
        <metadata metadata="TitleDocMain" field="$.title" />

        <metadata metadata="PublicationStart" field="$.dates.begin" />
        <metadata metadata="PublicationEnd" field="$.dates.end" />
        <metadata metadata="PublicationRun" field="$.dates.expression" />
        <person metadata="Author" field="$.linked_agents[?(@.role=='creator')].ref" followLink="true" templateName="Person" basisUrl="http://example.com"/>
        <metadata metadata="DocLanguage" field="$.notes[?(@.type=='langmaterial')].content[*]" />
        <metadata metadata="Note" field="$.notes[?(@.label=='Writing')].subnotes[*].content" />
        <metadata metadata="Illustration" field="$.notes[?(@.label=='Illumination')].subnotes[*].content" />
        <metadata metadata="Provenience" field="$.notes[?(@.type=='custodhist')].subnotes[*].content" />
        <metadata metadata="CatalogIDDigital" field="$.uri" regularExpression="s/.*\/(.+)$/$1/" />
    </config>

    <config>
        <template>Person</template>
        <person metadata="Author" field="$.title" firstname="s/^(.*?)\,(.*?)\,.*/$2/g" lastname="s/^(.*?)\,(.*?)\,.*$/$1/g" identifier="$.uri"/>
    </config>
</config_plugin>

Die zur Verfügung stehenden Kataloge werden in einzelnen <config name="XYZ"> Blöcken definiert. Das Attribut name enthält den Namen, unter den der Katalog ausgewählt werden kann.

Innerhalb des Katalogs können verschiedene Feldtypen genutzt werden:

Feldtyp
Beschreibung

field

Mit dieser Konfiguration können weitere Abfragefelder definiert werden, die innerhalb der Nutzeroberfläche aufgeführt werden sollen.

authentication

Geben Sie hier die Zugangsdaten für den Zugriff auf die Katalogschnittstelle an.

recordType

Dieser Typ dient zum Erkennen des Dokumententyps des JSON-Datensatzes.

defaultPublicationType

Dieser Typ wird genutzt, wenn zuvor kein Dokumententyp erkannt wurde.

metadata

Dieser Typ dient zum Mapping von JSON-Feldern zu Metadaten.

person

Dieser Typ dient zum Mapping von JSON-Feldern zu Personen.

showResultList

Mit diesem Parameter kann festgelegt werden, dass nach einer Katalogabfrage eine Auswahlliste angezeigt werden soll, die eine Auswahl des zu importierenden Unterdatensatzes aus einer Liste erlaubt.

urlForSecondCall

Die hier angebene URL wird dazu verwendet, dass die ID des ausgewählten Unterdatensatzes für die Abfrage an die hier festgelegte URL angehängt wird.

Feldtyp: field

Das Element <field> wird über das Attribut id identifiziert. Innerhalb der Einträge kann im Element <type> definiert werden, welche Felder in der Eingabemaske zur Verfügung stehen. Dabei gibt es die verschiedenen Typen text, select und select+text. Der Type text erzeugt ein einfaches Eingabefeld, select eine Auswahlliste und select+text beides. Das Element <label> enthält den Namen, unter dem das Feld in der Oberfläche angezeigt wird und die Einträge in <select> defininieren, welche Inhalte in der Auswahlliste enthalten sind. Optional lässt sich eine Vorbelegung angeben. Dies geschieht mit dem Element <defaultText>.

Das Element ist wiederholbar, so dass die Eingabemaske auch mehrere Eingabefelder enthalten kann.

Eines der Felder muss dabei die URL zum Katalog enthalten. Dieser wird innerhalb des Elements <url> definiert. Um auf die Nutzereingaben zugreifen zu können, stehen die Variablen {id.select} und {id.text} zur Verfügung, wobei id durch den gewünschten field-Identifier ersetzt werden muss.

Feldtyp: authentication

Mittels <authentication> kann definiert werden, wie die Authentifizierung gegenüber dem Katalog erfolgen soll. Das Element kann fehlen oder frei bleiben, wenn der Katalog anonyme Zugriffe erlaubt.

Ansonsten stehen zwei Arten zur Verfügung. Sind nur <username> und <password> angegeben, findet eine Basic-Authentifizierung statt.

Als zweite Möglichkeit steht ein Login zur Verfügung. Hierbei wird die im Feld <loginUrl> definierte API aufgerufen, um eine gültige Session-ID zu bekommen. Dabei wird die Session-ID in dem Feld gesucht, das in <sessionid> konfiguriert wird. Die Session-ID wird dann beim eigentlichen Request als Header-Parameter genutzt. Der Parameter wird in <headerParameter> festgelegt.

Feldtyp: recordType

Das Element <recordType> enthält die Attribute field, docType und anchorType. In field wird ein JSONPath-Ausdruck angegeben, der auf den Datensatz angewendet wird. Falls es sich bei dem Typ um ein mehrbändiges Werk oder eine Zeitung/Zeitschrift handelt, muss der zu nutzende anchor Typ im Feld anchorType angegeben werden. Existiert ein Feld mit so einem Ausdruck, wird der in docType definierte Dokumententyp erstellt. Wenn nicht, wird der nächste konfigurierte recordType überprüft.

Dabei gibt es eine Reihe von Zeichen, die in dieser Datei maskiert sind. Das betrifft zum einen Zeichen wie < > & ", die in XML eine besondere Bedeutung haben und daher als &lt; &gt; &amp; &quot; angegeben werden müssen. Daneben ist noch das Komma betroffen, das mittels Backslash ebenfalls als \, maskiert werden muss.

Feldtyp: defaultPublicationType

Wenn keine der Definitionen zutreffen, kann ein Dokument mit dem Typ aus <defaultPublicationType> erzeugt werden. Wenn dieses Feld fehlt oder leer ist, wird stattdessen kein Datensatz angelegt.

Feldtypen: metadata & person

Die beiden Element <metadata> und <person> dienen zum Import einzelner Inhalte aus dem JSON-Datensatz in in die jeweiligen Metadaten. Dazu stehen eine Reihe von Attributen zur Verfügung:

Attribut
Bedeutung

metadata

Enthält den Namen des Metadatums oder der Person

field

Pfad zum Inhalt innerhalb des JSON-Objekts

docType

Darf den Wert anchor oder volume haben. Der default-Wert ist volume. Mit anchor gekennzeichnete Felder werden nur bei Mehrbändigen Werken überprüft und importiert.

validationExpression

Regulärer Ausdruck, der prüft ob der gefundene Wert dem definierten Ausdruck entspricht. Ist dies nicht der Fall, wird der Wert ignoriert.

regularExpression

Ein regulärer Ausdruck zur Manipulation des Wertes. Dieser wird nach der Prüfung der validationExpression angewendet.

firstname

Ein regulärer Ausdruck, mit dem bei Personen der Vorname aus dem Feldinhalt ermittelt wird.

lastname

Ein regulärer Ausdruck, mit dem bei Personen der Nachname aus dem Feldinhalt ermittelt wird.

followLink

Definiert, ob der enthaltene Wert direkt importiert wird, oder einen Link zu einem anderen Datensatz enthält.

templateName

Enthält den Namen des zu nutzenden <config> Blocks, mit dem der neue Datensatz analysiert werden soll.

basisUrl

Enthält die zu nutzende Basis-URL, falls der Link zum Datensatz ein relativer Pfad ist.

Nützliche Links

Für die Installation bzw. insbesondere für die Konfiguration des Plugins könnten die folgenden URLs eine weiterführende Hilfe sein:

Kalliope Import

OPAC Plugin für die Datenübernahme aus Kalliope

Übersicht

Name
Wert

Identifier

goobi-plugin-opac-kalliope

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

14.08.2024 18:45:15

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Plugins. Mit Hilfe dieses Plugins können Daten aus dem Datenbestand des Kalliope-Verbundes abgefragt und in Goobi übernommen werden. Zur Übertragung der Daten werden die Daten aus dem Kalliope-Datenbestand im MODS-Format abgefragt und mit einer dezidierten Mapping-Datei ins Datenformat von Goobi übersetzt.

Installation

Das Plugin besteht aus einer Java-Jar-Datei, einer Goobi-Konfigurationsdatei und einer Metadaten-Mapping-Datei:

plugin_intranda_opac_kalliope-base.jar
plugin_KalliopeOpacImport.xml
mods_map_kalliope.xml

Diese Dateien müssen für den Nutzer tomcat lesbar an folgenden Pfaden installiert werden:

/opt/digiverso/goobi/plugins/opac/plugin_intranda_opac_kalliope-base.jar
/opt/digiverso/goobi/config/plugin_KalliopeOpacImport.xml
/opt/digiverso/goobi/xslt/mods_map_kalliope.xml

Überblick und Funktionsweise

Wenn in Goobi nach einem Identifier gesucht wird, wird im Hintergrund eine Anfrage an die in der Datei goobi_opac.xml konfigurierte URL gestellt. Nach der Abfrage des Datensatzes im MODS-Format erfolgt das Mapping der Metadaten gemäß der in der Datei mods_map_kalliope.xml konfigurierten Regeln.

Konfiguration

Die Konfigurationsdatei des Plugins hat folgenden Aufbau:

<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
    <charset>utf-8</charset>
    <mapping>/opt/digiverso/goobi/xslt/mods_map_kalliope.xml</mapping>
    <defaultDocType>Monograph</defaultDocType>
    <defaultPicaType>Aa</defaultPicaType>
</config_plugin>

Die Option <charset> legt den Zeichensatz fest, in dem die Daten durch der Kalliope-Schnittstelle ausgeliefert werden. <mapping> bezeichnet den Dateipfad zur Metadaten-Mapping-Datei. Mit den Feldern <defaultDocType> und <defaultPicaType> wird der für das Dokument zu verwendende Publikationstyp festgelegt.

Zusätzlich zur Konfigurationsdatei des Plugins muss der Kalliope-Katalog in der Datei goobi_opac.xml bekannt gemacht werden. Das geschieht durch einen Eintrag, der wie folgt aussieht:

<catalogue title="Kalliope">
    <config address="kalliope-verbund.info" database="sru" description="SRU-Schnittstelle des Kalliope Verbundes" port="80" opacType="Kalliope-SRU"/>
</catalogue>

Generischer XML Import

OPAC Plugin für die Datenübernahme von XML Datensätzen aus einem OPAC

Übersicht

Name
Wert

Identifier

intranda_opac_xml

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

15.08.2024 06:22:21

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Plugins. Mit Hilfe dieses Plugins können Daten aus einem externen System abgefragt und in Goobi übernommen werden. Der Katalog muss eine API haben, über die Datensätze als XML ausgeliefert werden können.

Installation

Das Plugin besteht aus zwei Dateien:

plugin_intranda_opac_xml-base.jar
plugin_intranda_opac_xml.xml

Die Datei plugin_intranda_opac_xml-base.jar enthält die Programmlogik und muss für den Nutzer tomcat lesbar in folgendes Verzeichnis installiert werden:

/opt/digiverso/goobi/plugins/opac/

Die Dateiplugin_intranda_opac_xml.xml muss ebenfalls für den Nutzer tomcat lesbar sein und in folgendes Verzeichnis installiert werden:

/opt/digiverso/goobi/config/

Überblick und Funktionsweise

Nachdem das Plugin vollständig installiert wurde, steht es in der Anlegemaske zur Verfügung.

Wenn in Goobi nach einem Identifier gesucht wird, wird im Hintergrund eine Anfrage an die konfigurierte URL oder an das Dateisystem gestellt:

https://example.com/opac?id={pv.id}
file:///import/hotfolder/{pv.id}.xml

Sofern hier ein gültiger Datensatz gefunden wird, wird dieser nach dem Feld durchsucht, in dem der Dokumententyp stehen soll. Wenn die Query nicht definiert ist, wird stattdessen der Dokumententyp aus der Konfigurationsdatei gelesen. Mit dem ermittelten Typ wird dann das gewünschte Strukturelement erzeugt.

Im Anschluß daran werden alle XPath Ausdrücke ausgewertet, die konfiguriert wurden. Sofern mit einem Ausdruck Daten gefunden werden, wird das entsprechend angegebene Metadatum erzeugt. Bei Personen wird geprüft, ob der Wert ein Komma enthält. In diesem Fall werden Vor- und Nachname am Komma getrennt, andernfalls wird der Wert als Nachname interpretiert.

Konfiguration

Die Konfiguration erfolgt in den folgenden Dateien, die sich im Verzeichnis /opt/digiverso/goobi/config/ befinden.

goobi_opac.xml
plugin_intranda_opac_xml.xml

In der Datei goobi_opac.xml muss die Schnittstelle zum gewünschten Katalogsystem bekannt gemacht werden. Dies geschieht durch einen Eintrag, der wie folgt aussieht:

<catalogue title="EAD">
    <config description="EAD database" address="https://example.com/opac?id={pv.id}"
    port="443" database="x" iktlist="x" ucnf="x" opacType="intranda_opac_xml" />
    <searchFields>
        <searchField label="Identifier" value="12"/>
    </searchFields>
</catalogue>

Das Attribut title enthält den Namen, unter dem der Katalog in der Nutzeroberfläche ausgewählt werden kann, address die URL zum API Endpoint und opacTypedas zu nutzende Plugin. In diesem Fall muss der Eintrag intranda_opac_xml lauten.

Es ist nur eine Suchanfrage konfigurierbar. Daher können die anderen Suchoptionen ausgeblendet werden. Dies geschieht innerhalb des <searchFields> Blocks. In der oben beschriebenen Konfiguration kann nur nach einem Identifier gesucht werden.

Der Wert des address- Attributes muss den String {pv-id} enthalten, damit das Plugin den Suchwert an der richtigen Stelle einfügt. Z.b. um in einem Hotfolder anhand des Dateinamens zu filtern z.B. /import/hotfolder/{pv.id}.xml.

Das Plugin kann bei Bedarf auch Dateien aus dem Dateisystem lesen. Zum Beispiel aus einem Hotfolder in dem Dateien abgelegt werden. Dazu muss folgendes beachtet werden. Der String in address muss mit file:// beginnen und die Datei muss einen eindeutigen Namen haben der z.B. dem Prozesstitel entspricht.

Das Mapping der Inhalte des XML Records hin zu Goobi Metadaten geschieht in der Datei plugin_intranda_opac_xml.xml:

<config_plugin>
    <!-- define the list of namespaces. They are used to read the document and run xpath queries -->
    <namespaces>
        <namespace prefix="ead" uri="urn:isbn:1-931666-22-9" />
        <namespace prefix="oai" uri="http://www.openarchives.org/OAI/2.0/" />
    </namespaces>

    <docstructs>
        <!-- use the configured document type -->
        <!--
        <documenttype isanchor="false">Record</documenttype>
        <documenttype isanchor="true">VolumeRun</documenttype>
        -->
        <!-- or detect the document type in xml record -->
        <doctumenttypequery xpath="//ead:c/@level"  xpathType="Attribute" />
        <docstruct xmlName="Item" rulesetName="Item" />
        <docstruct xmlName="File" rulesetName="Item" />
        <docstruct xmlName="Book" rulesetName="Monograph" />
        <docstruct xmlName="Photo" rulesetName="Picture" />
        <docstruct xmlName="Periodica" rulesetName="Volume" anchorName="Periodical"/>
    </docstructs>

    <mapping>
            <element name="TitleDocMain" xpath="//ead:c[@level='file']/ead:did/ead:unittitle" level="topstruct" xpathType="Element"/>
            <element name="TitleDocMainShort" xpath="//ead:c[@level='file']/ead:did/ead:unittitle" level="topstruct" xpathType="Element"/>
            <element name="CatalogIDDigital" xpath="//ead:c[@level='file']/@id" level="topstruct" xpathType="Attribute"/>
            <element name="CatalogIDSource" xpath="//ead:c[@level='file']/@id" level="topstruct" xpathType="Attribute"/>
            <element name="PublicationRun" xpath="//ead:c[@level='file']/ead:did/ead:unitdate" level="topstruct" xpathType="Element"/>
            <element name="PublicationStart" xpath="substring-before(//ead:c[@level='file']/ead:did/ead:unitdate/@normal\, '/')" level="topstruct" xpathType="String"/>
            <element name="PublicationEnd" xpath="substring-after(//ead:c[@level='file']/ead:did/ead:unitdate/@normal\, '/')" level="topstruct" xpathType="String"/>
            <element name="ShelfmarkOld" xpath="//ead:c[@level='file']/ead:did/ead:unitid[@type='Altsignatur']" level="topstruct" xpathType="Element"/>
            <element name="shelfmarksource" xpath="concat('HU UA '\, //ead:c[@level='collection']/ead:did/ead:unitid\, ' Nr. '\, //ead:c[@level='file']/ead:did/ead:unitid)" level="topstruct" xpathType="String"/>
            <element name="SizeSourcePrint" xpath="//ead:c[@level='file']/ead:did/ead:physdesc/ead:extent" level="topstruct" xpathType="Element"/>
            <element name="OtherPerson" xpath="//ead:c[@level='file']/ead:odd/ead:p" level="topstruct" xpathType="Element"/>
            <element name="Information" xpath="//ead:c[@level='file']/ead:did/ead:abstract[@type='Enthält']" level="topstruct" xpathType="Element"/>
            <element name="Contains" xpath="//ead:c[@level='file']/ead:did/ead:abstract[@type='Darin']" level="topstruct" xpathType="Element"/>
            <element name="Provenience" xpath="//ead:c[@level='file']/ead:did/ead:origination" level="topstruct" xpathType="Element"/>
    </mapping>

</config_plugin>

Als erstes werden die XML Namespaces definiert, die zum Lesen des XML Dokuments notwendig sind. Hierzu dient der Bereich <namespaces>, der alle verwendeten Namespace in <namespace> Elementen enthält. Jeder Namespace wird durch die beiden Attribute prefix und uri definiert. Wenn das XML ohne Namespaces gelesen werden kann, kann der Bereich leer bleiben oder fehlen. Die hier beispielhaft aufgezeigte Konfiguration bezieht sich auf die Konvertierung von EAD Dateien, die über eine OAI Schnittstelle bezogen werden.

Im Bereich <docstructs> kann der zu verwendende Typ festgelegt werden. Dies geschieht durch die Verwendung von <documenttype>. Wenn der Dokumententyp konfigurierbar sein soll, muss es ein Element mit dem Attribut isanchor="false" geben. Sofern Mehrbändige Werke oder Zeitschriften angelegt werden sollen, wird ein zweites Element isanchor="true" benötigt, in dem der Anchor-Typ definiert ist.

Alternativ kann der Typ des Dokuments auch aus dem XML Record gelesen werden. Dann wird das Element <doctumenttypequery> verwendet, in dem ein XPath-Ausdruck definiert ist, der beschreibt, welches Feld verwendet werden soll. Zusätzlich gibt es eine Reihe von <docstruct> Elementen, die mögliche Feldinhalte beschreiben. Das Attribut xmlName enthält den Wert aus dem XML Dokument, in rulesetName steht der anzulegende Strukturtyp. Sofern es sich um ein mehrbändiges Werk handelt, muss zusätzlich noch anchorName mit dem Namen des übergeordneten Strukturtyps angegeben werden.

Anschließend wird das Mapping für Personen und Metadaten im Bereich <mapping> konfiguriert. Hier gibt es eine Liste von <element> mit den Attributen xpath, level, xpathType und name. In xpath wird ein XPath Ausdruck konfiguriert, der beschreibt, in welchem Teil des XML Dokuments der Inhalt erwartet wird, in namewird der Name des Metadatums definiert, in das der Inhalt anschließend geschrieben werden soll. Mit der Angabe in level kann gesteuert werden, ob das Metadatum bei mehrbändigen Werken zum Datensatz des Anchors oder des Bandes geschrieben werden soll. In xpathType wird angegeben, welchen Typ das Ergebnis der XPath query hat. Dies kann ein Element, Attribute oder String sein.

HERIS Vokabular Aktualisierung

Plugin für die Autmatische Aktualisierung des HERIS Vokabulars

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz des Plugins für die automatische, regelmäßige Aktualisierung des HERIS Vokabulars.

Installation

Voraussetzung ist die Goobi Version 23.03 oder neuer, zusätzlich müssen die folgenden beiden Dateien installiert sein:

Nach der Installation steht die Funktionalität des Plugins innerhalb der REST-API von Goobi workflow zur Verfügung.

Überblick und Funktionsweise

Der Import findet regelmäßig zu den in der Datei goobi_config.properties festgelegten Zeiten statt. Alternativ kann der Import auch jederzeit von Hand gestartet werden, hierzu kann man als Administrator den Bereich Regelmäßige Aufgaben öffnen und den HERIS Import einmal ausführen.

Wenn das Plugin ausgeführt wird, verbindet es sich mit dem SFTP-Server und sucht dort nach einer JSON-Datei. Wenn mehrere Dateien existieren, wird die Datei mit dem neuesten Zeitstempel genutzt. Die Datei wird herunter geladen, geöffnet und das JSON-Array in einzelne Objekte geteilt. Pro Objekt wird nun der Identifier gesucht und mit den existierenden Datensätzen verglichen. Wenn der Identifier bereits in einem Datensatz existiert, wird der Datensatz aktualisiert, ansonsten wird ein neuer Datensatz erstellt.

Anschließend werden die konfigurierten Felder durchlaufen und die einzelnen Werte importiert.

Am Ende wird die heruntergeladene Datei wieder vom Goobi-System gelöscht. Auf dem SFTP-System werden keine Daten geändert.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_quartz_heris.xml wie hier aufgezeigt:

Die folgende Tabelle enthält eine Zusammenstellung der Parameter und ihrer Beschreibungen:

Damit die Aktualisierung automatisch ausgeführt wird, muss der Zeitpunkt der Ausführung in der Datei goobi_config.properties konfiguriert werden. Dazu wird in der cron-Syntax angegeben, wann dieser ausgeführt werden soll. Für eine tägliche Ausführung um Mitternacht kann folgendes genutzt werden:

Auswahl des Plugins

Um das Interface zur Abfrage für Goobi einzurichten, muss der Datenbank bekannt gemacht werden, wie eine Anfrage aussieht, was damit geschehen soll und wie das Ergebnis auszusehen hat. Dafür bietet BaseX verschiedene Optionen an. Wir haben uns für entschieden, da diese im Gegensatz zur Schnittstelle keine Authentication benötigt.

Ob die Konfiguration korrekt ist, kann mit einer Anfrage an die Datenbank getestet werden:

Auswahl des Plugins

In xpath steht der Ausdruck, der auf den Datensatz angewendet wird, um den Wert des Metadatums zu ermitteln. Das Attribut xpathType beschreibt den Rückgabewert des XPath-Ausdrucks. Dieser kann entweder Element, Attribut oder String sein.

Oberfläche von Goobi workflow zur Abfrage des Katalogs
Zusätzliche Felder für die Katalogabfrage
Dialog zur Auswahl des zu importierenden Datensatzes aus einer Trefferliste nach der initialen Katalogabfrage

JSONPath Online Evaluator:

JSONPath Description:

Auswahl des Plugins

Anlegemaske mit Auswahl des Plugins

Im Fall von String können auch Manipulationen wie concat, substring genutzt werden. Die möglichen Funktionen sind hier beschrieben:

Name
Wert
Parameter
Erläuterung
https://github.com/intranda/goobi-plugin-import-zbz-cmi
https://github.com/intranda/goobi-plugin-import-wuwien
https://github.com/intranda/goobi-plugin-metadata-create-structure-elements
https://github.com/intranda/goobi-plugin-import-zbz-alma
https://github.com/intranda/goobi-plugin-metadata-change-type
https://github.com/intranda/goobi-plugin-import-zbz-no-catalogue
http://basex.org/download/
http://localhost:8984/dba/login
RESTXQ
REST
http://localhost:8984/search/A91x07542461156845020181205140345849
XPath
https://jsonpath.com/
https://support.smartbear.com/alertsite/docs/monitors/api/endpoint/jsonpath.html
https://www.w3schools.com/xml/xsl_functions.asp
/opt/digiverso/goobi/config/plugin_intranda_quartz_heris.xml
/opt/digiverso/goobi/lib/plugin_intranda_quartz_heris.jar
<config>
    <!-- Folder in which the heris export file is expected to be stored -->
    <herisFolder>/tmp/download</herisFolder>

    <!-- sftp credentials for username + password authentication -->
    <sftp>
        <username>username</username>
        <password>password</password>
        <hostname>localhost</hostname>
        <knownHosts>~/.ssh/known_hosts</knownHosts>
        <sftpFolder>/path/to/remote/folder/</sftpFolder>
    </sftp>
    
    
    <!-- sftp credentials for username + public/private key authentication -->
    <!-- 
    <sftp>
        <username>username</username>
        <keyfile>/path/to/private/key</keyfile>
        <hostname>localhost</hostname>
        <knownHosts>~/.ssh/known_hosts</knownHosts>
        <sftpFolder>/path/to/remote/folder/</sftpFolder>
    </sftp> 
     -->
     
      <!-- sftp credentials for password protected public/private key authentication -->
    <!-- 
    <sftp>
        <username>username</username>
        <keyfile>/path/to/private/key</keyfile>
        <password>password</password>
        <hostname>localhost</hostname>
        <knownHosts>~/.ssh/known_hosts</knownHosts>
        <sftpFolder>/path/to/remote/folder/</sftpFolder>
    </sftp> 
     -->   
     
    <vocabulary name="HERIS">
        <field fieldName="herisid" jsonPath="$.['HERIS-ID']" identifier="true" />
        <field fieldName="objektid" jsonPath="$.['Alte Objekt-ID']" />
        <field fieldName="title" jsonPath="$.['Katalogtitel']" />
        <field fieldName="type" jsonPath="$.['Typ']" />
        <field fieldName="mainCategoryA" jsonPath="$.['Hauptkategorie grob']" />
        <field fieldName="mainCategoryB" jsonPath="$.['Hauptkategorie mittel']" />
        <field fieldName="mainCategoryC" jsonPath="$.['Hauptkategorie fein']" />
        <field fieldName="subCategory" jsonPath="$.['Nebenkategorie grob']" />
        <field fieldName="nonExisting" jsonPath="$.['somethingElse']" />
    </vocabulary>
</config>

<username>

Der Benutzername für den SFTP-Zugang.

<password>

Das Passwort für den SFTP-Zugang.

<hostname>

Der Hostname des SFTP-Servers.

known_hosts

Datei mit dem Fingerabdruck des Servers, erforderlich für die Authentifizierung.

sftpFolder

Pfad zur JSON-Datei auf dem SFTP-Server (bei Speicherung im Home-Verzeichnis: . angeben).

<herisFolder>

Lokaler Ordner, in den die JSON-Datei heruntergeladen wird.

<vocabulary>

Name des Vokabulars, das aktualisiert werden soll.

fieldName

Name des Feldes im Vokabular, das überschrieben werden soll.

jsonPath

JSONPath-Ausdruck für das zu extrahierende Feld aus der JSON-Datei.

identifier

Kennzeichnung des Feldes für das Matching mit dem Vokabular.

intranda_quartz_herisJob=0 0 0 * * ?
Der Bereich der Regelmäßigen Aufgaben
https://github.com/intranda/goobi-plugin-import-mab
https://github.com/intranda/goobi-plugin-opac-ariadne
https://github.com/intranda/goobi-plugin-opac-ead
https://github.com/intranda/goobi-plugin-opac-json
https://github.com/intranda/goobi-plugin-opac-kalliope
https://github.com/intranda/goobi-plugin-opac-generic-xml

Identifier

intranda_quartz_heris

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

04.09.2024 09:39:35

Soutron Import

OPAC Plugin für die Datenübernahme von Soutron Datensätzen

Übersicht

Name
Wert

Identifier

intranda_opac_soutron

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 12:01:54

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Plugins. Mit Hilfe dieses Plugins können Daten aus einem Soutron-System abgefragt und in Goobi übernommen werden. Hierfür muss der Zugriff auf den Soutron-Katalog gewährleistet sein.

Installation

Das Plugin besteht aus zwei Dateien:

plugin_intranda_opac_soutron-base.jar
plugin_intranda_opac_soutron.xml

Die Datei plugin_intranda_opac_soutron-base.jar enthält die Programmlogik und muss für den Nutzer tomcat lesbar an folgendem Pfad installiert werden:

/opt/digiverso/goobi/plugins/opac/plugin_intranda_opac_soutron-base.jar

Die Datei plugin_intranda_opac_soutron.xml muss ebenfalls für den Nutzer tomcat lesbar sein und unter folgendem Pfad liegen:

/opt/digiverso/goobi/config/plugin_intranda_opac_soutron.xml

Überblick und Funktionsweise

Wenn in Goobi nach einem Identifier gesucht wird, wird im Hintergrund eine Anfrage an die konfigurierte URL gestellt:

https://example.com/Library/WebServices/SoutronAPI.svc/GetCatalogue?id=[VALUE]

Sofern hier ein gültiger Datensatz gefunden wird, wird der Datensatz nach dem Feld /soutron/catalogs_view/ct/cat/rt/@name durchsucht. Der Wert wird mit der konfigurierten <docstructs> Liste verglichen. Wenn es eine Entsprechung gibt, wird das gewünschte Strukturelement erzeugt.

Im Anschluß werden die konfigurierten XPath-Ausdrücke ausgewertet, die für <metadata> und <person> konfiguriert wurden.

Die Ausdrücke gelten für das Element /soutron/catalogs_view/ct/. Sofern mit einem Ausdruck Daten gefunden werden, wird das entsprechend angegebene Metadatum erzeugt. Bei Personen wird geprüft, ob der Wert ein Komma enthält. In dem Fall werden Vor- und Nachname am Komma getrennt, ansonsten wird der Wert als Nachname interpretiert.

Konfiguration

Die Konfiguration des Plugins erfolgt in den folgenden Dateien, die sich im Verzeichnis /opt/digiverso/goobi/config/ befinden.

goobi_opac.xml
plugin_intranda_opac_soutron.xml

In der Datei goobi_opac.xml muss die Schnittstelle zum gewünschten Katalogsystem bekannt gemacht werden. Dies geschieht durch einen Eintrag, der wie folgt aussieht:

<catalogue title="Soutron">
    <config description="Soutron Library System"
      address="https://example.com/Library/WebServices/SoutronAPI.svc/GetCatalogue"
      port="443" database="x" iktlist="x" ucnf="x" opacType="plugin_intranda_opac_soutron" />
    <searchFields>
        <searchField label="Identifier" value="12"/>
    </searchFields>
</catalogue>

Das Attribut title enthält den Namen, unter dem der Katalog in der Nutzeroberfläche ausgewählt werden kann, address die URL zum GetCatalogue-Endpoint und opacType das zu nutzende Plugin. In diesem Fall muss der Eintrag plugin_intranda_opac_soutron lauten.

Es ist nur eine Suche nach einem Identifier möglich, daher können die anderen Suchoptionen ausgeblendet werden. Dies geschieht innerhalb des <searchFields> Blocks.

Das Mapping der Inhalte des Soutron Datensatzes zu den Metadaten in Goobi geschieht in der Datei plugin_intranda_opac_soutron.xml:

<config_plugin>
    <docstructs>
        <docstruct soutron="Item" ruleset="Item" />
        <docstruct soutron="File" ruleset="Item" />
        <docstruct soutron="Book" ruleset="Monograph" />
        <docstruct soutron="Photo" ruleset="Picture" />
    </docstructs>

    <metadata>
        <element xpath="./cat/fs/f[@name='Title']/vs/v[@seq='1']/text()" metadata="TitleDocMain" />
        <element xpath="./cat/fs/f[@name='ISBN']/vs/v/text()" metadata="ISBN" />
        <element xpath="./cat/fs/f[@name='Notes']/vs/v/text()" metadata="Note" />
        <element xpath="./cat/fs/f[@name='Publisher']/vs/v/text()" metadata="PublisherName" />
        <element xpath="./cat/fs/f[@name='Language']/vs/v/text()" metadata="DocLanguage" />
        <element xpath="./cat/fs/f[@name='Subjects']/vs/v/text()" metadata="Subject" />
        <element xpath="./cat/fs/f[@name='Abstract']/vs/v/text()" metadata="Abstract" />
        <element xpath="./cat/fs/f[@name='Date of Publication']/vs/v/text()" metadata="PublicationYear" />
        <element xpath="./cat/fs/f[@name='Place of Publication']/vs/v/text()" metadata="PlaceOfPublication" />
    </metadata>

    <person>
        <element xpath="./cat/fs/f[@name='Author']/vs/v/text()" metadata="Author" />
        <element xpath="./cat/fs/f[@name='Photographer']/vs/v/text()" metadata="Photographer" />
        <element xpath="./cat/fs/f[@name='Translator']/vs/v/text()" metadata="Translator" />
    </person>

</config_plugin>

Im Bereich <docstructs> wird das Mapping der einzelnen Dokumententypen festgelegt. Für jeden Wert, der in soutron vorkommen kann, muss ein <docstruct> existieren. Im Attribut soutron wird der Name eingetragen, der im soutron record enthalten ist, in ruleset steht das entsprechende Strukturelement aus dem Regelsatz.

Anschließend wird das Mapping für Personen und Metadaten in <metadata> und <person> konfiguriert. Hier gibt es jeweils eine Liste von <element> mit den beiden Attributen xpath und metadata. In xpath wird ein XPath-Ausdruck konfiguriert, der beschreibt, in welchem Teil des XML-Dokuments der Inhalt erwartet wird, in metadata wird der Name des Metadatums definiert, in das der Inhalt anschließend geschrieben werden soll.

Sudan Memory Übersetzungen

Dieses Statistik-Plugin ermittelt die Aktivität der Bearbeitungen von Übersetzungen innerhalb spezifischer Metadatenfelder.

Übersicht

Name
Wert

Identifier

intranda_statistics_sudan_memory_activity_by_user

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 13:56:59

Einführung

Dieses Statistik-Plugin ermöglicht eine statistische Erfassung der Aktivität von Übersetzern und Bearbeitern, die innerhalb des METS-Dateien spezifische Metadatenfelder bearbeiten. Hierbei werden insbesondere die Übersetzungsarbeiten in den Metadatenfeldern Title (Arabic), Title (English), Description (English) und Description (Arabic) berücksichtigt.

Installation

Zur Installation des Plugins müssen folgende beiden Dateien installiert werden:

/opt/digiverso/goobi/plugins/statistics/plugin_intranda_statistics_sudan-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin_intranda_statistics_sudan-gui.jar

Zusätzlich muss innerhalb der Datenbank die folgende Funktion erstellt werden:

DROP FUNCTION IF EXISTS wordcount;

    DELIMITER $$
    CREATE FUNCTION wordcount(str TEXT CHARSET utf8mb4)
            RETURNS INT
            DETERMINISTIC
            SQL SECURITY INVOKER
            NO SQL
       BEGIN
         DECLARE wordCnt, idx, maxIdx INT DEFAULT 0;
         DECLARE currChar, prevChar BOOL DEFAULT 0;
         SET maxIdx=char_length(str);
         WHILE idx < maxIdx DO
             SET currChar=SUBSTRING(str, idx, 1) RLIKE '[[:alnum:]]';
             IF NOT prevChar AND currChar THEN
                 SET wordCnt=wordCnt+1;
             END IF;
             SET prevChar=currChar;
             SET idx=idx+1;
         END WHILE;
         RETURN wordCnt;
       END
     $$
     DELIMITER ;

Dieser Funktion kann ein UTF8-codierter Text übergeben werden. Der Text wird Zeichen für Zeichen überprüft. Wenn das aktuelle Zeichen ein alnumerisches Zeichen ist (Buchstaben, Zahlen, Punkt, Komma, Buchstaben mit Diakritika, Klammern), das vorherige Zeichen jedoch nicht (Nichts, Leerzeichen, Zeilenumbruch, Tabulator), beginnt an dieser Stelle ein neues Wort und der Wortzähler wird erhöht. Am Ende wird der Wortzähler zurückgegeben.

Überblick und Funktionsweise

Für eine Nutzung dieses Plugins muss der Nutzer über die korrekte Rollenberechtigung verfügen.

Bitte weisen Sie daher der Gruppe die Rolle view_translation_activity zu.

Anschließend kann der Menüpunkt Aktivität Übersetzung und Bearbeitung im Bereich Controlling ausgewählt werden.

Um den Zeitraum der Auswertung zu begrenzen, können die beiden Felder Zeitraum von und Zeitraum bis für das Startdatum und Enddatum genutzt werden. Hier kann ein Datum in der Form YYYY-MM-DD angegeben werden. Beide Angaben sind optional. Wenn das Startdatum nicht ausgefüllt wurde, gilt das Datum, an dem der erste Schritt abgeschlossen wurde. Fehlt das Enddatum, dann wird der aktuelle Zeitpunkt genutzt.

Im Feld Einheit wird festgelegt, in welchen Zeiträumen die Auswertung zusammengefasst werden soll. Hier kann aus den Werten Tage, Monate, Quartale oder Jahre gewählt werden.

Nach Angabe der benötigten Informationen können von diesem Plugin zwei verschiedene Auswertungen generiert werden:

Auswertung: Überblick

Die Auswertung Überblick listet für jeden Zeitraum innerhalb des Start- und Enddatums auf, welcher Nutzer wie viele Arbeitsschritte Translation of Arabic content to English oder Translation of English content to Arabic bearbeitet hat. Dabei wird ebenfalls angegeben, wie viele Worte in den Feldern Title (Arabic), Title (English), Description (English) und Description (Arabic) in diesen Schritten insgesamt erfasst wurden.

Auswertung: Detaillierte Anzeige

Die Detaillierte Anzeige listet jeden Arbeitsschritt Translation of Arabic content to English oder Translation of English content to Arabic auf, der innerhalb des angegebenen Start- und Enddatums abgeschlossen wurde. Zu jedem Arbeitsschritt wird außerdem der Nutzer, der zugehörige Vorgang, sowie der Inhalt und die Anzahl der Wörter aus den vier Feldern Title (Arabic), Title (English), Description (English) und Description (Arabic) angezeigt.

Die beiden Auswertungen lassen sich auch jeweils als Excel-Datei herunterladen.

Weitere technische Informationen

Im folgenden werden einige SQL-Statements aufgeführt, die für die Arbeit mit den Daten im Rahmen dieses Plugins nützlich sein können.

SQL query über eine Gesamtübersicht:

    SELECT
    DATE_FORMAT(s.BearbeitungsEnde, '%Y-%m') AS plugin_statistics_sudan_timeRange,
    WORDCOUNT(GROUP_CONCAT(m1.value SEPARATOR ' ')) AS plugin_statistics_sudan_titleCount,
    WORDCOUNT(GROUP_CONCAT(m2.value SEPARATOR ' ')) AS plugin_statistics_sudan_titlearabicCount,
    WORDCOUNT(GROUP_CONCAT(m3.value SEPARATOR ' ')) AS plugin_statistics_sudan_descriptionCount,
    WORDCOUNT(GROUP_CONCAT(m4.value SEPARATOR ' ')) AS plugin_statistics_sudan_descriptionarabicCount,
    COUNT(s.Titel) AS plugin_statistics_sudan_workflowTitleCount,
    CONCAT(u.Nachname, ', ', u.Vorname) AS plugin_statistics_sudan_userName
    FROM
    metadata m1
        JOIN
    metadata m2 ON m1.processid = m2.processid
        JOIN
    metadata m3 ON m1.processid = m3.processid
        JOIN
    metadata m4 ON m1.processid = m4.processid
        JOIN
    schritte s ON m1.processid = s.ProzesseID
        LEFT JOIN
    benutzer u ON s.BearbeitungsBenutzerID = u.BenutzerID
    WHERE
    m1.name = 'TitleDocMain'
        AND m2.name = 'TitleDocMainArabic'
        AND m3.name = 'ContentDescription'
        AND m4.name = 'ContentDescriptionArabic'
        AND s.typMetadaten = TRUE
        AND s.Bearbeitungsstatus = 3
        AND s.titel like '%ranslat%'
        AND s.BearbeitungsEnde BETWEEN '2019-01-01' AND '2020-12-31'
    GROUP BY plugin_statistics_sudan_timeRange, plugin_statistics_sudan_userName;

SQL query für einen detaillierten Bericht:

    SELECT
    m1.processid,
    m1.value AS plugin_statistics_sudan_title,
    WORDCOUNT(m1.value) AS plugin_statistics_sudan_titleCount,
    m2.value AS plugin_statistics_sudan_titlearabic,
    WORDCOUNT(m2.value) AS plugin_statistics_sudan_titlearabicCount,
    m3.value AS plugin_statistics_sudan_description,
    WORDCOUNT(m3.value) AS plugin_statistics_sudan_descriptionCount,
    m4.value AS plugin_statistics_sudan_descriptionarabic,
    WORDCOUNT(m4.value) AS plugin_statistics_sudan_descriptionarabicCount,
    s.Titel AS plugin_statistics_sudan_workflowTitle,
    p.Titel AS plugin_statistics_sudan_processTitle,
    CONCAT(u.Nachname, ', ', u.Vorname) AS plugin_statistics_sudan_userName
    FROM
    metadata m1
        JOIN
    metadata m2 ON m1.processid = m2.processid
        JOIN
    metadata m3 ON m1.processid = m3.processid
        JOIN
    metadata m4 ON m1.processid = m4.processid
        JOIN
    schritte s ON m1.processid = s.ProzesseID
        LEFT JOIN
    prozesse p ON s.ProzesseID = p.ProzesseID
        LEFT JOIN
    benutzer u ON s.BearbeitungsBenutzerID = u.BenutzerID
    WHERE
    m1.name = 'TitleDocMain'
        AND m2.name = 'TitleDocMainArabic'
        AND m3.name = 'ContentDescription'
        AND m4.name = 'ContentDescriptionArabic'
        AND s.typMetadaten = TRUE
        AND s.titel like '%ranslat%'
        AND s.Bearbeitungsstatus = 3
        AND s.BearbeitungsEnde BETWEEN '2019-01-01' AND '2020-12-31';

MARC Import

OPAC Plugin für die Datenübernahme von MARC Datensätzen

Übersicht

Name
Wert

Identifier

intranda_opac_marc

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 12:02:11

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Plugins. Mit Hilfe dieses Plugins können Daten aus einem externen System abgefragt und in Goobi übernommen werden. Der Katalog muss eine API bzw. URL haben, über die Datensätze als OPAC ausgeliefert werden können.

Installation

Das Plugin besteht aus einer Datei:

plugin_intranda_opac_marc-base.jar

Diese Datei muss für den Nutzer tomcat lesbar an folgendem Pfad installiert werden:

/opt/digiverso/goobi/plugins/opac/plugin_intranda_opac_marc-base.jar

Überblick und Funktionsweise

Wenn in Goobi nach einem Identifier gesucht wird, wird im Hintergrund eine Anfrage an die konfigurierte URL gestellt.

Nach der Abfrage des eigentlichen Datensatzes aus dem Katalog erfolgt das Mapping der Metadaten gemäß der im Regelsatz konfigurieren Regeln.

Konfiguration

Das Plugin selbst verfügt nicht über keine eigene Konfiguration. Stattdessen erfolgt sämtliche Konfiguration über Anpassungen innerhalb von Goobi workflow bzw. der zugehörigen Regelsätze.

In der Datei goobi_opac.xml muss die Schnittstelle zum gewünschten Katalogsystem bekannt gemacht werden. Dies geschieht durch einen Eintrag, der wie folgt aussieht:

<catalogue title="MARC OPAC">
    <config address="http://opac.intranda.com/sru/DB=1" database="1" ucnf="XPNOFF=1"
      description="Description of the catalogue" iktlist="IKTLIST.xml" port="80" opacType="GBV-MARC" />
    <searchFields>
        <searchField label="Identifier" value="12" />
        <searchField label="ISBN" value="7" />
        <searchField label="ISSN" value="8" />
    </searchFields>
</catalogue>

Das Attribut title enthält den Namen, unter dem der Katalog in der Nutzeroberfläche ausgewählt werden kann, address die URL zum API-Endpoint und database die zu verwendende Datenbank. Das Attribut opacType muss auf den Wert GBV-MARC gesetzt sein.

Das Mapping der Inhalte eines MARC-Datensatzes erfolgt innerhalb des jeweilig verwendeten Regelsatzes von Goobi workflow. Genauere Informationen, wie dieses Mapping konfiguriert werden kann finden sich innerhalb der UGH-Dokumentation hier:

Datenimport für Wohnbauförderungsfond Österreich

Zeitgesteuertes Plugin für den wiederholten Import von Ordnerstrukturen aus einem S3 Speicher für den Import von Wohnbauförderungsakten in Österreich.

Übersicht

Name
Wert

Identifier

intranda_quartz_bka_wohnbau

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

18.07.2024 10:58:17

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des zeitgesteuerten Plugins für den Import von Wohnbauförderungsakten in Österreich nach Goobi workflow. Die Metadaten werden hierbei aus einer bereitgestellten JSON-Datei übernommen und die zugehörigen PDF-Dateien extrahiert. Die Bereitstellung der Akten erfolgt über einen S3 Speicher in mehreren Lieferungen, die jeweils innerhalb der METS-Dateien berücksichtigt werden.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

/opt/digiverso/goobi/plugins/GUI/plugin-quartz-bka-wohnbau-job.jar
/opt/digiverso/goobi/config/plugin_intranda_quartz_bka_wohnbau.xml

Nach der Installation steht das Plugin innerhalb des Menüpunkts Administration - Regelmäßige Aufgaben zur Verfügung.

Überblick und Funktionsweise

Bei diesem Plugin handelt es sich um ein sogenanntes Quartz-Plugin für eine wiederholte automatische Ausführung. Bei jedem Aufruf geht das Plugin von aus, dass konfigurierte Collections innerhalb eines S3-Buckets Verzeichnisse beinhalten. Jedes Verzeichnis entspricht hierbei einer Lieferung für eine ggf. schon bestehende Akte. Das nachfolgende Beispiel enspricht hierbei der zweiten Lieferung für die Akte ST-1431

/BWSF/ST-1431_02

Innerhalb einer solchen Lieferung liegen mehrere Daten vor: - eine json-Datei mit Metadaten - eine oder mehrere PDF-Dateien sowie Volltext-Dateien für jedes Dokument einer Lieferung

Bei Ausführung des Plugins werden alle vorhandenen Lieferungen durchlaufen und es wird geprüft, ob diese bereits in Goobi eingespielt wurden. Sind sie noch nicht eingespielt, wird die Akte als neuer Vorgang erzeugt, wenn sie nicht bereits vorhanden ist. Der Vorgang wird dabei auf Basis der konfigurierten Produktionsvorlage und innerhalb des konfigurierten Projektes angelegt. Aus der json-Datei werden alle Metadaten so in die METS-Datei übernommen, wie diese in der Konfigurationsdatei festgelegt sind.

Für die jeweilige Lieferung wird innerhalb der bestehenden oder neu angelegten Akte ein neues Strukturelement erzeugt, dem dann die Metadaten der Lieferung zugewiesen werden. Innerhalb der Lieferung wird anschließend für jede bereitgestellte PDF-Datei ein Dokument erzeugt, dem die Metadaten des Dokuments zugewiesen werden. Jedes Dokument wird dabei von der gelieferten PDF-Datei in Bild-Dateien konvertiert und die Volltexte im ALTO-Format extrahiert. Die dabei eingespielten Bild-Dateien erhalten einen Präfix für die Angabe der Liefernummer und einen Suffix für die jeweilige Seitenzahl innerhalb der PDF-Datei aus der sie stammen.

Die Bilddatei werden innerhalb des master-Verzeichnisses des Vorgangs gespeichert. Die Volltext-Dateien landen im alto-Verzeichnis in dem Ordner ocr. Die json-Datei wird innerhalb des import-Verzeichnisses gespeichert.

Konfiguration

Die Konfiguration erstreckt sich über zwei Bereiche. Einerseits wird die Funktion des Plugins in dessen Konfigurationsdatei festgelegt. Andererseits erfolgt in einer zentralen Goobi-Konfiguration die Zeitsteuerung, die festlegt, wann dieses Plugin regelmäßig gestart werden soll, um automatisch zu laufen.

Konfiguration des Plugins

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_quartz_bka_wohnbau.xml wie hier aufgezeigt:

<config>

	<!-- collections to import, can exist multiple times -->
	<collection>
	
		<!-- name of the collection -->
		<name>BWSF</name>
	
		<!-- Goobi Project to assign -->
		<project>Archive_Project</project>
	
		<!-- process template (workflow) to use for the process creation -->
		<template>Sample_Workflow</template>
	
		<!-- Endpoint for the S3 server with URL and port -->
		<s3endpoint>http://127.0.0.1:9000</s3endpoint>
	
		<!-- User for the S3 access -->
		<s3user>goobi</s3user>
		
		<!-- Password for the S3 access -->
		<s3password>goobigoobi</s3password>

		<!-- Bucket name to use as sourcee -->
		<s3bucket>bwsf</s3bucket>
		
		<!-- Prefix (folder) to use where the content is located, can be empty -->
		<s3prefix></s3prefix>
		
	</collection>

	<!-- second collections to import -->
	<collection>
		<name>WWF</name>
		<project>Manuscript_Project</project>
		<template>Sample_Workflow</template>
		<s3endpoint>http://127.0.0.1:9000</s3endpoint>
		<s3user>goobi</s3user>
		<s3password>goobigoobi</s3password>
		<s3bucket>wwf</s3bucket>
		<s3prefix></s3prefix>
	</collection>
	
	
	<!-- mapping for the individual metadata fields from JSON to ruleset fields -->
	<mapping>
	
		<!-- per record -->
		<recordType>BkaFile</recordType>
		<identifier>CatalogIDDigital</identifier>
		<collection>singleDigCollection</collection>
		<title>TitleDocMain</title>
		<fondname>BkaFondname</fondname>
	    <bundesland>BkaBundesland</bundesland>
	    <geschaeftszahl>BkaGeschaeftszahl</geschaeftszahl>
	    <bezugszahlen>BkaBezugszahlen</bezugszahlen>
	    <anmerkungRecord>BkaAnmerkung</anmerkungRecord>
	    <grundbuchKg>BkaGrundbuchKg</grundbuchKg>
	    <grundbuchEz>BkaGrundbuchEz</grundbuchEz>
	    <adresseGemeindKZ>BkaAdresseGemeindKZ</adresseGemeindKZ>
	    <adresseGemeindename>BkaAdresseGemeindeName</adresseGemeindename>
	    <adresseEz>BkaAdresseEz</adresseEz>
	    <adresseOrt>BkaAdresseOrt</adresseOrt>
	    <adressePlz>BkaAdressePlz</adressePlz>
	    <adresseHauptAdresse>BkaAdresseHauptadresse</adresseHauptAdresse>
	    <adresseIdentAdressen>BkaAdresseIdentAdressen</adresseIdentAdressen>
	    <adresseStrasse>BkaAdresseStrasse</adresseStrasse>
	    <adresseTuer>BkaAdresseTuer</adresseTuer>
	    <adresseStiege>BkaAdresseStiege</adresseStiege>
	    <adresseHistorischeAdresse>BkaAdresseHistorischeAdresse</adresseHistorischeAdresse>
	    <adresseAnmerkung>BkaAdresseAnmerkung</adresseAnmerkung>
	    <detailsAnmerkungen>BkaDetailsAnmerkungen</detailsAnmerkungen>
	    <detailsAuffaelligkeiten>BkaDetailsAuffaelligkeiten</detailsAuffaelligkeiten>
	    <detailsDarlehensNehmer>BkaDetailsDarlehensnehmer</detailsDarlehensNehmer>
	    <detailsDarlehensSchuld>BkaDetailsDarlehensschuld</detailsDarlehensSchuld>
	    <detailsRueckzahlung>BkaDetailsRueckzahlung</detailsRueckzahlung>
	    <detailsBksAnmerkung>BkaDetailsBksAnmerkung</detailsBksAnmerkung>
    		
		<!-- per delivery -->
		<deliveryType>BkaDelivery</deliveryType>
		<deliveryNumber>BkaDeliveryNumber</deliveryNumber>
	    <deliveryDate>BkaDeliveryDate</deliveryDate>    
		    
		<!-- per document -->
		<documentType>BkaDocument</documentType>
		<scanId>BkaFileScanId</scanId>
	    <fuehrendAkt>BkaFileFuehrendAkt</fuehrendAkt>
	    <dokumentArt>BkaFileDokumentArt</dokumentArt>
	    <ordnungszahl>BkaFileOrdnungszahl</ordnungszahl>
	    <ordnungszahlMappe>BkaFileOrdnungszahlMappe</ordnungszahlMappe>
	    <filename>BkaFileFilename</filename>
	    <foldername>BkaFileFoldername</foldername>
	    <filesize>BkaFileFilesize</filesize>
	    <md5>BkaFileMd5</md5>
	    <mimetype>BkaFileMimetype</mimetype>
	
	</mapping>
	
	<!-- Select the command line tool which should be used to create the images. Either 'ghostscript' or 'pdftoppm'. -->
	<imageGenerator>pdftoppm</imageGenerator>						
	
	<!-- A parameter to add to the generator call. Repeatable -->
	<imageGeneratorParameter>-cropbox</imageGeneratorParameter>
</config>

Konfiguration der Zeitsteuerung

Das Plugin kann automatisch wiederholt oder auch manuell ausgeführt werden. Die manuelle Ausführung ist möglich, indem es innerhalb des Menüpunkts Administration - Regelmäßige Aufgaben aufgerufen wird. Die automatische Ausführung hingegen muss innerhalb der Konfigurationsdatei goobi_config.properties erfolgen. Dafür muss die Konfiguration folgendermaßen aussehen, wenn das Plugin einmal zu jeder Stunde ausgeführt werden soll:

intranda_quartz_bka_wohnbau=0 0 */1 * * ?

Beispielhaft sind hier einige weitere Konfiguration für eine andere Ausführungszeit aufgeführt (Cron-Syntax):

# Ausführung alle 5 Minuten
intranda_quartz_exportEadFile=0 */5 * * * ?

# Ausführung jede Stunde
harvesterJob=0 0 */1 * * ? 

# Ausführung täglich um Mitternacht 
dailyDelayJob=0 0 0 * * ? 

ALMA API Plugin

Dieses Plugin wurde implementiert, um mit ALMA zu kommunizieren. Dank seines allgemeinen Designs kann es aber auch für die Anbindung an andere Systemen über REST verwendet werden.

Übersicht

Einführung

Dieses Plugin wird verwendet, um Anfragen an REST-APIs, z.B. ALMA, zu senden und die zurückgegebenen Antworten zu verarbeiten. Mehrere Befehle können konfiguriert werden, um eine komplizierte Aufgabe zusammenzustellen. Das Plugin führt diese Befehle nacheinander in definierten Reihenfolge aus.

Installation

Zur Nutzung des Plugins muss die Datei plugin_intranda_step_alma_api-base.jar an folgendem Ort gespeichert werden:

Die Konfigurationsdatei plugin_intranda_step_alma_api.xml wird unter folgendem Pfad erwartet:

Überblick und Funktionsweise

Dieses Plugin wird in den Workflow so integriert, dass es automatisch ausgeführt wird. Eine manuelle Interaktion mit dem Plugin ist nicht notwendig. Zur Verwendung innerhalb eines Arbeitsschrittes des Workflows sollte es wie im nachfolgenden Screenshot konfiguriert werden.

Konfiguration

Die Konfiguration des Plugins ist beispielhaft folgendermaßen aufgebaut:

Allgemeine Konfigurationen

Die Konfiguration des Plugins erfolgt wie hier beschrieben:

Konfigurationen innerhalb von Befehlsblöcken

Die Konfiguration innerhalb der Befehlsblöcke erfolgt wie hier beschrieben:

Archivierung von Bildordnern

Goobi Step Plugin für das Kopieren von Bildordnern auf einen externen Speicher

Übersicht

Einführung

Dieses Step Plugin für Goobi workflow kopiert Bildordner auf einen externen Speicher, der mittels sftp (ssh) angebunden ist und legt eine Datei an, die Goobi workflow dazu veranlasst eine Warnung im Vorgang anzuzeigen. Die Warnung wird in den Vorgangsdetails sowie im Metadateneditor angezeigt. Als Alternative zu sftp kann auch ein s3 Bucket eingebunden werden.

Installation

Das Plugin besteht aus der folgenden Datei:

Diese Datei muss in dem richtigen Verzeichnis installiert werden, so dass diese nach der Installation an folgendem Pfad vorliegt:

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

Überblick und Funktionsweise

Zur Inbetriebnahme des Plugins muss dieses für einen oder mehrere gewünschte automatische Aufgaben im Workflow aktiviert werden. Dies erfolgt wie im folgenden Screenshot aufgezeigt durch Auswahl des Plugins intranda_step_archiveimagefolder aus der Liste der installierten Plugins.

Das Plugin kopiert die Dateien aus dem konfigurierten Ordner auf den SSH-Server oder den S3 Bucket, schreibt eine XML-Datei mit den Infos wo die Dateien liegen in den Vorgangsordner und löscht (wenn so konfiguriert) danach die Bilder auf dem Goobi-Speicher und schließt den Schritt.

Die Bilder können danach mit dem Plugin goobi-plugin-administration-restorearchivedimagefolder wieder hergestellt werden.

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_step_archiveimagefolder.xml und kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

Für die Authentifizierung am ssh-Server wird an den üblichen Stellen ($USER_HOME/.ssh) nach public keys gesucht. Andere Authentifizierungsmethoden wie username/password sind bisher nicht vorgesehen.

Bei der Nutzung von s3 muss der s3 Endpoint, sowie der zu nutzende bucket Name angegeben werden. Optional kann ein Präfix gesetzt werden, wenn die Archivierung nicht direkt im Root des Buckets erfolgen soll. S3AccessKeyID und S3SecretAccessKey enthalten die Zugangsdaten.

Die Einstellung <deleteAndCloseAfterCopy>false</deleteAndCloseAfterCopy> ist für den Fall gedacht, dass die Dateien auf dem SSH-Server erst einmal in einem Buffer gespeichert und danach noch auf ein Band geschrieben werden. In diesem Fall kann der Arbeitsschritt offen bleiben und durch einen Callback des Bandspeicher-Systems geschlossen werden. Der Callback ist bisher für keinen Bandspeicher implementiert, lässt sich jedoch durch die Standard Goobi workflow REST API abbilden.

Libsafe Integration

Dies ist eine technische Dokumentation für die Integration der Libsafe Langzeitarchivierung an Goobi workflow.

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Plugins zum Ingest in die Langzeitarchivierung Libsafe.

Installation

Um den Libsafe Ingest nutzen zu können, müssen folgende Dateien installiert werden:

Im Workflow müssen zwei neue Arbeitsschritte eingefügt werden. Als erstes ein automatischer Schritt, der das auf E-ARK basierende BagIt Submission Information Package (SIP) erstellt, hier muss als Plugin intranda_step_bagcreation ausgewählt werden. Anschließend wird ein zweiter automatischer Arbeitsschritt benötigt, der die eigentliche Datenlieferung übernimmt. Hierfür wird das Plugin intranda_step_bagsubmission benötigt.

Überblick und Funktionsweise

Dieses Plugin wird in den Workflow so integriert, dass es automatisch ausgeführt wird. Eine manuelle Interaktion mit dem Plugin ist nicht notwendig. Zur Verwendung innerhalb eines Arbeitsschrittes des Workflows sollte es wie im nachfolgenden Screenshot konfiguriert werden.

Die Langzeitarchivierung besteht aus mehreren Teilschritten:

Ordnerstruktur

Als erstes wird die für das SIP notwendige Datei- und Ordnerstruktur erstellt.

Dabei werden innerhalb eines root-Ordners ein metadata Ordner und ein representations Ordner erstellt. Innerhalb des metadata Ordners gibt es die Unterordner descriptive und other, um MODS-Dateien sowie andere Formate wie die DFG-Viewer-extensions zu speichern. Innerhalb von representations gibt es Unterordner für verschiedene Formate, die jeweils einen Unterordner data enthalten, in dem sich die Dateien befinden.

Metadaten

Zu jedem Format gehört eine METS-Datei, in der die Dateien im data-Ordner aufgelistet sind. Jedes Format wird in einer eigenen METS-Datei beschrieben, die je eine fileGroup und eine structMap enthalten.

Die Metadaten werden in MODS beschrieben. Hierbei gibt es im descriptive Ordner pro Strukturelement eine eigene Datei. Diese Datei enthält alle Metadaten, für die im Regelsatz ein Exportmapping definiert wurde. Da es auch Metadaten geben kann, die im regulären Export nicht exportiert werden sollen, bei der Langzeitarchivierung jedoch ebenfalls archiviert werden müssen, besteht die Option, in der Konfigurationsdatei weitere Exportparameter zu definierten, die nur beim Libsafe-Export genutzt werden.

Technische oder administrative Metadaten werden im Ordner other hinterlegt. Anschließend wird im root-Ordner eine METS-Datei erstellt, die auf die anderen erstellten METS, MODS und AMD verweist.

SIP Erstellung

Die vorbereiteten Daten werden nun zu einem SIP BagIt zusammengefasst. Hierzu werden alle Dateien mit einer Checksumme versehen und in der Datei manifest-sha256.txt aufgelistet. bagit.txt enthält Informationen zur Bag-Version und dem Encoding und bag-info.txt enthält Informationen zum Ersteller des Bags, der Größe, Payload und dem Erstellungsdatum, sowie einige Angaben zur Übermittlung des Ingest-Status zurück an Goobi.

Als letztes wird die tagmanifest-sha256.txt Datei erstellt. Diese enthält die Namen und Checksummen der zuvor genannten 3 Dateien.

Tar Generierung

Die zuvor vorbereiteten Ordner und Dateien werden zu einer Tar-Datei zusammgengefasst und im Vorgangsordner gespeichert.

Datenlieferung

Die Datenlieferung erfolgt per SFTP-Upload. Hierzu wird die zuvor erzeugte SIP-Datei auf den entfernten Server hochgeladen. Alternativ kann der Export in ein lokales Verzeichnis auf dem Server oder einen Netzwerk-Share durchgeführt werden. Der Dateiname entspricht dem Bag-Namen und dem Suffix _bag.tar.

Rückmeldung an Goobi

Die Statusmeldung zurück an Goobi findet via Rest-API-Aufrufen statt. Hierzu gibt es verschiedene Endpoints, um die einzelnen Informationen zu liefern. Die Rest-API kann mit XML oder JSON umgehen. Hierzu muss bei GET-Abfragen der Accept header und bei anderen Anfragen Content-Type auf application/xml oder application/json gesetzt werden. Fehlt die Angabe, wird der default JSON genutzt.

Die Authentifizierung kann auf 2 Arten erfolgen. Die notwendigen Methoden können in goobi_rest.xml für eine IP Adresse freigeschaltet werden, dann klappen die Anfragen von diesem einen Server, oder man generiert einen API-Token. Für diesen API-Token können dann einzelne Methoden auch ohne IP-Adressen Beschränkung erlaubt werden. Die Authentifizierung erfolgt dann via HTTP Header Authorization: Basic <TOKEN>.

Bei allen Anfragen wird die processid benötigt. Diese Information wird an zwei Stellen übermittelt. Zum einen ist sie Teil der Metadaten und kann in der MODS-Datei im Feld <mods:identifier type="GOOBI"> gefunden werden, alternativ wird sie im Feld Process-ID in bag-info.txt übermittelt.

Übermittlung der Libsafe ID

Um die generierte Libsafe ID in Goobi bekannt zu machen, muss eine POST Anfrage an /process/<process id>/metadata gestellt werden.

Erfolgs-/Fehlermeldung

Eine Meldung im Vorgangsjournal kann via POST Anfrage an /process/<process id>/journal erstellt werden.

Die Variable USERNAME und MESSAGE können beliebigen Text beinhalten, TYPE muss ein Wert aus der Liste error, warn, info oder debug kommen.

Statusänderung

Um den Ingest-Vorgang in Goobi abzuschließen, muss die ID des zu schließenden Schrittes bekannt sein. Diese ID lässt sich über die Rest-API ermitteln, indem ein GET-Request nach allen Schritten des Vorgangs gestellt wird.

Aus der Antwort kann entweder über steptitle oder status der richtige Schritt und dessen ID gefunden werden. Anschließend kann ein PUT Request den Schritt abschließen:

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_step_bagcreation.xmldie hier erläutert wird:

Der Bereich <config> ist beliebig oft wiederholbar und erlaubt dadurch unterschiedliche Metadatenkonfigurationen oder den Ingest an verschiedene Ziele für verschiedene Projekte.

Die Unterelemente <project> und <step> werden zur Prüfung genutzt, ob der vorliegende Block für den aktuellen Schritt genutzt werden soll. Dabei wird zuerst geprüft, ob es einen Eintrag gibt, der sowohl den Projektnamen als auch den Schrittenamen enthält. Ist dies nicht der Fall, wird nach einem Eintrag für durch den * gekennzeichnete, beliebige Projekte und dem verwendeten Schrittenamen gesucht. Wenn dazu ebenfalls kein Eintrag gefunden wurde, erfolgt eine Suche nach dem Projektnamen und beliebigen Schritten, ansonsten greift der default-Block, bei dem sowohl <project> als auch <step> * enthalten.

Hier werden die verschiedenen <mets:fileGrp> Elemente definiert. Jede Filegroup entspricht einem Dateiformat, das bei der Lieferung berücksichtigt wird. Jedes definierte Element enthält die Attribute folder, fileGrpName, prefix, suffix und mimeType, sowie useOriginalFileExtension.

In folder wird angegeben, welcher Ordner verwendet werden soll. Zuerst wird geprüft, ob der Ordner existiert und Dateien enthält. Wenn dies der Fall ist, wird ein Ordner in der SIP-Ordnerstruktur erstellt, der dem fileGrpName entspricht. Diese Angabe wird auch als USE innerhalb der METS Datei verwendet. Die einzelnen <mets:file> Angaben innerhalb der fileGroup werden aus prefix, dem eigentlichen Dateinamen und suffix zusammengesetzt:

Optional kann mittels useOriginalFileExtension="true" festgelegt werden, dass file Extension und MIMETYPE automatisch für jede Datei individuell ermittelt werden. Dies funktioniert sowohl für Dateien direkt im angegebenen Ordner als auch für Dateien in Unterordnern.

Im Anschluss erfolgt die Konfiguration der einzelnen Parameter, die auch aus der Projektkonfiguration bekannt sind. Da hier unter Umständen andere Angaben als im regulären Export zum Goobi viewer notwendig sind, können hier abweichende Angaben vorgenommen werden:

Der Bereich <submissionParameter> beinhaltet Angaben zum Besitzer der Daten, die in bag-info.txt geschrieben werden.

Neben diesen Feldern enthält die Datei bag-info.txt noch eine Reihe weiterer Informationen, wie Erstellungsdatum, Größe des Sets und Oxum, die jedoch nicht konfiguriert werden müssen, da dise automatisch ermittelt werden.

Der Bereich <additionalMetadata> dient zur Erweiterung des Regelsatzes. Hier kann ein Mapping für Metadaten, Körperschaften, Personen oder Gruppen hinzugefügt werden, für die im Regelsatz kein Exportmapping vorgesehen ist, weil diese Informationen im regulären Export zum Goobi viewer nicht veröffentlicht werden sollen.

Die Syntax ist dabei identisch zum MODS-Mapping im Regelsatz.

Sofern auch das Archiv-Management installiert ist, kann auch der zum Datensatz gehörende Bestand mit archiviert werden. Dazu muss mittels archiveIdMETS und archiveIdEAD angegeben werden, in welchen Feldern die ID des Knotens in der METS Datei und im Knoten zu finden ist. Wenn das Feld existiert, wird mit Hilfe der ID der Knoten in allen Beständen gesucht. Wurde der Knoten gefunden, wird der komplette Bestand in den other Ordner exportiert.

Als letztes werden die Zugangsdaten für den SFTP-Transfer konfiguriert.

Die Authentifizierung kann entweder mittels Username und Passwort oder mittels private/public Key erfolgen. Um sich mittels Passwort zu authentifizieren, bleibt das Feld <keyfile> leer. Ansonsten wird der dort konfigurierte Key verwendet.

<hostname> und <port> beschreiben den Zugriff auf den entfernten Server. Mittels <remoteFolder> kann ein Zielordner auf dem Server angegeben werden, falls der Upload nicht in das root Verzeichnis erfolgen soll. <knownHostsFile> enthält den Pfad zu einer known_hosts Datei, in der ein Fingerprint des hosts enthalten sein muss.

Oberfläche von Goobi workflow zur Abfrage des Katalogs

Ohne korrekte Berechtigung ist das Plugin nicht nutzbar
Korrekt zugewiesene Rolle für die Nutzer
Aufrufen des Plugins im Menü
Auswahl des Zeitraums
Anzeige der Ergebnisse mit Möglichkeit für den Download

Oberfläche von Goobi workflow zur Abfrage des Katalogs

Plugin innerhalb der Nutzeroberfläche
Name
Wert
Wert
Beschreibung
Wert
Beschreibung
Name
Wert
Name
Wert

Mithilfe dieses Plugins für Goobi können die in Goobi vorliegenden Metadaten Objekte, sowie zusätzliche beschreibende Dokumente zu einem - zusammengefasst und auf den Libsafe Server transferiert werden.

Die einzelnen Parameter und ihre Funktion werden im beschrieben.

https://github.com/intranda/goobi-plugin-quartz-heris
https://docs.goobi.io/ugh-de/4/4.1/4.1.3
/opt/digiverso/goobi/plugins/step/plugin_intranda_step_alma_api-base.jar
/opt/digiverso/goobi/config/plugin_intranda_step_alma_api.xml
<config_plugin>
    <!--
        order of configuration is:
          1.) project name and step name matches
          2.) step name matches and project is *
          3.) project name matches and step name is *
          4.) project name and step name are *
	-->
    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>

        <!-- Base URL -->
        <url>https://api-eu.hosted.exlibrisgroup.com</url>

        <!-- API key -->
        <api-key>CHANGE_ME</api-key>

        <!-- Variables that can be used for following commands.
              @name: name of the variable, e.g. VARIABLE. To use this variable's value, one can simply use {$VARIABLE}.
              @value: value to initialize this variable. It can be plain string value, or a Goobi variable, e.g. {meta.NAME} for a Metadata named NAME.
         -->
        <variable name="MMS_ID" value="{meta.CatalogIDDigital}" />
        <!-- There can be multiple variables defined before all commands. -->
        <variable name="SIGNATURE" value="{meta.shelfmarksource}" />

        <!-- A command is a step to perform. There can be several commands configured, and if so, they will be run one by one in the same order as they are defined.
              @method: get | put | post | patch
              @accept: json | xml. Used to set up the header parameter 'Accept'. OPTIONAL. DEFAULT json.
              @content-type: json | xml. Used to set up the header parameter 'Content-type'. OPTIONAL. DEFAULT json.
              @endpoint: raw endpoint string without replacing the placeholders enclosed by {}. For every placeholder say {PLACEHOLDER}, one has to configure it in a
                                sub-tag, and in our example it would be <PLACEHOLDER>. Options for values of these sub-tags are:
                                - plain text value
                                - any variable defined by a <variable> tag before all <command> blocks
                                - any variable defined by a <target> sub-tag of any previous <command> block
        -->      
        <command method="get" accept="json" content-type="json" endpoint="/almaws/v1/bibs/{mms_id}/holdings/ALL/items">
        	<!-- define the value of the placeholder {mms_id} using the variable named MMS_ID -->
        	<mms_id>{$MMS_ID}</mms_id>

        	<!-- Filter condition that is to be applied on the REST call response. OPTIONAL.
        	      @key: JSON path from which the values are to be fetched for the filtering process
        	      @fallback: JSON path that shall be used when the JSON path configured by @key contains no value. OPTIONAL.
        	      @value: value to be compared with, which can be a plain text value, or a variable defined previously in the format {$VARIABLE}
        	      @alt: alternative option if there is no match found. Options are: all | first | last | random | none. OPTIONAL.
                      - all: filter nothing out, search the whole JSONObject for the following targets
                      - first: get the first JSONObject related to the common heading path shared by filter and targets, and search for targets within it
                      - last: get the last JSONObject related to the common heading path shared by filter and targets, and search for targets within it
                      - random: get a random JSONObject related to the common heading path shared by filter and targets, and search for targets within it
                      - none: filter everything out and stop searching. DEFAULT.
        	 -->
        	<filter key="item.item_data.alternative_call_number" fallback="item.holding_data.permanent_call_number" value="{$SIGNATURE}" alt="all" />

        	<!-- Target values that is to be retrieved from the REST call response and saved as a variable. OPTIONAL.
        	      @var: name of the variable that is to be used to save the target values retrieved.
                      If the variable was already defined before, then its value will be updated. Otherwise a new variable under this name will be created.
        	      @path: JSON path from where values are to be retrieved.
        	 -->
        	<target var="ITEM_PID" path="item.item_data.pid" />

        	<!-- There can be multiple targets configured. -->
        	<!-- In this example, the new variable will be named HOLDING_ID and it can be reused in the following steps using {$HOLDING_ID}. -->
        	<target var="HOLDING_ID" path="item.holding_data.holding_id" />
        </command>

        <command method ="post" endpoint="/almaws/v1/bibs/{mms_id}/holdings/{holding_id}/items/{item_pid}">
        	<!-- define the value of the placeholder {mms_id} using the variable named MMS_ID -->
        	<mms_id>{$MMS_ID}</mms_id>
        	<!-- define the value of the placeholder {holding_id} using the variable named HOLDING_ID -->
        	<holding_id>{$HOLDING_ID}</holding_id>
        	<!-- define the value of the placeholder {item_pid} using the variable named ITEM_PID -->
        	<item_pid>{$ITEM_PID}</item_pid>

          <!-- A parameter tag can be used to define parameters that shall be sent by the REST request. There can be multiple parameters configured. OPTIONAL.
                  @name: parameter name
                  @value: parameter value, which can only be plain text values here
            -->
        	<parameter name="op" value="scan" />
        	<parameter name="library" value="" />
        	<parameter name="department" value="InDigiZ_Dep" />
        	<parameter name="work_order_type" value="InDigiZ" />
        	<parameter name="done" value="false" />
        </command>

        <!-- A save tag is used to define an entry that is to be saved after running all previous commands. OPTIONAL.
              @type: type of the entry, OPTIONS are property | metadata
                         - property: save the entry as a process property
                         - metadata: save the entry as a metadata
              @name: name of the entry, which means
                           - property name if @type is "property"
                           - metadata type name if @type is "metadata"
              @value: value of the new process property, possible values are
                           - a plain text value
                           - a variable defined before all <command> blocks via a <variable> tag
                           - a variable defined within some <command> block via a <target> tag
              @choice: indicates how many items should be saved into this new property, OPTIONS are first | last | random, or any non-blank strings following a colon.
                           - first: save only the first one among all retrieved values
                           - last: save only the last one among all retrieved values
                           - random: save a random one from all retrieved values
                           - For any non-blank strings following a colon: the substring following this colon will be used as a whole delimiter to combine all results.
                           - For all other cases, including the case where there is only one single colon configured: all results will be combined using commas.
              @overwrite: true if the old property named so should be reused, false if a new property should be created, DEFAULT false.
        -->     
        <save type="property" name="holding_id" value="{$HOLDING_ID}" choice="first" overwrite="true" />
        <!-- There can be multiple save tags configured. -->
        <save type="property" name="item_pid" value="{$ITEM_PID}" choice="first" overwrite="true" />

    </config>

    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>upload marc and portfolio</step>

        <!-- Base URL -->
        <url>https://api-eu.hosted.exlibrisgroup.com</url>

        <!-- API key -->
        <api-key>CHANGE_ME</api-key>

        <variable name="MARC_FOLDER" value="/opt/digiverso/g2g/workspace/workflow/marcexport/{processid}" />
        <variable name="PORTFOLIO_PATH" value="/opt/digiverso/g2g/workspace/demo_content/portfolio.xml" />

        <command method="post" accept="json" content-type="xml" endpoint="/almaws/v1/bibs">
            <parameter name="normalization" value="43588" />
            <parameter name="validate" value="false" />
            <parameter name="override_warning" value="true" />
            <parameter name="check_match" value="false" />

            <!-- Set up request body. OPTIONAL.
                 @src: absolute path to the file whose contents shall be used as request body. OPTIONAL. It accepts one of the following both:
                          - a plain text value stating the absolute path
                          - a predefined variable containing the absolute path
                          ATTENTION: one can also use the absolute path of the folder containing this file here, in which case the content of the first file in that folder will be used.
                 @wrapper: wrappers separated by space that shall be wrapped around the content read from the file. ONLY applicable if @src is configured. OPTIONAL.
                                  The precise way of wrapping depends on the setting of @content-type of the command tag.
                                  For example, say one has wrapper configured as "wrapper1 wrapper2 wrapper3" then:
                                  - If @content-type="json", the file content will be wrapped as {wrapper1: {wrapper2: {wrapper3: {FILE_CONTENT}}}}
                                  - If @content-type="xml", the file content will be wrapped as <wrapper1><wrapper2><wrapper3>{FILE_CONTENT}</wrapper3></wrapper2></wrapper1>
                 @value: use a plain text value or a predefined variable instead of the content of a file. OPTIONAL. ATTENTION:
                              - to use a plain text value one has to assure that its format matches the configured @content-type correctly
                              - to use a variable one has to assure that the format of the variable's value matches the configured @content-type correctly
              -->
            <body src="{$MARC_FOLDER}" wrapper="bib" />

            <target var="MMS_ID" path="mms_id" />
        </command>

        <command method="post" accept="json" content-type="xml" endpoint="/almaws/v1/bibs/{mms_id}/portfolios">
            <mms_id>{$MMS_ID}</mms_id>
            <!-- use content of the file as request body, no wrapper needed -->
            <body src="{$PORTFOLIO_PATH}" wrapper="" />
            <!-- create a new variable to hold the value on this JSON path  -->
            <target var="PORTFOLIO_ID" path="id" />         
        </command>       

        <!-- save values of variables as process properties  -->
        <save type="metadata" name="MMS_ID" value="{$MMS_ID}" choice="first" overwrite="true" />
        <save type="metadata" name="PortfolioId" value="{$PORTFOLIO_ID}" choice="first" overwrite="true" />
    </config>

    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>update portfolio</step>

        <!-- Base URL -->
        <url>https://api-eu.hosted.exlibrisgroup.com</url>

        <!-- API key -->
        <api-key>CHANGE_ME</api-key>

        <!-- create variables using values read from process properties -->
        <variable name="MMS_ID" value="{meta.MMS_ID}" />
        <variable name="PORTFOLIO_ID" value="{meta.PortfolioId}" />

        <command method="get" accept="json" content-type="json" endpoint="/almaws/v1/bibs/{mms_id}/portfolios/{portfolio_id}">
            <!-- define the value of the placeholder {mms_id} using the value of the variable named MMS_ID -->
            <mms_id>{$MMS_ID}</mms_id>
            <!-- define the value of the placeholder {portfolio_id} using the value of the variable named PORTFOLIO_ID -->
            <portfolio_id>{$PORTFOLIO_ID}</portfolio_id>      

            <!-- An update tag is used to save the MAYBE updated response JSONObject as an variable. AT MOST ONE allowed. OPTIONAL.
                   ATTENTION: to use this tag, one has to assure that the @accept configured in the command tag is json.
                   @var: name of the variable that shall be used to save the JSONObject.
               -->
            <update var="UPDATED_PORTFOLIO" >
                <!-- An entry tag is used to define modifications that shall be made on the response JSONObject. OPTIONAL. Multiple entry sub-tags possible.
                       @path: JSON path(s) of the item(s) that shall be modified, where plural comes into use when there is a JSONArray with multiple elements mixed in this JSON path
                       @value: new value of the item(s) selected by the JSON path
                    -->
                <entry path="availability.value" value="11" />
            </update>
        </command>

        <!-- use default settings of @accept and @content-type, which are both json -->
        <command method="put" endpoint="/almaws/v1/bibs/{mms_id}/portfolios/{portfolio_id}">
            <mms_id>{$MMS_ID}</mms_id>
            <portfolio_id>{$PORTFOLIO_ID}</portfolio_id>        
            <!-- use the JSONObject saved by the last command as the request body --> 	
            <body value="{$UPDATED_PORTFOLIO}" />        	
        </command>                     
    </config>

</config_plugin>

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config>-Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

url

Hier wird die Basis-URL der REST-API angegeben.

api-key

Hier wird der API-Schlüssel für die Verbindung zu der REST-API konfiguriert.

variable

Mit diesem Tag kann eine Variable definiert werden, die von allen nachfolgenden Befehlen verwendet werden kann. Dieses Tag hat zwei Attribute, wobei @name den Namen und @value den Wert definiert. @value erwartet einen einfachen Textwert oder eine Goobi-Variable.

command

Ein Befehlsblock definiert einen Befehl, der im Auftrag ausgeführt werden soll. Es hat selbst zwei obligatorische Attribute, wobei @method die zu verwendende Methode angibt und @endpoint den Pfad zum Endpoint, bei dem alle Platzhalter nicht ersetzt werden. Es verfügt auch über die zwei optionalen Attribute @accept und @content-type, die verwendet werden, um die Request-Parameter Accept und Content-type anzugeben. Beide erwarten entweder json oder xml. Wird einer der beiden Parameter weggelassen, wird der Standardwert json verwendet. Weitere Einzelheiten finden Sie in der nachstehenden Tabelle und in der obigen Beispielkonfiguration.

save

Ein optionales save-Element definiert einen Wert, der nach der Ausführung aller Befehle gespeichert werden soll. Es hat drei obligatorische Attribute, wobei type angibt, ob der Wert als Vorgangseigenschaft oder als Metadatum gespeichert werden soll. Das Attribut @name definiert den Namen der Vorgangseigenschaft oder des Metadatentyps. Das Attribut @value bestimmt den Wert, der ein einfacher Textwert oder eine zuvor definierte Variable sein kann. Es verfügt über zwei optionale Attribute, wobei @choice angibt, welcher Wert gespeichert werden soll, wenn mehrere gefunden werden, und @overwrite bestimmt, ob eine zuvor erstellte Vorgangseigenschaft oder ein Metadatum desselben Namens wiederverwendet werden soll.

filter

Hier wird angegeben, welche Teile der JSON-Antwort für die Suche nach den target-Werten verwendet werden sollen. Es hat vier Attribute, wobei @key und @value obligatorisch sind, während @fallback und @alt optional sind. Weitere Einzelheiten finden sich in den Kommentaren in der Beispielkonfiguration.

target

Hier wird angegeben, welche Werte als Variablen zur späteren Verwendung gespeichert werden sollen. Der Parameter hat zwei Attribute, wobei @var den Variablennamen und @path den JSON-Pfad zum Abrufen der Werte angibt.

parameter

Hier wird ein Parameter angegeben, der zusammen mit einer Anfrage an die REST-API gesendet werden soll. Er verfügt über zwei Attribute, wobei @name für den Parameternamen und @value für den Parameterwert verwendet wird, der auschließlich aus reinen Textwerten bestehen kann.

body

Hier wird der Request-Body festgelegt. Er verfügt über drei Attribute, wobei eines von @src und @value angegeben werden muss. Ist @src gesetzt, wird auch @wrapper anwendbar. Mit @src wird dabei die Datei angegeben, deren Inhalt als Request-Body verwendet werden soll, während @value den Wert einer Variable festlegt, die von vorherige Befehle erhalten worden ist. Für die Verwendung von @wrapper ist eine Berücksichtigung der Kommentare in der Beispielkonfiguration empfehlenswert.

update

Dieses Element wird verwendet, um das JSON-Objekt der Antwort als Variable zu speichern. Es hat ein Attribut @var, das den Namen der Variablen angibt. Jedes Command-Tag kann höchstens ein update-Unterelement haben. Innhalb des update-Unterelement kann es mehrere Entry-Unterelemente geben, von denen jedes eine Änderung am JSON-Antwortobjekt angibt.

goobi_plugin_step_archiveimagefolder-base.jar
/opt/digiverso/goobi/plugins/step/plugin_intranda_step_archiveimagefolder-base.jar
/opt/digiverso/goobi/config/plugin_intranda_step_archiveimagefolder.xml
<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
        <!--
        order of configuration is:
          1.) project name and step name matches
          2.) step name matches and project is *
          3.) project name matches and step name is *
          4.) project name and step name are *
	-->

    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>

        <!-- the folder to archive -->
        <folder>master</folder>
        <!-- delete local files after copying and close step -->
        <deleteAndCloseAfterCopy>false</deleteAndCloseAfterCopy>
        <method>
            <name>SSH</name>
            <host>bandspeicher.intranda.com</host>
            <user>intranda</user>
        </method>
    </config>

    <config>
        <project>*</project>
        <step>Copy to S3 storage</step>
        <folder>media</folder>
        <deleteAndCloseAfterCopy>false</deleteAndCloseAfterCopy>
        <method>
            <name>s3</name>
            <S3Endpoint>http://127.0.0.1:9000</S3Endpoint>
            <S3Bucket>storage-bucket</S3Bucket>
            <S3Prefix>archive</S3Prefix>
            <S3AccessKeyID>CHANGEME</S3AccessKeyID>
            <S3SecretAccessKey>CHANGEME</S3SecretAccessKey>
        </method>
    </config>

</config_plugin>
/opt/digiverso/goobi/plugins/step/plugin_intranda_step_bagcreation-base.jar
/opt/digiverso/goobi/plugins/config/plugin_intranda_step_bagcreation.xml
curl -H Authorization: Basic <TOKEN> -H 'Content-Type: application/json' -X POST <GOOBI URL>/api/process/<PROCESSID>/metadata -d '{"name":"LibsafeID","value":"<LIBSAFE ID>","metadataLevel":"topstruct"}'
curl -H Authorization: Basic <TOKEN> -H 'Content-Type: application/json' -X POST <GOOBI URL>/api/process/<PROCESSID>/journal -d '{"userName": "<USERNAME>", "type": "<TYPE>", "message": "<MESSAGE>"}'
curl -H Authorization: Basic <TOKEN> -H 'Accept: application/json'  <GOOBI URL>/api/process/<PROCESSID>/steps
curl -H Authorization: Basic <TOKEN> -H 'Content-Type: application/json' -X PUT <GOOBI URL>/api/process/<PROCESSID>/step/<STEPID>/close
<config_plugin>
    <!--
        order of configuration is:
          1.) project name and step name matches
          2.) step name matches and project is *
          3.) project name matches and step name is *
          4.) project name and step name are *
	-->

    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>
        <filegroups>
            <group folder="master" fileGrpName="Representations/master" prefix="data/" suffix="iso" mimeType="application/octet-stream" useOriginalFileExtension="true" />
            <group folder="xml" fileGrpName="Representations/ocr-alto" prefix="data/" suffix="xml" mimeType="text/xml" />
            <group folder="txt" fileGrpName="Representations/ocr-txt" prefix="data/" suffix="txt" mimeType="text/plain" />
            <group folder="pdf" fileGrpName="Representations/pdf" prefix="data/" suffix="pdf" mimeType="application/pdf" />
            <group folder="docuPdf" fileGrpName="Documentation/pdf" prefix="data/" suffix="pdf" mimeType="application/pdf" />
            <group folder="docuMsg" fileGrpName="Documentation/msg" prefix="data/" suffix="msg" mimeType="application/vnd.ms-outlook" />
        </filegroups>
<mets:fileSec>
    <mets:fileGrp USE="{fileGrpName}">
    </mets:fileGrp>
</mets:fileSec> 

<mets:file MIMETYPE="{mimeType}">
    <mets:FLocat xlink:href="{prefix}{FILENAME}.{suffix}" />
</mets:file>
        <metsParameter>
            <userAgent>WU Wien</userAgent>
            <rightsOwner>WU Wien</rightsOwner>
            <rightsOwnerLogo>http://example.com/logo.png</rightsOwnerLogo>
            <rightsOwnerSiteURL>http://example.com</rightsOwnerSiteURL>
            <rightsOwnerContact>user@example.com</rightsOwnerContact>
            <metsRightsLicense>CC0</metsRightsLicense>
            <metsRightsSponsor>DFG</metsRightsSponsor>
            <metsRightsSponsorLogo>http://example.com/logo.png</metsRightsSponsorLogo>
            <metsRightsSponsorSiteURL>http://example.com</metsRightsSponsorSiteURL>
            <digiprovPresentation>http://example.com/opac?id=$(meta.CatalogIDDigital)</digiprovPresentation>
            <digiprovPresentationAnchor>http://example.com/opac?id=$(meta.topstruct.CatalogIDDigital)</digiprovPresentationAnchor>
            <digiprovReference>http://example.com//viewer/ppnresolver?id=$(meta.CatalogIDDigital)</digiprovReference>
            <digiprovReferenceAnchor>http://example.com//viewer/ppnresolver?id=$(meta.topstruct.CatalogIDDigital)</digiprovReferenceAnchor>
            <iiifUrl>http://example.com//viewer/iiif</iiifUrl>
            <sruUrl>http://example.com//viewer/sru</sruUrl>
        </metsParameter>
        <submissionParameter>
            <organizationName>Source-Organization</organizationName>
            <organizationAddress>Organization-Address</organizationAddress>
            <organizationIdentifier>ISIL:AT-UBWW</organizationIdentifier>
            <contactName>Contact-Name</contactName>
            <contactEmail>Contact-Email</contactEmail>
            <softwareName>Goobi</softwareName>
        </submissionParameter>

        <submissionParameter>
            <organizationName>Source-Organization</organizationName>
            <organizationAddress>Organization-Address</organizationAddress>
            <organizationIdentifier>ISIL</organizationIdentifier>
            <contactName>Contact-Name</contactName>
            <contactEmail>Contact-Email</contactEmail>
            <softwareName>Goobi</softwareName>
        </submissionParameter>
        <additionalMetadata>
            <Metadata>
                <InternalName>HiddenMetadata</InternalName>
                <WriteXPath>./mods:mods/mods:extension/#intranda:something</WriteXPath>
            </Metadata>

            <Group>
                <InternalName>Documentation</InternalName>
                <WriteXPath>./mods:mods/mods:relatedItem[@type='references']</WriteXPath>
                <Metadata>
                    <InternalName>TitleDocMain</InternalName>
                    <WriteXPath>./mods:titleInfo/#mods:title</WriteXPath>
                </Metadata>
                <Metadata>
                    <InternalName>DateOfOrigin</InternalName>
                    <WriteXPath>./mods:originInfo[1]/#mods:dateCreated</WriteXPath>
                </Metadata> 
                <Person>
                    <InternalName>Author</InternalName>
                    <WriteXPath>./#mods:name[@type='personal'][mods:role/mods:roleTerm="aut"[@authority='marcrelator'][@type='code']]</WriteXPath>
                    <FirstnameXPath>./mods:namePart[@type='given']</FirstnameXPath>
                    <LastnameXPath>./mods:namePart[@type='family']</LastnameXPath>
                    <DisplayNameXPath>./mods:displayForm</DisplayNameXPath>
                    <IdentifierXPath>../mods:name[@authority='gbv'][@ID='']</IdentifierXPath>
                </Person>
            </Group>
            <archiveIdMETS>RecordID</archiveIdMETS>
            <archiveIdEAD>recordid</archiveIdEAD>
        </additionalMetadata>
        <sftp>
            <username>username</username>
            <password>password</password>
            <keyfile>~/.ssh/keyname</keyfile>
            <hostname>127.0.0.1</hostname>
            <port>22</port>
            <remoteFolder>/tmp</remoteFolder>
            <knownHostsFile>~/.ssh/known_hosts</knownHostsFile>
        </sftp>
    </config>
</config_plugin>
Integration des Plugins in den Workflow
Integration des Plugins in den Workflow
Integration des Plugins in den Workflow
https://github.com/intranda/goobi-plugin-opac-soutron
https://github.com/intranda/goobi-plugin-statistics-sudan-memory
https://github.com/intranda/goobi-plugin-opac-marc
https://github.com/intranda/goobi-plugin-quartz-bka-wohnbau
E-ARK
BagIt
Goobi workflow Handbuch

Identifier

intranda_step_alma_api

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

07.09.2024 08:47:07

Identifier

intranda_step_archiveimagefolder

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

26.08.2024 10:42:47

Identifier

intranda_step_bagcreation,intranda_step_bagsubmission

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

22.04.2025 11:00:25

Erzeugen von Archival Resource Keys (ARK)

Goobi Step Plugin für die Erstellung von Archival Resource Keys (ARK) mit Metadaten nach dem DataCite Schema.

Übersicht

Name
Wert

Identifier

intranda_step_ark

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 12:01:12

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz des Step Plugins für die Generierung von ARK-Identifiern in Goobi workflow.

Installation

Das Plugin besteht aus der folgenden Datei:

plugin_intranda_step_ark-base.jar

Diese Datei muss in dem richtigen Verzeichnis installiert werden, so dass diese nach der Installation an folgendem Pfad vorliegt:

/opt/digiverso/goobi/plugins/step/plugin_intranda_step_ark-base.jar

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

/opt/digiverso/goobi/config/plugin_intranda_step_ark.xml

Überblick und Funktionsweise

Das Plugin wird üblicherweise vollautomatisch innerhalb des Workflows ausgeführt. Es ermittelt zunächst, ob bereits ein Archival Resource Key (ARK) vorhanden ist. Sollte noch kein ARK vorhanden sein, wird ein neuer ARK registriert. Falls schon ein ARK in den Metadaten vorhanden ist, wird versucht die Metadaten des ARKs zu aktualisieren.

Dieses Plugin wird in den Workflow so integriert, dass es automatisch ausgeführt wird. Eine manuelle Interaktion mit dem Plugin ist nicht notwendig. Zur Verwendung innerhalb eines Arbeitsschrittes des Workflows sollte es wie im nachfolgenden Screenshot konfiguriert werden.

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_step_ark.xml und kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
	<!-- order of configuration is:
    1.) project name and step name matches
    2.) step name matches and project is *
    3.) project name matches and step name is *
    4.) project name and step name are *
  -->

	<config>
		<!-- which projects to use for (can be more then one, otherwise use *) -->
		<project>*</project>
		<step>*</step>

		<!-- URI of the ARK API, must use https -->
		<uri>https://www.arketype.ch/</uri>

		<!-- Name Assigning Number Authority -->
		<naan>99999</naan>

		<!-- name of the API user -->
		<apiUser>apiUser</apiUser>

		<!-- password of the API user -->
		<apiPassword></apiPassword>

		<!-- shoulder on which new ARKs shall be minted -->
		<shoulder>fgt</shoulder>

		<!-- Datacite Metadata fields -->

		<!-- metadata field datacite.creator -->
		<metadataCreator>{meta.CreatorsAllOrigin}</metadataCreator>

		<!-- metadata field datacite.title -->
		<metadataTitle>{meta.TitleDocMain}</metadataTitle>

		<!-- metadata field datacite.publisher -->
		<metadataPublisher>{meta.PublisherName}</metadataPublisher>

		<!-- metadata field datacite.publicationyear -->
		<metadataPublicationYear>{meta.PublicationYear}</metadataPublicationYear>

		<!-- metadata field datacite.resourcetype can only contain following values:
			Audiovisual, Collection, Dataset, Event, Image ,InteractiveResource, Model,
			PhysicalObject, Service, Software, Sound, Text, Workflow, Other. For more
			information consult the API-documentation https://www.arketype.ch/doc/api -->
		<metadataResourceType>Text</metadataResourceType>

		<!--target url ark will forward to -->
		<publicationUrl>https://viewer.example.org/image/{meta.CatalogIDDigital}</publicationUrl>

		<!--metadatatype in METS-File -->
		<metadataType>ARK</metadataType>

	</config>
</config_plugin>
Parameter
Erläuterung

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

uri

In diesem Parameter muss die URL der API hinterlegt werden. In der Regel kann der Standardeintrag https://www.arketype.ch übernommen werden.

naan

NAAN ist ein Akronym für Name Assigning Number Authority. Es handelt sich um einen eindeutigen Bezeichner, welchem der Account zugeordnet ist.

apiUser

Name des API Nutzers

apiPassword

Passwort des API Nutzers

shoulder

Name des Unternamensraumes, in dem die neuen ARKs erzeugt werden sollen

metadataCreator

Entspricht dem datacite.creator Feld und sollte die Personen benennen, die die Daten erzeugt haben. In der Regel kann der vorgegebene Wert {meta.CreatorsAllOrigin} beibehalten werden.

metadataTitle

Entspricht dem datacite.title Feld und sollte den Namen beinhalten, unter dem die Veröffentlichung bekannt ist. In der Regel kann der vorgegebene Wert {meta.TitleDocMain} beibehalten werden.

metadataPublisher

Entspricht dem datacite.publisher Feld. In der Regel kann der vorgegebene Wert {meta.PublisherName} beibehalten werden.

metadataResourceType

Entspricht dem datacite.publicationyear Feld. In der Regel kann der vorgegebene Wert {meta.PublicationYear} beibehalten werden.

metadataResourceType

Entspricht dem datacite.resourcetype Feld. Es sind nur die Werte Audiovisual, Collection, Dataset, Event, Image, InteractiveResource, Model, PhysicalObject, Service, Software, Sound, Text, Workflow, und Other zulässig. Zusätzlich können noch spezifische Untertypen angegeben werden. Ein Beispiel wäre Image/Photo. Der Untertyp, also der Teil hinter dem /, unterliegt dabei keiner Einschränkung.

publicationUrl

URL unter der das digitalisierte Werk in Zukunft zur Verfügung steht. In der Regel wird die Veröffentlichungs-URL einem Muster folgen, z.B. https://viewer.example.org/{meta.CatalogIDDigital}. In diesem Fall wird davon ausgegangen, dass die Werke in Zukunft unter einer URL veröffentlicht werden, die das Metadatum Identifier enthält.

metadataType

Gibt den Metadatentyp an, unter dem die URN erfasst werden soll. Hier sollte die Vorgabe nicht verändert werden.

Batch zuweisen

Step Plugin für die Zuweisung des Vorgangs zu einem bestehenden oder neuen Batch

Übersicht

Name
Wert

Identifier

intranda_step_batch_assignment

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.02.2025 11:03:03

Einführung

Diese Dokumentation erläutert das Plugin für Zuweisung eines einzelnen Vorgangs zu einem Batch. Diese Zuweisung erfolgt hierbei direkt aus einer angenommenen Aufgabe heraus. Dort kann entweder ein neuer Batch erzeugt oder aus einer Liste von bereits vorhandenen wartenden Batches ausgewählt werden.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

/opt/digiverso/goobi/plugins/step/plugin-step-ZZZ-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin-step-ZZZ-gui.jar
/opt/digiverso/goobi/config/plugin_intranda_step_ZZZ.xml

Nach der Installation des Plugins kann dieses innerhalb des Workflows für die jeweiligen Arbeitsschritte ausgewählt werden. Zu beachten ist hierbei, dass zwei Arbeitsschritte im Workflow eingeplant werden müssen:

  • Ein Arbeitsschritt dient für den Nutzer als derjenige, in dem die Batch-Zuweisung erfolgt.

  • Ein weiterer Arbeitsschritt dient als eine Art Wartezone, in dem alle bereits zu einem Batch zugewiesenen Vorgänge stehenbleiben und erst bei Vollständigkeit des Batches gemeinsam zum nachfolgenden Schritt wechseln werden.

Ein Workflow könnte somit beispielhaft wie folgt aussehen:

Für die Verwendung des Plugins muss dieses in dem ersten der beiden Arbeitsschritte ausgewählt sein:

Überblick und Funktionsweise

Nachdem der Nutzer die Aufgabe angenommen hat, kann er in dem Plugin zunächst entscheiden, ob ein neuer Batch angelegt oder eine Auswahl aus den bereits vorhandenen noch wartenden Batches erfolgen soll. Möchte der Nutzer einen neuen Batch definieren, kann er hier den Titel für den Batch definieren sowie bei Bedarf auch Eigenschaften mit erfassen, die über die Konfiguration festgelegt wurden:

Alternativ kann der Nutzer aus der Liste der aktuell wartenden Batches einen Batch auswählen. Nach der Auswahl des gewünschten Batches kann die Aufgabe regulär abgeschlossen werden.

Nach der Zuweisung zu einem bestehenden oder neu erzeugten Batches, geht der Workflow für den Vorgang in den nachfolgenden Arbeitsschritt über, der als eine Art Wartezone betrachtet werden kann. Dort verbleiben alle Vorgänge eines Batches zunächst und durchlaufen noch nicht die weiteren nachfolgenden Schritte.

Wenn der Nutzer in dem Arbeitsschritt eines Vorgangs entscheidet, dass der Batch mit diesem Vorgang nun vollständig ist, kann er auf den Button für das Schließen des Batches klicken. Damit öffnet sich ein Dialogfenster, in dem ein Batch-Laufzettel heruntergeladen sowie der Batch geschlossen werden kann:

Durch das Schließen des Batches, wird der Arbeitsschritt für das Warten auf Vollständigkeit aller Vorgänge des Batches abgeschlossen und auch der der Arbeitsschritt des gerade geöffneten Arbeitsschritt wird abgeschlossen. Somit wechseln alle zu einem Batch zugewiesenen Vorgänge gleichzeitig in den nächsten nachfolgenden Arbeitsschritt, um dann gemeinsam weiter verarbeitet werden zu können.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_step_batch_assignment.xml wie hier aufgezeigt:

<config_plugin>
    <!--
        order of configuration is:
          1.) project name and step name matches
          2.) step name matches and project is *
          3.) project name matches and step name is *
          4.) project name and step name are *
	-->
    
    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>
        
        <!-- batch is complete step in the workflow that shall be finished once the last process is added to the batch -->
        <batchWaitStep>Waiting for batch completion</batchWaitStep>

        <!-- properties to be editable for new batches -->
        <property vocabularyPropertyFilterField="Working" vocabularyPropertyFilterValue="Yes">Scanner</property>
        <property>Opening angle</property>

    </config>

</config_plugin>

Allgemeine Parameter

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

Parameter
Erläuterung

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

Weitere Parameter

Neben diesen allgemeinen Parametern stehen die folgenden Parameter für die weitergehende Konfiguration zur Verfügung:

Parameter
Erläuterung

batchWaitStep

Name desjenigen Arbeitsschrittes, in dem die Vorgänge verbleiben sollen, bis er letzte Vorgang zu dem Batch hinzugefügt wird

property

Namen derjenigen Eigenschaften des Vorgangs, die beim Erzeugen des Batches bearbeitbar sein sollen und die für alle zugehörigen Vorgänge übernommen werden sollen

Batch Progress Plugin

Dieses Step Plugin für Goobi workflow ermöglicht, alle Vorgänge eines Batches zum gleichen Fortschritt kommen zu lassen, ein REST-Aufruf auszuführen und dann alle Vorgäng parallel forzuführen.

Übersicht

Name
Wert

Identifier

intranda_step_batch_progress

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

07.09.2024 08:44:34

Einführung

Dieses Step Plugin für Goobi workflow erlaubt, dass mehrere Goobi Vorgänge, die zu einem Batch gehören aber einen unterschiedlichen Fortschritt in ihren Workflows haben, alle an eine festgelegten Arbeitsschritt des Workflows auf einander warten. Erst wenn der letzte zugehörige Vorgang den definierten Arbeitsschritt des Workflows erreicht, findet ein Aufruf einer festgelegten REST-URL statt, so dass anschließend alle Vorgänge mit ihren jeweils nächsten Arbeitsschritten fortfahren können.

Der initiale Einsatzzweck dieses Plugins zielt auf den Aufruf von AEON REST URLs, um darin den Fortschritt der Goobi Workflows zu protokollieren. Weitere Einsatzzwecke für dieses Plugin sind möglich, erfordern unter Umständen allerdings Anpassungsarbeiten an dem Plugin.

Installation

Das Plugin besteht insgesamt aus den folgenden zu installierenden Dateien:

plugin_intranda_step_batch_progress-base.jar
plugin_intranda_step_batch_progress-gui.jar
plugin_intranda_step_batch_progress.xml

Diese Dateien müssen in den richtigen Verzeichnissen installiert werden, so dass diese nach der Installation unter den folgenden Pfaden vorliegen:

/opt/digiverso/goobi/plugins/step/plugin_intranda_step_batch_progress-base.jar
/opt/digiverso/goobi/config/plugin_intranda_step_batch_progress.xml

Überblick und Funktionsweise

Zur Inbetriebnahme des Plugins muss dieses für einen oder mehrere gewünschte Aufgaben im Workflow aktiviert werden. Dies erfolgt wie im folgenden Screenshot aufgezeigt durch Auswahl des Plugins intranda_step_batch_progress aus der Liste der installierten Plugins.

Da dieses Plugin üblicherweise automatisch ausgeführt werden soll, sollte der Arbeitsschritt im Workflow als automatisch konfiguriert werden.

Nachdem das Plugin vollständig installiert und eingerichtet wurde, wird es üblicherweise automatisch innerhalb des Workflows ausgeführt, so dass keine manuelle Interaktion mit dem Nutzer erfolgt. Stattdessen erfolgt der Aufruf des Plugins durch den Workflow im Hintergrund und führt die folgenden Arbeiten durch:

Als erstes geprüft, ob der Vorgang zu einem Batch gehört. Ist dies nicht der Fall, wird der Arbeitsschritt geschlossen und der weitere Workflow wird gestartet.

Ansonsten wird geprüft, ob der aktuelle Arbeitsschritt in allen Vorgängen des Batches bereits erreicht wurde (der Status darf nicht Gesperrt sein). Falls dies noch nicht der Fall ist, bleibt der Schritt im Status In Bearbeitung stehen.

Wenn jedoch alle anderen Vorgänge des Batches den Arbeitsschritt erreicht haben oder es nur den aktuellen Vorgang im Batch gibt, wird ein neuer Status in AEON gesetzt, sofern dies mit dem Parameter updateQueue aktiviert wurde. Hierzu wird in den Eigenschaften des Vorgangs nach der Eigenschaft transaction identifier gesucht, mit dem die Vorgänge initial angelegt wurden. Dieser Datensatz wird dann in AEON aufgerufen, um den konfigurierte queueName als neuen Status zu setzen.

Anschließend wird der aktuelle Arbeitsschritt in allen Vorgängen des Batches geschlossen und der weitere Workflow fortgeführt.

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_step_batch_progress.xml und kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

<config_plugin>
    <global>
        <aeon>
            <url>https://example.com</url>
            <username>user</username>
            <password>pw</password>
        </aeon>
        <!-- must match field title of field <field aeon="transactionNumber"> in aeon config -->
        <property>Transaction Identifier</property>
    </global>
    <!--
        order of configuration is:
        1.) project name and step name matches
        2.) step name matches and project is *
        3.) project name matches and step name is *
        4.) project name and step name are *
    -->
    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>
        <!-- define if a queue in AEON shall be updated, which would then 
          use the following parameter for the queue name -->
        <updateQueue>true</updateQueue>
        <!-- name of the AEON queue/status to be updated if this is activated
             Examples:
        
             4     Submitted by Staff
             8     Awaiting Order Processing
             10    In Item Retrieval
             111   Order Finished
             1142  DIVY-Item Checked Out to Staff
             1158  Arrived at DRMS
         -->
        <queueName>Order Finished</queueName>
    </config>
</config_plugin>

Innerhalb der Konfigurationsdatei können verschiedene Parameter konfiguriert werden. Die Datei ist in zwei Bereiche aufgeteilt. Im Bereich <global> werden allgemein gültige Informationen wie die Zugangsdaten zu AEON verwaltet. Hier sind folgende Parameter vorhanden:

Parameter
Erläuterung

url

Geben Sie hier die URL für die API von AEON an.

apiKey

Hier kann ein Key festgelegt werden, der statt Login und Passwort verwendet werden soll.

username

Definieren Sie hier den zu verwendenden Nutzernamen.

password

Tragen Sie hier das Passwort für den Zugriff auf die API ein.

Daneben gibt es den zweiten Bereich <config>, in dem für einzelne Arbeitsschritte unterschiedliche Angaben vorgenommen werden können. Hier kann für einzelne Projekte und Schritte festgelegt werden, in welche Queue der Datensatz geschrieben werden soll.

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können und auch um für verschiedener Schritte einen unterschiedlichen Status in AEON setzen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

Parameter
Erläuterung

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

<updateQueue>

Hier läßt sich festlegen, ob ein Update einer Queue in AEON stattfinden soll oder nicht. Wenn der Parameter fehlt, wird false angenommen.

<queueName>

Name der Aeon Queue, die aktualisiert werden soll

Visualisierung des Durchsatzes pro Nutzer

Statistik-Plugin zur Visualisierung der Nutzerdurchsätze

Übersicht

Name
Wert

Identifier

intranda_statistics_user_througput

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

23.08.2024 13:53:00

Einführung

Die vorliegende Dokumentation beschreibt die Installation und den Einsatz des Durchsatz pro Nutzer Plugins.

Installation

Zur Installation des Plugins müssen folgende Dateien installiert werden:

/opt/digiverso/goobi/plugins/GUI/plugin_intranda_statistics-user-throughput-GUI.jar
/opt/digiverso/goobi/plugins/statistics/plugin_intranda_statistics-user-throughput.jar
/opt/digiverso/goobi/plugins/statistics/user_throughput_template.xlsx
/opt/digiverso/goobi/plugins/statistics/user_throughput_template_process.xlsx

Konfiguration des Plugins

Dieses Plugin braucht keine weitere Konfiguration.

Bedienung des Plugins

Um den Zeitraum der Auswertung zu begrenzen, können die beiden Felder Zeitraum von und Zeitraum bis für das Startdatum und Enddatum genutzt werden. Hier kann ein Datum in der Form YYYY-MM-DD angegeben werden. Beide Angaben sind optional. Wenn das Startdatum nicht ausgefüllt wurde, gilt das Datum, an dem der erste Schritt abgeschlossen wurde. Fehlt das Enddatum, dann wird der aktuelle Zeitpunkt genutzt.

Im Feld Einheit wird festgelegt, in welchen Zeiträumen die Auswertung zusammengefasst werden soll. Hier kann aus den Werten Jahre, Monate, Wochen oder Tage gewählt werden.

Im Feld Anzeige wird festgelegt, welche Zahlen angezeigt werden sollen. Hier kann aus den Werten Seiten oder Vorgänge gewählt werden.

Nach einem Klick an den Knopf Statistik berechnen werden der Durchsatz pro Nutzer in Tabellen detailliert angezeigt. Unter jeder Tabelle gibt es auch einen Link, wodurch man diese Tabelle als Excel-Datei herunterladen kann.

PICA Import

OPAC Plugin für die Datenübernahme von PICA Datensätzen

Übersicht

Name
Wert

Identifier

intranda_opac_pica

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 12:02:03

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Plugins. Mit Hilfe dieses Plugins können Daten aus einem externen System abgefragt und in Goobi übernommen werden. Der Katalog muss eine API bzw. URL haben, über die Datensätze als OPAC ausgeliefert werden können.

Installation

Das Plugin besteht aus einer Datei:

plugin_intranda_opac_pica-base.jar

Diese Datei muss für den Nutzer tomcat lesbar an folgendem Pfad installiert werden:

/opt/digiverso/goobi/plugins/opac/plugin_intranda_opac_pica-base.jar

Überblick und Funktionsweise

Wenn in Goobi nach einem Identifier gesucht wird, wird im Hintergrund eine Anfrage an die konfigurierte URL gestellt.

Nach der Abfrage des eigentlichen Datensatzes aus dem PICA-Katalog erfolgt das Mapping der Metadaten gemäß der im Regelsatz konfigurieren Regeln.

Konfiguration

Das Plugin selbst verfügt nicht über keine eigene Konfiguration. Stattdessen erfolgt sämtliche Konfiguration über Anpassungen innerhalb von Goobi workflow bzw. der zugehörigen Regelsätze.

In der Datei goobi_opac.xml muss die Schnittstelle zum gewünschten Katalogsystem bekannt gemacht werden. Dies geschieht durch einen Eintrag, der wie folgt aussieht:

<catalogue title="PICA OPAC">
  <config address="kxp.k10plus.de" database="2.1"
    description="K10plus" iktlist="IKTLIST-GBV.xml" port="80"
    ucnf="UCNF=NFC&amp;XPNOFF=1" />
</catalogue>

Das Attribut title enthält den Namen, unter dem der Katalog in der Nutzeroberfläche ausgewählt werden kann, address die URL zum API-Endpoint und database die zu verwendende Datenbank.

Das Mapping der Inhalte eines PICA-Datensatzes erfolgt innerhalb des jeweilig verwendeten Regelsatzes von Goobi workflow. Genauere Informationen, wie dieses Mapping konfiguriert werden kann finden sich innerhalb der UGH-Dokumentation hier:

Bedingte Verzögerung des Workflow Status

Schritt-Plugin zur Verwaltung der Verzögerung von Workflow-Statusänderungen.

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Plugins. Mit Hilfe dieses Plugins kann geprüft werden, ob ein Workflow einen bestimmten Status erreicht hat. Nur wenn dies der Fall ist, wird ein definierter Arbeitschritt geschlossen und der nächste Schritt geöffnet.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

Für die Verwendung des Plugins muss dieses in einem Arbeitsschritt ausgewählt sein, wobei folgende Einstellungen gemacht werden müssen:

Überblick und Funktionsweise

Wenn der Vorgang den konfigurierten Schritt erreicht, findet eine Prüfung statt, ob die Bedingungen erfüllt sind. Wenn dies der Fall ist, wird der Schritt direkt geschlossen und die nächste Aufgabe kann bearbeitet werden. Falls nicht, bleibt die Aufgabe in Bearbeitung. Im Anschluss wird jede Nacht erneut geprüft, ob die Bedingung erfüllt wird.

Die Bedingung gilt nur dann als erfüllt, wenn alle konfigurierten Regeln erfüllt wurden.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_step_delay_workflowstatus.xml wie hier aufgezeigt:

Allgemeine Parameter

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

Weitere Parameter

Neben diesen allgemeinen Parametern stehen die folgenden Parameter für die weitergehende Konfiguration zur Verfügung:

Das Feld <condition> enthält die zu überprüfenden Regeln. Dabei können sowohl Eigenschaften als auch Schritte geprüft werden. Die darin enthaltenen Felder sind wiederholbar, um mehrere Regeln definieren zu können. In dem Fall müssen alle zutreffen, damit die Bedingung als erfüllt gilt.

Im Feld <property> werden zu prüfende Eigenschaften definiert. Im Attribut name wird der Name der Eigenschaft festgelegt, in value der zu überprüfende Wert. Die Art der Prüfung kann in type definiert werden. Hier sind vier Arten möglich:

Automatische Paginierung auf Basis der Dateinamen

Dies ist eine technische Dokumentation für das Plugin zum automatischen Erstellen einer Paginierung basierend auf den Dateinamen.

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Plugins. Mit Hilfe dieses Plugins können METS-Dateien automatisch aufbereitet, eine Grundstruktur erzeugt sowie eine Paginierung gesetzt werden.

Installation

Das Plugin besteht aus zwei Dateien:

Die Datei plugin_intranda_step-imagename-analyse-base.jar enthält die Programmlogik und muss für den tomcat-Nutzer lesbar in folgendes Verzeichnis installiert werden:

Die Datei plugin_intranda_step_imagename_analyse.xml muss ebenfalls für den tomcat-Nutzer lesbar sein und in folgendes Verzeichnis installiert werden:

Überblick und Funktionsweise

Nachdem das Plugin installiert und konfiguriert wurde, kann es innerhalb eines Arbeitsschrittes von Goobi genutzt werden.

Dazu muss innerhalb der gewünschten Aufgabe das Plugin intranda_step_imagename_analyse ausgewählt werden. Des Weiteren muss die Checkbox Automatische Aufgabe gesetzt sein.

Die Arbeitsweise des Plugins innerhalb des korrekt konfigurierten Workflows sieht folgendermaßen aus:

  • Wenn das Plugin innerhalb des Workflows aufgerufen wurde, öffnet es die METS-Datei und prüft als erstes, ob bereits eine Paginierung existiert.

  • Wenn dies der Fall ist, wird basierend auf dem konfigurierten Wert in skipWhenDataExists der Schritt entweder ohne weitere Änderungen abgeschlossen, oder die vorhandene Paginierung und Strukturierung aus der METS Datei entfernt.

  • Anschließend werden die Dateien aus dem master Ordner gelesen und alphanumerisch sortiert.

  • Für jede Datei wird nun geprüft, ob sie dem konfigurierten regulären Ausdruck entspricht.

  • Ist dies der Fall, wird eine neue Page erstellt. Die physische Reihenfolge entspricht der Sortierung im Dateisystem, die logische Seitennummer wird aus der ersten Gruppe des regulären Ausdrucks geholt.

  • Wenn der reguläre Ausdruck nicht zutrifft, wird im Anschluss die Liste der konfigurierten item durchlaufen und geprüft, ob der Dateiname mit dem Ausdruck, gefolgt von einer optionalen Zahl und einer optionalen recto-verso Angabe (r oder v) endet. Wenn dies der Fall ist, wird das konfigurierte Strukturelement erzeugt und die Seite wird diesem Element zugewiesen. Durch die Angabe einer Zählung können neue Stukturelemente des selben Typs definiert werden. Haben zwei oder mehr Dateien keine oder die gleiche Zählung, werden sie dem gleichen Strukturelement zugewiesen.

  • Wenn weder der reguläre Ausdruck noch die Liste der Strukturelemente auf den Dateinamen zutreffen, wird eine Page mit der logischen Sortierung "uncounted" erzeugt und ein Eintrag in das Vorgangslog geschrieben.

Konfiguration

Diese Konfigurationdatei plugin_intranda_step_imagename_analyse.xml dient zur Konfiguration des Plugins und muss wie folgt aufgebaut sein:

Im Element skipWhenDataExists wird definiert, wie sich das Plugin verhält, wenn bereits eine Paginierung vorhanden ist. Bei dem Wert true wird die Ausführung übersprungen, bei false wird die vorhandene Struktur und Paginierung entfernt und eine neue erzeugt.

Das Element paginationRegex enthält einen regulären Ausdruck, mit dem versucht wird, die logische Seitenzahl aus dem Dateinamen zu extrahieren. Dabei wird der Wert aus der ersten Gruppe in die METS-Datei übernommen.

Falls der reguläre Ausdruck nicht erfolgreich war, wird im Anschluß geprüft, ob der Dateiname eine besondere Struktur wie Cover, Titlepage oder Contents beschreibt. Diese Struktur wird innerhalb von structureList definiert. Dabei wird innerhalb von dem Element item im Attribut filepart ein (Teil-) String definiert, der im Dateinamen vorkommen muss. Im Attribut docstruct wird das Strukturelement definiert, das in diesem Fall erzeugt werden soll.

Beispiele

Die folgenden Beispiele basieren auf der oben definierten Konfiguration:

Katalogabfrage

Goobi Step Plugin für die Aktualisierung bestehender METS-Dateien mit Inhalten aus einer Katalogabfrage

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz des Step Plugins für die Katalogabfrage zur Aktualisierung von Datensätzen in Goobi workflow.

Installation

Das Plugin besteht aus der folgenden Datei:

Diese Datei muss in dem richtigen Verzeichnis installiert werden, so dass diese nach der Installation an folgendem Pfad vorliegt:

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

Überblick und Funktionsweise

Das Plugin wird üblicherweise vollautomatisch innerhalb des Workflows ausgeführt. Es ermittelt zunächst, ob sich innerhalb der Konfigurationsdatei ein Block befindet, der für den aktuellen Workflow bzgl. des Projektnamens und Arbeitsschrittes konfiguriert wurde. Wenn dies der Fall ist, werden die weiteren Parameter ausgewertet und es erfolgt die Katalogabfrage mit dem innerhalb der Konfigurationsdatei angegebenen Feldinhalt der METS-Datei als Identifier.

Dieses Plugin wird in den Workflow so integriert, dass es automatisch ausgeführt wird. Eine manuelle Interaktion mit dem Plugin ist nicht notwendig. Zur Verwendung innerhalb eines Arbeitsschrittes des Workflows sollte es wie im nachfolgenden Screenshot konfiguriert werden.

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_step_catalogue_request.xml und kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

Workflow pausieren

Delay Plugin für die Pausierung des Workflows

Übersicht

Einführung

Diese Dokumentation erläutert das Plugin, das es erlaubt einen Workflow für eine bestimmte Zeitspanne zu pausieren.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

Nach der Installation des Plugins kann dieses innerhalb des Workflows für die jeweiligen Arbeitsschritte ausgewählt und somit automatisch ausgeführt werden.

Für die Verwendung des Plugins muss dieses in einem Arbeitsschritt ausgewählt sein:

Überblick und Funktionsweise

Dieses Plugin pausiert den Workflow, solange wie es in der Konfigurationsdatei angegeben ist. Ist der konfigurierte Zeitpunkt erreicht, wird der betreffende Arbeitsschritt automatisch geschlossen und der weitere Workflow fortgeführt.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_delay_configurable.xml wie hier aufgezeigt:

Allgemeine Parameter

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

Weitere Parameter

Neben diesen allgemeinen Parametern stehen die folgenden Parameter für die weitergehende Konfiguration zur Verfügung:

ACHTUNG: Dieses Update ist seit dem 01.01.2024 nur sehr eingeschränkt einzusetzen. Die Erzeugung von ARKs im Plugin erfolgte über die Rest-API von , einem Dienst der Fachhochschule Genf, der im Laufe des Jahres 2024 abgeschaltet wird. Arketype ist ein Fork von und könnte theoretisch damit bedient werden. Empfohlen wird aber der Betrieb eines lokalen ARK-Services mittels des der ZHB Luzern für . Dieses Python-Skript erzeugt lokale Identifier, registriert diese im globalen Resolver und trägt sie in Goobi Workflow in die Vorgänge ein.

Integration des Plugins in den Workflow

Beispielhafter Aufbau eines Workflows
Konfiguration des Arbeitsschritts für die Nutzung des Plugins
Erzeugen eines neuen Batches mit festgelegten Eigenschaften für den Vorgang
Auswahl aus der Liste der wartenden Batches
Schließen eines Batches
Weiterer Verlauf des Workflows

Zuweisung des Plugins zu einer bestimmten Aufgabe

Geöffnetes Plugin mit einer Ergebnisanzeige

Oberfläche von Goobi workflow zur Abfrage des Katalogs

Name
Wert
Parameter
Belegung
Parameter
Erläuterung
Parameter
Erläuterung
Name
Wert
Dateiname
Ausgabe
Name
Wert
Parameter
Erläuterung
Name
Wert
Parameter
Belegung
Parameter
Erläuterung
Parameter
Erläuterung
https://github.com/intranda/goobi-plugin-step-alma-api
https://github.com/intranda/goobi-plugin-step-archive-image-folder
https://github.com/intranda/goobi-plugin-step-bag-creation
arketype.ch
EZID
ARK-Services
ZentralGut
https://docs.goobi.io/ugh-de/4/4.3/4.3.2
/opt/digiverso/goobi/plugins/step/plugin_intranda_step_delay_workflowstatus.jar
/opt/digiverso/goobi/config/plugin_intranda_step_delay_workflowstatus.xml

Automatische Aufgabe

Ja

Plugin für Arbeitsschritt

intranda_step_delay_workflowstatus

Plugin für Zeitverzögerung

Ja

<config_plugin>
    <!--
    	order of configuration is: 
	    1.) project name and step name matches 
	    2.) step name matches and project is * 
	    3.) project name matches and step name is * 
	    4.) project name and step name are * 
    -->
    
    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>
        
        <condition>
	        <!-- name: name of t he property to check -->
	        <!-- value: expected value (can be blank too) -->
	        <!-- type: condition for value comparing, can be 'is' or 'not' or 'missing' or 'available' -->
            <property name="" value="" type=""/>
            
            <!-- name: name of the workflow step to check -->
            <!-- status: expected status, can be 'locked', 'open', 'inwork', 'done', 'deactivated' 'error'  -->
            <!-- type: condition, can be 'is' 'not' or 'atleast' -->
            <step name="" status="" type=""/>
        </condition>
    </config>
   
    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>Example</project>
        <step>Delay Test</step>
        
        <condition>
            <property name="Schrifttyp" value="Antiqua" type="is"/>
            <property name="TemplateID" value="1" type="not"/>

            <step name="Fileupload" status="done" type="is"/>
            <step name="teststep" status="open" type="atleast"/>
        </condition>
    </config>    
</config_plugin>

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

is

der Status des Schrittes muss dem konfigurierte Status entsprechen

not

der Schritt darf nicht im konfigurierten Status sein

atleast

der Schritt muss mindestens den konfigurierten Status erreicht haben. Diese Option funktioniert nicht mit deactivated oder error.

plugin_intranda_step-imagename-analyse-base.jar
plugin_intranda_step_imagename_analyse.xml
/opt/digiverso/goobi/plugins/step/
/opt/digiverso/goobi/config/
<?xml version="1.0" encoding="UTF-8"?>
<config>
    <skipWhenDataExists>false</skipWhenDataExists>

    <paginationRegex>.*_(\d+\w?[rv]\w?)\.\w+</paginationRegex>

    <structureList>
        <item filepart="ER" docstruct="RearCover" />
        <item filepart="SV" docstruct="FrontSection" />
        <item filepart="VD" docstruct="FrontCover" />
        <item filepart="HD" docstruct="BackCover" />
        <item filepart="VS" docstruct="Endsheet" />
        <item filepart="NS" docstruct="Postscript" />
        <item filepart="FR" docstruct="Fragment" />
        <item filepart="Fragm" docstruct="Fragment" />
    </structureList>
</config>

BxSem-A02_010v.tif

Seite 010v

BxSem-A02_146r.tif

Seite 146r

BxSem-A02_NSr.tif

erste Seite des Strukturelements Postscript

BxSem-A02_NSv.tif

zweite Seite des Strukturelements Postscript

BxSem-B04_Farbkarte_Einband.jpg

nicht konfiguriert, daher keine Zuordnung möglich, wird in als "uncounted" übernommen

BxSem-A22_VS1r.jpg

erstes Endsheet, erste Seite

BxSem-A22_VS1v.jpg

erstes Endsheet, zweite Seite

BxSem-A22_VS2.jpg

zweites Endsheet

BxSem-B08_SV.jpg

einziges Bild der FrontSection

plugin_intranda_step_catalogue_request-base.jar
/opt/digiverso/goobi/plugins/step/plugin_intranda_step_catalogue_request-base.jar
/opt/digiverso/goobi/config/plugin_intranda_step_catalogue_request.xml
<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>

    <config>

        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>

        <!-- which catalogue to use ('GBV', 'Wiener', 'CBL Adlib' ...), can use variable replacer compatible value as well, e.g. '$(meta.Catalogue)' -->
        <catalogue>Wiener</catalogue>

        <!-- which field to use for the catalogue request (typically '12' for identifier, sometimes '1007' for barcodes, and 
          which identifier to use for the catalogue request (use standard variable replacer compatible value here, e.g. '$(meta.CatalogIDDigital)') -->
        <catalogueField fieldName="12" fieldValue="$(meta.CatalogIDDigital)" />
        
        <!-- define if existing structure subelements shall be kept (true), otherwise a complete new mets file is created and overwrites the existing one (false) -->
        <mergeRecords>true</mergeRecords>

        <!-- define here if the catalogue request shall simply be skipped in case of missing catalogue plugin or missing catalogue identifier; if set to true the plugin will respond with an error status in case of missing information -->
        <ignoreMissingData>false</ignoreMissingData>

        <!-- define here if the catalogue request shall be skipped in case of request issues (e.g. wrong record identifier or network issues) -->
        <ignoreRequestIssues>false</ignoreRequestIssues>

        <!-- define if children are analysed as well. If a sub element contains an identifier, the metadata will get imported as well -->
        <analyseSubElements>false</analyseSubElements>

        <!-- if records shall be merged: which existing fields shall not be replace with new values? (use the metadatatypes from ruleset) -->
        <skipField>TitleDocMain</skipField>
        <skipField>CatalogIDDigital</skipField>
        <skipField>DocLanguage</skipField>
        <skipField>_urn</skipField>
        <skipField>_representative</skipField>
    </config>

</config_plugin>

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

catalogue

Hier kann definiert werden, welcher Katalog für die Abfrage von neuen Daten verwendet werden soll. Hierbei handelt es sich um die Bezeichnung eines Kataloges, wie er innerhalb der globalen Goobi-Katalogkonfiguration innerhalb von goobi_opac.xml definiert wurde.

catalogueField

Hiermit wird festgelegt, welches Feld für die Abfrage des Katalogidentifiers genutzt werden soll.

catalogueIdentifier

Definition desjenigen Metadatums aus der METS-Datei, das für die Abfrage des Katalogs verwendet werden soll. Üblicherweise handelt es sich hierbei um denjenigen Identifier, der auch bei der erstmaligen Katalogabfrage verwendet wurde und der zumeist innerhalb der Metadatums ${meta.CatalogIDDigital} gespeichert vorliegt.

mergeRecords

Wenn der Wert true gesetzt ist, wird die bestehende METS-Datei mit den aktuellen Daten aus dem Katalog aktualisiert. Eventuelle zusätzliche Metadaten können für die Aktualisierung ausgeschlossen werden. Auch bleibt der logische und physische Strukturbaum innerhalb der METS-Datei unverändert.Wenn der Wert auf false gesetzt wird, dann wird die bestehende METS-Datei vollständig durch eine neue METS-Datei ersetzt, die mittels der Katalogabfrage generiert wurde.

ignoreMissingData

Mit diesem Parameter kann festgelegt werden, ob der Arbeitsschritt des Plugins im Falle von fehlenden Katalogdaten fortfahren soll oder in einen Fehlerstatus wechseln soll.

ignoreRequestIssues

Hier kann definiert werden, wie sich das Plugin im Falle eines Abfragefehlers verhalten soll, beispielsweise bei Netzwerkproblemen. Auf diese Weise läßt sich definieren, dass der Workflow unterbrochen oder dennoch fortgeführt werden soll.

analyseSubElements

Mit diesem Parameter läßt sich definieren, ob auch Metadaten für bereits innerhalb der METS-Dateien vorhandene Strukturelemente vom Katalog abgefragt werden sollen. Hierfür muss pro Unterelement das festgelegte Metadatum für den abzufragenden Identifier vorhanden sein.

skipField

Hier können mehrere Metadatenfelder definiert werden, die keinesfalls durch eine Katalogabfrage geändert werden sollen. Dies ist insbesondere für diejenigen Felder sinnvoll, die nicht aus einer Katalogabfrage kommen und daher zuvor zusätzlich zu den Katalogdaten erfasst wurden. Typische Beispiele für solche Felder sind unter anderem singleDigCollection,accesscondition und pathimagefiles. Bitte beachten Sie, dass dieser Parameter nur dann Anwendung findet, wenn der Wert für mergeRecords auf true steht.

/opt/digiverso/goobi/plugins/step/plugin-step-delay-base.jar
/opt/digiverso/goobi/config/plugin_intranda_delay_configurable.xml

Automatische Aufgabe

Ja

Plugin für Arbeitsschritt

intranda_step_delay

Plugin für Zeitverzögerung

Ja

<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
    <!--
        order of configuration is:
          1.) project name and step name matches
          2.) step name matches and project is *
          3.) project name matches and step name is *
          4.) project name and step name are *
	-->
    
    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>
        
        <!-- Delay in days -->
        <delayInDays>3</delayInDays>
    </config>

</config_plugin>

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

delayInDays

Pausierung des Workflows in Tagen.

Konfiguration des Arbeitsschritts für die Nutzung des Plugins
Auswahl des Plugsins zur Durchführung des Arbeitschrittes
Integration des Plugins in den Workflow
Konfiguration des Arbeitsschritts für die Nutzung des Plugins
https://github.com/intranda/goobi-plugin-step-ark
https://github.com/intranda/goobi-plugin-step-batch-assignment
https://github.com/intranda/goobi-plugin-step-batch-progress
https://github.com/intranda/goobi-plugin-statistics-user-throughput
https://github.com/intranda/goobi-plugin-opac-pica

Identifier

intranda_step_delay_workflow_status

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

04.09.2024 09:02:25

Identifier

intranda_step_imagename_analyse

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

15.08.2024 06:28:32

Identifier

intranda_step_catalogue_request

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 12:00:56

Identifier

intranda_step_delay

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

21.11.2024 11:45:52

Generierung von PDF-Dateien

Dies ist die technische Dokumentation für das Goobi-Plugin für das automatische Generieren von PDF-Dateien aus Bildern

Übersicht

Name
Wert

Identifier

intranda_step_createfullpdf

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

17.09.2024 16:58:45

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz dieses Plugins zum Generieren der PDF Dateien aus Bildern.

Installation

Zur Nutzung des Plugins muss es an folgenden Ort kopiert werden:

/opt/digiverso/goobi/plugins/step/plugin_intranda_step_createfullpdf-base.jar

Die Konfiguration des Plugins wird unter folgendem Pfad erwartet:

/opt/digiverso/goobi/config/plugin_intranda_step_createfullpdf.xml

Überblick und Funktionsweise

Nachdem das Plugin korrekt installiert wurde, kann es in der Nutzeroberfläche für die Verwendung innerhalb des Workflows bei dem gewünschten Arbeitsschritt konfiguriert werden. Hierfür muss als Plugin der Wert intranda_step_createfullpdf ausgewählt und die Ausfühlung sollte als automatisch festgelegt werden.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_step_createfullpdf.xml wie hier aufgezeigt:

<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
    <!-- order of configuration is: 
         1.) project name and step name matches 
         2.) step name matches and project is * 
         3.) project name matches and step name is * 
         4.) project name and step name are * 
    -->
    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>

        <!-- which stepss to use for (can be more then one, otherwise use *) -->
        <step>*</step>

         <!-- Choose the source images folder that shall be used for PDF generation. Possible values are 'media' and 'master' -->
        <imagesFolder>media</imagesFolder>

   		<!-- single page pdf files shall be generated and kept (@enabled) -->
		<singlePagePdf enabled="false" /> 

        <!-- Full PDF file is generated and kept (@enabled) 
        	- @mode controls if PDF shall be generated based on METS file ('mets') or based on singlePagePdfs ('singlepages')
        	- @pdfConfigVariant sets up which config variant in contentServerConfig.xml should be used. If not set, then use default. -->
        <fullPdf enabled="true" mode="mets" pdfConfigVariant="pdfa"/>

        <!-- If set, then this ABSOLUTE path will be used to export the results. 
        	If no path is defined the PDF will be stored in the ocr/pdf-folder of the process -->
        <exportPath>/opt/digiverso/goobi/tmp</exportPath>
    </config>

</config_plugin>

Allgemeine Parameter

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

Parameter
Erläuterung

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

Weitere Parameter

Neben diesen allgemeinen Parametern stehen die folgenden Parameter für die weitergehende Konfiguration zur Verfügung:

Wert
Beschreibung

imageFolder

Dieser Parameter erwartet den Namen des Bildordners. Mögliche Werte sind media und master. Alle anderen Angaben werden als media interpretiert.

singlePagePdf

Das Attribut enabled dieses Parameters bestimmt, ob Einzelseiten-PDFs erzeugt werden sollen.

fullPdf

Das Attribut enabled dieses Parameters bestimmt, ob ein Gesamt-PDF erzeugt werden soll. Das Attribut mode steuert dabei, wie dieses PDF erzeugt werden soll. Hierfür steht der Wert mets zur Verfügung, um das PDF basierend auf der METS-Datei zu erzeugen. Alternativ kann als Wert singlepages verwendet werden, um das Gesamt-PDF aus den zuvor erzeugten Einzelseiten-PDFs zu generieren. Die Einzelseiten-PDFs werden dabei nur dann temporär erzeugt, wenn sie innerhalb der Konfiguration nicht bereits aktiviert wurden. Das Attribut pdfConfigVariant hingegen ist optional und legt fest, welche Konfigurationsvariante verwendet werden soll. Ist sie nicht gesetzt, wird default verwendet.

exportPath

Dieser optionale Parameter kann verwendet werden, um einen Pfad für den Export der PDF-Dateien festzulegen. Wenn er verwendet wird, wird ein absoluter Pfad erwartet. Ist er nicht angegeben, werden die PDF-Dateien innerhalb des ocr-Verzeichnisses des Vorgangs erzeugt.

Inhalte löschen

Dieses Step Plugin ermöglicht das automatische selektive Löschen von Inhalten aus einem Vorgang.

Übersicht

Name
Wert

Identifier

intranda_step_deleteContent

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

06.09.2024 11:38:57

Einführung

Das Plugin dient zum automatischen Löschen von Daten eines Vorgangs. Hierzu kann in einer Konfigurationsdatei sehr granular festgelegt werden, welche Daten genau gelöscht werden sollen.

Installation

Zur Installation des Plugins muss die folgende Datei installiert werden:

/opt/digiverso/goobi/plugins/step/plugin_intranda_step_deleteContent-base.jar

Um zu konfigurieren, wie sich das Plugin verhalten soll, können verschiedene Werte in der Konfigurationsdatei angepasst werden. Die Konfigurationsdatei befindet sich üblicherweise hier:

/opt/digiverso/goobi/config/plugin_intranda_step_deleteContent.xml

Überblick und Funktionsweise

Zur Inbetriebnahme des Plugins muss dieses für einen oder mehrere gewünschte Aufgaben im Workflow aktiviert werden. Dies erfolgt wie im folgenden Screenshot aufgezeigt durch Auswahl des Plugins intranda_step_deleteContent aus der Liste der installierten Plugins.

Da dieses Plugin üblicherweise automatisch ausgeführt werden soll, sollte der Arbeitsschritt im Workflow als automatisch konfiguriert werden.

Nachdem das Plugin vollständig installiert und eingerichtet wurde, wird es üblicherweise automatisch innerhalb des Workflows ausgeführt, so dass keine manuelle Interaktion mit dem Nutzer erfolgt. Stattdessen erfolgt der Aufruf des Plugins durch den Workflow im Hintergrund und startet die Löschung der konfigurierten Daten. Hierbei werden die konfigurierten Ordner und Daten gelöscht, sofern diese vorhanden sind. Nicht vorhandene Daten werden übersprungen. Wenn konfiguriert wurde, dass der Vorgang deaktiviert werden soll, werden alle Arbeitsschritte durchlaufen und geprüft, ob diese bereits innerhalb des Workflows regulär geschlossen wurden. Sollte dies nicht der Fall sein, wird der Arbeitsschritt deaktiviert.

Nach Abschluss der Löschung wird im Vorgangslog eine Meldung über den Aufruf dieses Plugins und das Löschen der Daten hinzugefügt.

Konfiguration

Die Konfiguration des Plugins ist folgendermaßen aufgebaut:

<config_plugin>
    <config>
        <project>*</project>
        <step>*</step>
        
        <!-- delete all data within the images/ folder -->
        <deleteAllContentFromImageDirectory>false</deleteAllContentFromImageDirectory>
        
        <!-- OR delete a single image folder - this is only used if deleteAllContentFromImageDirectory is set to false -->
        <deleteMediaDirectory>false</deleteMediaDirectory>
        <deleteMasterDirectory>false</deleteMasterDirectory>
        <deleteSourceDirectory>false</deleteSourceDirectory>
        <deleteFallbackDirectory>false</deleteFallbackDirectory>
        <!-- configure any additional folder. This folder gets deleted, if the folder name was configured in goobi_config.properties and does exist in current process -->
        <!-- 
        <additionalFolder>images.jpeg</additionalFolder>
        <additionalFolder>images.cropped</additionalFolder>
        -->
        <!-- delete all data within the thumbs/ folder -->
        <deleteAllContentFromThumbsDirectory>false</deleteAllContentFromThumbsDirectory>
        
        <!-- delete all data within the ocr/ folder -->
        <deleteAllContentFromOcrDirectory>false</deleteAllContentFromOcrDirectory>
        
        <!-- OR delete a single ocr folder - this is only used if deleteAllContentFromOcrDirectory is set to false -->
        <deleteAltoDirectory>false</deleteAltoDirectory>
        <deletePdfDirectory>false</deletePdfDirectory>
        <deleteTxtDirectory>false</deleteTxtDirectory>
        <deleteWcDirectory>false</deleteWcDirectory>
        <deleteXmlDirectory>false</deleteXmlDirectory>
        
        <!-- delete export folder -->
        <deleteExportDirectory>false</deleteExportDirectory>
        
        <!-- delete import folder -->
        <deleteImportDirectory>false</deleteImportDirectory>
        
        <!-- delete processlog folder -->
        <deleteProcesslogDirectory>false</deleteProcesslogDirectory>

        <!-- delete validation folder -->
        <deleteValidationDirectory>false</deleteValidationDirectory>
        
        <!-- delete metadata -->
        <deleteMetadataFiles>false</deleteMetadataFiles>
        
        <!-- deactivate all unfinished tasks -->
        <deactivateProcess>false</deactivateProcess>
        
        <!-- delete specific metadata in the structure main object (e.g. Monograph or Volume) 
             use the internal ruleset name here, e.g. singleDigCollection, DocLanguage etc. 
             this field is repeatable -->
        <deleteMetadata name="myMetadataType"/>

        <!-- delete specific process properties, e.g. Font type, Opening angle etc. 
             this field is repeatable -->
        <deleteProperty name="Opening angle"/>
        
        
        
    </config>
</config_plugin>

Allgemeine Parameter

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

Parameter
Erläuterung

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

Weitere Parameter

Neben diesen allgemeinen Parametern stehen die folgenden Parameter für die weitergehende Konfiguration zur Verfügung:

Parameter
Erläuterung

deleteAllContentFromImageDirectory

Legen Sie hier fest, ob alle Daten aus dem images Ordner gelöscht werden sollen.

deleteMediaDirectory

Legen Sie hier fest, ob der media-Ordner gelöscht werden soll. Diese Option wird nicht ausgewertet, wenn deleteAllContentFromImageDirectory aktiviert ist.

deleteMasterDirectory

Legen Sie hier fest, ob der master-Ordner gelöscht werden soll. Diese Option wird nicht ausgewertet, wenn deleteAllContentFromImageDirectory aktiviert ist.

deleteSourceDirectory

Legen Sie hier fest, ob der source-Ordner gelöscht werden soll. Diese Option wird nicht ausgewertet, wenn deleteAllContentFromImageDirectory aktiviert ist.

deleteFallbackDirectory

Legen Sie hier fest, ob der konfigurierte fallback-Ordner gelöscht werden soll. Diese Option wird nicht ausgewertet, wenn deleteAllContentFromImageDirectory aktiviert ist.

deleteAllContentFromThumbsDirectory

Legen Sie hier fest, ob alle Daten aus dem thumbs Ordner gelöscht werden sollen.

deleteAllContentFromOcrDirectory

Legen Sie hier fest, ob alle Daten aus dem ocr Ordner gelöscht werden sollen.

deleteAltoDirectory

Legen Sie hier fest, ob der alto-Ordner gelöscht werden soll. Diese Option wird nicht ausgewertet, wenn deleteAllContentFromOcrDirectory aktiviert ist.

deletePdfDirectory

Legen Sie hier fest, ob der pdf-Ordner gelöscht werden soll. Diese Option wird nicht ausgewertet, wenn deleteAllContentFromOcrDirectory aktiviert ist.

deleteTxtDirectory

Legen Sie hier fest, ob der txt-Ordner gelöscht werden soll. Diese Option wird nicht ausgewertet, wenn deleteAllContentFromOcrDirectory aktiviert ist.

deleteWcDirectory

Legen Sie hier fest, ob der wc-Ordner gelöscht werden soll. Diese Option wird nicht ausgewertet, wenn deleteAllContentFromOcrDirectory aktiviert ist.

deleteXmlDirectory

Legen Sie hier fest, ob der xml-Ordner gelöscht werden soll. Diese Option wird nicht ausgewertet, wenn deleteAllContentFromOcrDirectory aktiviert ist.

deleteExportDirectory

Legen Sie hier fest, ob der export-Ordner gelöscht werden soll.

deleteImportDirectory

Legen Sie hier fest, ob der import-Ordner gelöscht werden soll.

deleteProcesslogDirectory

Legen Sie hier fest, ob der Ordner gelöscht werden soll, in dem die Dateien verwaltet werden, die im Vorgangslog hochgeladen wurden.

deleteMetadataFiles

Legen Sie hier fest, ob die Metadaten und dazugehörigen Backups gelöscht werden sollen.

deactivateProcess

Wenn diese Option aktiviert wurde, werden alle Schritte des Vorgangs deaktiviert, wenn diese zuvor nicht bereits abgeschlossen wurden.

deleteMetadata

Hier kann ein bestimmtes Metadatum gelöscht werden, das sich auf der Ebene des Werkes in der Metadatendatei befindet. Das Element ist wiederholbar und muss einen gültigen Namen für ein Metadatentyp aus dem Regelsatz verwenden.

deleteProperty

Hier kann eine bestimmte Vorgangseigenschaft gelöscht werden., Das Element ist wiederholbar und muss den Namen der Eigenschaft aufführen.

Ändern des Workflows auf Grundlage von Vorgangseigenschaften

Dies ist die technische Dokumentation für das Goobi-Plugin für das automatische Ändern von Workflows auf Grundlage von Vorgangseigenschaften.

Übersicht

Name
Wert

Identifier

intranda_step_changeWorkflow

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

02.05.2025 11:22:07

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz eines Plugins zum automatischen Ändern von Workflows zur Laufzeit. Das Plugin kann (je nach Konfiguration) Schritte öffnen, schließen oder deaktivieren. Benutzergruppen können zugwiesen werden und auch Produktionsvorlagen vollständig getauscht werden. Die Entscheidung, was jeweils genau geschehen soll, wird auf Grundlage von Vorgangseigenschaften getroffen.

Installation

Zur Nutzung des Plugins muss es an folgenden Ort kopiert werden:

/opt/digiverso/goobi/plugins/step/plugin_intranda_step_changeWorkflow-base.jar

Die Konfiguration des Plugins wird unter folgendem Pfad erwartet:

/opt/digiverso/goobi/config/plugin_intranda_step_changeWorkflow.xml

Überblick und Funktionsweise

Nachdem das Plugin installiert und konfiguriert wurde, kann es in der Nutzeroberfläche in einem Workflowschritt konfiguriert werden. Hierbei sollte darauf geachtet werden, dass der Schritt so heißt, wie in der Konfigurationsdatei. Außerdem sollte ein Haken bei Automatische Aufgabe gesetzt sein.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_step_changeWorkflow.xml wie hier aufgezeigt:

<config_plugin>
    <!--
    	order of configuration is: 
	    1.) project name and step name matches 
	    2.) step name matches and project is * 
	    3.) project name matches and step name is * 
	    4.) project name and step name are * 
    -->

	<config>
		<!-- which projects to use for (can be more then one, otherwise use *) -->
		<project>Register</project>
		<step>Check</step>

		<!-- multiple changes can be done within one configuration rule; simply add another 'change' element with other properties here -->
		<change>
			<!-- name of the property or metadata to check: please take care to use the syntax of the Variable replacer here -->
			<propertyName>{process.TemplateID}</propertyName>
			<!-- expected value (can be blank too) -->
			<propertyValue>183</propertyValue>
			<!-- condition for value comparing, can be 'is' or 'not' or 'missing' or 'available' -->
			<propertyCondition>is</propertyCondition>
			<!-- list of steps to open, if property value matches -->
			<steps type="open">
				<title>Box preparation</title>
			</steps>
			<!-- list of steps to deactivate -->
			<steps type="deactivate">
				<title>Image QA</title>
			</steps>
			<!-- list of steps to close -->
			<steps type="close">
				<title>Automatic LayoutWizzard Cropping</title>
				<title>LayoutWizzard: Manual confirmation</title>
			</steps>
			<!-- list of steps to lock -->
			<steps type="lock">
				<title>Automatic export to Islandora</title>
			</steps>
			<!-- list of automatic steps to run -->
			<steps type="run">
				<title>Create derivates</title>
			</steps>

			<usergroups step="Image QA">
				<usergroup>Administration</usergroup>
				<usergroup>AutomaticTasks</usergroup>
			</usergroups>
			
			<!-- write a message into the journal (aka process log) -->
			<log type="info">My info message</log>
			<log type="error">My error message</log>
			<log type="user">My user message</log>
			
			<!-- If any title under priority is configured with a *, then this priority value will be applied to all steps of this process. -->
			<!-- If more than two titles are configured with *, then the first match in the order of values 0, 1, 2, 3, 10 will be used. -->
			<!-- list of steps of priority 0 (standard) -->
			<priority value="0">
				<title>Some standard step</title>
			</priority>
			
			<!-- list of steps of priority 1 (priority) -->
			<priority value="1">
				<title>Step of priority</title>
			</priority>
			
			<!-- list of steps of priority 2 (high priority) -->
			<priority value="2">
				<title>Step of high priority</title>
			</priority>
			
			<!-- list of steps of priority 3 (highest priority) -->
			<priority value="3">
				<title>Step of highest priority</title>
				<title>another step of highest priority</title>
			</priority>
			
			<!-- list of steps of priority 10 (correction) -->
			<priority value="10">
				<title></title>
			</priority>
			
			<!-- list of properties to be changed or deleted -->
			<properties>
				<property name="My property" value="My value" />
				<property name="My boolean property" value="true" />
				<property name="My property to be deleted" delete="true" />
			</properties>
			
		</change>
	</config>

	<config>
		<!-- which projects to use for (can be more then one, otherwise use *) -->
		<project>*</project>
		<step>*</step>

		<!-- multiple changes can be done within one configuration rule; simply add another 'change' element with other properties here -->
		<change>
			<!-- name of the property or metadata to check: please take care to use the syntax of the Variable replacer here -->
			<propertyName>{process.upload to digitool}</propertyName>
			<!-- expected value (can be blank too) -->
			<propertyValue>No</propertyValue>
			<!-- condition for value comparing, can be 'is' or 'not' -->
			<propertyCondition>is</propertyCondition>
			<!-- list of steps to open, if property value matches -->
			<steps type="open">
				<title>Create derivates</title>
				<title>Jpeg 2000 generation and validation</title>
			</steps>
			<!-- list of steps to deactivate -->
			<steps type="deactivate">
				<title>Rename files</title>
			</steps>
			<!-- list of steps to close -->
			<steps type="close">
				<title>Upload raw tiffs to uploaddirectory Socrates</title>
				<title>Automatic pagination</title>
			</steps>
			<!-- list of steps to lock -->
			<steps type="lock">
				<title>Create METS file</title>
				<title>Ingest into DigiTool</title>
			</steps>
			<!-- list of automatic steps to run -->
			<steps type="run">
				<title>Create derivates</title>
			</steps>
			
		</change>
	</config>

	<!-- change process template -->
	<config>
		<!-- which projects to use for (can be more then one, otherwise use *) -->
		<project>Archive_Project</project>
		<step>Check process template change</step>

		<!-- multiple changes can be done within one configuration rule; simply add another 'change' element with other properties here -->
		<change>
			<!-- name of the property or metadata to check: please take care to use the syntax of the Variable replacer here -->
			<propertyName>{process.TemplateID}</propertyName>
			<!-- expected value (can be blank too) -->
			<propertyValue>309919</propertyValue>
			<!-- condition for value comparing, can be 'is' or 'not' or 'missing' or 'available' -->
			<propertyCondition>is</propertyCondition>
			<!-- Name of the new process template -->
 			<workflow>Manuscript workflow</workflow>
			<project></project>
		</change>
	</config>



    <config>
        <project>Duplication_Test</project>
        <step>ChangeWorkflowTest</step>
        <change type="checkDuplicates">
            <metadata>SharedThesisId</metadata>
            <workflow>MassImportTest</workflow>
        </change>
    </config>

    <!-- check whether a master anchor data record exists for the current identifier -->
    <config>
        <project>*</project>
        <step>master anchor check</step>

        <change type="search">
            <!-- exists: true if at least one process matches the search query -->
            <!-- not exists: true if no process matches the search query -->
            <condition>exists</condition>
            <!-- search query, can include the usual variables -->
            <query>(prozesse.ProzesseID in (select distinct processid from metadata where name = 'InternalNote' and value = 'AnchorMaster')) AND (prozesse.ProzesseID in (select distinct processid from metadata where name = 'CatalogIDDigital' and value = '{meta.topstruct.CatalogIDDigital}'))</query>


            <!-- Name of the new process template -->
            <workflow>Manuscript workflow</workflow>
        </change>
    </config>
</config_plugin>

Allgemeine Parameter

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

Parameter
Erläuterung

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

Weitere Parameter

Neben diesen allgemeinen Parametern stehen die folgenden Parameter für die weitergehende Konfiguration zur Verfügung:

In jedem <change>-Element wird dann konfiguriert, welche Prozesseigenschaft überprüft wird (<propertyName>) und welcher Wert erwartet wird (<propertyValue>). Bitte beachten Sie, dass die Angabe zur Definition, welche Eigenschaft für die Prüfung eines Wertes verwendet werden soll, mit der Syntax für den sog. Variablen Replacer angegeben werden muss. Entsprechend muss bei der Definition des Feldes, das geprüft werden soll die Angabe wir wie in in folgenden Beispielen erfolgen:

<propertyName>{process.ABC}</propertyName>
<propertyName>{{meta.ABC}}</propertyName>
<propertyName>{meta.topstruct.ABC}</propertyName>
<propertyName>{meta.firstchild.ABC}</propertyName>
<propertyName>{db_meta.ABC}</propertyName>

Weitere Erläuterungen über die Verwendung von Variablen finden sich hier:

Wenn eine Eigenschaft und der zu prüfende Wert benannt wurde, wird die Bedinung ausgewertet, die erfüllt sein muss, um das Plugin anzuwenden.

<!-- name of the property or metadata to check: please take care to use the syntax of the Variable replacer here -->
<propertyName>{process.TemplateID}</propertyName>
<!-- expected value (can be blank too) -->
<propertyValue>183</propertyValue>
<!-- condition for value comparing, can be 'is' or 'not' or 'missing' or 'available' -->
<propertyCondition>is</propertyCondition>

Die Prüfung geht grundsätzlich davon aus, dass die zu prüfende Eigenschaft nur einmal vorhanden ist und würde im Falle mehrerer gleich lautender Eigenschaften die erste gefundene Eigenschaft mit dem Namen für die Prüfung nutzen. Anschließend erfolgt die Prüfung des Wertes anhand der angegebenen propertyCondition:

Parameterwert
Erläuterung

is

Der Inhalt der Eigenschaft enspricht exakt dem konfigurierten Wert.

not

Der Inhalt der Eigenschaft enspricht nicht exakt dem konfigurierten Wert.

missing

Die Eigenschaft ist nicht vorhanden.

available

Eine Eigenschaft mit diesem Namen ist vorhanden, unabhängig von deren Inhalt.

Nach der Definition, wie die Eigenschaften auszuwerten sind, wird die auszuführende Aktion festgelegt. Hier bestehen folgende Möglichkeiten:

Ändern des Status von Arbeitsschritten des Workflows

Abhängig von vorhandenen Eigenschaften kann der Status festgelegter Arbeitsschritte innerhalb des Workflows automatisiert geändert werden. Hierbei können Arbeitsschritte geöffnet type="open", deaktiviert type="deactivate", geschlossen type="close" oder gesperrt type="lock" werden.

<steps type="open">
    <title>Create derivates</title>
    <title>Jpeg 2000 generation and validation</title>
</steps>
<steps type="deactivate">
    <title>Rename files</title>
</steps>
<steps type="close">
    <title>Upload raw tiffs to uploaddirectory Socrates</title>
    <title>Automatic pagination</title>
</steps>
<steps type="lock">
    <title>Create METS file</title>
    <title>Ingest into DigiTool</title>
</steps>
Parameter
Erläuterung

type

Legen Sie fest, welchen Status die Arbeitsschritte erhalten sollen.

title

Definieren Sie hier den Namen der Arbeitsschritte, die auf den gewünschten Status gesetzt werden sollen.

Ändern der Priorität von Arbeitsschritten des Workflows

Abhängig von vorhandenen Eigenschaften kann die Priorität festgelegter Arbeitsschritte innerhalb des Workflows automatisiert geändert werden. Mögliche Werte für die Prioritäten sind Standard value="0", Priorität value="1", Hohe Priorität value="2", Höchste Priorität value="3", oder Korrektur value="10". Wenn ein title mit * konfiguriert ist, dann wird der zugehörige Prioritätswert für alle Schritte von diesem Vorgang benutzt. Wenn aber mehr als zwei title mit * konfiguriert sind, dann wird nur der erste vorkommende in der Reihenfolge 0, 1, 2, 3, 10 berücksichtigt.

<priority value="0">
    <title>Some standard step</title>
</priority>

<priority value="1">
    <title>Step of priority</title>
</priority>

<priority value="2">
    <title>Step of high priority</title>
</priority>

<priority value="3">
    <title>Step of highest priority</title>
    <title>another step of highest priority</title>
</priority>

<priority value="10">
    <title></title>
</priority>
Parameter
Erläuterung

value

Legen Sie fest, welche Priorität die Arbeitsschritte erhalten sollen.

title

Definieren Sie hier den Namen der Arbeitsschritte, die auf die gewünschte Priorität gesetzt werden sollen. Verwenden Sie *, falls alle Schritte angepasst werden sollen.

Ändern der Zuständigkeit von Benutzergruppen für Arbeitsschritte

Abhängig von vorhandenen Eigenschaften lassen sich die zuständigen Benutzergruppen für mehrere Arbeitsschritte festlegen. Die Konfiguration erfolgt dabei wie wie hier aufgezeigt:

<usergroups step="Image QA">
    <usergroup>Administration</usergroup>
    <usergroup>AutomaticTasks</usergroup>
</usergroups>
Parameter
Erläuterung

step

Legen Sie fest, für welchen Arbeitsschritt Sie die Benutzergruppen eintragen möchten.

usergroup

Definieren Sie hier den Namen der Benutztergruppe, die für den konfigurierten Schritt als zuständig eingetragen werden soll.

Ändern der Produktionsvorlage auf der der Vorgang basiert

Mit einer Konfiguration wie im folgenden Beispiel kann während des laufenden Workflows die Produktionsvorlage des Vorgangs getauscht werden. Abhängig von vorhandenen Eigenschaften läßt sich somit ein Workflow während der Ausführung gegen einen anderen Workflow ersetzen. Arbeitsschritte, die in dem neuen Workflow ebenfalls vorhanden sind, werden dabei automatisch auf den korrekten Status gesetzt.

 <workflow>Manuscript workflow</workflow>
Parameter
Erläuterung

workflow

Definieren Sie hier den Namen der Produktionsvorlage, die für den Vorgang verwendet werden soll.

Anzeige von Metadaten in einer Aufgabe

Dies ist die technische Dokumentation für das Goobi-Plugin für die Anzeige von beliebigen Metadaten in einem Workflow-Aufgabe

Übersicht

Name
Wert

Identifier

intranda_step_displayMetadata

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:59:59

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz eines Plugins zur Anzeige von Metadaten in einem Workflow-Schritt. Das Plugin kann beliebige Metadaten in einem Schritt anzeigen. Die Konfiguration von Prä- und Suffixen ist auch möglich.

Installation

Zur Nutzung des Plugins müssen die beiden Artefakte an folgende Orte kopiert werden:

/opt/digiverso/goobi/plugins/step/plugin_intranda_step_displayMetadata-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin_intranda_step_displayMetadata-gui.jar

Die Konfiguration des Plugins wird unter folgendem Pfad erwartet:

/opt/digiverso/goobi/config/plugin_intranda_step_displayMetadata.xml

Überblick und Funktionsweise

In Goobi muss das Plugin in den Workflow einkonfiguriert werden. Dafür muss in der Schritte-Konfiguration als Schritte-Plugin intranda_step_displayMetadata ausgewählt werden.

Wenn dann nach erfolgreicher Konfiguration der Schritt geöffnet wird, werden alle Metadaten - sofern im Vorgang vorhanden - angezeigt:

Konfiguration

Es können mehrere Metadaten zur Anzeige konfiguriert werden, zusätzlich kann ein Präfix und ein Suffix angezeigt werden. Das key-Attribut dient für die Übersetzung des labels des Metadatums:

<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
    <config>
        <project>*</project>
        <step>*</step>
        <metadatalist>
            <metadata>Author</metadata>
            <metadata>TitleDocMain</metadata>
            <metadata>_urn</metadata>
            <metadata prefix="http://svdmzgoobiweb01.klassik-stiftung.de/viewer/image/" suffix="/1/" key="url">CatalogIDDigital</metadata>
        </metadatalist>
    </config>
</config_plugin>

Plugin zur Registrierung von DOIs via DataCite API

Dies ist ein Goobi Step-Plugin, um die Registrierung von digitalen Objekten beim DataCite DOI-Dienst zu ermöglichen.

Übersicht

Einführung

Diese Dokumentation beschreibt die Installation, Konfiguration und Verwendung des Plugins zur Registrierung von DOIs.

ACHTUNG: Für diese Funktionalität existiert noch ein neueres Plugin, das mittels XSL-Transformation einen höheren Freiheitsgrad der DOI-Registrierung erlaubt. Eine Dokumentation des neuen Plugins findet sich hier: https://docs.goobi.io/goobi-workflow-plugins-de/step/intranda_step_doi

Installation

Das Plugin besteht aus den folgenden Dateien:

Die Datei plugin_intranda_step_datacite_doi-base.jar enthält die Programmlogik. Sie muss unter folgendem Pfad installiert werden:

Bei der Datei plugin_intranda_step_datacite_mapping.xml handelt es sich um die Mapping-Datei, die definiert, wie lokale Metadaten in die für die DOI-Registrierung erforderliche Form übersetzt werden sollen. Sie muss unter diesem Pfad installiert werden:

Die Datei plugin_intranda_step_datacite_doi.xml ist die Hauptkonfigurationsdatei für das Plugin. Sie muss unter diesem Pfad installiert werden:

Überblick und Funktionsweise

Um das Plugin in Betrieb zu nehmen, muss es für eine oder mehrere gewünschte Aufgaben im Workflow aktiviert werden. Dies geschieht wie im folgenden Screenshot gezeigt durch Auswahl des Plugins intranda_step_datacite_doi aus der Liste der installierten Plugins.

Da dieses Plugin in der Regel automatisch ausgeführt werden soll, sollte der Workflow-Schritt im Workflow als automatisch konfiguriert werden. Da das Plugin den DOI in die Metadatendatei des Vorgangs schreibt, sollte das Kontrollkästchen für Update metadata index when finishing ebenfalls aktiviert sein.

Das Programm untersucht die Metadatenfelder der METS/MODS-Datei aus dem Goobi-Vorgang. Wenn ein <typeForDOI> angegeben ist, dann geht es jedes Strukturlement dieses Typs in der Datei durch. Wenn nicht, dann nimmt es das oberste Strukturlement. Daraus erstellt es die Daten für ein DOI, wobei es die Mapping-Datei zum Übersetzen verwendet. Dann wird der DOI über die MDS-API von DataCite registriert, wobei der DOI durch die <base> zusammen mit einem beliebigen <prefix> und <name> und der ID des Dokuments (seine CatalogIDDigital) plus einem inkrementierten Zähler angegeben wird, falls mehr als ein DOI für das gegebene Dokument erzeugt wurde. Der Datensatz erhält eine registrierte URL, die durch <url> definiert ist, gefolgt von der DOI. Der generierte DOI wird in die METS/MODS-Datei unter den in <doiMetadata> angegebenem Metadatum gespeichert. Wenn der Wert für <typeForDOI> zum Beispiel Article lautet, dann erhält jeder Artikel in der METS/MODS-Datei einen DOI, der in den Metadaten unter <doiMetadata> für jeden Artikel gespeichert wird.

Konfiguration

Hauptkonfiguration

Die Konfiguration erfolgt über die Konfigurationsdatei plugin_intranda_step_datacite_doi.xml und kann im laufenden Betrieb angepasst werden. Sie ist wie folgt aufgebaut:

Der Block <config> kann für verschiedene Projekte oder Workflow-Schritte mehrfach vorkommen, um unterschiedliche Aktionen innerhalb verschiedener Workflows durchführen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben die folgende Bedeutung:

Konfiguration innerhalb der Mapping-Datei

Die Mapping-Konfigurationsdatei sieht in etwa so aus:

Für jede <map> gibt das <field> den Namen des DOI-Elements an, und die Einträge <metadata> und <altMetadata> geben an, aus welchen Metadaten der Strukturelemente der Reihe nach der Wert genommen werden soll. Wenn es keinen solchen Eintrag in den Strukturelementen gibt, dann wird der <default>-Wert genommen. Der Wert "unkn" für "unbekannt" wird von Datacite für fehlende Daten empfohlen.

Die Elemente <listMap> erlauben Listenelemente anzulegen innerhalb der genererirten Datacite-Struktur, so dass sich wiederholende Werte definiert werden können. Dabei können auch Attribute angegeben werden, die für das zu erzeugende Listenelement so itentisch mit Name und Wert übernommen werden (z.B. alternateIdentifierType="Goobi identifier");

Für die Pflichtfelder muss ein <default> angegeben werden; für optionale Felder ist dies nicht notwendig, kann aber auf Wunsch erfolgen.

Der Standardeintrag #CurrentYear ist ein Sonderfall: er wird während der DOI-Generierng durch das aktuelle Jahr ersetzt.

Soll für ausgewählte Strukturelemente eine Referenzierung des Werkes erfolgen, in dem dieses Element erschienen ist, so können mehrere Elemente als publicationTypeWithRelatedItem aufgeführt werden. Für diese wird kann ebenfalls der Block der Elemente <publicationData> ausgewertet. Dies könnte beispielsweise für wissenschaftliche Artikel Verwendung finden.

Nützliche Zusatzinformationen

  • Dokumentation von Datacite: https://support.datacite.org/docs/getting-started

  • Metadatenschema-Übersicht: https://schema.datacite.org/

  • Metadatenschema für die Version 4.4 mit Beispieldateien: https://schema.datacite.org/meta/kernel-4.4/

  • Admin-Bereich für Datacite-Kunden: https://doi.datacite.org/

  • Admin-Bereich im Testsystem für Datacite-Kunden: https://doi.test.datacite.org/

Beispiel

  • Beispiel für eine Datacite-XML-Datei aus Goobi:

Plugin zur DOI-Registrierung

Dies ist ein Goobi Step-Plugin, um die Registrierung von digitalen Objekten beim DataCite DOI-Dienst zu ermöglichen.

Übersicht

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz eines Plugins zum Registrieren von DOIs über die DataCite API.

Installation

Das Plugin besteht aus den folgenden Dateien:

Die Datei plugin_intranda_step_doi-base.jar enthält die Programmlogik. Sie muss unter folgendem Pfad installiert werden:

Bei der Datei doi.xsl handelt es sich um die Transformationsdatei, die das Grundgerüst der DataCite-Metadaten darstellt, in die das Plugin die individuellen Metdaten des jeweiligen Vorgangs einfügt, um anschließend die DOIs damit zu registrieren. Sie muss unter diesem Pfad installiert werden:

Die Datei plugin_intranda_step_doi.xml ist die Hauptkonfigurationsdatei für das Plugin. Sie muss unter diesem Pfad installiert werden:

Überblick und Funktionsweise

Um das Plugin in Betrieb zu nehmen, muss es für eine oder mehrere gewünschte Aufgaben im Workflow aktiviert werden. Dies geschieht wie im folgenden Screenshot gezeigt durch Auswahl des Plugins intranda_step_doi aus der Liste der installierten Plugins.

Da dieses Plugin in der Regel automatisch ausgeführt werden soll, sollte der Workflow-Schritt im Workflow als automatisch konfiguriert werden. Da das Plugin den DOI in die Metadatendatei des Vorgangs schreibt, sollte das Kontrollkästchen für Update metadata index when finishing ebenfalls aktiviert sein.

Dieses Plugin liest zunächst seine Konfigurationsdatei ein und versucht die Field-Variablen mit denjenigen Inhalten der METS-Datei zu füllen, die in der Konfiguration definiert wurden. Die Field-Variablen werden dabei von oben nach unten durchlaufen. Sobald ein Wert in einem definierten Feld ermittelt wurde, wird dieser der Variable zugewiesen. Wurde kein Wert in keine der Felder ermittelt, wird stattdessen der default-Wert verwendet. Ist kein default-Wert definiert für eine Field-Variable, bleibt diese leer.

Nach der Erzeugung der Field-Variablen werden diese als eine xml-Datei der Transformationsdatei übergeben. Diese nutzt die definierten Field-Variablen, um die Inhalte aus der METS-Datei einzufügen. Die somit erzeugte DataCite-xml-Datei wird anschließend für die Registrierung bzw. das Update der DOIs bei DataCite genutzt, wobei die Zugangsdaten und URL-Informationen aus der Konfigurationsdatei zum Einsatz kommen.

Konfiguration des Plugins

Hauptkonfiguration

Die Konfiguration erfolgt über die Konfigurationsdatei plugin_intranda_step_doi.xml und kann im laufenden Betrieb angepasst werden. Sie ist wie folgt aufgebaut:

Der Block <config> kann für verschiedene Projekte oder Workflow-Schritte mehrfach vorkommen, um unterschiedliche Aktionen innerhalb verschiedener Workflows durchführen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben die folgende Bedeutung:

Konfiguration innerhalb der Transformationsdatei

Die Transformationsdatei doi.xsl sieht in etwa so aus:

Innerhalb dieser Transformationsdatei ist das DataCite-XML als Grundgerüst aufgeführt. Inhalte der einzelnen xml-Elemente werden dabei automatisch aus den Field-Variablen eingefügt, die in der Hauptkonfigurationsdatei definiert wurden. Neben diese verwendbaren definierbaren Field-Variablen existieren auch einige zusätzliche Variablen, die verwendet werden können:

Nützliche Zusatzinformationen

  • Dokumentation von DataCite: https://support.datacite.org/docs/getting-started

  • Metadatenschema-Übersicht: https://schema.datacite.org/

  • Metadatenschema für die Version 4.4 mit Beispieldateien: https://schema.datacite.org/meta/kernel-4.4/

  • Admin-Bereich für DataCite-Kunden: https://doi.datacite.org/

  • Admin-Bereich im Testsystem für DataCite-Kunden: https://doi.test.datacite.org/

Beispiel

  • Beispiel für eine DataCite-XML-Datei aus Goobi:

Download und Verifizieren von Dateien

Dieses Step-Plugin ermöglicht es, Dateien herunterzuladen und mit Checksummen zu verifizieren, die als Vorgangseigenschaften bestehen. Das Validierungsergebnis wird innerhalb des Journals gespeichert.

Übersicht

Einführung

Dieses Plugin liest URLs bzw. Hash-Werte aus mehreren konfigurierten Vorgangseigenschaften ein, lädt die Dateien von der definierten URL herunter und verglicht sie anschließend mit dem zugehörigen Hash-Wert. Abschließend können mehrere Rückmeldungen gegeben werden, je nachdem ob der Status success oder error lautet. Diese Rückmeldungen können per REST zu einem anderen System geschickt oder einfach innerhalb des Journals geloggt werden.

Installation

Zur Installation des Plugins muss die folgende Datei installiert werden:

Die Konfigurationsdatei befindet sich üblicherweise hier:

Konfiguration

Der Inhalt dieser Konfigurationsdatei sieht beispielhaft wie folgt aus:

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können.

Auswahl des Plugins innerhalb der Workflowkonfiguration

Zuweisung des Plugins zu einer bestimmten Aufgabe

Konfiguration des Workflowschritts

Konfiguration des Schritts
Integriertes Plugin in der Nutzeroberfläche
Name
Wert
Wert
Beschreibung
Name
Wert

ACHTUNG: Zu beachten ist, dass dieses Plugin eine Neuimplementierung des ist, die mittels XSLT arbeitet. Diese Implementierung ist bisher darauf beschränkt, dass DOIs für eigenständige Werke (z.B. Monographien und Zeitschriftenbände) registriert werden können. Eine Registrierung von DOIs für Strukturelemente (z.B. für Zeitschriftenartikel) ist mit diesem Plugin bisher nicht möglich.

Wert
Beschreibung
Field-Variable
Beschreibung
Name
Wert
Wert
Beschreibung
https://github.com/intranda/goobi-plugin-step-delay-workflow-status
https://github.com/intranda/goobi-plugin-step-analysis-imagename
https://github.com/intranda/goobi-plugin-step-catalogue-request
https://github.com/intranda/goobi-plugin-step-delay
https://docs.goobi.io/goobi-workflow/de/manager/07_variables
plugin_intranda_step_datacite_doi-base.jar
plugin_intranda_step_datacite_doi.xml
plugin_intranda_step_datacite_mapping.xml
/opt/digiverso/goobi/plugins/step/plugin_intranda_step_datacite_doi-base.jar
/opt/digiverso/goobi/config/plugin_intranda_step_datacite_mapping.xml
/opt/digiverso/goobi/config/plugin_intranda_step_datacite_doi.xml
<config_plugin>
	<!-- order of configuration is:
      1.) project name and step name matches
      2.) step name matches and project is *
      3.) project name matches and step name is *
      4.) project name and step name are *
  -->

	<config>
		<!-- which projects to use for (can be more then one, otherwise use *) -->
		<project>*</project>
		<step>*</step>

    <!-- authentication and main information -->
    <!-- For testing: for deployment, remove "test" -->
    <serviceAddress>https://mds.test.datacite.org/</serviceAddress>

		<!-- authentication and main information -->
		<base>10.123456789</base>
    <url>https://viewer.example.org/resolver?field=MD_PI_DOI&identifier=</url>
		<username></username>
		<password></password>

		<!-- configuration for Handles -->
		<prefix>go</prefix>
		<name>goobi</name>
		<separator>-</separator>
		<doiMetadata>DOI</doiMetadata>

		<!-- configuration for DOIs -->
		<doiMapping>/opt/digiverso/goobi/config/plugin_intranda_step_datacite_mapping.xml</doiMapping>

    <!-- Type of DocStruct which should be given DOIs -->
    <typeForDOI>Article</typeForDOI>

	</config>

</config_plugin>
<?xml version="1.0" encoding="UTF-8"?>
<Mapping>
  <!-- Mandatory fields: -->
  <map>
      <field>title</field>
      <metadata>TitleDocMain</metadata>
      <altMetadata>TitleDocMainShort</altMetadata>
      <altMetadata>Title</altMetadata>
      <default>unkn</default>
  </map>

  <map>
      <field>creators</field>
      <metadata>Author</metadata>
      <altMetadata>Composer</altMetadata>
      <altMetadata>IllustratorArtist</altMetadata>
      <altMetadata>WriterCorporate</altMetadata>
      <default>unkn</default>
  </map>

  <map>
      <field>publisher</field>
      <metadata>Publisher</metadata>
      <altMetadata>PublisherName</altMetadata>
      <altMetadata>PublisherPerson</altMetadata>
      <default>unkn</default>
  </map>

  <map>
      <field>publicationYear</field>
      <metadata>_dateDigitization</metadata>
      <default>#CurrentYear</default>
  </map>

  <map>
      <field>hostingInstitution</field>
      <metadata>_electronicPublisher</metadata>
      <default>intranda GmbH</default>
  </map>

  <map>
      <field>resourceType</field>
      <default>document</default>
  </map>

  <!-- Optional fields: -->

  <listMap alternateIdentifierType="Goobi identifier">
      <field>alternateIdentifier</field>
      <list>alternateIdentifiers</list>
      <metadata>CatalogIDDigital</metadata>
  </listMap>

  <listMap>
      <field>contributors</field>
      <list>contributors</list>
      <metadata>Editor</metadata>
  </listMap>

  <listMap relatedIdentifierType="ISSN" relationType="IsPublishedIn">
      <field>relatedIdentifier</field>
      <list>relatedIdentifiers</list>
      <metadata>anchor_ISSN</metadata>
  </listMap>

  <listMap descriptionType="SeriesInformation">
      <field>description</field>
      <list>descriptions</list>
      <metadata>anchor_TitleDocMain</metadata>
  </listMap>

  <listMap descriptionType="SeriesInformation">
      <field>description</field>
      <list>descriptions</list>
      <metadata>CurrentNo</metadata>
  </listMap>

  <listMap dateType="Created">
      <field>date</field>
      <list>dates</list>
      <metadata>Dating</metadata>
      <altMetadata>PublicationYear</altMetadata>
      <altMetadata>anchor_PublicationYear</altMetadata>
  </listMap>

	<!-- create related item information just for the following publication types -->
	<publicationTypeWithRelatedItem>Article</publicationTypeWithRelatedItem>

  <!-- Specific fields for publication info: -->

  <publicationData>
      <field>ISSN</field>
      <metadata>anchor_ISSN</metadata>
  </publicationData>

  <publicationData>
      <field>title</field>
      <metadata>anchor_TitleDocMain</metadata>
  </publicationData>

  <publicationData>
      <field>publicationYear</field>
      <metadata>anchor_PublicationYear</metadata>
  </publicationData>

  <publicationData>
      <field>volume</field>
      <metadata>CurrentNo</metadata>
  </publicationData>

</Mapping>
<?xml version="1.0" encoding="UTF-8"?>
<resource
    xmlns="http://datacite.org/schema/kernel-4"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.2/metadata.xsd">
    <identifier identifierType="DOI">10.48644/1776214552</identifier>
    <titles>
        <title>Della forza de'corpi che chiamano viva libri tre</title>
    </titles>
    <publisher>Pisarri</publisher>
    <publicationYear>2022</publicationYear>
    <resourceType resourceTypeGeneral="Text">document</resourceType>
    <creators>
        <creator>
            <creatorName>Zanotti, Francesco Maria</creatorName>
            <givenName>Francesco Maria</givenName>
            <familyName>Zanotti</familyName>
        </creator>
    </creators>
    <dates>
        <date dateType="Created">1752</date>
    </dates>
    <alternateIdentifiers>
        <alternateIdentifier alternateIdentifierType="Goobi identifier">1776214552</alternateIdentifier>
    </alternateIdentifiers>
    <contributors>
        <contributor contributorType="HostingInstitution">
            <contributorName>Max-Planck-Institut für Wissenschaftsgeschichte</contributorName>
        </contributor>
    </contributors>
</resource>
plugin_intranda_step_doi-base.jar
plugin_intranda_step_doi.xml
doi.xsl
/opt/digiverso/goobi/plugins/step/plugin_intranda_step_doi-base.jar
/opt/digiverso/goobi/xslt/doi.xsl
/opt/digiverso/goobi/config/plugin_intranda_step_doi.xml
<config_plugin>

    <config>
    		<!-- which projects to use for (can be more then one, otherwise use *) -->
    		<project>*</project>
    		<step>*</step>

    		<!-- use debug mode if the temporary xml shall be saved in the Goobi tmp folder -->
    		<debugMode>true</debugMode>

            <!-- use draft if the doi should only be registered in draft state -->
		    <draft>true</draft>

    		<!-- authentication and main information -->
    		<!-- For testing: https://mds.test.datacite.org/ -->
    		<!-- For production https://mds.datacite.org/ -->
    		<serviceAddress>https://mds.test.datacite.org/</serviceAddress>

    		<!-- authentication and main information -->
    		<base>10.12345678</base>
    		<viewer>https://viewer.example.org/resolver?field=MD_PI_DOI&amp;identifier=</viewer>
    		<username>USER</username>
    		<password>PASSWORD</password>

    		<!-- name parts for DOI composition -->
    		<prefix>go</prefix>
    		<name>goobi</name>
    		<separator>-</separator>

    		<!-- metadata field from ruleset where to store the DOI -->
    		<metadata>DOI</metadata>

    		<!-- Path to the xsl file that shall be used for the datacite xml generation
    		(file must be located inside of the central Goobi xslt folder) -->
    		<xslt>doi.xsl</xslt>

    		<field name="LANGUAGE" default="- UNKNOWN LANGUAGE -">
    			<data content="{meta.DocLanguage}"/>
    		</field>

    		<field name="TITLE" default="- UNKNOWN TITLE -">
    			<data content="{meta.TitleDocMain}"/>
    		</field>

    		<field name="ANCHORTITLE" default="- UNKNOWN ANCHOR TITLE -">
    			<data content="{meta.topstruct.TitleDocMain}"/>
    		</field>

    		<field name="ANCHORSUBTITLE" default="- UNKNOWN ANCHOR SUB TITLE -">
    			<data content="{meta.topstruct.TitleDocSub1}"/>
    		</field>

    		<field name="IDENTIFIER" default="- NO IDENTIFIER DEFINED -">
    			<data content="{meta.CatalogIDDigital}"/>
    		</field>

    		<field name="FORMAT" default="- NO FORMAT DEFINED -">
    			<data content="{meta.FormatSourcePrint}"/>
    		</field>

    		<field name="PUBLICATIONYEAR" default="- NO FORMAT DEFINED -">
    			<data content="{meta.PublicationYear}"/>
    		</field>

    		<field name="CREATOR" default="- NO CREATOR DEFINED -" repeatable="true">
    			<data content="{metas.Author}"/>
    		</field>

    		<field name="PUBLISHER" default="- NO PUBLISHER DEFINED -">
    			<data content="{meta.PublisherName}"/>
    		</field>

    		<field name="SERIES" default="- NO SERIES DEFINED -">
    			<data content="{meta.PublicationSeries}"/>
    		</field>

    		<field name="NUMBER">
    			<data content="{meta.CurrentNo}"/>
    			<data content="{meta.CurrentNoSorting}"/>
    		</field>

            <field name="SUBJECT" default="- UNKNOWN SUBJECT -" repeatable="true">
        	    <data content="{metas.SubjectTopic}"/>
            </field>
    </config>
</config_plugin>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="/">
<resource xmlns="http://datacite.org/schema/kernel-4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.2/metadata.xsd">

  <identifier identifierType="DOI"><xsl:value-of select="//GOOBI-DOI"/></identifier>
  <titles>
      <title><xsl:value-of select="//TITLE"/></title>
  </titles>
  <publisher><xsl:value-of select="//PUBLISHER"/></publisher>
  <publicationYear><xsl:value-of select="//PUBLICATIONYEAR"/></publicationYear>
  <subjects>
      <xsl:for-each select="//SUBJECT">
          <subject xml:lang="de-DE"><xsl:value-of select="."/></subject>
      </xsl:for-each>
  </subjects>
  <resourceType resourceTypeGeneral="Text"><xsl:value-of select="//GOOBI-DOCTYPE"/></resourceType>
  <language><xsl:value-of select="//LANGUAGE"/></language>
  <creators>
      <xsl:for-each select="//CREATOR">
          <creator>
            <creatorName><xsl:value-of select="."/></creatorName>
            <givenName><xsl:value-of select="substring-before(., ', ')"/></givenName>
            <familyName><xsl:value-of select="substring-after(., ', ')"/></familyName>
          </creator>
      </xsl:for-each>
  </creators>
  <sizes>
      <size><xsl:value-of select="//FORMAT"/></size>
  </sizes>
  <alternateIdentifiers>
      <alternateIdentifier alternateIdentifierType="Goobi identifier"><xsl:value-of select="//IDENTIFIER"/></alternateIdentifier>
  </alternateIdentifiers>
  <contributors>
      <contributor contributorType="HostingInstitution">
          <contributorName>intranda GmbH</contributorName>
      </contributor>
  </contributors>

<!--
  <xsl:if test="//NUMBER != ''">
	  <relatedItem relatedItemType="Collection" relationType="IsPartOf">
      <title><xsl:value-of select="//ANCHORTITLE"/></title>
      <title titleType="Subtitle"><xsl:value-of select="//ANCHORSUBTITLE"/></title>
      <volume><xsl:value-of select="//SERIES"/></volume>
      <number><xsl:value-of select="//NUMBER"/></number>
    </relatedItem>
  </xsl:if>
-->

</resource>
</xsl:template>
</xsl:stylesheet>


<!--
========================== Available internal elements ==========================

- Publication type of anchor document (e.g. Periodical)
<xsl:value-of select="//GOOBI-ANCHOR-DOCTYPE"/>

- Publication type of document (e.g. Monograph or Volume)
<xsl:value-of select="//GOOBI-DOCTYPE"/>

- Generated DOI
<xsl:value-of select="//GOOBI-DOI"/>

========================== // Available internal elements ==========================
-->

//GOOBI-ANCHOR-DOCTYPE

Diese Variable enthält den internen Namen des Publikationstyps des übergeordneten Anchor-Elements (z.B. Periodical).

//GOOBI-DOCTYPE

Diese Variable enthält den internen Namen des Publikationstyps des Werks (z.B. Monograph).

//GOOBI-DOI

Diese Variable enthält die zu verwendende DOI.

<?xml version="1.0" encoding="UTF-8"?>
<resource
    xmlns="http://datacite.org/schema/kernel-4"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.2/metadata.xsd">
    <identifier identifierType="DOI">10.48644/1776214552</identifier>
    <titles>
        <title>Della forza de'corpi che chiamano viva libri tre</title>
    </titles>
    <publisher>Pisarri</publisher>
    <publicationYear>2022</publicationYear>
    <resourceType resourceTypeGeneral="Text">document</resourceType>
    <creators>
        <creator>
            <creatorName>Zanotti, Francesco Maria</creatorName>
            <givenName>Francesco Maria</givenName>
            <familyName>Zanotti</familyName>
        </creator>
    </creators>
    <dates>
        <date dateType="Created">1752</date>
    </dates>
    <alternateIdentifiers>
        <alternateIdentifier alternateIdentifierType="Goobi identifier">1776214552</alternateIdentifier>
    </alternateIdentifiers>
    <contributors>
        <contributor contributorType="HostingInstitution">
            <contributorName>Max-Planck-Institut für Wissenschaftsgeschichte</contributorName>
        </contributor>
    </contributors>
</resource>
/opt/digiverso/goobi/plugins/step/plugin_intranda_step_download_and_verify_assets-base.jar
/opt/digiverso/goobi/config/plugin_intranda_step_download_and_verify_assets.xml
<config_plugin>
    <!--
        order of configuration is:
          1.) project name and step name matches
          2.) step name matches and project is *
          3.) project name matches and step name is *
          4.) project name and step name are *
    -->

    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>

        <!-- Configure here how many times shall be maximally tried before reporting final results. OPTIONAL. DEFAULT 1. -->
        <maxTryTimes>3</maxTryTimes>

        <!-- This tag accepts the following three attributes:
            - @urlProperty: name of the property that holds the URL of the file
            - @hashProperty: name of the property that holds the checksum of the file
            - @folder: configured name of the target folder that shall be used to download the file. OPTIONAL. DEFAULT master.
        -->
        <fileNameProperty urlProperty="DraftUri" hashProperty="DraftHash" folder="master" />
        <fileNameProperty urlProperty="AssetUriSplitted" hashProperty="AssetHashSplitted" folder="master" />

        <!-- A response tag accepts four attributes:
            - @type: success | error. Determines by which cases this configured response shall be activated.
            - @method: OPTIONAL. If not configured or configured blankly, then the response will be performed via journal logs. Non-blank configuration options are: put | post | patch.
            - @url: URL to the target system expecting this response. MANDATORY if @method is not blank..
            - @message: Message that shall be logged into journal. ONLY needed when @method is blank.
            - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
            One can also define a JSON string inside a pair of these tags, which will be used as JSON body to shoot a REST request.
        -->
        <!-- Usage of Goobi variables in @url as well as @message is allowed. -->
        <response type="success" method="put" url="URL_ZU_BACH/upload_successful/{meta.ThesisId}" />

        <!-- For error cases there is no need for a response back to BACH, but an error message should be logged into journal. -->
        <!-- Log ERROR_MESSAGE into journal as a signal of errors -->
        <response type="error" message="ERROR_MESSAGE" />

        <!-- Example for REST calls with json body -->
        <!--
        <response type="success" method="put" url="CHANGE_ME">
        {
           "id": 0,
           "name": "string",
           "value": "string"
        }
        </response>
        -->

    </config>

</config_plugin>

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

maxTryTimes

Dieser Wert legt fest, wie viele Versuche maximal erfolgen sollen, bevor Rückmeldungen gegeben werden müssen. Dieser Parameter ist optional und hat den Standardwert 1.

fileNameProperty

Dieser Parameter steuert den Teil für das Herunterladen und Verifizieren der Dateien. Er akzeptiert drei Attribute. @urlProperty definiert den Namen der Vorgangseigenschaft, die die URL der Datei enthält. @hashProperty definiert den Namen der Vorgangseigenschaft, die die Checksumme der Datei enthält. Das Attribut @folder ist optional und hat den Standardwert master. Es steuert, wo die heruntergeladenen Dateien abgespeichert werden sollen.

response

Dieser optionale Parameter kann verwendet werden, um mehrere Rückmeldungen nach dem Downloaden und Verifizieren der Dateien zu geben. Er akzeptiert vier Attribute und einen JSON-Text für REST-Requests mit JSON-Body. Mehr Details und Beispiele sind innerhalb der Kommentare der beispielhaften Konfigurationsdatei ersichtlich.

Zuweisen des Plugins zu einer bestimmten Aufgabe
Zuweisen des Plugins zu einer bestimmten Aufgabe
Auswahl des Plugsins zur Durchführung des Arbeitschrittes
https://github.com/intranda/goobi-plugin-step-create-full-pdf
https://github.com/intranda/goobi-plugin-step-delete-content
https://github.com/intranda/goobi-plugin-step-change-workflow
https://github.com/intranda/goobi-plugin-step-display-metadata
datacite-doi-Plugins

Identifier

intranda_step_datacite_doi

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:46:41

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

serviceAddress

Dieser Parameter definiert die URL für den Datacite-Dienst. Im obigen Beispiel ist es der Testserver.

base

Dieser Parameter definiert die DOI-Basis für die Einrichtung, die bei Datacite registriert wurde.

url

username

Dies ist der Benutzername, der für die DataCite-Registrierung verwendet wird.

password

Dies ist das Passwort, das für die DataCite-Registrierung verwendet wird.

prefix

Dies ist das Präfix, das dem DOI vor dem Namen und der ID des Dokuments gegeben werden soll.

name

Dies ist der Name, der dem DOI vor der ID des Dokuments gegeben werden soll.

separator

Definieren Sie hier ein Trennzeichen, das zwischen den verschiedenen Teilen des DOI verwendet werden soll.

doiMetadata

Dieser Parameter gibt an, unter welchem Metadatennamen der DOI in der METS-MODS-Datei gespeichert werden soll. Standard ist DOI.

doiMapping

In diesem Parameter wird der Pfad zur Mapping-Datei für die DOI-Registrierung festgelegt.

typeForDOI

Mit diesem Parameter kann der DocStruct-Typ definiert werden, dem DOIs zugewiesen werden sollen. Wenn dieser leer ist oder fehlt, erhält nur das oberste DocStruct-Element einen DOI. Enthält der Parameter Namen eines tieferen Strukturelements, so werden diese mit DOIs versehen.

Identifier

intranda_step_doi

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:59:52

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

serviceAddress

Dieser Parameter definiert die URL für den DataCite-Dienst. Im obigen Beispiel ist es der Testserver.

debugMode

Mit diesem Parameter kann der Debug-Modus aktiviert werden. Dieser erlaubt, dass die XML-Datei mit den definierten Field-Variablen (doi_in.xml) sowie die transformierte DataCite-XML-Datei (doi_out.xml) innerhalb des Verzeichnisses tmp von Goobi workflow gespeichert werden. Dies erlaubt einen Einblick in die tatsächlich verwendeten oder angepassten Metadaten, die zur DOI-Registrierung verwendet werden.

draft

Mit diesem Parameter kann festgelegt werden, dass die DOIs bisher nur als Draft reserviert werden aber noch nicht offiziell registriert werden. Sie werden somit von DataCite noch nicht öffentlich erreichbar aufgelöst und auch noch nicht in Rechnung gestellt.

base

Dieser Parameter definiert die DOI-Basis für die Einrichtung, die bei DataCite registriert wurde.

viewer

username

Dies ist der Benutzername, der für die DataCite-Registrierung verwendet wird.

password

Dies ist das Passwort, das für die DataCite-Registrierung verwendet wird.

prefix

Dies ist das Präfix, das dem DOI vor dem Namen und der ID des Dokuments gegeben werden soll.

name

Dies ist der Name, der dem DOI vor der ID des Dokuments gegeben werden soll.

separator

Definieren Sie hier ein Trennzeichen, das zwischen den verschiedenen Teilen des DOI verwendet werden soll.

metadata

Dieser Parameter gibt an, unter welchem Metadatennamen die DOI in der METS-MODS-Datei gespeichert werden soll. Standard ist DOI.

xslt

Mit diesem Parameter wird die Transformationsdatei festgelegt, die für die DOI-Registrierung verwendet werden soll.

field - name

Mit dem Parameter name kann eine Field-Variable benannt werden, die für das Mapping zur Verfügung stehen soll.

field - default

Mit diesem Parameter kann ein Wert festgelegt werden, den die Field-Variable erhalten soll, wenn keines der aufgeführten Metadaten aus den Elementen data gefunden werden kann.

field - repeatable

Hiermit kann gesteuert werden, dass mehrfach vorkommende Werte (abgefragt z.B. durch Verwendung von {metas.SubjectTopic} anstelle von {meta.SubjectTopic}) anhand eines Semikolons separiert und als Einzelwerte verwendet werden.

field - data - content

Innerhalb dieses Elements können Metadaten oder auch statische Texte festgelegt werden, die als Wert der Field-Variable zugewiesen werden sollen. Hierbei ist die Reihenfolge der aufgeführten data-Elemente entscheidend. Sobald ein Feld mit dem Inhalt gefunden werden konnte, werden die nachfolgenden data-Elemente übersprungen. Es handelt sich hier also um eine absteigende Priorität der aufgeführten Elemente.

Identifier

intranda_step_download_and_verify_assets

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

07.09.2024 14:11:55

Duplikation von Arbeitsschritten

Dieses Step-Plugin ermöglicht es, eine Arbeitsschritt innerhalb des Workflow automatisch entsprechend einer Vorgangseigenschaft mehrfach zu duplizieren.

Übersicht

Name
Wert

Identifier

intranda_step_duplicate_tasks

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

15.08.2024 11:20:05

Einführung

Dieses Plugin liest den Wert einer Vorgangseigenschaft ein und kann abhängig von den Inhalten der Eigenschaft eine definierten Arbeitsschritt des Workflows automatisch mehrfach duplizieren. Außerdem kann dabei die ursprünglich ausgewertete Eigenschaft aufgesplittet und als jeweils eigene neue Eigenschaften gespeichert werden, die auf diese Duplizierung verweisen.

Installation

Zur Installation des Plugins muss die folgende Datei installiert werden:

/opt/digiverso/goobi/plugins/step/plugin_intranda_step_duplicate_tasks-base.jar

Die Konfigurationsdatei befindet sich üblicherweise hier:

/opt/digiverso/goobi/config/plugin_intranda_step_duplicate_tasks.xml

Überblick und Funktionsweise

Nach der erfolgreichen Installation, wird das Plugin wie im folgenden Screenshot innerhalb des Workflows integriert.

Mit Duplikation eines Arbeitsschritts

  1. Das Plugin holt sich den Wert der konfigurierten Vorgangseigenschaft und teilt ihn unter Verwendung des eventuell konfigurierten Trennzeichens (oder , falls nicht) in Teile auf.

  2. Für jeden Teil der ursprünglichen Eigenschaft wird der möglicherweise konfigurierte Arbeitsschritt (oder der nächste Arbeitsschritt des aktuellen Arbeitsschritts, wenn er nicht konfiguriert ist) noch einmal dupliziert. Die Namen dieser duplizierten neuen Arbeitsschritte erhalten den Namen des ursprünglichen Arbeitsschritts plus einen hochgezählten Wert.

  3. Für jeden duplizierten neuen Arbeitsschritt wird eine neue Vorgangseigenschaft oder ein Metadatum erstellt, je nachdem wie das Attribut @target konfiguriert ist. Der Wert dieser neuen Vorgangseigenschaft bzw. dieses neuen Metadatums entspricht dabei dem Teil der ursprünglichen Eigenschaft, auf dessen Grundlage dieser Arbeitsschritt dupliziert wurde.

  4. Wenn Duplikate für jeden Teil der ursprünglichen Eigenschaft erzeugt werden, wird der ursprüngliche Arbeitsschritt deaktiviert.

Ohne Duplikation eines Arbeitsschritts

  1. Das Plugin holt sich den Wert der konfigurierten Vorgangseigenschaft und teilt ihn unter Verwendung des eventuell konfigurierten Trennzeichens (oder , falls nicht) in Teile auf.

  2. Für jeden Teil der ursprünglichen Eigenschaft wird eine neue Vorgangseigenschaft oder ein Metadatum erstellt, je nachdem wie das Attribut @target konfiguriert ist. Der Wert dieser neuen Vorgangseigenschaft bzw. dieses neuen Metadatums entspricht dabei dem Teil der ursprünglichen Eigenschaft.

Konfiguration

Der Inhalt dieser Konfigurationsdatei sieht beispielhaft wie folgt aus:

<config_plugin>
    <!--
        order of configuration is:
          1.) project name and step name matches
          2.) step name matches and project is *
          3.) project name matches and step name is *
          4.) project name and step name are *
	-->
    
    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>
        
         <!-- Process property whose value shall be separated into parts, and it accepts four attributes:
              - @name: name of the process property that shall be splitted
              - @separator: separator that shall be used to split the value of the process property into smaller parts. OPTIONAL. DEFAULT "\n".
              - @target: configure with this attribute where and how to save the splitted parts. OPTIONAL.
                              - IF NOT configured, then all splitted parts will be saved as process properties, and the default property names depend on the configuration of @enabled of the tag <stepToDuplicate>:
                                If @enabled is true, then the default property name will be the step's name that is to be duplicated.
                                If @enabled is false, then the default property name will be the property's @name.
                              - IF configured without using a colon, then all splitted parts will be saved as process properties, and the configured @target will be the new properties' names.
                              - IF configured with a colon, then the part before that colon will control where the changes land, while the part after that colon will define the names of the splitted new parts:
                                Before the colon there are three options: property | metadata | person. For "metadata" and "person", changes will be saved into the METS file. For "property" changes will be saved as properties.
              - @useIndex: determines whether to use an index as suffix to each new process property / metadata entry to distinguish them between each other. OPTIONAL. DEFAULT true.
         -->
        <!-- ATTENTION: there can only be one such tag configured for each step, to split several properties, one has to do that in several steps. -->
        <property name="AssetUri" separator="," target="property:AssetUriSplitted" useIndex="true" />
        
        <!-- Name of the step that shall be duplicated. OPTIONAL. If not configured, then the next step following the current one will be used as default. It accepts an attribute:
              - @enabled: true if some step's duplication is needed, false otherwise. OPTIONAL. DEFAULT true.
         -->
        <stepToDuplicate enabled="true">Metadata enrichment</stepToDuplicate>
    </config>

</config_plugin>

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können.

Wert
Beschreibung

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

property

Dieser Wert legt fest, welche Vorgangseigenschaft zur Prüfung der gewünschten Duplizierung verwendet werden soll. Er akzeptiert vier Attribute, wobei nur @name obligatorisch ist. Details der möglichen Konfiguration sind in der Beispielkonfiguration aufgeführt.

stepToDuplicate

Dieser optionale Parameter kann verwendet werden, um den Namen der Arbeitsschritte festzulegen, die dupliziert werden soll. Wenn dieser Wert nicht konfiguriert wird, wird derjenige Arbeitsschritt für die Duplizierung verwendet, der im Workflow als nächster Arbeitsschritt folgt. Der Parameter akzeptiert außerdem ein optionales Attribut @enabled mit einem Standardwert true, das steuert ob es einen Arbeitsschritt zu duplizieren gibt.

Metadatenanreicherung via Excel-Datei

Dieses Step Plugin ermöglicht eine Anreicherung von Metadaten innerhalb einer METS-Datei auf Basis von Daten einer Excel-Datei

Übersicht

Name
Wert

Identifier

intranda_step_excelMetadataenrichment

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:59:22

Einführung

Dieses Plugin erlaubt es, dass Metadaten aus einer Excel-Datei gelesen und zu bestehenden Strukturelementen hinzugefügt werden.

Installation

Zur Installation des Plugins muss die folgende Datei installiert werden:

/opt/digiverso/goobi/plugins/step/plugin_intranda_step_excelMetadataenrichment-base.jar

Um zu konfigurieren, wie sich das Plugin verhalten soll, können verschiedene Werte in der Konfigurationsdatei angepasst werden. Die Konfigurationsdatei befindet sich üblicherweise hier:

/opt/digiverso/goobi/config/plugin_intranda_step_excelMetadataenrichment.xml

Überblick und Funktionsweise

Zur Inbetriebnahme des Plugins muss dieses für eine Aufgabe im Workflow aktiviert werden. Dies erfolgt wie im folgenden Screenshot aufgezeigt durch Auswahl des Plugins plugin_intranda_step_excelMetadataenrichment aus der Liste der installierten Plugins.

Da dieses Plugin üblicherweise automatisch ausgeführt werden soll, sollte der Arbeitsschritt im Workflow als automatisch konfiguriert werden.

Nachdem das Plugin vollständig installiert und eingerichtet wurde, wird es üblicherweise automatisch innerhalb des Workflows ausgeführt, so dass keine manuelle Interaktion mit dem Nutzer erfolgt. Stattdessen erfolgt der Aufruf des Plugins durch den Workflow im Hintergrund und führt die folgenden Arbeiten durch:

Als erstes wird eine passende Exceldatei gesucht. Dabei wird der konfigurierte Pfad durchsucht. Existiert dort eine einzelne Exceldatei, wird diese unabhängig von ihrem Namen geöffnet. Bei mehreren Exceldateien wird erwartet, dass die Exceldatei nach dem Vorgangsnamen benannt ist.

Wenn eine Exceldatei gefunden wurde, werden anschließend die Metadaten gelesen. Dabei werden alle vorhandenen Strukturelemente aufgelistet und geprüft, ob diese ein Metadatum enthalten, dass dem konfigurierten Wert im Feld <docstructIdentifier> entspricht. Wenn dies der Fall ist, wird in der Exceldatei nach einer Zeile gesucht, in der das Metadatum in der im Feld <excelIdentifierColumn> konfigurierten Spalte verwendet wurde. Wenn es gefunden wurde, werden die Metadaten der Zeile zum Strukturelement hinzugefügt.

Konfiguration des Plugins

Die Konfiguration des Plugins ist folgendermaßen aufgebaut:

<config_plugin>
    <!--
        order of configuration is:
          1.) project name and step name matches
          2.) step name matches and project is *
          3.) project name matches and step name is *
          4.) project name and step name are *
    -->

    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>

        <!-- name of the folder to find the excel file -->
        <!-- can be part of the process folder (master, media, import, ...) or an absolute path -->
        <!-- if more then one excel file was found, the filename must match the process name -->
        <excelFolder>master</excelFolder>

        <!-- name of the identifier field in existing docstructs-->
        <docstructIdentifier>shelfmarksource</docstructIdentifier>


        <!-- define which column is the one to use for catalogue requests -->
        <excelIdentifierColumn>0-Signatur</excelIdentifierColumn>

        <metadata ugh="CatalogIDSource" headerName="2-PPN-A" />
        <metadata ugh="CatalogIDDigital" headerName="3-PPN-O" />
        <metadata ugh="Subject" normdataHeaderName="13-GND Schlagwort 1" headerName="13a-GND Schlagwort 1"/>
        <metadata ugh="Subject" normdataHeaderName="14-GND Schlagwort 2" headerName="14a-GND Schlagwort 2"/>

        <person ugh="Author">
            <!-- use this field if the column contains the complete name -->
            <nameFieldHeader>Author</nameFieldHeader>
            <!-- set this field to true, if the name must be splitted into first- and lastname. The complete name gets written into lastname -->
            <splitName>true</splitName>
            <!-- define at which character the name is separated. @firstNameIsFirstPart defines, if the firstname is the first or last part of the name -->
            <splitChar firstNameIsFirstPart="false">, </splitChar>
            <!-- use this fields, if the firstname and lastname are in different columns -->
            <!--
            <firstname>5-Vorname</firstname>
            <lastname>6-Nachname</lastname>
            -->
        </person>
    </config>
</config_plugin>

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können.

Im Feld <excelFolder> wird definiert, an welchem Ort die Exceldatei gesucht wird. Dabei können die Goobi-internen Variablen genutzt werden, um z.B. den Vorgangsordner oder den master Ordner zu definieren. Alternativ kann auch ein absoluter Pfad angegeben werden, an dem alle zu importierenden Exceldateien liegen. Wenn im konfigurierten Verzeichnis mehr als eine Exceldatei liegt, wird eine Datei VORGANGSNAME.xlsx erwartet.

Mit den Feldern <docstructIdentifier> und <excelIdentifierColumn> wird festgelegt, wie das Metadatum und die Excelspalte heißen sollen, über die sich die einzelnen Zeilen der Exceldatei zuordnen lassen.

Die Konfiguration der zu importierenden Metadaten und Personendaten wird bereits hier beschrieben:

Upload von Dateien

Dieses Step Plugin erlaubt den Upload verschiedener Dateien innerhalb von Aufgaben in der Weboberfläche.

Übersicht

Name
Wert

Identifier

intranda_step_fileUpload

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:58:57

Einführung

Dieses Plugin dient zum Upload von Dateien innerhalb der Nutzeroberfläche einer angenommenen Aufgabe in Goobi workflow.

Installation

Zur Installation des Plugins müssen folgende beiden Dateien installiert werden:

/opt/digiverso/goobi/plugins/step/plugin_intranda_step_fileUpload-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin_intranda_step_fileUpload-gui.jar

Um zu konfigurieren, wie sich das Plugin verhalten soll, können verschiedene Werte in der Konfigurationsdatei angepasst werden. Die Konfigurationsdatei befindet sich üblicherweise hier:

/opt/digiverso/goobi/config/plugin_intranda_step_fileUpload.xml

Überblick und Funktionsweise

Zur Inbetriebnahme des Plugins muss dieses für einen oder mehrere gewünschte Aufgaben im Workflow aktiviert werden. Dies erfolgt wie im folgenden Screenshot aufgezeigt durch Auswahl des Plugins intranda_step_fileUpload aus der Liste der installierten Plugins.

Nachdem das Plugin vollständig installiert und eingerichtet wurde, steht es für die Bearbeiter der entsprechenden Aufgaben zur Verfügung. Nach dem Betreten einer Aufgabe ist im rechten Bereich der Nutzeroberfläche nun ein Upload der Dateien möglich.

Dateien können entweder per Drag & Drop in diesen Bereich hochgeladen werden oder alternativ durch einen Klick auf den Button ausgewählt und somit hochgeladen werden.

Soll nach dem erfolgten Upload geprüft werden, welche Dateien in dem Ordner bereits vorhanden sind, so kann im rechten obereren Bereich die Anzeige umgeschaltet werden. Damit ist es dem Nutzer möglich, alle bereits vorhandenen Dateien in dem Ordner aufzulisten, einzelne Dateien herunterzuladen oder diese zu löschen.

Konfiguration

Die Konfiguration des Plugins ist folgendermaßen aufgebaut:

<config_plugin>

    <config>
        <!-- which projects to use for (can be more than one, otherwise use *) -->
        <project>*</project>
        <step>*</step>
        <!-- which file types to allow -->
        <regex>/(\.|\/)(gif|jpe?g|png|tiff?|jp2|pdf)$/</regex>
        <!-- which folder to use (master|main|jpeg|source|...) -->
        <folder>master</folder>
    </config>

    <config>
        <!-- which projects to use for (can be more than one, otherwise use *) -->
        <project>My special project</project>
        <project>Archive_Project</project>
        <step>Upload derivatives</step>
        <!-- which file types to allow -->
        <regex>/(\.|\/)(gif|jpe?g|png|tiff?|jp2|pdf)$/</regex>
        <folder>media</folder>
        <folder>master</folder>
    </config>

</config_plugin>

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

Wert
Beschreibung

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

regex

Mit diesem Parameter kann festgelegt werden, welche Dateitypen für den Upload erlaubt sein sollen. Im oben angegebenen Beispiel sind mehrere Bildformate sowie pdf-Dateien erlaubt.

folder

Mit diesem Parameter läßt sich definieren, wohin der Upload der Dateien erfolgen soll. Dieser Parameter kann wiederholt vorkommen und erlaubt so einen Upload in mehrere Verzeichnisse, zwischen denen der Nutzer dann auswählen kann. Mögliche Werte hierfür sind z.B. master, media oder auch individuelle Ordner wie photos und scans.

Package Export

Dieses Step Plugin ermöglicht einen flexiblen Export von Metadaten und Inhalten eines Goobi Vorgangs an einen konfigurierbaren Pfad

Übersicht

Name
Wert

Identifier

intranda_step_exportPackage

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:59:15

Einführung

Dieses Plugin erlaubt einen flexiblen Export von Daten eines Vorgangs in ein definiertes Zielverzeichnis. Dabei kann dieses Plugin sehr granular konfiguriert werden, um ausgewählte Daten im Export zu berücksichtigen. Darüber hinaus ist hier ebenfalls eine Transformation der internen und der Export-METS-Datei via XSLT möglich und erlaubt so verschiedenste Einsatzszenarien.

Installation

Zur Installation des Plugins muss die folgende Datei installiert werden:

/opt/digiverso/goobi/plugins/step/plugin_intranda_step_exportPackage-base.jar

Um zu konfigurieren, wie sich das Plugin verhalten soll, können verschiedene Werte in der Konfigurationsdatei angepasst werden. Die Konfigurationsdatei befindet sich üblicherweise hier:

/opt/digiverso/goobi/config/plugin_intranda_step_exportPackage.xml

Überblick und Funktionsweise

Zur Inbetriebnahme des Plugins muss dieses für einen oder mehrere gewünschte Aufgaben im Workflow aktiviert werden. Dies erfolgt wie im folgenden Screenshot aufgezeigt durch Auswahl des Plugins intranda_step_exportPackage aus der Liste der installierten Plugins.

Da dieses Plugin üblicherweise automatisch ausgeführt werden soll, sollte der Arbeitsschritt im Workflow als automatisch konfiguriert werden.

Nachdem das Plugin vollständig installiert und eingerichtet wurde, wird es üblicherweise automatisch innerhalb des Workflows ausgeführt, so dass keine manuelle Interaktion mit dem Nutzer erfolgt. Stattdessen erfolgt der Aufruf des Plugins durch den Workflow im Hintergrund und führt den konfigurierten Export in das Zielverzeichnis durch. Dabei werden die angegebenen Inhalte alle in ein Unterverzeichnes des definierten Export-Pfades kopiert.

Je nach Konfiguration kann dabei zusätzlich zu dem Export der Daten auch eine XSLT-Transformation der internen oder auch der Export-METS-Datei erfolgen, um diese in ein gewünschtes Format zu bringen. Abhängig von dieser Transformation sowie der Benennung der Transformationsdatei wird diese abschließend ebenfalls mit in dem Ordner des exportierten Vorganges gespeichert.

Konfiguration

Die Konfiguration des Plugins ist folgendermaßen aufgebaut:

<config_plugin>
    <!--
        order of configuration is:
          1.) project name and step name matches
          2.) step name matches and project is *
          3.) project name matches and step name is *
          4.) project name and step name are *
    -->

    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>

        <!-- export path -->
        <target>/opt/digiverso/export/</target>
        <!-- use subfolder for each process -->
        <useSubFolderPerProcess>true</useSubFolderPerProcess>
        <!-- a zip file with the subfolder-name will be created -->
        <createZipPerProcess>true</createZipPerProcess>
        <!-- which image folders to use (master|media|jpeg|source|...) -->
        <imagefolder>master</imagefolder>
        <!-- use the attribute filegroup, if you want to add checksums to the files within the filegroup. The checksums are taken from the configured folder -->
        <imagefolder filegroup="PRESENTATION">media</imagefolder>

        <!-- which additional folders to use -->
        <ocr>false</ocr>
        <source>false</source>
        <import>false</import>
        <export>false</export>
        <itm>false</itm>
        <validation>false</validation>

        <!-- generate UUIDs for each mets:fileGrp and mets:file -->
        <uuid>false</uuid>
        <!-- add checksums to mets:files -->
        <checksum>false</checksum>
        <!-- command to use to validate the exported images -->
        <checksumValidationCommand>/usr/bin/sha1sum</checksumValidationCommand>        

        <!-- if the internal METS file shall get transformed into another file define the path of the xsl file here -->
        <copyInternalMetaFile>true</copyInternalMetaFile>
        <transformMetaFile>true</transformMetaFile>
        <transformMetaFileXsl>/opt/digiverso/goobi/xslt/export_meta.xsl</transformMetaFileXsl>
        <transformMetaFileResultFileName>xslt_result_meta.xml</transformMetaFileResultFileName>

        <!-- if the METS file shall get transformed into another file define the path of the xsl file here -->
        <transformMetsFile>true</transformMetsFile>
        <transformMetsFileXsl>/opt/digiverso/goobi/xslt/export_mets.xsl</transformMetsFileXsl>
        <transformMetsFileResultFileName>xslt_result_mets.xml</transformMetsFileResultFileName>
    </config>

</config_plugin>

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

Wert
Beschreibung

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

target

Mit diesem Parameter wird der Hauptpfad definiert, wohin der Export des Vorgangs als Unterordner mit dem Vorgangsnamen exportiert werden soll.

useSubFolderPerProcess

Mit diesem Parameter wird festgelegt ob für jeden Prozess ein Unterordner angelegt werden soll.

createZipPerProcess

Mit diesem Parameter kann festgelegt werden, ob eine zip-Datei je Prozess erstellt werden soll.

imagefolder

Es können mehrere Verzeichnisse für die Bilder bzw. Digitalisate angegeben werden. Dies kann unter anderem z.B. die Master-Bilder sowie die Derivate umfassen. Wenn die METS Datei Checksummen für die einzelnen Images enthalten soll, kann hier über das Attribut filegroup festgelegt werden, für welche <mets:fileGrp> die Checksummen der Dateien aus diesem Ordner genutzt werden sollen.

ocr

Mit diesem Parameter wird angegeben, ob die OCR-Ergebnisse mit exportiert werden sollen.

source

Wenn die Inhalte des source Ordners mit berücksichtigt werden sollen, kann dies hier angegeben werden.

import

Wenn die Inhalte des import Ordners mit berücksichtigt werden sollen, kann dies hier definiert werden.

export

Wenn die Inhalte des export Ordners mit berücksichtigt werden sollen, kann dies hier ebenfalls angegeben werden.

itm

Sollen die Inhalte des TaskManager-Verzeichnisses itm mit exportiert werden, wird dies hier definiert.

validation

Mit diesem Parameter kann festgelegt werden, dass die Inhalte des Verzeichnisses validation ebenfalls exportiert werden sollen.

uuid

Wenn für die Verlinkung zwischen <mets:structMap>, <mets:fptr> und <mets:fileGrp>, <mets:file> UUIDs (v4) genutzt werden sollen, kann dies hier angegeben werden.

checksum

Wenn diese Option aktiviert wurde, werden die exportierten Daten mit zuvor generierten Checksummen verglichen, um den erfolgreichen Export zu verifizieren. Wurden bei der Konfiguration der imagefolder auch Dateigruppen konfiguriert, werden die Checksummen auch in die entsprechenden Dateigruppen eingetragen.

checksumValidationCommand

Enthält das Kommandozeilentool, mit dem die Verifizierung durchgeführt wird.

transformMetaFile

Mit diesem Parameter wird festgelegt, ob die interne METS-Datei von Goobi workflow in das Zielverzeichnis kopiert werden soll.

transformMetaFileXsl

Mit diesem Parameter kann festgelegt werden, ob die interne METS-Datei mittels der hier definierten XSLT-Transformationsdatei verarbeitet werden soll.

transformMetaFileResultFileName

Wenn eine Transformation der internen METS-Datei mittels XSLT erfolgen soll, kann hier festgelegt werden, wie der Name der zu generierenden Datei lauten soll.

transformMetsFile

Mit diesem Parameter wird festgelegt, ob die Export-METS-Datei von Goobi workflow in das Zielverzeichnis kopiert werden soll.

transformMetsFileXsl

Mit diesem Parameter kann festgelegt werden, ob die Export-METS-Datei mittels der hier definierten XSLT-Transformationsdatei verarbeitet werden soll.

transformMetsFileResultFileName

Wenn eine Transformation der Export-METS-Datei mittels XSLT erfolgen soll, kann hier festgelegt werden, wie der Name der zu generierenden Datei lauten soll.

EWIG Langzeitarchivierung

Dieses Step-Plugin erlaubt den Ingest von Vorgängen in das Langzeitarchiv EWIG.

Übersicht

Name
Wert

Identifier

intranda_step_lza_ewig

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:50:43

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz eines Plugins zum Erstellen einer METS Datei für die Langzeitarchivierung EWIG. ​

Installation

Das Plugin besteht aus zwei Dateien:

plugin_intranda_step_LZA_EWIG-base.jar
plugin_intranda_step_lza_ewig.xml

Die Datei plugin_intranda_step_LZA_EWIG-base.jar enthält die Programmlogik und muss für den tomcat-Nutzer lesbar in folgendes Verzeichnis installiert werden:

/opt/digiverso/goobi/plugins/step/

Die Datei plugin_intranda_step_lza_ewig.xml muss ebenfalls für den tomcat-Nutzer lesbar sein und in folgendes Verzeichnis installiert werden:

/opt/digiverso/goobi/config/

Überblick und Funktionsweise

Nachdem das Plugin installiert und konfiguriert wurde, kann es innerhalb eines Arbeitsschrittes genutzt werden. Dazu muss innerhalb der gewünschten Aufgabe das Plugin intranda_step_lza_ewig ausgewählt werden. Des Weiteren muss die Checkbox Automatische Aufgabe gesetzt sein.

Konfiguration

Die Konfigurationsdatei plugin_intranda_step_lza_ewig.xml muss wie folgt aufgebaut sein: ​

<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
    <config>
        <project>*</project>
        <step>*</step>
        <exportFolder>/opt/digiverso/</exportFolder>
        <exportXmlLog>true</exportXmlLog>
        <createManifest>true</createManifest>

        <manifestParameter
name="SubmissionManifestVersion">2.0</manifestParameter>
        <manifestParameter name="SubmittingOrganization">Example
organisation</manifestParameter>
        <manifestParameter
name="OrganizationIdentifier">DE-1</manifestParameter>
        <manifestParameter name="ContractNumber">1234567</manifestParameter>
        <manifestParameter name="Contact">Mustermann,
Max</manifestParameter>
        <manifestParameter name="ContactRole">Abteilungsleitung
Bibliothek</manifestParameter>
        <manifestParameter
name="ContactEmail">max.mustermann@example.com</manifestParameter>
        <manifestParameter name="TransferCurator">Doe,
John</manifestParameter>
        <manifestParameter
name="TransferCuratorEmail">john.doe@example.com</manifestParameter>
        <manifestParameter
name="SubmissionName">[Abteilungskürzel]_[eindeutiger
Name]</manifestParameter>
        <manifestParameter
name="SubmissionDescription">${meta.singleDigCollection};Digitalisierungsprojekt
der ZLB</manifestParameter>
        <manifestParameter
name="RightsHolder">${meta.rightsHolder};N/A</manifestParameter>
        <manifestParameter
name="Rights">http://id.loc.gov/vocabulary/preservation/copyrightStatus/pub</manifestParameter>
        <manifestParameter name="RightsDescription">''</manifestParameter>
        <manifestParameter
name="License">${meta.AccessLicense};${meta.AccessStatus};https://creativecommons.org/publicdomain/mark/1.0/</manifestParameter>
        <manifestParameter
name="AccessRights">${meta.AccessStatus};public</manifestParameter>
        <manifestParameter
name="MetadataFileFormat">http://www.loc.gov/METS/</manifestParameter>
        <manifestParameter
name="endpoint">https://goobi.example.com/api/endpoint/wi</manifestParameter>
    </config>
</config_plugin>

Der <config> Block ist wiederholbar und kann so in unterschiedlichen Projekten verschiedene Parameter definieren. Die Unterelemente <project> und <step> werden zur Prüfung genutzt, ob der vorliegende Block für den aktuellen Schritt genutzt werden soll. Dabei wird zuerst geprüft, ob es einen Eintrag gibt, der sowohl den Projektnamen als auch den Schrittenamen enthält. Ist dies nicht der Fall, wird nach einem Eintrag für durch den gekennzeichnete, beliebige Projekte und dem verwendeten Schrittenamen gesucht. Wenn dazu ebenfalls kein Eintrag gefunden wurde, erfolgt eine Suche nach dem Projektnamen und beliebigen Schritten, ansonsten greift der default Block, bei dem sowohl <project> als auch <step>_ enthalten.

Im Element <exportFolder> wird dabei festgelegt an welcher Stelle im Dateisystem die exportierten METS Dateien abgelegt werden.

Mittels <exportXmlLog> wird festgelegt, ob das XML Log ebenfalls exportiert und in die METS Datei geschrieben werden soll. Das Log enthält Informationen über den Workflow.

Das Element <createManifest> steuert, ob ein submission manifest erzeugt werden soll. Ist dies der Fall, müssen auch die <manifestParameter> konfiguriert werden.

Jeder <manifestParameter> besteht aus zwei Teilen, dem Attribut name, das den Namen des Parameters enthält, sowie dem Text, in dem die gewünschten Feldinhalte konfiguriert werden. Dabei können sowohl statische Texte als auch alle in Goobi bekannten Variablen genutzt werden. Mehrere Parameter können mittels Semikolon getrennt angegeben werden. Für den Fall, dass der erste Wert nicht bekannt ist, weil zum Beispiel das konfigurierte Metadatum nicht ausgefüllt wurde, wird dann der nächste Wert probiert.

Kopieren von Dateien aus Metadatenfeldern

Dies ist eine technische Dokumentation für das Plugin zum automatischen Anreichern des Prozesses mit Bildern basierend auf Metadaten mit den Dateinamen im Vorgang.

Übersicht

Name
Wert

Identifier

intranda-step-fetch-images-from-metadata

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

30.01.2025 09:40:27

Einführung

Die vorliegende Dokumentation beschreibt die Installation, Konfiguration und den Einsatz des Plugins. Mit Hilfe dieses Plugins können Bilder aus einem konfigurierten Ordner oder von bestimmten URLs anhand des im Vorgangs hinterlegten Dateinamens in den gewünschte Ordner des Vorgangs kopiert oder bewegt werden.

Installation

Das Plugin besteht aus zwei Dateien:

plugin_intranda_step_fetch_images_from_metadata-base.jar
plugin_intranda_step_fetch_images_from_metadata.xml

Die Datei plugin_intranda_step_fetch_images_from_metadata-base.jar enthält die Programmlogik und muss für den tomcat-Nutzer lesbar in folgendes Verzeichnis installiert werden:

/opt/digiverso/goobi/plugins/step/

Die Konfigurationsdatei plugin_intranda_step_fetch_images_from_metadata.xml muss ebenfalls für den tomcat-Nutzer lesbar sein und in folgendes Verzeichnis installiert werden:

/opt/digiverso/goobi/config/

Überblick und Funktionsweise

Dieses Plugin wird in den Workflow so integriert, dass es automatisch ausgeführt wird. Eine manuelle Interaktion mit dem Plugin ist nicht notwendig. Zur Verwendung innerhalb eines Arbeitsschrittes des Workflows sollte es wie im nachfolgenden Screenshot konfiguriert werden.

Das Plugin wird üblicherweise vollautomatisch innerhalb des Workflows ausgeführt. Es ermittelt zunächst, ob das in der Konfiguration spezifizierte Metadatum vorhanden ist und wertet dieses anschließend aus. Die in dem Metadatum angegebene Datei wird anschließend anhand ihres Namens und der Dateiendung in den media-Ordner des Vorgangs kopiert oder bewegt. Dabei prüft das Plugin die vorhandenen Bilder im media-Ordner des Vorgangs, um zu sehen, ob das gewünschte Bild bereits importiert wurde, und wenn nicht:

In den beiden folgenden Fällen wird die Reihenfolge der importierten Bilder aktualisiert und in der Mets-Datei gespeichert:

  • wenn useUrl auf true gesetzt ist, wird das Plugin das Bild von der angegebenen URL herunterladen

  • wenn useUrl auf false oder gar nicht gesetzt ist, wird der Name jeder Datei geprüft, um zu ermitteln, ob an sie als erste Datei des Verzeichnis behandelt werden soll, während die anderen Bilder einfach nach ihren Namen sortiert werden.

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_step_fetch_images_from_metadata.xml und kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
    <!--
        order of configuration is:
          1.) project name and step name matches
          2.) step name matches and project is *
          3.) project name matches and step name is *
          4.) project name and step name are *
	-->
    
    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>
        
        <!-- true if the images should be fetched from a url, false if the images should be fetched from the following configured folder. DEFAULT false -->
        <useUrl>false</useUrl>
        <!-- true if all existing images and pagination should be removed before a re-run -->
        <clearExistingData>false</clearExistingData>
        
        <!-- metadata containing the file name -->
        <filenameMetadata>SeparatedMaterial</filenameMetadata>
        
        <!-- mode="copy|move"   ignoreFileExtension="true|false"-->
        <fileHandling mode="copy" ignoreFileExtension="true" folder="/opt/digiverso/import/images/" />
        
        <!-- enabled= true|false exportImages=true|false -->
        <export enabled="true" exportImages="true" />
    </config>

</config_plugin>

Die einzelnen Parameter haben die folgende Funktion:

Parameter
Erläuterung

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config>-Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config>-Block vorkommen.

useUrl

Dieser Parameter bestimmt den Quellort der abzurufenden Bilder. Wenn er auf true gesetzt ist, werden die Bilder von den registrierten URLs in der mets-Datei geholt, wenn er auf false oder gar nicht gesetzt ist, werden die Bilder aus dem folgenden konfigurierten Ordner geholt.

clearExistingData

Dieser Parameter bestimmt, ob vor einem Durchlauf vorhandene Bilder gesucht und gelöscht werden sollen. Neben den Bildern wird auch die Paginierung und Seitenzuweisung entfernt.

filenameMetadata

Hier ist der Name des Metadatenfeldes (üblicherweise aus der METS-Datei) angegeben, das den Dateinamen der zu importierenden Datei enthält.

fileHandling

Das Attribut @mode definiert, ob die Bilder durch Kopieren oder Verschieben importiert werden sollen. Das Attribut @ignoreFileExtension steuert, ob die Dateiendung für den Kopiervorgang ignoriert werden soll oder exakt stimmen muss. Das Attribut @folder gibt den Ordner an, in dem sich die zu importierenden Dateien befinden.

export

Das Attribut @enabled legt fest, ob der Vorgang exportiert werden soll oder nicht, während das Attribut @exportImages definiert, ob hierbei die Bilder berücksichtig werden sollen.

ePIC PID Registrierung (Handle & DOI)

Dieses Step Plugin erlaubt die Registrierung von Handle und DOI als Persistente Identifier über den ePIC Service der GWDG.

Übersicht

Name
Wert

Identifier

intranda_step_epic_pid

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:59:30

Einführung

Installation

Zur Installation des Plugins muss die folgende Datei installiert werden:

/opt/digiverso/goobi/plugins/step/plugin_intranda_step_epic_pid-base.jar

Um zu konfigurieren, wie sich das Plugin verhalten soll, müssen ausserdem die folgenden beiden Konfigurationsdateien installiert werden:

/opt/digiverso/goobi/config/plugin_intranda_step_epic_pid.xml
/opt/digiverso/goobi/config/plugin_intranda_step_epic_pid_mapping.xml

Überblick und Funktionsweise

Zur Inbetriebnahme des Plugins muss dieses für einen oder mehrere gewünschte Aufgaben im Workflow aktiviert werden. Dies erfolgt wie im folgenden Screenshot aufgezeigt durch Auswahl des Plugins intranda_step_epic_pid aus der Liste der installierten Plugins.

Da dieses Plugin üblicherweise automatisch ausgeführt werden soll, sollte der Arbeitsschritt im Workflow als automatisch konfiguriert werden.

Nachdem das Plugin vollständig installiert und eingerichtet wurde, wird es üblicherweise automatisch innerhalb des Workflows ausgeführt, so dass keine manuelle Interaktion mit dem Nutzer erfolgt. Stattdessen erfolgt der Aufruf des Plugins durch den Workflow im Hintergrund und startet die Generierung eines Identifiers abhängig von der gewählten Konfiguration. Das Plugin geht dabei folgendermaßen vor:

Die Arbeitsweise des Plugins innerhalb des korrekt konfigurierten Workflows sieht folgendermaßen aus:

  • Zunächst öffnet das Plugin die METS-Datei des Vorgangs.

  • Für jede logische und physische Element dieser METS-Datei wird ein Handle in der Form PREFIX-CLIENT-OBJECTID erzeugt. Ist die geplante OBJECTID bereits als Handle vergeben, so wird ein hochzählender Suffix (z.B: -1, -2, etc.) hinten angefügt.

  • Der generierte Handle wird abschließend innerhalb der METS-Datei bei dem jeweiligen logischen bzw. physischen Strukturelement als Metadatum gespeichert. Hierfür wird üblicherweise der Metadatentyp _urn verwendet.

  • Wurde die Registrierung von DOIs aktiviert, wird zusätzlich zur Handle-Generierung für jedes logische top-level Element ein neuer DOI-Identifier erzeugt und innerhalb der METS-Datei gespeichert.

Konfiguration

Hauptkonfiguration

Die Konfiguration der Datei plugin_intranda_step_epic_pid.xml ist folgendermaßen aufgebaut:

<config_plugin>

    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>

        <!-- authentication and main information -->
        <certificate>/opt/digiverso/goobi/config/certificate.pem</certificate>
        <user>USER</user>
        <base>BASE</base>
        <url>https://viewer.example.org/resolver?field=MD_PI_HANLDE&identifier=</url>

        <!-- configuration for Handles -->
        <prefix>go</prefix>
        <name>goobi</name>
        <separator>-</separator>

        <!-- configuration for DOIs -->
        <doiGenerate>true</doiGenerate>
        <doiMapping>/opt/digiverso/goobi/config/plugin_intranda_step_epic_pid_mapping.xml</doiMapping>
    </config>

</config_plugin>

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

Wert
Beschreibung

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

certificate

Im Element certificate wird der Pfad zum privaten Key definiert, der für die Authentifizierung verwendet wird.

user

Mit diesem Parameter wird der Nutzername für die Authentifizierung festgelegt.

base

Hiermit wird der Base-Name für die Generierung der Handles festgelegt.

url

Mit diesem Parameter wird definiert, wie die finale URL für den Handle-Resolver lauten soll. Dabei wird an dieser Stelle definiert, wie die URL beginnt. Die anschließend gebildete Handle-ID wird hinten angestellt, so dass die letztliche URL folgendermaßen aufgebaut sein wird: url + Handle-ID

prefix

Der eigentliche Handle wird aus mehreren Teilen zusammengesetzt und hat üblicherweise diesen Aufbau: prefix + separator + name + separator + objectId. Mit dem Parameter prefix wird der Präfix definiert, mit dem der Handle beginnen soll. Dieser Parameter ist optional.

name

Mit dem Parameter name wird der Inhalt des Handles definiert, an den anschließend die Objekt-IDs angehängt werden. Dieser Parameter ist optional.

separator

Mit diesem Parameter wird das Trennzeichen definiert, das zwischen den einzelnen Elementen des generierten Handles verwendet werden soll.

doiGenerate

Mit diesem Parameter wird festgelegt, ob zusätzlich zu dem Handle auch ein DOI-Identifier erzeugt werden soll.

doiMapping

An dieser Stelle wird eine Mapping-Datei benannt, wo die Mappings der Metdaten aus der METS-Datei zu den DOI-Metadaten definiert werden.

Konfiguration für die Nutzung von DOI

Die Konfiguration der Datei plugin_intranda_step_epic_pid_mapping.xml ist folgendermaßen aufgebaut:

<?xml version="1.0" encoding="UTF-8"?>
<Mapping>
    <map>
        <field>title</field>
        <metadata>TitleDocMain</metadata>
        <altMetadata>Title</altMetadata>
        <default>Fragment</default>
    </map>

    <map>
        <field>author</field>
        <metadata>Author</metadata>
        <default>intranda</default>
    </map>

    <map>
        <field>publisher</field>
        <metadata>Publisher</metadata>
        <altMetadata>Source</altMetadata>
        <default>intranda</default>
    </map>

    <map>
        <field>pubdate</field>
        <metadata>PublicationYear</metadata>
        <altMetadata>PublicationYearSort</altMetadata>
        <altMetadata>PublicationRun</altMetadata>
        <default>intranda</default>
    </map>

    <map>
        <field>inst</field>
        <default>intranda</default>
    </map>
</Mapping>

In dieser Konfigurationsdatei wird definiert, wie die vorliegenden Metadaten aus der METS-Datei für die Registierung der DOI verwendet werden sollen. Dabei wird für jedes Feld der DOI mindestens ein Metadatum definiert, das verwendet werden soll.

Wert
Beschreibung

field

Dieser Parameter definiert das DOI-Metadatum, das erzeugt werden soll.

metadata

Dieser Parameter benennt dasjenige Metadatum, das aus der METS-Datei gelesen werden soll, um dessen Wert für die Erzeugung des definierten DOI-Feldes zu nutzen.

altMetadata

Sollte das Metadatum, das mit dem Parameter metadata definiert wurde, nicht vorhanden sein, kann hier ein alternatives Metadatum definiert werden, dass stattdessen genutzt werden soll. Dieser Parameter ist optional und wiederholbar.

default

Sollten die Metadaten, die mittels metadata und altMetadata definiert wurden, nicht gefunden werden, kann hier ein default-Wert festgelegt werden.

Beispiel eines Ergebnises

Wird ein Handle registriert, ergeben sich folgende Inhalte aus der Kommunikation mit dem ePIC Service:

Handle Values for: BASE/go-goobi-1296243265-17
Index    Type    Timestamp    Data
1    URL    2020-04-21 12:02:30Z     https://viewer.goobi.io/idresolver?handle=
2    TITLE    2020-04-21 12:02:30Z     [Stammbuch Daniel Schelling]
3    AUTHORS    2020-04-21 12:02:30Z     Daniel Schelling
4    PUBLISHER    2020-04-21 12:02:30Z     Stadtarchiv Duderstadt
5    PUBDATE    2020-04-21 12:02:30Z     1617
6    INST    2020-04-21 12:02:30Z     intranda
100    HS_ADMIN    2020-04-21 12:02:30Z     handle=USER; index=300; [create hdl,delete hdl,read val,modify val,del val,add val,modify admin,del admin,add admin,list]

Diese Informationen wird anschließend vom ePIC-Service der GWDG verwendet, um automatisch einen DOI-Identifier zu erzeugen, der mit der gleichen ID versehen wird: BASE/go-goobi-1296243265-17.

Automatische Geonames Annotierung

Goobi Step Plugin für die Annotation automatisch vorhandener "location" NER Tags in ALTO Dateien mit Geonames URLs.

Übersicht

Einführung

Dieses Step Plugin für Goobi workflow annotiert automatisch vorhandene "location" NER Tags in ALTO Dateien mit Geonames URLs. Dabei wird immer der erste Treffer der Suchanfrage genommen. Es ist also empfehlenswert, die Ergebnisse noch einmal zu überprüfen und zu korrigieren.

Installation

Das Plugin besteht aus folgenden Dateien:

Die Datei goobi_plugin_step_geonamesautoannotator-base.jar muss in dem richtigen Verzeichnis installiert werden, so dass diese nach der Installation an folgendem Pfad vorliegt:

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

Überblick und Funktionsweise

Dieses Plugin wird in den Workflow so integriert, dass es automatisch ausgeführt wird. Eine manuelle Interaktion mit dem Plugin ist nicht notwendig. Zur Verwendung innerhalb eines Arbeitsschrittes des Workflows sollte es wie im nachfolgenden Screenshot konfiguriert werden.

Das Plugin durchsucht für alle location NER Tags die Geonames-Datenbank. Sollten ein oder mehrere Suchtreffer zurückgegeben werden, wird der erste Suchtreffer in der Liste in das ALTO übernommen.

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_step_geonamesautoannotator.xml und kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

Es empfielt sich für den Betrieb des Plugins eine höhere Quota bei geonames einzukaufen. Wenn dies getan wurde, muss die geonamesApiUrl auf http://ws.geonames.net umgestellt werden.

Identifier generieren

Dieses Step Plugin erlaubt die Generierung von konfigurierbaren Identifiern und das Speichern innerhalb eines Metadatums in der METS-Datei.

Übersicht

Einführung

Das Plugin erlaubt eine automatische Generierung von Identifiern und das Speichern innerhalb eines Metadatums in der METS-Datei des entsprechenden Vorgangs.

Installation

Zur Installation des Plugins muss die folgende Datei installiert werden:

Um zu konfigurieren, wie sich das Plugin verhalten soll, können verschiedene Werte in der Konfigurationsdatei angepasst werden. Die Konfigurationsdatei befindet sich üblicherweise hier:

Überblick und Funktionsweise

Zur Inbetriebnahme des Plugins muss dieses für einen oder mehrere gewünschte Aufgaben im Workflow aktiviert werden. Dies erfolgt wie im folgenden Screenshot aufgezeigt durch Auswahl des Plugins intranda_step_generateIdentifier aus der Liste der installierten Plugins.

Da dieses Plugin üblicherweise automatisch ausgeführt werden soll, sollte der Arbeitsschritt im Workflow als automatisch konfiguriert werden.

Nachdem das Plugin vollständig installiert und eingerichtet wurde, wird es üblicherweise automatisch innerhalb des Workflows ausgeführt, so dass keine manuelle Interaktion mit dem Nutzer erfolgt. Stattdessen erfolgt der Aufruf des Plugins durch den Workflow im Hintergrund und startet die Generierung eines Identifiers abhängig von der gewählten Konfiguration.

Konfiguration

Die Konfiguration des Plugins ist folgendermaßen aufgebaut:

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

GeoNames Korrektur

Goobi Step Plugin für die Annotierung und Korrektur von zuvor erstellten GeoNames Identifiern in ALTO OCR-Ergebnissen

Übersicht

Einführung

Dieses Step Plugin für Goobi workflow erlaubt die Annotierung mit - beziehungsweise Korrektur von - zuvor automatisch erstellten GeoNames Identifiern in ALTO OCR-Ergebnissen. Dazu werden die innerhalb von ALTO annotierten NER-Ergebnisse mit dem Typ location in einer Tabelle angezeigt. Sollten schon automatisch erzeugte Geonames-Identifer in der ALTO-Datei vorliegen, werden diese auf einer Karte visualisiert.

Installation

Das Plugin besteht aus folgenden Dateien:

Diese jar-Dateien müssen in den richtigen Verzeichnissen installiert werden, so dass diese nach der Installation an folgendem Pfad vorliegen:

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

Überblick und Funktionsweise

Zur Inbetriebnahme des Plugins muss dieses für einen oder mehrere gewünschte Aufgaben im Workflow aktiviert werden. Dies erfolgt wie im folgenden Screenshot aufgezeigt durch Auswahl des Plugins intranda_step_geonamescorrection aus der Liste der installierten Plugins.

Nach dem Betreten des Plugins werden links in einer Tabelle alle gefundenen named entities vom Typ location angezeigt. Sollten schon GeoNames URLs mit an den NER Tags in den OCR Ergebnissen gespeichert sein, werden diese auf einer Karte auf der rechten Bildschirmhälfte visualisiert.

Durch einen Klick auf einen der Marker in der Karte kann der zugehörige Eintrag in der Tabelle markiert werden und durch einen Klick auf einen Eintrag in der Tabelle wird dieser in der Karte herangezoomt. Ein Klick außerhalb der Tabelle und der Karte zoomt wieder heraus und alle Marker werden angezeigt.

Einträge können über das Löschen-Icon gelöscht und durch einen Klick auf das Bearbeiten-Icon editiert werden. Dadurch öffnet sich links eine neue Eingabemaske.

Es werden die Suchergebnisse zum Begriff in einer neuen Tabelle angezeigt. Der Suchbegriff kann auch im Eingabeschlitz ganz oben durch den Nutzer geändert und durch einen Klick auf Suchen eine neue Suche veranlasst werden. Um einen GeoNames Identifier zu übernehmen, muss auf das entsprechende Icon (ein Haken) geklickt werden. Der Button mit zwei Haken übernimmt diesen Identifier hingegen für alle gleichlautenden Begriffe im ganzen Werk.

Durch einen Klick auf Speichern oder Speichern und verlassen unten rechts werden die angepassten GeoNames Identifier in die ALTO-Dateien geschrieben. Bei Speichern und verlassen wird außerdem noch das Plugin verlassen.

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_step_ark.xml und kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

Es empfielt sich für den Betrieb des Plugins eine höhere Quota bei geonames einzukaufen. Wenn dies getan wurde, muss die geonamesApiUrl auf http://ws.geonames.net umgestellt werden.

Der Parameter url definiert den Präfix, den jeder DOI-Link erhält. Ein DOI "10.80831/goobi-1" erhält hier z. B. den Hyperlink ""

Der Parameter viewer definiert den Präfix, den jeder DOI-Link erhält. Ein DOI "10.80831/goobi-1" erhält hier z. B. den Hyperlink ""

Auswahl des Plugins zur Durchführung des Arbeitsschrittes

Integration in den Workflow

Zuweisung des Plugins zu einer bestimmten Aufgabe
Anzeige des Uploadbereichs innerhalb der angenommenen Aufgabe
Anzeige der Übersicht über alle bereits vorhandenen Dateien des Ordners

Zuweisung des Plugins zu einer bestimmten Aufgabe

Einrichgtung im Workflow

Der Arbeitsschritt innerhalb von Goobi workflow exportiert alle notwendigen Dateien für den EWIG Ingest. Der Upload selbst erfolgt über den intranda TaskManager. Dies ist sinnvoll, um zu vermeiden, das mehrere parallel laufende Uploadvorgänge Konflikte mit einander haben und das System verlangsamen. Für den Upload siehe in der intranda TaskManager Dokumentation.

Integration des Plugins in den Workflow

Das Plugin erlaubt eine Registrierung von Digitalisaten beim . Hierbei ist sowohl die Erzeugung von Handle-IDs als auch die Registrierung von DOI möglich. Die Handles können dabei für jedes logische und physische Element eines METS-Datei erzeugt und jeweils darin als Metadatum gespeichert werden.

Zuweisung des Plugins zu einer bestimmten Aufgabe
Name
Wert
Parameter
Erläuterung
Name
Wert
Wert
Beschreibung
Name
Wert
Parameter
Erläuterung
https://github.com/intranda/goobi-plugin-step-datacite-doi
https://viewer.goobi.io/idresolver?doi=10.80831/goobi-1
https://github.com/intranda/goobi-plugin-step-doi
https://viewer.goobi.io/idresolver?doi=10.80831/goobi-1
https://github.com/intranda/goobi-plugin-step-download-and-verify-assets
https://docs.goobi.io/goobi-workflow-plugins-de/import/intranda_import_excel#import-von-metadaten
https://docs.goobi.io/goobi-workflow-plugins-de/import/intranda_import_excel#import-von-personen
Kapitel 4.17
ePIC Service der GWDG
goobi_plugin_step_geonamesautoannotator-base.jar
plugin_intranda_step_geonamesautoannotator.xml
/opt/digiverso/goobi/plugins/step/plugin_intranda_step_geonamesautoannotator-base.jar
/opt/digiverso/goobi/config/plugin_intranda_step_geonamesautoannotator.xml
<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
    <!--
        order of configuration is:
          1.) project name and step name matches
          2.) step name matches and project is *
          3.) project name matches and step name is *
          4.) project name and step name are *
	-->

    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>

        <!-- geonames account -->
        <geonamesAccount>testuser</geonamesAccount>
        <!-- geonames API URL - if you have a paid plan, use http://ws.geonames.net here -->
        <geonamesApiUrl>http://api.geonames.org</geonamesApiUrl>
    </config>

</config_plugin>

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

geonamesAccount

Mit diesem Parameter wird der Account-Name für den GeoNames-Zugriff definiert.

geonamesApiUrl

Hier wird die URL für den Zugriff auf die API von GeoNames festgelegt.

/opt/digiverso/goobi/plugins/step/plugin_intranda_step_generateIdentifier-base.jar
/opt/digiverso/goobi/config/plugin_intranda_step_generateIdentifier.xml
<config_plugin>

    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>

        <!-- into which field shall the new identifier be written -->
        <field>CatalogIDDigital</field>
        <!-- which type of identifier shall be created? Possible values are random, timestamp, uuid -->
        <type>uuid</type>
        <!-- how long shall the new identifier be if it is a numeric one (just in case the type is set to 'random' -->
        <length>9</length>
        <!-- overwrite existing value if it exists already -->
        <overwrite>true</overwrite>
    </config>

</config_plugin>

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

field

Mit diesem Parameter kann festgelegt werden, in welches Metadatenfeld der generierte Identifier geschrieben werden soll.

type

Dieser Parameter erlaubt zwischen verschiedenen Typen für die Generierung des Identifiers auszuwählen. Zur Verfügung stehen Zufallszahlen (random), Zeitstempel (timestamp) sowie UUIDs (uuid).

length

Wurde als Typ eine Zufallszahl ausgewählt, so kann hier die Anzahl der Stellen festgelegt werden.

overwrite

Wenn dieser Parameter auf true gesetzt wird, so wird bei wiederholter Ausführung des Plugins stets ein neuer Identifier erzeugt und überschreibt damit einen eventuell vorhandenen Identifier erneut. Andernfalls (false) würde nur dann ein neuer Identifier erzeugt werden, wenn das konfigurierte Feld (field) noch leer ist oder nicht existiert.

goobi_plugin_step_geonamescorrection-base.jar
goobi_plugin_step_geonamescorrection_GUI-base.jar
plugin_intranda_step_geonamescorrection.xml
/opt/digiverso/goobi/plugins/step/plugin_intranda_step_geonamescorrection-base.jar
/opt/digiverso/goobi/plugins/GUI/plugin_intranda_step_geonamescorrection-gui.jar
/opt/digiverso/goobi/config/plugin_intranda_step_geonamescorrection.xml
<?xml version="1.0" encoding="UTF-8"?>
<config_plugin>
    <!--
        order of configuration is:
          1.) project name and step name matches
          2.) step name matches and project is *
          3.) project name matches and step name is *
          4.) project name and step name are *
	-->

    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>

        <!-- geonames account -->
        <geonamesAccount>testuser</geonamesAccount>
        <!-- geonames API URL - if you have a paid plan, use http://ws.geonames.net here -->
        <geonamesApiUrl>http://api.geonames.org</geonamesApiUrl>
    </config>

</config_plugin>

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

geonamesAccount

Mit diesem Parameter wird der Account-Name für den GeoNames-Zugriff definiert.

geonamesApiUrl

Hier wird die URL für den Zugriff auf die API von GeoNames festgelegt.

Integration des Plugins in den Workflow
Zuweisung des Plugins zu einer bestimmten Aufgabe
Integration des Plugins in den Workflow
Anzeige der vorhandenen Koordinaten
Bearbeitung von Datensätzen
https://github.com/intranda/goobi-plugin-step-duplicate-tasks
https://github.com/intranda/goobi-plugin-step-excel-metadata-enrichment
https://github.com/intranda/goobi-plugin-step-file-upload
https://github.com/intranda/goobi-plugin-step-export-package
https://github.com/intranda/goobi-plugin-step-ewig
https://github.com/intranda/goobi-plugin-step-fetch-images-from-metadata
https://github.com/intranda/goobi-plugin-step-epic-pid

Identifier

intranda_step_geonamesautoannotator

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:58:33

Identifier

intranda_step_generateIdentifier

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:58:41

Identifier

intranda_step_geonamescorrection

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:58:21

Validierung von Dateien

Dieses Step Plugin für Goobi workflow führt eine konfigurierbare Validierung von Dateien durch

Übersicht

Name
Wert

Identifier

intranda_step_file_validation

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:58:49

Einführung

Die vorliegende Dokumentation beschreibt die Installation, die Konfiguration und den Einsatz des Step Plugins für Validierung mit konfigurierbaren Prüfprofilen.

Installation

Das Plugin besteht aus der folgenden Datei:

plugin_intranda_step_file_validation-base.jar

Diese Datei muss in dem richtigen Verzeichnis installiert werden, so dass diese nach der Installation an folgendem Pfad vorliegt:

/opt/digiverso/goobi/plugins/step/plugin_intranda_step_file_validation-base.jar

Daneben gibt es eine Konfigurationsdatei, die an folgender Stelle liegen muss:

/opt/digiverso/goobi/config/plugin_intranda_step_file_validation.xml

Überblick und Funktionsweise

Das Plugin wird üblicherweise vollautomatisch innerhalb des Workflows ausgeführt. Es startet den konfigurierten Prüfprozess und gibt anschließend aus, ob das verlangte Prüflevel erreicht wurde. Falls eines der geprüften Dokumente das geforderte Level nicht erreicht, schlägt das Plugin fehl.

Dieses Plugin wird in den Workflow so integriert, dass es automatisch ausgeführt wird. Eine manuelle Interaktion mit dem Plugin ist nicht notwendig. Zur Verwendung innerhalb eines Arbeitsschrittes des Workflows sollte es wie im nachfolgenden Screenshot konfiguriert werden.

Konfiguration

Die Konfiguration des Plugins erfolgt über die Konfigurationsdatei plugin_intranda_step_file_validation.xml und kann im laufenden Betrieb angepasst werden. Im folgenden ist eine beispielhafte Konfigurationsdatei aufgeführt:

<config_plugin>
	<!-- order of configuration is: 
		1.) project name and step name matches 
		2.) step name matches and project is * 
		3.) project name matches and step name is * 
		4.) project name and step name are * -->

	<config>
		<!-- which projects to use for (can be more then one, otherwise use *) -->
		<project>*</project>
		<!-- which stepss to use for (can be more then one, otherwise use *) -->
		<step>*</step>
		<!-- input folder where the documents are located, is only used in the STEP-Plugin -->
		<inputFolder>{processpath}/pdf</inputFolder>
		<!-- outputfolder where the folder with the tool reports will be created, is only used in the STEP-Plugin -->
		<outputFolder>{processpath}/validation</outputFolder>
		<!-- fileFilter: regex-Pattern that allows to filter by filename and fileextension -->
		<fileFilter>(?i).*\.pdf|.*\.epub</fileFilter>
		<!-- name of the profile that shall be used by this config blog -->
		<profileName>epubPdf</profileName>
		<!--targetLevel that must be reached for a successful plugin run -->
		<targetLevel>2</targetLevel>
	<config>
	</config>
		<!-- which institution to use for (can be more then one, otherwise use *) -->
		<institution>*</institution>
		<profileName>epubPdf</profileName>
		<targetLevel>0</targetLevel>

	</config>

	<!-- global has the child elements
		profile, namespaces and tools

		profile contains the definition of the ingest levels. It also has the attribute name,
		so you can refer to the profile in the config-blog element profileName
		the order of the levels defines their numbering, the first level element defines level zero and so on.

		a level element can contain check- and setValue- elements.

		a check element has following attributes
			name:		name of the check
			dependsOn:	name of the check that must have been successful, if this check shall be executed
					a check can only depend on a check that was defined before it.
					the parameter is optional
			tool:	name of the tool that must be executed to create the report
			group:  checks can be grouped. grouped checks are OR-operated which means, that the level won't fail if one check
				of the group is successful. ( i.e. check for isPDF-A and isPDFx in one level)
			code:	Errorcode or Errormessage that shall be displayed when the check fails /regex doesn't match node does not exist
			xpathSelector: xpathSelector to selct the node or attribute value
			regex:	regular expression that will be matched with the read value, if no regular expression is
				provided the check will only test if the node exists.
			namespace: (only needed if the specified check uses another namespace than the tool and if
					namespaces are used)

		a setValue element has following attributes
			name:		name of the check
			dependsOn:	name of the check that must have been successful if this setValue-Element shall be executed
					a setValue-Element can only depend on a check not on other setValue Elements. set value Elements will always be
					executed after the checks.
					the parameter is mandatory
			tool:	name of the tool that must have ben executed to create the report
			code:	Errorcode or Errormessage that shall be displayed when value retrival fails.
			xpathSelector: xpathSelector to selct an attribute value
			namespace: (only needed if the specified setValue-Element uses another namespace than the tool and if
					namespaces are used)

		a tools element contains multiple tool elements
		a tool element hast the attributes
			name:		name of the tool
			cmd:		the command that must be run to create the xml report. you can use the {pv.outputFile} variable to refer to
			stdout:		if stdout is true, the reportfile will be generated from the commandline output of the file. if it is set to false
					the plugins assumes the tool is able to create the file by itself
			xmlNamespace:	the name of the xml-namespace the generated report uses "jhove"

		a namespaces element can contain multiple namespace elements
		a namespace element has the attributes:
			name: 	the name of the xml namespace used in the xml and to address it in xmlNamespace attributes of tool-, check- and setValue-Elements
			uri:	the uri of the xml namespace
	-->
	<global>
		<profile name="epubPdf" >
			<level>
				<!-- 0 DI check Integrity of Document -->
				<!--checksum test should be done here -->
			</level>
			<level>
				<!-- 1 ID Document with File -->
				<check name="isPDF"
					tool="file"
					group="fileformat"
					code="This is not a PDF-File"
					xpathSelector="//format"
					regEx="(?i)^pdf document.*"
				/>

				<check name="isEPUB"
					tool="file"
					group="fileformat"
					code="This is not an EPUB-File"
					xpathSelector="//format"
					regEx="(?i)^epub document.*"
				/>
			</level>
			<level>
				<!-- 2 BF check for encryption or access restrictions -->
				<check name="checkEncryption"
					dependsOn="isPDF"
					tool="pdfinfo"
					code="The file is encrypted or has access restrictions"
					xpathSelector="//pdfinfo/Encrypted"
					regEx="^no$"
				/>

			</level>
			<level>
			<!-- 3 MD Extraction of Metadata -->

				<setValue name="PdfVersion"
					dependsOn="isPDF"
					tool="jhove_pdf"
					code="Could not read Version Information!"
					xpathSelector="//jhove:repInfo/jhove:version"
					processProperty="PDFVersion"
				/>
				<setValue name="FilesizePDF"
					dependsOn="isPDF"
					tool="jhove_pdf"
					code="Couldn't obtain Filesize"
					xpathSelector="//jhove:repInfo/jhove:size"
					processProperty="Filesize"
				/>
				<setValue name="EPUBVersion"
					dependsOn="isEPUB"
					tool="jhove_epub"
					code="Could not read Version Information!"
					xpathSelector="//jhove:repInfo/jhove:version"
					processProperty="EPUBVersion"
				/>
				<setValue name="FilesizeEPUB"
					dependsOn="isEPUB"
					tool="jhove_epub"
					code="Couldn't obtain Filesize"
					xpathSelector="//jhove:repInfo/jhove:size"
					processProperty="Filesize"
				/>
			</level>
			<level>
			<!-- 4 V Validity -->
				<check name="checkPDFVersion"
					dependsOn="isPDF"
					tool="jhove_pdf"
					code="The Version of the PDF-File is not supported by this Version of JHOVE"
					xpathSelector="//jhove:repInfo/jhove:version"
					regEx="^1\.[012456]$|^2\.0$"
				/>
				<check name="isValidPDF"
					dependsOn="checkPDFVersion"
					tool="jhove_pdf"
					code="PDF Validation failed"
					xpathSelector="//jhove:repInfo/jhove:status"
					regex="Well-Formed and valid"
				/>
				<check name="isValidEPUB"
					dependsOn="isEPUB"
					tool="jhove_epub"
					code="EPUB Validation failed"
					xpathSelector="//jhove:repInfo/jhove:status"
					regex="Well-Formed and valid"
				/>
			<!--
				<check name="pdf-a validation"
          dependsOn="isPDF"
					tool="verapdf"
					code="pdfa_validation_failed"
					xpathSelector="xpathSelector"
					regEx="regEx"
				/>
				-->
			</level>
		</profile>
		<namespaces>
			<namespace name="jhove" uri="http://hul.harvard.edu/ois/xml/ns/jhove" />
		</namespaces>
		<tools>
			<tool name="jhove_pdf"
				cmd="/usr/bin/jhove -m PDF-hul -h XML -o {pv.outputFile} {pv.inputFile}"
				stdout="false"
				xmlNamespace ="jhove"
			 />

			<tool name="jhove_epub"
				cmd="/usr/bin/jhove -m EPUB-ptc -h XML -o {pv.outputFile} {pv.inputFile}"
				stdout="false"
				xmlNamespace ="jhove"
			 />
			<tool name="verapdf"
				cmd="/opt/digiverso/verapdf/verapdf --format mrr {pv.inputFile}"
				stdout="true"
			 />
			<tool name="pdfinfo"
				cmd="/opt/digiverso/goobi/config/pdfinfogawk.sh {pv.inputFile}"
				stdout="true"
			 />
			 <tool name="file"
				cmd="/opt/digiverso/goobi/config/filegawk.sh {pv.inputFile}"
				stdout="true"
			 /> 					
		</tools>
	</global>
</config_plugin>

Das config_plugin-Element kann zwei Kindelementtypen haben: config und global. Zunächst wird hier die Funktionalität des config-Elements beschrieben.

Aufbau des config-Elements

Parameter
Erläuterung

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

institution

Dieser Parameter steuert im Rahmen des Dashboard-delivery, für welche Einrichtung der Block gelten soll. Verwendet wird hier der Name der Einrichtung. Dieser Parameter kann mehrfach pro Block vorkommen.

inputFolder

Hier muss spezifiziert werden, wo sich die Dokumente befinden, die geprüft werden sollen. Bei der Angabe können Goobivariablen wie {processpath} verwendet werden.

outputFolder

Hier muss spezifiziert werden, wo sich die Berichte, die von den Werkzeugen (tools) erzeugt werden, gespeichert werden sollen. Bei der Angabe können Goobivariablen wie {processpath} verwendet werden.

fileFilter

Hier kann ein regulärer Ausdruck formuliert werden, um anhand des Dateinamens (i.d.R. die Dateiendung) einzugrenzen, welche Dateien geprüft werden sollen.

profileName

Hier kann das Prüfprofil spezifiziert werden, das für diese Institution bzw. diese project/step-Kombination verwendet werden soll.

targetLevel

Hier muss spezifiziert werden, welches Level des Prüfprozesses vom Dokument erreicht werden muss.

Aufbau des global-Elementes

Das global-Element kann 3 Kindelementtypen haben: profile, namespaces und tools.

Aufbau des namespace-Elementes

Das namespace-Element kann mehrere Kinder des Typs namespace haben. Ein namespace beschreibt hier einen XML-Namensraum und hat folgende Attribute:

Attribut
Erläuterung

name

Ermöglicht es, den Namen des Namensraumes zu spezifizieren. In den Elementen tool, check und setValue kann der namespace dann über diesen Namen adressiert werden.

uri

Hier muss der URI des XML-Namensraumes spezifiziert werden.

Aufbau des tools-Elementes

Das tools-Element kann mehrere Kinder des Typs tool haben. Mithilfe des tool-Elements können die Parameter beschrieben werden, die benötigt werden, um ein Werkzeug/Script vom Plugin ausführen zu lassen.

Attribut
Erläuterung

name

Ermöglicht es, den Namen des Tools zu spezifizieren. In den Elementen check und setValue kann das tool dann über diesen Namen referenziert werden.

uri

Hier muss der URI des XML-Namensraumes spezifiziert werden.

cmd

Hier muss der Befehl spezifiziert werden, mit dem das Werkzeug (z.B. jhove) aufgerufen werden kann. Im cmd-Attribut können die pluginspezifischen Variablen {pv.outputFile} (Pfad zur Ausgabedatei) und {pv.inputFile} (Pfad zum Dokument) verwendet werden.

stdout

Hier kann angegeben werden, ob das Tool seinen Output nach Stdout (true) oder in eine Konfigurationsdatei (false) schreibt.

xmlNamespace

Hier kann ein namespace-Element anhand seines Namens referenziert werden.

Aufbau des profile-Elementes

Das profile-Element kann mehrere Kinder des Typs tool haben. Es hat ausserdem das Attribut name mit dessen Wert es im 'config'-Element profileName referenziert werden kann. Ein Profil hat mehrere Elemente des Typs level. In jedem Level können mehere check und setValue-Elemente enthalten sein. Die Level werden intern nach ihrer Reihenfolge nummeriert. Das erste level-Element ist dabei Level 0, das zweite Level 1 usw.

Aufbau von check- und setValue- Elementen

Ein Check ermöglicht es, einen Wert in einem der erzeugten xml-Reports zu prüfen. Zum Prüfen des Wertes wird ein regulärer Ausdruck herangezogen. Falls kein regulärer Ausdruck spezifiziert wird, wird nur überprüft, ob das angegebene xml-Element existiert. Wenn ein Check fehlschlägt, gilt das Level als gescheitert. Es sei denn, der gescheiterte Check ist in einer Gruppe, dann müssen auch alle anderen Checks der Gruppe scheitern, damit der Level als gescheitert gilt.

Die Attribute des check-Elementes sehen wie folgt aus:

Attribut
Erläuterung

name

Hier muss der Name des Checks angegeben werden z.B. isPDF. Mithilfe des Names kann der Check dann von anderen check/setValue-Elementen referenziert werden. Der Checkname wird außerdem im erzeugten Report verwendet.

group

Dieses Attribut ist optional. Checks in der gleichen Gruppe sind ODER-verknüpft, d.h. das Level gilt erst als nicht erreicht, wenn alle Checks dieser Gruppe fehlgeschlagen sind.

dependsOn

Dieses Attribut ist optional. Wenn es angegeben ist, muss der in dependsOn aufgeführte Check erfolgreich ausgeführt werden, damit dieser Check ausgeführt wird.

tool

Hier muss angegeben werden, welches Tool den zugrundeliegenden XML-Report erzeugt.

code

Hier muss eine Fehlermeldung spezifiziert werden.

xpathSelector

Hier muss der xpath-Selektor spezifiziert werden, der den entsprechenden XML-Node im XML-Dokument auswählt.

regex

Dieses Attribut ist optional. Wird es angegeben, wird geprüft ob der ausgewählte Wert mit dem regulären Ausdruck matcht. Wird kein regulärer Ausdruck spezifiziert, wird nur überprüft, ob das XML-Element existiert.

xmlNamespace

Dieses Attribut ist optional. Mit diesem Attribut kann ein namespace spezifiziert werden, der vom Namespace des tool abweicht. Dies kann z.B. notwendig sein, wenn in einem Report verschiedene Namensräume verwendet werden.

Ein setValue-Element ermöglicht es einen Wert aus einem der erzeugten Reports auszulesen und in den Prozesseigenschaften oder den Metadaten des obersten Strukturelements zu speichern. Die Attribute des setValue-Elements sehen wie folgt aus:

Attribut
Erläuterung

name

Hier muss der Name des setValue-Elements angegeben werden z.B. readPDFVersion. Der Name wird außerdem im erzeugten Report verwendet.

dependsOn

Dieses Attribut ist obligatorisch. Ein setValue-Element hängt immer von einem Check ab. Der in dependsOn aufgeführte Check muss erfolgreich ausgeführt werden, damit dieses setValue-Element ausgewertet wird.

tool

Hier muss angegeben werden, welches Tool den zugrundeliegenden XML-Report erzeugt.

code

Hier muss eine Fehlermeldung spezifiziert werden.

xpathSelector

Hier muss der xpath-Selektor spezifiziert werden, der den entsprechenden XML-Node im XML-Dokument auswählt.

xmlNamespace

Dieses Attribut ist optional. Mit diesem Attribut kann ein Namespace spezifiziert werden, der vom Namespace des tool abweicht. Dies kann z.B. notwendig sein, wenn in einem Report verschiedene Namensräume verwendet werden.

processProperty

Dieses Attribut ist optional. Hier kann man spezifizieren, in welcher Prozesseigenschaft der eingelesene Wert gespeichert werden soll.

mets

Dieses Attribut ist optional. Hier kann man spezifizieren, in welchem Metadatum des obersten Strukturelements der eingelesene Wert gespeichert werden soll. Hierfür muss sichergestellt werden, dass die angegebenen Werte mit dem Regelsatz übereinstimmen.

Lösung für Programme, die keinen XML-Output erzeugen

Eine Grundvoraussetzung dieses Plugins ist es, dass die verwendeten Wertzeuge XML-Output erzeugen. Es kommt jedoch häufig vor, dass das gewünschte Werkzeug keine XML-Ausgabe erzeugt. In diesem Fall raten wir dazu den Output mit einem GAWK-Script nach XML zu transformieren. Als Beispiel dient hier der Output des file-Befehls:

LoremIpsum-a3b.pdf: PDF document, version 1.6

Statt das Tool direkt aufzurufen, würde man nun ein Shellscript mit folgendem Inhalt erstellen und im cmd- Attribut des Tools hinterlegen:

file $1 | gawk -f {absoluter pfad zum awk-script} | xmllint --format -

Wenn wir vom Output des file-Befehles nur den zweiten Parameter benötigen, könnte das (g)awk script wie folgt aussehen:

BEGIN {
   FS="|";
   printf("<?xml version=\"1.0\" ?>\n<file>\n");
}
{
   split($1, a, ":");
   # remove whitespace
   gsub(/^[ \t]+/,"",a[2]);
   # remove unwanted Version Information
   sub(/,.*/,"",a[2])
   # ignore key value and only print second value
   printf("<format>%s</format>\n",a[2]);   
}
END {
   printf("</file>\n");
}

Das Resultat wäre dann der folgende XML-Output:

<?xml version="1.0"?>
<file>
  <format>PDF document</format>
</file>

Konfigurationsbeispiele

Plugin-Konfiguration

Vollständiges Beispiel für die Pluginskonfiguration innerhalb der Datei plugin_intranda_step_file_validation.xml:

<config_plugin>
	<!-- order of configuration is: 1.) project name and step name matches 2.) 
		step name matches and project is * 3.) project name matches and step name 
		is * 4.) project name and step name are * -->
		
	<config>
		<!-- which projects to use for (can be more then one, otherwise use *) -->
		<project>*</project>
		<!-- which stepss to use for (can be more then one, otherwise use *) -->
		<step>*</step>
		<!-- input folder where the documents are located, is only used in the STEP-Plugin -->
		<inputFolder>/opt/digiverso/pdf</inputFolder>
		<!-- outputfolder where the folder with the tool reports will be created, is only used in the STEP-Plugin --> 
		<outputFolder>{processpath}/validation</outputFolder>
		<!-- fileFilter: regex-Pattern that allows to filter by filename and fileextension -->
		<fileFilter>(?i).*\.pdf|.*\.epub</fileFilter>
		<!-- name of the profile that shall be used by this config blog -->
		<profileName>epubPdf</profileName>
		<!--targetLevel that must be reached for a successful plugin run -->
		<targetLevel>4</targetLevel>
	<config>
	</config>
		<!-- which institution to use for (can be more then one, otherwise use *) -->
		<institution>*</institution>
		<profileName>epubPdf</profileName>
		<targetLevel>0</targetLevel>
	</config>
	
	<!-- global has the child elements
		profile, namespaces and tools
		
		profile contains the definition of the ingest levels. It also has the attribute name, 
		so you can refer to the profile in the config-blog element profileName 
		the order of the levels defines their numbering, the first level element defines level zero and so on.
		
		a level element can contain check- and setValue- elements.
		
		a check element has following attributes
			name:		name of the check
			dependsOn:	name of the check that must have been successful, if this check shall be executed
					a check can only depend on a check that was defined before it.
					the parameter is optional
			tool:	name of the tool that must be executed to create the report
			group:  checks can be grouped. grouped checks are OR-operated which means, that the level won't fail if one check
				of the group is successful. ( i.e. check for isPDF-A and isPDFx in one level)
			code:	Errorcode or Errormessage that shall be displayed when the check fails /regex doesn't match node does not exist
			xpathSelector: xpathSelector to selct the node or attribute value
			regex:	regular expression that will be matched with the read value, if no regular expression is
				provided the check will only test if the node exists.
			namespace: (only needed if the specified check uses another namespace than the tool and if 
					namespaces are used)
					
		a setValue element has following attributes
			name:		name of the check
			dependsOn:	name of the check that must have been successful if this setValue-Element shall be executed
					a setValue-Element can only depend on a check not on other setValue Elements. set value Elements will always be 
					executed after the checks.
					the parameter is mandatory
			tool:	name of the tool that must have ben executed to create the report
			code:	Errorcode or Errormessage that shall be displayed when value retrival fails.
			xpathSelector: xpathSelector to selct an attribute value
			namespace: (only needed if the specified setValue-Element uses another namespace than the tool and if 
					namespaces are used)
					
		a tools element contains multiple tool elements
		a tool element hast the attributes
			name:		name of the tool
			cmd:		the command that must be run to create the xml report. you can use the {pv.outputFile} variable to refer to 
			stdout:		if stdout is true, the reportfile will be generated from the commandline output of the file. if it is set to false 
					the plugins assumes the tool is able to create the file by itself
			xmlNamespace:	the name of the xml-namespace the generated report uses "jhove"
		
		a namespaces element can contain multiple namespace elements
		a namespace element has the attributes:
			name: 	the name of the xml namespace used in the xml and to address it in xmlNamespace attributes of tool-, check- and setValue-Elements 
			uri:	the uri of the xml namespace
	-->
	<global>
		<profile name="epubPdf" >
			<level>
				<!-- 0 DI check Integrity of Document -->
				<!--checksum test should be done here -->
			</level>
			<level>
				<!-- 1 ID Document with JHOVE -->
				<check name="isPDF"
					tool="jhove"
					group="fileformat"
					code="This is not a PDF-File" 
					xpathSelector="//jhove:repInfo/jhove:format"
					regEx="(?i)pdf$" 
				/>
				
				<check name="isEPUB"
					tool="jhove" 
					group="fileformat"
					code="This is not an EPUB-File" 
					xpathSelector="//jhove:repInfo/jhove:format"
					regEx="(?i)epub$" 
				/>
			
			</level>
			<level>	
				<!-- 2 BF check for encryption or access restrictions -->
				<check name="checkEncryption"
					dependsOn="isPDF"
					tool="pdfinfo" 
					code="The file is encrypted or has access restrictions" 
					xpathSelector="//pdfinfo/Encrypted"
					regEx="^no$" 
				/>
				
			</level>
			<level>
			<!-- 3 MD Extraction of Metadata -->
				<setValue name="PdfVersion"
					dependsOn="isPDF"
					tool="jhove"
					code="Could not read Version Information!"
					xpathSelector="//jhove:repInfo/jhove:version"
					processProperty="PDFVersion"
				/>
				<setValue name="FilesizePDF"
					dependsOn="isPDF"
					tool="jhove"
					code="Couldn't obtain Filesize"
					xpathSelector="//jhove:repInfo/jhove:size"
					processProperty="Filesize"
				/>
				<setValue name="FilesizeEPUB"
					dependsOn="isEPUB"
					tool="jhove"
					code="Couldn't obtain Filesize"
					xpathSelector="//jhove:repInfo/jhove:version"
					processProperty="EPUBVersion"
				/>		
			</level>
			<level>
			<!-- 4 V Validity -->
				<check name="checkPDFVersion"
					dependsOn="isPDF"
					tool="jhove" 
					code="The Version of the PDF-File is not supported by this Version of JHOVE" 
					xpathSelector="//jhove:repInfo/jhove:version"
					regEx="^1\.[012456]$|^2\.0$" 
				/>
				<check name="isValidPDF"
					dependsOn="checkPDFVersion"
					tool="jhove" 
					code="PDF Validation failed" 
					xpathSelector="//jhove:repInfo/jhove:status"
					regex="Well-Formed and valid"
				/>
				<check name="isValidEPUB"
					dependsOn="isEPUB"
					tool="jhove" 
					code="EPUB Validation failed" 
					xpathSelector="//jhove:repInfo/jhove:status"
					regex="Well-Formed and valid"
				/>
			<!--
				<check name="pdf-a validation"
					tool="verapdf" 
					code="pdfa_validation_failed" 
					xpathSelector="xpathSelector"
					regEx="regEx" 
				/>
				-->
			</level>
		</profile>
		<namespaces>
			<namespace name="jhove" uri="http://schema.openpreservation.org/ois/xml/ns/jhove" />
		</namespaces>
		<tools>
			<tool name="jhove" 
				cmd="/opt/digiverso/tools/jhove/jhove -h XML -m PDF-hul -o {pv.outputFile} {pv.inputFile}"
				stdout="false"
				xmlNamespace ="jhove"
			 />
			<tool name="verapdf" 
				cmd="/home/michael/verapdf/verapdf --format mrr {pv.inputFile}"
				stdout="true"
			 />
			<tool name="pdfinfo" 
				cmd="/opt/digiverso/tools/pdfinfogawk.sh {pv.inputFile}"
				stdout="true"
			 /> 			
		</tools>
	</global>
</config_plugin>

Beispiel für PDF-Validierung

Beispiel für PDF-Validierungsaufruf mittels pdfinfogawk.sh:

pdfinfo $1 | gawk -f /opt/digiverso/tools/namedKeys.awk | xmllint --format -

Beispieldatei namedKeys.awk:

BEGIN { 
   FS="|";
   printf("<?xml version=\"1.0\" ?>\n<pdfinfo>\n");
}
NF==1 {
   sub(/:/,"^",$1); 
   split($1, a, "^"); for (i in a) {
    if (i == 1) {
    	gsub(/[ \t]+/,"",a[1]);
        printf("<%s>", a[1]);
        }
    if (i == 2) {
    	gsub(/^[ \t]+/,"",a[2]);
        printf("%s", a[2]);
        printf("</%s>\n", a[1]);
        }
   } 
}
END {
   printf("</pdfinfo>\n");
}

Beispiel für File-Validierung

Beispiel für Validierung mittels file-Befehl via filegawk.sh:

file $1 | gawk -f /opt/digiverso/tools/fileFormat.awk | xmllint --format -

Beispieldatei fileFormat.awk:

BEGIN { 
   FS="|";
   printf("<?xml version=\"1.0\" ?>\n<file>\n");
}
NF==1 {
   sub(/:/,"^",$1); 
   split($1, a, "^"); for (i in a) {
      if (i == 2) {
    	gsub(/^[ \t]+/,"",a[2]);
        printf("<format>%s</format>\n", a[2]);
      } 
   }
}
END {
   printf("</file>\n");
}

Generate ALTO IDs

Dieses Step Plugin dient zur Generierung von fehlenden ALTO-IDs.

Übersicht

Einführung

In dieser Dokumentation wird das Plugin zur Erzeugung fehlender ALTO-IDs erläutert. Dies ist erforderlich, damit der ALTO-Editor richtig funktioniert. Einige externe OCR-Tools stellen diese ALTO-IDs nicht zur Verfügung. Dieses Plugin kann dann verwendet werden, um sie nachträglich zu erzeugen.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

Nach der Installation des Plugins kann dieses innerhalb des Workflows für die jeweiligen Arbeitsschritte ausgewählt und somit automatisch ausgeführt werden. Ein Workflow könnte dabei beispielhaft wie folgt aussehen:

Für die Verwendung des Plugins muss dieses in einem Arbeitsschritt ausgewählt sein:

Überblick und Funktionsweise

Beim Starten des Plugins werden alle ALTO Dateien auf fehlende IDs geprüft. Sollten fehlende IDs gefunden werden, wird zuerst ein Backup aller OCR Ergebnisse mitsamt der ALTO Dateien erstellt. Danach werden die fehlenden ALTO IDs in allen Dateien ergänzt.

Konfiguration

Dieses Plugin erfordert keine Konfiguration.

Extraktion von Bildmetadaten

Dieses Step Plugin erlaubt die Extraktion von Metadaten aus Bilddateien, um diese innerhalb der METS-Dateien zu speichern.

Übersicht

Einführung

Mit Hilfe dieses Plugins können Metadaten aus Bilddateien extraiert und innerhalb der METS-Dateien von Goobi gespeichert werden. Hier findet im Hintergrund eine Nutzung des Linux-Programms ExifTool statt, um dessen gelesene Bildmetadaten gemäß individueller Konfiguration zu überführen.

Installation

Zur Installation des Plugins muss die folgende Datei installiert werden:

Um zu konfigurieren, wie sich das Plugin verhalten soll, können innerhalb der Konfigurationsdatei verschiedene Parameter angepasst werden. Die Konfigurationsdatei befindet sich üblicherweise unter folgendem Pfad:

Überblick und Funktionsweise

Zur Inbetriebnahme des Plugins muss dieses in einer Aufgabe im Workflow aktiviert werden. Dies erfolgt durch Auswahl des Plugins intranda_step_imageMetadataExtraction aus der Liste der installierten Plugins. Da das Plugin auf eine METS/MODS Datei angewiesen ist, sollte der Arbeitsschritt nach der Metadatenbearbeitung stattfinden.

Nachdem das Plugin vollständig installiert und eingerichtet wurde, wird es üblicherweise automatisch innerhalb des Workflows ausgeführt, so dass keine manuelle Interaktion mit dem Nutzer erfolgt. Stattdessen erfolgt der Aufruf des Plugins durch den Workflow im Hintergrund und führt die Extraktion der Bildmetadaten automatisch aus. Hierzu wird die erst Bilddatei aus dem media-Verzeichnis des Goobi-Vorgangs geöffnet, deren Metadaten ausgelesen und auf der obersten logischen Ebene der METS-Datei als das konfigurierte Metadatum gespeichert.

Konfiguration

Die Konfiguration des Plugins ist folgendermaßen aufgebaut:

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

Die Definition von Feldern, erfolgt mit den folgenden Parametern:

Heris Datenimport

Dieses Step Plugin ermittelt Denkmalinformationen aus einem Vokabulardatenbank, um diese in der METS-Datei zu aktualisieren. Es wurde für das Bundesdenkmalamt in Österreich entwickelt.

Übersicht

Einführung

Dieses Plugin erlaubt die Datenübername von mehreren Metdaten aus einem Vokabular in METS-Dateien. Es wurde spezifisch für das Bundesdenkmalamt in Österreich entwickelt, so dass die Metadaten des Vokabulars sehr individuell und hard-gecoded sind. Sie stammen ursprünglich aus der sogenannten HERIS-Datenbank, die innerhalb von Goobi workflow als eigenes Vokabular importiert wurde.

Installation

Das Plugin besteht insgesamt aus den folgenden zu installierenden Dateien:

Diese Datei mus in dem folgenden Verzeichnis installiert werden:

Überblick und Funktionsweise

Zur Inbetriebnahme des Plugins muss dieses für einen oder mehrere gewünschte Aufgaben im Workflow aktiviert werden. Dies erfolgt wie im folgenden Screenshot aufgezeigt durch Auswahl des Plugins intranda_step_herisimport aus der Liste der installierten Plugins.

Da dieses Plugin üblicherweise automatisch ausgeführt werden soll, sollte der Arbeitsschritt im Workflow als automatisch konfiguriert werden.

Nachdem das Plugin vollständig installiert und eingerichtet wurde, wird es üblicherweise automatisch innerhalb des Workflows ausgeführt, so dass keine manuelle Interaktion mit dem Nutzer erfolgt. Stattdessen erfolgt der Aufruf des Plugins durch den Workflow im Hintergrund und führt die folgenden Arbeiten durch:

Das Plugin durchsucht die METS-Datei nach einem Metdatum mit dem Namen HerisID und importiert im Anschluß eine Liste verschiedener Metadaten aus dem Heris-Vokabular. Das Mapping der Metadaten umfasst dabei die folgende Liste:

Konfiguration

Eine eigenständige Konfiguration des Plugins erfolgt nicht, da die zu importierenden Metadaten hard-gecoded wurden.

Automatische Handlevergabe

Step Plugin für die automatische Erstellung von Handle-IDs innerhalb von METS-Dateien

Übersicht

Einführung

Das Plugin erzeugt auf dem Handle-Server der GWDG einen Handle für alle logischen und physischen Elemente einer METS-Datei. Diese Handles werden dann in dem jeweiligen Element selbst als Metadatum _urn gespeichert.

Ist die automatische DOI-Vergabe installiert, so wird für jedes top-level logische Element ein neuer DOI erzeugt und gespeichert.

Installation

Um das Plugin nutzen zu können, müssen folgende Dateien installiert werden:

Die Datei goobi-plugin-step-handle-mets.jar enthält die Programmlogik und muss für den Tomcat-Nutzer lesbar in folgendes Verzeichnis installiert werden:

Die Datei plugin_intranda_step_handle_mets.xml muss ebenfalls für den Tomcat-Nutzer lesbar sein und in folgendes Verzeichnis installiert werden:

Nachdem das Plugin installiert und konfiguriert wurde, kann es innerhalb eines Arbeitsschrittes von Goobi genutzt werden. Dazu muss innerhalb der gewünschten Aufgabe das Plugin plugin_intranda_step_handle_mets eingetragen werden. Des Weiteren müssen die Checkboxen Metadaten und Automatische Aufgabe gesetzt sein.

Um die automatische DOI-Vergabe zu nutzen, muss eine zusätzliche Datei auf dem folgenden Pfad installiert werden, sodass sie für den Tomcat-Nutzer lesbar ist:

Diese Datei dient zur Konfiguration des Plugins und befindet sich im Ordner mappings.

Überblick und Funktionsweise

Die Arbeitsweise des Plugins innerhalb des korrekt konfigurierten Workflows sieht folgendermaßen aus:

  • Wenn das Plugin innerhalb des Workflows aufgerufen wurde, öffnet es die METS-Datei.

  • Für jedes logische und physische Element der METS-Datei wird ein Handle erzeugt (in der Form /goobi-Institution-objektId, wobei die objektId diejenige der Objekt-Identifier, der ggf. mit dem Suffix -1, -2 etc. ergänzt wird, falls der Handle bereits existieren sollte).

  • Der generierte Handle wird dann in das jeweilige Strukturelement als der Metadatum vom Typ _urn geschrieben.

Beim Erzeugen der Handles für das oberste logische Strukturelement einer METS-Dateis, werden zusätzlich zu der generierten Handle-ID und der zugehörigen URL weitere Metadaten innerhalb des generierten Handles gespeichert. Das sieht dann beispielhaft wie folgt aus:

Diese Informationen werden im Falle der zusätzlichen DOI-Registriereung genutzt, um die DOI mit der gleichen ID zu erzeugen - in diesem Fall also 21.T119876543/goobi-go-1296243265-17.

Konfiguration

Hauptkonfiguration des Plugins

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_step_handle_mets.xml wie hier aufgezeigt:

Allgemeine Parameter

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

Weitere Parameter

Neben diesen allgemeinen Parametern stehen die folgenden Parameter für die weitergehende Konfiguration zur Verfügung:

Die Datei plugin_intranda_step_handle_mets.xml muss für die DOI-Vergabe folgende zusätzlichen Konfigurationen beinhalten:

Der Parameter DOIMappingFile definiert dabei den Pfad zu der Datei plugin_intranda_step_handle_mets.xml.

Mapping-Datei

In der DOI-Mapping.xml-Datei beschreibt jeder <map>-Eintrag eine Zuordnung (Mapping) zwischen einem Dublin-Core-Element und einem oder mehreren Metadatenfeldern aus der METS-Datei. Die Datei ist folgendermaßen aufgebaut:

Integration des Plugins in den Workflow
Name
Wert
Name
Wert
Wert
Beschreibung
Wert
Beschreibung
Name
Wert
Metadatum Heris
Metadatum METS
Name
Wert
Parameter
Erläuterung
Parameter
Erläuterung
Parameter
Erläuterung
https://github.com/intranda/goobi-plugin-step-geonames-auto-annotator
https://github.com/intranda/goobi-plugin-step-generate-identifier
https://github.com/intranda/goobi-plugin-step-geonames-correction
/opt/digiverso/goobi/plugins/step/plugin-step-generate-alto-ids-base.jar
/opt/digiverso/goobi/plugins/step/plugin_intranda_step_imageMetadataExtraction-base.jar
/opt/digiverso/goobi/config/plugin_intranda_step_imageMetadataExtraction.xml
<config_plugin>

    <config>
        <!-- which projects to use for (can be more then one, otherwise use *) -->
        <project>*</project>
        <step>*</step>

        <command>/usr/bin/exiftool</command>
        <field line="Object Name" metadata="TitleDocMain" />
        <field line="Keywords" metadata="SubjectTopic" />
        <field line="Special Instructions" metadata="Footnote" />
        <field line="City" metadata="PlaceOfPublication" />
        <field line="Source" metadata="singleDigCollection" />
        <field line="Copyright Notice" metadata="AccessCondition" />
        <field line="Caption-Abstract" metadata="Abstract" />
    </config>

</config_plugin>

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

command

Innerhalb dieses Parameters wird der Pfad zu dem Program ExifTool angegeben. Hierbei handelt es sich um ein serverseitig installiertes Programm, das die Metdaten aus Bilddateien auslesen kann.

field

Für jedes gewünschte Metadatum, das pro Bild ausgelesen werden soll, kann jeweils ein field gegeben werden, das aus den Attributen line und metadata besteht.

line

Mit diesem Parameter wird festgelegt, wie das Metdatum innerhalb des Ergebnisses von ExifTool heisst. Geben Sie hier entsprechend den Namen an, wie das Metadatum innerhalb des Bildes vorliegt.

metadata

Dieser Parameter legt fest, unter welchem Metadatentyp der Inhalt des gelesenen Metatums in der METS-Datei gespeichert wird. Verwendet wird hierbei der interne Name des Metadatentyps, wie er im zugehörigen Regelsatz definiert wurde. Zu beachten ist hierbei, dass die Metaten jeweils auf der Ebene des höchsten logischen Strukturelements (z.B. einer Monographie) gespeichert werden und nicht an untergeordneten logischen oder physischen Elementen.

goobi_plugin_step_herisimport-base.jar
/opt/digiverso/goobi/plugins/step/goobi_plugin_step_herisimport-base.jar

Alte Objekt-ID

DMDBID

Gehört zu alter Objekt-ID

ParentElement

Katalogtitel

TitleDocMain

Typ

HerisType

Hauptkategorie grob

MainCategory1

Hauptkategorie mittel

MainCategory2

Hauptkategorie fein

MainCategory3

Gemeinden politisch (lt. Katastralgemeinden)

PoliticalCommunity

Katastralgemeinde

CadastralCommune

Bezirk

PoliticalDistrict

Bundesland

FederalState

Grundstücksnummern

PropertyNumber

Bauzeit von

ConstructionTimeFrom

Bauzeit bis

ConstructionTimeTo

Publiziert

Published

Straße

Street

Hausnummer

StreetNumber

PLZ

ZIPCode

Zusatztext aus Adresse

AdditionalAddressText

Weitere Adressen

OtherAddress

Gehört zu HERIS-ID

ParentElement

Ort

Community

Staat

Country

goobi-plugin-step-handle-mets.jar
plugin_intranda_step_handle_mets.xml
/opt/digiverso/goobi/plugins/step/
/opt/digiverso/goobi/config/
/opt/digiverso/goobi/config/
Handle Values for: 21.T119876543/goobi-go-1296243265-17		
Index	Type	Timestamp	Data		
1	URL	2020-04-21 12:02:30Z 	https://viewer.goobi.io/idresolver?handle=		
2	TITLE	2020-04-21 12:02:30Z 	[Stammbuch Daniel Schelling]		
3	AUTHORS	2020-04-21 12:02:30Z 	Daniel Schelling		
4	PUBLISHER	2020-04-21 12:02:30Z 	Stadtarchiv Duderstadt		
5	PUBDATE	2020-04-21 12:02:30Z 	1617		
6	INST	2020-04-21 12:02:30Z 	MPG		
100	HS_ADMIN	2020-04-21 12:02:30Z 	handle=21.T119876543/USER1234528; index=300; [create hdl,delete hdl,read val,modify val,del val,add val,modify admin,del admin,add admin,list]		
<config_plugin>
	<config>
		<!-- which projects to use for (can be more then one, otherwise use *) -->
		<project>*</project>
		<step>*</step>

		<PEMFile>/opt/digiverso/goobi/config/zertifikate/21.T119876543_USER1234528-priv.pem</PEMFile>
		<UserHandle>21.T119876543/USER1234528</UserHandle> 
		<HandleBase>21.T119876543</HandleBase> 
		<URLPrefix>https://viewer.goobi.io/idresolver?handle=</URLPrefix> 

		<HandleIdPrefix>goobi</HandleIdPrefix>
		<HandleInstitutionAbbr>go</HandleInstitutionAbbr>
		<ErrorMessage>Handle Authorization file could not be found.</ErrorMessage>

		<!-- config elts for DOIs -->
		<MakeDOI>true</MakeDOI>
		<DOIMappingFile>/opt/digiverso/goobi/config/doi_mapping.xml</DOIMappingFile>
		<DOIInstitutionAbbr>GOO</DOIInstitutionAbbr>

	</config>
	
	<config>
		<!-- which projects to use for (can be more then one, otherwise use *) -->
		<project>My special project</project>
		<project>Archive_Project</project>
		<step>CreateHandle</step>
		<step>intranda_step_handle_mets</step>

		<PEMFile>/opt/digiverso/goobi/config/zertifikate/21.T119876543_USER1234528-priv.pem</PEMFile>
		<UserHandle>21.T119876543/USER1234528</UserHandle> 
		<HandleBase>21.T119876543</HandleBase> 
		<URLPrefix>https://viewer.goobi.io/idresolver?handle=</URLPrefix> 

		<HandleIdPrefix>goobi</HandleIdPrefix>
		<HandleInstitutionAbbr>go</HandleInstitutionAbbr>
		<ErrorMessage>Handle Authorization file could not be found.</ErrorMessage>

		<!-- config elts for DOIs -->
		<MakeDOI>true</MakeDOI>
		<DOIMappingFile>/opt/digiverso/goobi/config/doi_mapping.xml</DOIMappingFile>
		<DOIInstitutionAbbr>GOO</DOIInstitutionAbbr>

	</config>
</config_plugin>

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

PEMFile

Pfad zur Private Key .PEM-Datei. Wird von der GWDG bereitgestellt.

HandleInstitutionAbbr

Kürzel für die Institution

HandleIdPrefix

Präfix für die Handles (z.B. für die Applikation oder das Projekt)

HandleBase

Identifier für die Institution

UserHandle

Identifier für den Nutzer der Handle-Registrierung

URLPrefix

URL, unter der die Dokumente mit ihrer Handle-ID zu finden sein werden nach Veröffentlichung.

<config_plugin>
	<config>

	...

		<MakeDOI>true</MakeDOI>
		<DOIMappingFile>"path/to/DOI-Mapping.xml/file"</DOIMappingFile>

	</config>
</config_plugin>
<?xml version="1.0" encoding="UTF-8"?>
<Mapping>

	<map>
		<doiElt>title</doiElt>
		<localElt>TitleDocMain</localElt>
		<altLocalElt>titel</altLocalElt>
		<default>Fragment</default>
	</map>

	<map>
		<doiElt>author</doiElt>
		<localElt>Author</localElt>
		<default>MPG</default>
	</map>

	<map>
		<doiElt>publisher</doiElt>
		<localElt>Publisher</localElt>
		<altLocalElt>quelle</altLocalElt>
		<default>MPG</default>
	</map>

	<map>
		<doiElt>pubdate</doiElt>
		<localElt>PublicationYear</localElt>
		<altLocalElt>PublicationYearSort</altLocalElt>
		<altLocalElt>Sortlaufzeit0</altLocalElt>
		<default>unknown</default>
	</map>

	<map>
		<doiElt>inst</doiElt>
		<default>MPG</default>
	</map>

</Mapping>

<doiElt>

Ist das Dublin Core Element, für das dieser Mapping definiert ist

<localElt>

Ist der Name des Metadatums in der METS-Datei, dessen Wert für das <doiElt> verwendet werden soll

<altLocalElt>

Sind alternative Namen für das Metadatum, die durchsucht werden, falls kein Eintrag mit dem Namen <localElt> gefunden wird

<default>

Gibt den Wert an, der verwendet wird, falls weder <localElt> noch <altLocalElt> passende Einträge liefern.

<title>, <author>, <publisher>, <pubdate>, <inst>

Hierbei handelt es sich um die derzeit einzigen fünf notwendigen und zugleich maximal erlaubten Felder für Metadaten, die zur Registrierung verwendet werden.

Beispielhafter Aufbau eines Workflows
Konfiguration des Arbeitsschritts für die Nutzung des Plugins
Zuweisung des Plugins zu einer bestimmten Aufgabe
Zuweisung des Plugins zu einer bestimmten Aufgabe
https://github.com/intranda/goobi-plugin-step-file-validation

Identifier

intranda_step_generate_alto_ids

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

07.09.2024 14:15:36

Identifier

intranda_step_imageMetadataExtraction

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

25.07.2024 11:58:06

Identifier

intranda_step_herisimport

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

07.09.2024 14:17:13

Identifier

intranda_step_handle_mets

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

26.08.2024 09:19:33

Flex Editor

Step Plugin für die dynamische Anpassung von Erfassungsmasken für Metadaten

Übersicht

Name
Wert

Identifier

intranda_step_flex_editor

Repository

Lizenz

GPL 2.0 oder neuer

Letzte Änderung

04.09.2024 09:22:22

Einführung

Dieses Plugin ermöglicht die dynamische Anpassung der Benutzeroberfläche, sodass spezifische Anforderungen an die Metadatenverwaltung effizient umgesetzt werden können.

Installation

Dieses Plugin wird als tar-Archiv ausgeliefert. Um es zu installieren, muss das Archiv plugin_intranda_step_flex-editor.tar in den Goobi-Ordner entpackt werden:

tar -C /opt/digiverso/goobi/ -xf plugin_intranda_step_flex-editor.tar --exclude="pom.xml"

Dieses Plugin verfügt außerdem über eine Konfigurationsdatei mit dem Namen plugin_intranda_step_flex-editor.xml. Sie muss unter folgendem Pfad abgelegt werden:

/opt/digiverso/goobi/config/plugin_intranda_step_flex-editor.xml

Für die Verwendung des Plugins muss dieses in einem Arbeitsschritt ausgewählt sein:

Überblick und Funktionsweise

Der Flex Editor für Goobi Workflow ermöglicht die flexible Anpassung der Metadaten-Eingabeoberfläche. Über eine XML-Konfigurationsdatei wird definiert, wie Metadatenfelder in Spalten und Boxen organisiert und angezeigt werden. Verschiedene Feldtypen, wie Textfelder, Checkboxen und Dropdowns, bieten verschiedene Eingabeoptionen.

Konfiguration

Die Konfiguration des Plugins erfolgt in der Datei plugin_intranda_step_flex-editor.xml wie hier aufgezeigt:

<config>
    <column>
        <box name="bla 1">
            <field type="MULTISELECT" defaultDisplay="true">
                <metadatatype>unknown</metadatatype>
                <name>My multi select field</name>
                <sourceVocabulary>testVocabforDropdown</sourceVocabulary>
            </field>
            <field type="INPUT">
                <metadatatype>unknown</metadatatype>
                <name>My input field</name>
            </field>
        </box>
    </column>
    <column>
        <box name="bla 2">
            <field type="TEXTAREA">
                <metadatatype>unknown</metadatatype>
                <name>My textarea</name>
            </field>
        </box>
    </column>
    <column>
        <box name="bla 3">
            <field type="BOOLEAN">
                <metadatatype>unknown</metadatatype>
                <name>My checkbox</name>
            </field>
            <field type="TEXTAREA">
                <metadatatype>unknown</metadatatype>
                <name>My textarea</name>
            </field>
            <field type="DROPDOWN">
                <metadatatype>unknown</metadatatype>
                <name>My dropdown</name>
                <sourceVocabulary>testVocabforDropdown</sourceVocabulary>
            </field>
        </box>
        <box name="bla 5">
            <field type="TEXTAREA">
                <metadatatype>unknown</metadatatype>
                <name>My textarea</name>
            </field>
        </box>
    </column>
</config>

Allgemeine Parameter

Der Block <config> kann für verschiedene Projekte oder Arbeitsschritte wiederholt vorkommen, um innerhalb verschiedener Workflows unterschiedliche Aktionen durchführen zu können. Die weiteren Parameter innerhalb dieser Konfigurationsdatei haben folgende Bedeutungen:

Parameter
Erläuterung

project

Dieser Parameter legt fest, für welches Projekt der aktuelle Block <config> gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

step

Dieser Parameter steuert, für welche Arbeitsschritte der Block <config> gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro <config> Block vorkommen.

Weitere Parameter

Neben diesen allgemeinen Parametern stehen die folgenden Parameter für die weitergehende Konfiguration zur Verfügung:

Die Konfigurationsdatei beschreibt den Aufbau der in Goobi zu sehenden Nutzeroberfläche. Die Konfiguration besteht aus mehreren <column>-Elementen, die in der Oberfläche jeweils eine Spalte ergeben. In den <column>-Elementen gibt es wiederum <box>-Elemente, die in der Oberfläche mehrere Metadatenfelder zu einer Box gruppieren. In den <box>-Elementen wiederum befinden sich <field>-Elemente, die ein Metadatenfeld im Vorgang repäsentieren. Die <field>-Elemente können verschiedene Typen haben, die ihnen eine bestimmte Funktionalität in der Nutzeroberfläche geben:

Parameter
Erläuterung

INPUT

Ein einzeiliges Eingabefeld, das verwendet wird, um einfache Texteingaben zu erfassen. Es muss immer auch ein Metadatentyp angegeben werden.

TEXTAREA

Hierbei handelt es sich um ein mehrzeiliges Eingabefeld. Auch hier ist die Angabe eines Metadatentyps erforderlich.

BOOLEAN

Eine Checkbox, die für Ja/Nein-Entscheidungen oder binäre Optionen verwendet wird. Ein Metadatentyp muss ebenfalls angegeben werden.

DROPDOWN

Ein Dropdown-Menü, dessen Werte aus dem vorgegebenen Vokabular stammen. Zusätzlich zum Metadatentyp muss der Name des zu verwendenden Vokabulars angegeben werden.

MODAL_PROVENANCE

Erstellt eine Metadatengruppe, in der mehrere Felder zusammengefasst sind. Diese Felder können ebenfalls aus Vokabularen stammen. Das Feld ist wiederholbar und kann mehrere Vokabulare verwenden.

Konfiguration des Arbeitsschritts für die Nutzung des Plugins
Beispielhaftes Aussehen einer angepassten Metadaten-Eingabeoberfläche
Beispielhaftes Aussehen einer angepassten Metadaten-Eingabeoberfläche
Beispielhaftes Aussehen einer angepassten Metadaten-Eingabeoberfläche
https://github.com/intranda/goobi-plugin-step-generate-alto-ids
https://github.com/intranda/goobi-plugin-step-image-metadata-extraction
https://github.com/intranda/goobi-plugin-step-heris
https://github.com/intranda/goobi-plugin-step-handle-mets
https://github.com/intranda/goobi-plugin-step-flex-editor