Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > Übersicht tags
Der agorum core dms importer liefert Beispiele mit, die Ihnen die Funktionsweise des Imports vorstellen. Für diese funktionalen Beispiele hat das System bei Installation des Plug-ins diverse Ordner und Dateien erstellt.
DateienAuf dieser Ebene befinden sich Ordner, die den Archivbereich der vorhandenen Beispiele darstellen, in die das System nach Ausführung der Konfiguration die entsprechenden Objekte ablegt.
Eigene Dateien/Administration/customers/dmsimporter• In diesem Konfigurationsprojekt befinden sich die benötigten Konfigurationsdateien und Beispieldokumente. Auf diesen baut die jeweilige Beispielkonfiguration auf.
Eigene Dateien/Administration/customers/dmsimporter/deploy/pre/fs/dmsimporter-demoIn diesem Ordner finden Sie die zu importierenden Objekte in den Ordnern namens import. Die Ordner out speichern nach Ausführung der Konfiguration die entstehenden Log-Dateien ab.
In diesem Beispiel:
Mitgelieferte Beispieldaten ansehen
Eigene Dateien/Administration/customers/dmsimporter/deploy/pre/fs/dmsimport-demoDatensätze in diesem Pfad:
Eigene Dateien/Administration/customers/dmsimporter/dmsimporter-demo-d3In diesem Ordner finden Sie die Einstellungen für den agorum core dms importer zu diesem Beispiel.
Den Import durchführen
Dateien/dmsimporter-demo-d3
• Das System hat diesen Ablageordner während des Imports mit der ACL ACL_dms importer versehen.
• Die dort abgelegten Dateien können nur Administratoren einsehen, da der ACL noch keine Benutzergruppen oder Benutzer zugewiesen wurden.
Tipp: Prüfen Sie die dazugehörigen JavaScripte. Sie sehen dadurch, dass Sie die Daten auf die von Ihnen benötigte Art und Weise importieren können.
In diesem Beispiel:
Mitgelieferte Beispieldaten ansehen
Eigene Dateien/Administration/customers/dmsimporter/deploy/pre/fs/dmsimport-demoDatensätze in diesem Pfad:
Eigene Dateien/Administration/customers/dmsimporter/dmsimporter-demo-xmlIn diesem Ordner finden Sie die Einstellungen für den agorum core dms importer zu diesem Beispiel.
Den Import durchführen
Dateien/dmsimporter-demo-xml
• Das System hat diesen Ablageordner während des Imports mit der ACL ACL_dms importer versehen.
• Die dort abgelegten Dateien können nur Administratoren einsehen, da der ACL noch keine Benutzergruppen oder Benutzer zugewiesen wurden.
Tipp: Prüfen Sie die dazugehörigen JavaScripte. Sie sehen dadurch, dass Sie die Daten auf die von Ihnen benötigte Art und Weise importieren können.
In diesem Beispiel importieren Sie eine Filestruktur ohne Metadaten.
Dieses Vorgehen ist sinnvoll, wenn Sie es mit einer großen Datenmenge zu tun haben und / oder Sie zudem anhand eines Protokolls nachweisen müssen, dass das System den Import erfolgreich durchgeführt hat.
Mitgelieferte Beispieldaten ansehen
Eigene Dateien/Administration/customers/dmsimporter/deploy/pre/fs/dmsimporter-demo/Datensätze in diesem Pfad:
Eigene Dateien/Administration/customers/dmsimporter/dmsimporter-demo-3In diesem Ordner finden Sie die Einstellungen für den agorum core dms importer zu diesem Beispiel.
Den Import durchführen
Dateien/dmsimporter-demo-3
• Das System hat diesen Ablageordner während des Imports mit der ACL ACL_dms importer versehen.
• Die dort abgelegten Dateien können nur Administratoren einsehen, da der ACL noch keine Benutzergruppen oder Benutzer zugewiesen wurden.
Tipp: Prüfen Sie die dazugehörigen JavaScripte. Sie sehen dadurch, dass Sie die Daten auf die von Ihnen benötigte Art und Weise importieren können.
In diesem Beispiel importieren Sie eine Filestruktur inklusive Metadaten.
Das System:
Mitgelieferte Beispieldaten ansehen
Eigene Dateien/Administration/customers/dmsimporter/deploy/pre/fs/dmsimporter-demoDatensätze in diesem Pfad:
Eigene Dateien/Administration/customers/dmsimporter/dmsimporter-demo-2In diesem Ordner finden Sie die Einstellungen für den agorum core dms importer zu diesem Beispiel.
Den Import durchführen
Dateien/dmsimporter-demo-2
• Das System hat diesen Ablageordner während des Imports mit der ACL ACL_dms importer versehen.
• Die dort abgelegten Dateien können nur Administratoren einsehen, da der ACL noch keine Benutzergruppen oder Benutzer zugewiesen wurden.
Tipp: Prüfen Sie die dazugehörigen JavaScripte. Sie sehen dadurch, dass Sie die Daten auf die von Ihnen benötigte Art und Weise importieren können.
In diesem Beispiel: importieren Sie eine Filestruktur inklusive Metadaten, die das System separat aus einer dazugehörigen JSON-Datei liest. Das System übernimmt die Filestruktur in diesem Beispiel genauso, wie diese exportiert wurde.
Mitgelieferte Beispieldaten ansehen
Eigene Dateien/Administration/customers/dmsimporter/deploy/pre/fs/dmsimporter-demoDatensätze existieren in diesem Pfad:
{ "src_invoicenumber": "12345", "src_invoicedate": "17.09.2019", "src_customernumber": "K123", "src_customername": "Testkunde 123" }• Das System mappt diese Metadaten beim Import auf agorum core-Metadaten und setzt sie auf das dazugehörige Dokument.
Eigene Dateien/Administration/customers/dmsimporter/dmsimporter-demo-1In diesem Ordner finden Sie die Einstellungen für den agorum core dms importer zu diesem Beispiel.
Den Import durchführen
Dateien/dmsimporter-demo-1
• Das System hat diesen Ablageordner während des Imports mit der ACL ACL_dms importer versehen.
• Die dort abgelegten Dateien können nur Administratoren einsehen, da der ACL noch keine Benutzergruppen oder Benutzer zugewiesen wurden.
Tipp: Prüfen Sie die dazugehörigen JavaScripte. Sie sehen dadurch, dass Sie die Daten auf die von Ihnen benötigte Art und Weise importieren können.
In diesem Beispiel importieren Sie eine Filestruktur inklusive Metadaten, die das System separat aus einer dazugehörigen JSON-Datei liest.
Das System:
Mitgelieferte Beispieldaten ansehen
Eigene Dateien/Administration/customers/dmsimporter/deploy/pre/fs/dmsimporter-demoDatensätze existieren in diesem Pfad:
{ "src_invoicenumber": "12345", "src_invoicedate": "17.09.2019", "src_customernumber": "K123", "src_customername": "Testkunde 123" }• Das System mappt diese Metadaten beim Import auf agorum core-Metadaten und setzt sie auf das dazugehörige Dokument.
Öffnen Sie den Pfad:
Eigene Dateien/Administration/customers/dmsimporter/dmsimporter-demo
In diesem Ordner finden Sie die Einstellungen für den agorum core dms importer zu diesem Beispiel.
Die Daten anhand der agorum core smart assistant-Konfiguration ablegen
In diesem Beispiel legen Sie die Daten anhand einer Einstellung im smart assistant konfigurator an.
Name des Add-ons:
dms importer - AddOn
Die aufgerufene Ablage finden Sie unter:
Ablage -> dmsimporter_kundenakte //Diese Konfiguration erstellt eine Kundenakte, in die Angebote und Rechnungen abgelegt werden.
Den Import durchführen
Dateien/dmsimporter-demo
• Das System hat diesen Ablageordner während des Imports mit der ACL ACL_dms importer versehen.
• Die dort abgelegten Dateien können nur Administratoren einsehen, da der ACL noch keine Benutzergruppen oder Benutzer zugewiesen wurden.
Tipp: Prüfen Sie die dazugehörigen JavaScripte. Sie sehen dadurch, dass Sie die Daten auf die von Ihnen benötigte Art und Weise importieren können.
In diesem Beispiel:
List-Metadaten verwendet agorum core etwa bei Rechnungsdokumenten, um darin Positionsinformationen abzuspeichern.
Einführung in die List-Metadaten von agorum core
Zuerst definieren Sie List-Metadaten.
Beispielhafter Auszug aus der metadata.yml des d3-Beispiels. Hier sehen Sie, wie die List-Metadaten für dieses Beispiel konfiguriert wurden:
... position_items: displayName: Positionsdaten list: number: displayName: Nummer type: long description: displayName: Bezeichnung type: string amount: displayName: Betrag type: double deliveryDate: displayName: Lieferdatum type: date validity: displayName: Gültigkeit type: boolean ...
Einführung der JPL-Datei mit List-Metadaten
JPL-Datei (P000119399.JPL) aus dem d3-Beispiel mit List-Metadaten. Diese sind fett hinterlegt:
zeich_nr = "P000119399" dokuart = "TSTPOS" var_nr = "1" logi_verzeichnis = "Fr" bearbeiter = "" color_code = "0" konstrukteur = "rpe" text[1] = "" text[2] = "" text[3] = "" text[4] = "" dok_dat_feld[2] = "agorum" dok_dat_feld[28] = "Positionstest mehr Datentypen" dok_dat_feld[49] = "4501226999" dok_dat_feld[50] = "16.10.2019" dok_dat_feld_62[1] = "Standort Ostfildern" dok_dat_feld_64[1] = "73760" dok_dat_feld_66[1] = "Musterfirma GmbH" dok_dat_feld_68[1] = "agorum core docform" dok_dat_feld_69[1] = "6408" dok_dat_feld_70[1] = "1" dok_dat_feld_70[2] = "2" dok_dat_feld_70[3] = "3" dok_dat_feld_71[1] = "Dies ist Position 1" dok_dat_feld_71[2] = "Dies ist Position 2" dok_dat_feld_71[3] = "Dies ist Position 3" dok_dat_feld_72[1] = "123.45" dok_dat_feld_72[2] = "234.56" dok_dat_feld_72[3] = "345.67" dok_dat_feld_73[1] = "15.10.2019" dok_dat_feld_73[2] = "16.10.2019" dok_dat_feld_73[3] = "17.10.2019" dok_dat_feld_74[1] = "true" dok_dat_feld_74[2] = "false" dok_dat_feld_74[3] = "true"
Einführung in JavaScript
Sie importierten die List-Metadaten (Positionsdaten mit einem JavaScript. Dabei formatiert das Skript die d3-Metadaten um, sodass diese dem Format der agorum core-Metadaten (dmsimporter_psoitionen) entsprechen.
Der spezifische Teil für List-Metadaten ist fett markiert:
let InputStreamReader = Packages.java.io.InputStreamReader; let BufferedReader = Packages.java.io.BufferedReader; let FileInputStream = Packages.java.io.FileInputStream; let File = Packages.java.io.File; let ac = require('ac'); /** * internal fields: * - ac_ignore: true/false - ignore this file * - ac_note: string: Add note to object with the given text * - src_doctype: has to be given, is used to identify the rule in the migrariontable */ // read in jpl an return a map with the data function read(file) { let jplData = {}; let f = new File(file); if (f.exists()) { // holen des relativen Pfades ab dem Start-Ordner der Importstruktur let path = f.getParentFile().getAbsolutePath().replace(/\\/g, '/'); let str = 'dmsimporter-demo/import-folder-d3'; path = path.substring(path.indexOf(str) + str.length + 1); jplData.parent = path; jplData.name = f.getName(); let baseName = jplData.name; if (baseName.indexOf('.') !== -1) baseName = baseName.substring(0, baseName.lastIndexOf('.')); // ACHTUNG: JPL muss immer genau so geschrieben werden wie es ist (zumindest unter Linux) let stream = new FileInputStream( new File(f.getParentFile(), baseName + '.JPL')); let br = new BufferedReader(new InputStreamReader(stream, 'UTF-8')); try { let line = null; while ((line = br.readLine()) !== null) { if (line.indexOf(' = ') !== -1) { let name = line.substring(0, line.indexOf(' = ')).toLowerCase(); let value = line.substring(line.indexOf(' = ') + 4); value = value.substring(0, value.length - 1); jplData[name] = value; } } // Test mit List-Metadaten(Positionsdaten). // Diese befinden sich in den Feldern dok_dat_feld_70 - dok_dat_feld_74 // beim Dokumententyp TSTPOS in unserem Beispiel // wobei in [] dann der jeweilige Positions-Index angegeben ist // dok_dat_feld_70[1] ist also number in der ersten Position // // Felder aus dem Beispiel: // dok_dat_feld_70 = number // dok_dat_feld_71 = description // dok_dat_feld_72 = amount // dok_dat_feld_73 = deliveryDate // dok_dat_feld_74 = validity let positions = []; if (jplData.dokuart === 'TSTPOS') { fillArrayData(jplData, 'dok_dat_feld_70', positions, 'number', 'long'); fillArrayData(jplData, 'dok_dat_feld_71', positions, 'description', 'string'); fillArrayData(jplData, 'dok_dat_feld_72', positions, 'amount', 'double'); fillArrayData(jplData, 'dok_dat_feld_73', positions, 'deliveryDate', 'date'); fillArrayData(jplData, 'dok_dat_feld_74', positions, 'validity', 'boolean'); } // am Ende das gefüllte positions-Array in die jplData einfügen // in der CSV Datei der migrationtable ist das src_metadata als positions angegeben. jplData.positions = positions; } finally { br.close(); } // Jetzt noch prüfen // ACHTUNG: NOT muss immer genau so geschrieben werden wie es ist (zumindest unter Linux) let fn = new File(new File(f.getParentFile(),baseName + '.NOT')); if (fn.exists()) { let stream = new FileInputStream(fn); let br = new BufferedReader(new InputStreamReader(stream, 'UTF-8')); try { let lines = []; let line = null; while ((line = br.readLine()) !== null) { lines = lines.concat(line); } // special case note // data.ac_note = 'A Note Object for: ' + data.name; jplData.ac_note = lines.join('\n'); } finally { br.close(); } } return jplData; } return null; } /** * Sucht in source nach allen Vorkomnissen von sourceField und füllt diese entsprechend dem Index * in das Zielarray destination mit dem Namen angegeben in destinationField. * Der ausgelesene Wert wird durch Angabe von dataType konvertiert * * source: die Quell-Map aus der die Daten ausgelesen werden * sourceField: der Name (ohne die []) aus source * destination: ein Array in das die Ziel-Daten kommen * destinationField: der Zielname in destination * dataType: Datentyp zur Konvertierung. Derzeit unterstützt * string, long, double, int, float, boolean, date * format: optional für die Konvertierung von date, Standard ist dd.MM.yyyy */ function fillArrayData(source, sourceField, destination, destinationField, dataType, format) { for (let name in source) { if (name.startsWith(sourceField + '[')) { // index aus den [] herauslesen let index = parseInt(name.substring(name.indexOf('[') + 1).substring(0, name.indexOf(']')), 10) - 1; // array erweitern if (destination.length <= index) { destination.length = index + 1; } let data = destination[index]; if (!data) { // initialisierung, wenn noch keine Daten vorhanden sind data = {}; destination[index] = data; } // Wert konvertieren und an die richtige Stelle in der map im Ziel-Array ablegen data[destinationField] = convertValue(source[name], dataType, format); // feld aus source rauslöschen delete source[name]; } } // es könnte sein, dass es leere Daten im Array gibt, da Lücken in der Datendefinition der JPL Dateien enthalten sind // diese werden nun aufgefüllt mit einer leeren map for (let i=0;i<destination.length;i++) { if (!destination[i]) { destination[i] = {}; // leere map } } } /** * Konvertierung des values in den angegebenen Datentype * * value: Der ursprüngliche Wert als string * dataType: Zieldatentyp: string, long, double, int, float, boolean, date * format: optional für die Konvertierung von date, Standard ist dd.MM.yyyy */ function convertValue(value, dataType, format) { if (!value) { // leer, nichts machen return null; } if (dataType === 'string') { return value; } if (dataType === 'int') { return ac.parseInt(value); } if (dataType === 'boolean') { return ac.parseBoolean(value); } if (dataType === 'date') { return ac.parseDate(value, format || 'dd.MM.yyyy'); } if (dataType === 'long') { return ac.parseLong(value); } if (dataType === 'double') { return ac.parseDouble(value); } if (dataType === 'float') { return ac.parseFloat(value); } throw new Error('datatype ' + dataType + ' not supported'); } function update(object, rule) { // In diesem Beispiel wird hier nichts gemacht } module.exports = { read: read, update: update };
Einführung in Object-positions
Dieses Skript zeigt, wie Sie List-Metadaten aufbereiten müssen, sodass das System diese direkt dem List-Metadatum aus agorum core zuordnen kann.
positions = [ { "number": 1, "description": "Dies ist Position 1", "amount": 12345, "deliveryDate": "2019-10-15T00:00:00.000Z", "validity": true }, { "number": 2, "description": "Dies ist Position 2", "amount": 23456, "deliveryDate": "2019-10-16T00:00:00.000Z", "validity": false }, { "number": 3, "description": "Dies ist Position 3", "amount": 34567, "deliveryDate": "2019-10-17T00:00:00.000Z", "validity": true } ]
Auszug aus der CSV-Regeldatei
In dem d3-Beispiel ordnen Sie jetzt in der CSV-Regeldatei die Spalten zur Kopfzeile zu (Auszug speziell für die List-Metadaten):
csv-Header-Name | Eintrag | Beschreibung |
---|---|---|
src_metadata | positions | List-Metadaten, aufbereitet über das JavaScript. |
ac_metadata | dmsimporter_position_items | List-Metadaten in agorum core, denen die importierten Metadaten zugeordnet werden. |
ac_type | list | Metadaten-Type in agorum core |
ac_save_on_doc | true | Diese Metadaten sollen dem Object zugeordnet werden. |