Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > Konfigurationen zu Metadaten
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.
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.
Es steht ein Skript zur Verfügung, das Sie als Beispiel herunterladen und verwenden können:
<agorum core URL>/roiwebui/roiwebui_module/tools/UnifyMetadata.jsp
home/roi/eigenedateien
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:
Zuerst wird der bisherige Typ geprüft. Wenn dieser bereits vom Typ double ist, muss dieser nicht erneut gewandelt und kann somit übersprungen werden:
Falls Metadaten leer sind oder einen leeren String enthalten, sollen diese nicht korrigiert, sondern entfernt werden:
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:
Abschließend benennen Sie das nicht mehr zu reparierende Metadatum um:
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;
} } }
Für das Umwandeln von beschädigten Positionen siehe mitgeliefertes Beispiel.
DocForm-Typen (name des Metadatums) sollten nicht umbenannt werden, da sonst alle Trainings nicht mehr funktionieren. Passen Sie stattdessen die Definition an.
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: