Durchsuchbare Dokumentation aufrufen

Zurück zur Dokumentationsübersicht

Unify Metadata vor Umstellung auf Solr - JavaScript anpassen

Diese Dokumentation behandelt die Vereinheitlichung der Metadaten mithilfe der JavaScript-Datei UnifyMetadata.js.

Die allgemeine Dokumentation zum Umstieg und Umgang mit der Umstellung auf Solr wird vorausgesetzt.

Hinweis: Halten Sie Rücksprache mit agorum, bevor Sie die JavaScript-Datei UnifyMetadata.js verwenden.

Empfohlenes Vorgehen


  1. Führen Sie die Standard-Konvertierung im Simulationsmodus durch.
  2. Prüfen Sie auf Konflikte.
  3. Passen Sie das JavaScript an.
  4. Führen Sie die Konvertierung erneut simuliert durch und prüfen Sie die CSV-Datei.
  5. Passen Sie das JavaScript an, bis das gewünschte Ergebnis erreicht ist.
  6. Führen Sie die Konvertierung ohne Simulationsmodus durch.
  7. Führen Sie die Konvertierung im Simulationsmodus ohne das JavaScript erneut durch.
  8. Benennen Sie das JavaScript um.
  9. Stellen Sie sicher, dass nirgends falsche Datentypen entstehen können.

    Stellen, an denen falsche Datentypen entstehen können
    • Docform-Dokumententypen
    • Schnittstellen-Dateien (XML)
    • Workflows
    • Eigene JavaScripts
    • Setzen von Metadaten über die agorum core REST API.
  10. Stellen Sie die Search Engine auf Solr um (sofern keine Konflikte mehr vorhanden sind).

Die Konvertierung per JavaScript durchführen


Achtung: Möglicher Datenverlust durch falsche Verwendung des Skripts. Metadaten und deren Werte können verloren gehen, wenn Sie das Skript nicht korrekt einsetzen. Führen Sie die Konvertierung per JavaScript zuerst auf einem Testsystem durch und erstellen Sie auf dem Produktivsystem vor der Durchführung ein Backup.

Manchmal reicht die Standard-Konvertierung der Felder nicht aus. Es besteht die Möglichkeit, dass Sie ein JavaScript verwenden, das für jedes Vorkommen von Metadaten aufgerufen wird. In diesem Skript können Sie eigene Konvertierungen definieren und an das Unify-Programm zurückgeben.

Das Skript herunterladen

Es steht ein Skript zur Verfügung, das Sie als Beispiel herunterladen und verwenden können:

  1. Rufen Sie folgende URL auf:
    <agorum core URL>/roiwebui/roiwebui_module/tools/UnifyMetadata.jsp
  2. Klicken Sie bei Sample-JS File auf UnifyMetadata.js.

    Ergebnis: Das Skript wird heruntergeladen.
  3. Legen Sie das Skript in folgendem Standardpfad ab:
    home/roi/eigenedateien
    

    Erklärung zum Skript
    Im Skript erhalten Sie alle Informationen zu aktuell zu konvertierenden Metadaten, Werte und Datentypen. Mit diesen können Sie die Konvertierung durchführen. Das Skript gibt dann die korrigierten Werte und den gewünschten Datentyp zurück.

    Gibt das Skript nichts zu einem Metadatum zurück, so wird die Standard-Konvertierung ohne Skript angewandt.

    Die Konvertierungen oder Fehler werden in einer CSV-Datei protokolliert. Dabei werden alle durchgeführten Änderungen in die Datei aufgenommen und können überprüft werden (auch im Simulationsmodus).
Skript herunterladen

Das JavasScript anpassen

Achtung: Möglicher Datenverlust durch falsche Verwendung des Skripts. Metadaten und deren Werte können verloren gehen, wenn Sie das Skript nicht korrekt einsetzen. Führen Sie die Konvertierung per JavaScript zuerst auf einem Testsystem durch und erstellen Sie auf dem Produktivsystem vor der Durchführung ein Backup.

In diesem Abschnitt finden Sie Beschreibungen zum heruntergeladenen Skript.

Das Skript enthält inline bereits Kommentare, die das Skript erklären. Außerdem sind bereits beispielhafte Metadaten vorhanden, die verschiedene Konvertierungstypen beschreiben.

Hauptsächlich wird mit dem attributeValueConverted gearbeitet, dies ist der neue Wert des Metadatums nach der Konvertierung. Durch das switch-case fragen Sie jedes Metadatum einzeln ab. Hier werden die Metadaten durch attributeName.toLowerCase() kleingeschrieben behandelt.


Beispiel anhand des Bruttobetrags

Der Bruttobetrag ist als double festgelegt. Da es mehrere Metadaten mit dem gleichen Problem gibt, ist deren Behandlung in eine separate Funktion ausgelagert:

 case 'bruttobetrag':
    toDouble();
    break;

Zuerst wird der bisherige Typ geprüft. Wenn dieser bereits vom Typ double ist, muss dieser nicht erneut gewandelt und kann somit übersprungen werden:

if (attributeType !== 'DOUBLE') {    // ignore attributes, that are already double

Falls Metadaten leer sind oder einen leeren String enthalten, sollen diese nicht korrigiert, sondern entfernt werden:

if (removeEmpty(attributeValue)) return;

Anschließend wird der Wert des Attributs in den gewünschten Typ double konvertiert.

tryToConvertDouble ist dabei eine der vielen Funktionen, die dafür bereits in der JavaScript-Datei UnifyMetadata.js vorhanden sind:

// try to convert the attribute to long
let newValue = tryToConvertDouble(attributeValue);

Besitzt das erwartete Ergebnis einen Wert, war die Konvertierung erfolgreich. Der Attributetyp des Ziels wird gesetzt und der neue Wert übernommen:

    if (newValue !== null) {
      attributeTypeConverted = "DOUBLE"; // define the new type

      // could be converted
      attributeValueConverted = newValue;
    }

Im Falle eines Problems existieren mehrere Möglichkeiten. Da Sie nicht wissen, warum die Konvertierung fehlgeschlagen ist, kann per throw eine Fehlermeldung mit den genauen Werten und Typen ausgegeben werden. Dies erzeugt eine Ausgabe in der CSV-Datei in der Spalte Error. Hierdurch können im ersten Testlauf die betroffenen Werte genauer untersucht werden:

else {
      throw 'Fehler convert bruttobetrag to double - type' + attributeType + ' value ' + attributeValue;
    }

Abschließend benennen Sie das nicht mehr zu reparierende Metadatum um:

else {
      // could not be converted, so rename the attribute
      newKeyName = attributeName + '_nc_' + attributeType;
    }

Der Aufbau für jede einfache Konvertierung ist identisch. Die Konvertierung kann auch individuell angepasst werden, etwa wenn aus einem String true ein boolscher Wert true konvertiert werden soll.

Es existieren komplexere Metadaten, etwa Positionsdaten (Maps), oder wenn mehrere Werte erlaubt sind (Listen).


Gesamter Code

function toDouble() {
  if (attributeType !== 'DOUBLE') { // ignore attributes, that are already double

    // remove empty
    if (removeEmpty(attributeValue)) return;

    // try to convert the attribute to long
    let newValue = tryToConvertDouble(attributeValue);
    if (newValue !== null) {
      attributeTypeConverted = "DOUBLE"; // define the new type

      // could be converted
      attributeValueConverted = newValue;
    }     else {       // could not be converted, so rename the attribute
      newKeyName = attributeName + '_nc_' + attributeType;
    }   } }

Beschädigte Positionen umwandeln

Für das Umwandeln von beschädigten Positionen siehe mitgeliefertes Beispiel.

Korrekte und neue Metadaten definieren

DocForm-Typen (name des Metadatums) sollten nicht umbenannt werden, da sonst alle Trainings nicht mehr funktionieren. Passen Sie stattdessen die Definition an.

Beschädigte Metadaten finden

Exportieren Sie Metadaten aus der MetaDb, um per Editor besser alles auf einmal durchsuchen zu können (etwa per Notepad++).

An folgenden Orten in der MetaDb finden Sie die Metadaten:

  1. MAIN_MODULE_MANAGEMENT/docform/control/Types
  2. MAIN_MODULE_MANAGEMENT/workflow/resources/FileWorkflow2/control/Children 
  3. MAIN_MODULE_MANAGEMENT/FAconfigDesigner/configurations/"configName".json