Durchsuchbare Dokumentation aufrufen

Zurück zur Dokumentationsübersicht

agorum core dms importer konfigurieren

Hinweis: Diese Dokumentation bezieht sich auf die aktuellste Version des Plug-ins. Aktualisieren Sie das hier beschriebene Plug-in, um die Dokumentation verwenden zu können.

Mit diesem Plug-in importieren Sie zur Verfügung gestellte Exportdaten aus anderen Systemen nach agorum core.

Zu importierende Daten


Der Import der Daten läuft innerhalb des agorum core-Servers ab. Die Dateien / Daten müssen in dem Installationspfad von agorum core liegen, indem Sie diese dorthin kopieren oder mounten.

Dabei kann es sich um Dateien wie Word-, Excel- oder PDF-Dateien handeln, aber auch um Adressdaten oder andere Informationen.

Das Format der Daten ist abhängig von der Ursprungssoftware.

Den Datenimport planen


Planen Sie den Datenimport, damit Ihre Daten korrekt und problemlos in agorum core abgelegt werden können.


Um welche Daten handelt es sich?

​​​​​​Welche Daten importieren Sie? Handelt es sich etwa um Bilder, PDFs oder Word-Dokumente? Oder möchten Sie Adressdaten oder anderweitige Informationen in agorum core importieren?


Um welche Dokumententypen handelt es sich?

Handelt es sich bei den Daten, die Sie importieren möchten, um Rechnungen, Lieferscheine, Zeugnisse oder Verträge?


Wo sollen die Daten abgelegt werden?

In welcher Ordnerstruktur sollen die Daten abgelegt werden? Wird ein Objekttyp gebraucht, der etwa Adressdaten als Adressen darstellt? Oder sollen Dokumente in bestimmte Ordner abgelegt werden?


Existieren Metadaten?

Besitzen Ihre Dokumente Metadateninformationen? Welches Format haben diese und welche möchten Sie auf die Dokumente setzen? Müssen dazu neue Metadaten in agorum core definiert oder können bereits vorhandene verwendet werden? Haben die Dokumententypen verschiedene Metadaten? Etwa liegen nur bei Rechnungen die Rechnungsnummer, das Rechnungsdatum und der Rechnungsbetrag vor, während bei Verträgen ganz andere Metadaten greifen.


Wie können Ihre Benutzer die Daten finden?

Benutzer haben über die Suche einen schnellen Zugriff auf Dokumente und Informationen. Stellen Sie bei einem Import neuer Daten sicher, dass ein neuer Filter im System vorhanden ist oder bereits vorhandene auch die neuen Dokumente finden.


Welches Berechtigungsmodel benötigen Sie?

Falls Sie eine neue Ordnerstruktur erstellen, benötigen Sie neue ACLs. Möchten Sie die zu importierenden Dokumente mit Flags versehen, damit das System diese Dokumente etwa auf revisionssicher oder unlöschbar setzt?

Je besser und detaillierter Ihre Planung ist, desto weniger Korrekturen müssen Sie vornehmen. Änderungen können Sie als Administrator / Entwickler jederzeit durchführen, allerdings erfordert dies nachträglichen Aufwand.

Regeldefinitionen in einer CSV-Datei


Durch eine Regeldatei steuern Sie den Import Ihrer Daten nach agorum core und legen darin etwa fest:

Grober Aufbau einer Regeldatei

Sie haben sich Ihre Dokumente angeschaut und wissen, welche Dokumententypen Sie nach agorum core importieren möchten. Diese Informationen bilden Sie in der CSV-Regeldatei ab.


Beispiel für den Dokumententyp „Rechnung“

Beispiel: Grober Aufbau einer Regeldatei


Auszug der enthaltenen Spalten

Spalte Beschreibung
name Definiert die Bezeichnung für den Dokumententypen.
scr_doctype Definiert eine Abkürzung für Source Doctype, d. h. wie die Ursprungssoftware den Dokumententypen nennt.
scr_metadata Definiert die Metadaten des Dokuments.
scr_format Definiert das Format des Metadatums.
ac_metadata Definiert, welches agorum core-Metadatum das System auf das Source-Metadatum setzt.
ac_type Definiert den Datentyp des Metadatums.
ac_staticvalue Definiert einen festen Wert für ac_metadata.

Haben Sie optional ein src_metadata definiert und liegt dahinter kein Wert, verwendet das System ac_staticvalue als Standard.
ac_save_on_doc true
Das System setzt ac_metadata auf das Dokument.

false
Das System setzt ac_metadata NICHT auf das Dokument.
ac_destfolder_start Definiert den Ablageordner des Dokuments.

Schreiben Sie den Pfad nicht aus, sondern bauen Sie ihn dynamisch auf:
<Lieferant>/Rechnungen/<Rechnungsdatum:Jahr>/<Rechnungsdatum:Monat>
ac_systemflags Definiert Systemflags, die das System auf das Dokument setzt.
ac_revisonyears Definiert in Jahren, wie lange das System ein Dokument auf revisionssicher setzt.

Regeln innerhalb der Regeldatei

Beispiele für Regeldateien

  1. Öffnen Sie links in der Seitenleiste Explorer.
  2. Öffnen Sie den Pfad:
    Eigene Dateien/Administration/customers/dmsimporter/samples


Beispiel 1

Eigene Dateien/Administration/customers/dmsimporter/samples/migration-table-test-1/undefined>migrationtable.csv​​​​​​


Beispiel 2

Eigene Dateien/Administration/customers/dmsimporter/samples/migration-table-test-fs/migrationtable-fs.csv​​​​​​


Dokumentinhalt

name;description;src_doctype;ac_condition;src_metadata;src_format;ac_metadata;ac_type;ac_staticvalue;ac_save_on_doc;ac_function;ac_destfolder_start;ac_destfolder;ac_asa_record;ac_name;ac_systemflags;ac_ac_revisionyears
Datei;;file;;name;;dmsimporter_name;string;;true;;FS/${dmsimporter_parent:f};Dateien/${dmsimporter_lastmodified:yyyy}/${dmsimporter_lastmodified:MM};dmsimporter_fs;${originalName}.${extension};0;
;;;;lastmodified;dd.MM.yyyy;dmsimporter_lastmodified;date;;true;;;;;;;
;;;;;;dmsimporter_doctype;string;File;true;;;;;;;
;;;;size;;dmsimporter_size;long;;true;;;;;;;
;;;;parent;;dmsimporter_parent;string;;;;;;;;;
;;;;parent;;dmsimporter_dummy;string;;;;;;;;;

Kopfzeile der CSV-Regeldatei

Spaltenname Beschreibung
name Definiert pro Dokumententyp einen beliebigen Namen.
description Definiert beliebige Einzelheiten für diesen Dokumententypen.
src_doctype Definiert den Wert der Ursprungssoftware, der beschreibt, um welchen Dokumententyp es sich handelt.
  • Sobald in dieser Spalte ein Eintrag vorliegt, weiß das System, dass es sich um eine neue Regel für einen neuen Dokumententyp handelt.
  • Sie können in einer CSV-Datei Regeln für mehrere Dokumententypen festlegen.
ac_condition Definiert Unterkategorien pro Dokumententyp.

Beispiel
Sie haben ein Dokument vom Typ Angebot. Dabei unterscheidet Ihre Firma zwischen Angebotstyp1 und Angebotstyp2. Diese Information hält das System im Metadatum dmsimporter_offertype pro Dokument fest.

Sie können:
  • mit der Spalte ac_condition abhängig von einem weiteren Quell-Metadatum eine eigene Regel definieren, wenn mehrere Ablageregeln für ein und denselben src_doctype gelten
  • anhand der Spalte ac_condition diese beiden unterschiedlichen Angebots-Dokumententypen voneinander unterscheiden

Hinweis: Die Metadaten kommen als Return-Wert aus der read-Methode ihres Skripts.

src_metadata Definiert pro Dokument eigene Metadaten, sofern die Ursprungssoftware diese angehängt hat.
  • Listen Sie hier die Metadaten auf, die Sie nach agorum core importieren möchten.
  • Die Metadaten kommen als Return-Wert aus der read-Methode ihres Skripts.
src_format Definiert das Quell-Metadatum aus der Spalte src_metadata.

Tragen Sie JavaScript-Formate ein, etwa dd.MM.yyyy.
ac_metadata Definiert das Ziel-Metadatum von agorum core, auf welches das System das Quell-/Ursprungsmetadatum mappt.

Legen Sie die genutzten Metadaten vorab über die Datei metadata.yml in agorum core an.
ac_type Definiert den Datentyp des Metadatums aus ac_metadata.

Sie können diese Typen angeben:

  • string
  • long
  • boolean
  • date
  • double

Wählen Sie denselben Wert, den Sie in der Datei metadata.yml definiert haben. 

ac_staticvalue Diese Spalte können Sie verwenden, um:
  • einem Metadatum einen festen Wert zuzuweisen
  • einen übergebenen Wert auf einen anderen Wert zu mappen und auszutauschen

Diese Spalte verwendet das System als Standard, wenn Sie ein src_metadata angegeben haben, aber dafür kein Wert vorhanden ist (siehe Beispiele).

ac_save_on_doc true
Das System speichert das Metadatum auf das Dokument.

false (Standard)
Das System speichert das Metadatum NICHT auf das Dokument.
  • Der Standard greift auch dann, wenn Sie keinen Wert in der Spalte eingetragen haben.
  • Egal, ob Sie das Metadatum auf dem Dokument hinterlegen oder nicht, es steht im JavaScript für andere Aktionen zur Verfügung.
ac_function Definiert zwei Varianten, damit das System weiß, was zu tun ist, wenn Sie ein Metadatum aus agorum core mehrmals verwenden und setzen.

Priorisieren
Sie teilen dem System eine Priorität mit, sollten mehrere auf ein und dasselbe Metadatum zugreifen.
  • Sie definieren hiermit, welches Metadatum das System bei einer Mehrfachauswahl setzt.
  • Tragen Sie als Wert in dieser Spalte prio 1 oder prio 2 ein.

Mergen
Tragen Sie als Wert in dieser Spalte merge ein, nimmt das System alle dazugehörigen Quellmetadaten und fügt diese in das Ziel-Metadatum ein.

Reihenfolge

  • von oben nach unten gelesen
  • von links nach rechts eingetragen
ac_destfolder_start Definiert den Ordner, der ab dem agorum core base folder aus den Importeinstellungen stammt.

Das System verwendet diesen Parameter zusätzlich für die Überprüfung der Ausführung des Parameters ac_asa_record.
ac_destfolder Basiert auf dem ac_destfolder_start und definiert den darauffolgenden Pfad.
  • Beginnen Sie den Eintrag mit /, fängt der Ordner bei agorum core base folder an.
  • Beginnen Sie den Eintrag ohne /, fängt der Ordner bei ac_destfolder_start an.
  • Verwenden Sie |, können Sie Dokumente in verschiedenen Ablageordnern verlinken.
ac_asa_record Spricht ein Template im undefined>agorum core smart assistant konfigurator an.

Ist der angegebene Ordner im Parameter ac_destfolder_start nicht vorhanden, führt das System das angegebene Template nicht aus.
ac_name Passt den Namen Ihrer Dokumente an.
  • Verwenden Sie als Platzhalter Metadaten, deren Werte Sie am Ende passend pro Dokument eintragen. Dadurch vereinheitlichen Sie Ihre Ablagestruktur.
  • Ihr Eintrag basiert auf der JavaScript-Bibliothek common/templates.
Beispiel
Re_${dmsimporter_invoicenumber}_${originalName}.${extension}
ac_systemflags Definiert die zu setzenden Systemflags.

Beispiel
28
ac_ac_revisionyears Definiert die Anzahl an Jahren, die ein Dokument im System verbleiben muss (siehe Revisionssicherheit und GoBD im agorum core basic archive).

Das System:
  • setzt ein ExpirationDate und löscht das Dokument nach Ablauf der Frist
  • addiert die Anzahl an Jahren immer auf die Importzeit hinzu
     
  • Mit einem JavaScript sind Sie bei diesem Eintrag flexibler und können das ExpirationDate unabhängig von der Importzeit definieren.
  • Teilen Sie den Import auf, wenn Sie etwa Rechnungen aus 2000 und 2010 importieren, um sicherzustellen, dass diese Rechnung ein anderes ExpirationDate erhält.

ac_condition

Zeile src_doctype ac_condition
1 offer dmsimporter_offertype=Angebotstyp1
2 ..  
3 offer dmsimporter_offertype=Angebotstyp2
4 ..  

ac_staticvalue


Einen festen Wert zuweisen

Tragen Sie in dieser Spalte einen Wert ein, den das System dem Metadatum aus der Spalte ac_metadata fest zuweist.

Beispiel
Bei der Regel offer handelt es sich immer um ein Angebot. Sie weisen dem Metadatum dmsimporter_doctype deshalb immer den Wert Angebot zu. Tragen Sie dazu in dieser Spalte Angebot ein.


Einen Wert mappen (mapping csv)

Mit dieser Variante stellen Sie sicher, dass das System einen übergebenen Wert anhand einer Mapping-Tabelle anpasst.

Tragen Sie dazu in die Spalte ac_staticvalue diesen Wert ein:

${match:<Basisname der Mapping-Datei>:<Name des zu mappenden Metadatums>}
Parameter Beschreibung
${match Legt den Beginn fest und deutet dem System an, dass es eine Definition einleitet.
: Dient als Trenner und verweist auf einen neuen Wert in der Definition.
<Basisname der Mapping-Datei> Definiert den Dateinamen der Mapping-Datei.
  • Die Mapping-Datei müssen Sie in agorum core anlegen.
  • Geben Sie den Namen der Mapping-Datei ohne die Dateiendung .csv an.
  • Wo das System die Mapping-Datei genau findet, geben Sie in der grafischen Oberfläche an.

Beispiel eines Eintrags
dmsimporter-demo-mapping-customernumber

Die Datei selbst hat den Namen dmsimporter-demo-mapping-customernumber.csv.
<Name des zu mappenden Metadatums> Definiert den Namen des Metadatums, dessen Wert das System durch die Mapping-Tabelle ändert.
  • Die Mapping-Tabelle besteht aus zwei Spalten (value und mapping).
  • Findet das System den Wert des Metadatums in value, setzt es den unter mapping gefundenen Eintrag als Metadatumswert.
  • Findet das System den zu ersetzenden Wert NICHT in value, gibt es den mapping-Wert von default zurück.
} Legt das Ende fest und deutet dem System an, dass die Definition abgeschlossen ist.


Beispiel

Eintrag in der Spalte ac_staticvalue:

${match:dmsimporter-demo-mapping-customernumber:dmsimporter_customernumber}


Aufbau der Mapping-csv:

value;mapping
default;
K999;Kunde 999
K0002;Kunde 02
K0003;Kunde 03
Spalte Beschreibung
value Definiert Werte, die das Metadatum dmsimporter_customernumber vor dem Mapping haben kann.
mapping Definiert Werte, die das Metadatum dmsimporter_customernumber nach dem Mapping annimmt.

Findet das System den Wert von dmsimporter_customernumber in der Spalte value NICHT, mappt es den Wert von default. In diesem Fall ist der Wert leer.


Default-Wert

Sie definieren in src_metadata ein Metadatum für die Quelle und in ac_staticvalue einen festgelegten Wert, den das System verwenden soll, wenn der ausgelesene Werte später beim Import für das definierte src_metadata leer ist.

Hinweise

  • Die Mapping-CSV-Datei muss mindestens einen Default-Wert aufweisen.

  • Das System setzt das Metadatum, in diesem Beispiel dmsimporter_customernumber, nicht auf das importierte Objekt, wenn default nicht existiert.

Den Import per JavaScript steuern


Die Dateien liegen im Installationspfad von agorum core, und Sie haben im Konfigurationsprojekt dmsimporter eine Regeldatei angelegt. Noch existieren diese beiden Einheiten unabhängig voneinander. Auch das System weiß noch nicht, wie diese zusammengehören.

Sie erstellen im nächsten Schritt ein JavaScript, das den Import steuert. Das JavaScript besitzt die Funktionen:

read

Verarbeitet nacheinander jedes Dokument in dem zu importierenden Pfad.


Beispiel


Anschreiben.doc
Name der zu importierenden Datei.


Anschreiben.doc.json
In dieser Datei stehen die dazugehörigen Metadaten.

Dieses Beispiel zeigt, wie die Metadaten Ihrer Ursprungsdatei aussehen müssen, damit agorum core diese bearbeiten und annehmen kann:

data = {
   name: 'Anschreiben.doc'
   filesize: 123456
};

return data;

Diese Formatierung können Sie per JavaScript in der Funktion read verwenden.

Sollte Ihnen in einer einzigen Datei alle Metadaten für alle zu importierenden Dokumente vorliegen, müssen Sie dieses JavaScript anpassen und sicherstellen, dass Metadaten dem passenden Dokument zugeordnet werden.

Für das Return-Object existieren einige Metadaten, die von der Schreibweise her fest definiert sind.

Metadatum Beschreibung
ac_ignore true
Ignoriert diese Datei.

false
Berücksichtigt diese Datei.
ac_note Füge eine Notiz als String an das Objekt.

Der Wert stellt den Notizinhalt dar.
src_doctype Definiert ein Metadatum als String.

Das Metadatum:
  • muss vorhanden sein
  • wird in der Regeldatei beschrieben
ac_version Definiert optional einen Integer-Wert (1-n) zur Sortierung der Versionen.
ac_versionlabel Definiert einen Wert (als String) zur Anzeige der Versionsnummer.
ac_versioncomment Definiert einen Wert (als String) zur Angabe eines Versionskommentars.


Beispiel

 data = {
   name: 'Anschreiben.doc',
   size: 123456,

   //Fest definierte Metadaten
   src_doctype: 'file',     // ist ein Pflichtfeld, 
                            // durch diese Info greifen die Ablageregeln aus der Regeldatei
    ac_note: 'Enthält Text der als Notiz an das agorum-Object angehängt wird',
    ac_ignore: false,       // false: Datei wird nach agorum core importiert
                            // true: Datei wird NICHT nach agorum core importiert
                            // Dies können Sie etwa für die Metadaten-Datei <Filename>.json nutzen,
                            // sollten Sie keinen anderen Weg im JavaScript verwendet haben

    // die folgenden Werte sind nur im Rahmen versionierter Dateien notwendig
    ac_version: 1,          // optionale Versionsnummer für Sortierung
    ac_versionlabel: 'V1',  // optionale anzeigbare Versionsnummer
    ac_versioncomment: 'Dies ist Version 1'
                            // optionales Versionskommentar
  };


Beispiel für die Funktion „read“

function read(file) {
  data = {};
  // ..
  // ..
  return data;
}

Hinweise:

  • Die zu importierenden Dateien bleiben in dem Installationspfad bestehen.

  • Das System kopiert sie nach agorum core und schneidet sie nicht aus.

  • Sobald der Import erfolgreich verlaufen ist, können Sie diese Dateien wieder entfernen oder die Mount-Verbindung auflösen.

update

Nimmt nachträgliche Anpassungen vor oder aktiviert Aktionen wie das Starten eines Workflows, nachdem die Dokumente mitsamt Ihren Metadaten durch die Funktion read nach agorum core importiert wurden.

Das System ruft die Funktion update für jedes importierte Objekt auf.

Die Funktion besitzt die Übergabeparameter:


object
Stellt das importierte agorum core-Objekt dar. Die komplette agorum core JavaScript API steht zur Verfügung.

rule
Stellt die Informationen aus der Regeldatei dar, die das System als JSON-Struktur weiterreicht.

Die Datei enthält die Werte der gesetzten Metadaten und den Originalnamen der Datei (Metadatum originalName) sowie die Dateiextension (Metadatum extension).


Beispiel zum rule-Object

{
  "name": "offer",
  "condition": "dmsimporter_offertype=Angebotstyp2",
  "description": "Angebot Variante 2",
  "description2": "Angebot vom Typ 2",
  "metadata": [{
    "srcMetadata": "src_offertype",
    "acMetadata": "dmsimporter_offertype",
    "type": "string",
    "static": "",
    "acFunction": "",
    "format": "",
    "saveOnDoc": ""
  }, {
    "srcMetadata": "src_offernumber",
    "acMetadata": "dmsimporter_offernumber",
    "type": "string",
    "static": "",
    "acFunction": "",
    "format": "",
    "saveOnDoc": "true"
  }, {
    "srcMetadata": "src_offerdate_1",
    "acMetadata": "dmsimporter_offerdate",
    "type": "date",
    "static": "",
    "acFunction": "prio1",
    "format": "dd.MM.yyyy",
    "saveOnDoc": "true"
  }, {
    "srcMetadata": "src_offerdate_2",
    "acMetadata": "dmsimporter_offerdate",
    "type": "date",
    "static": "",
    "acFunction": "prio2",
    "format": "dd.MM.yyyy",
    "saveOnDoc": "true"
  }, {
    "srcMetadata": "",
    "acMetadata": "dmsimporter_doctype",
    "type": "string",
    "static": "Angebot",
    "acFunction": "",
    "format": "",
    "saveOnDoc": "true"
  }, {
    "srcMetadata": "src_customernumber",
    "acMetadata": "dmsimporter_customernumber",
    "type": "string",
    "static": "",
    "acFunction": "",
    "format": "",
    "saveOnDoc": ""
  }, {
    "srcMetadata": "src_customername",
    "acMetadata": "dmsimporter_customername",
    "type": "string",
    "static": "",
    "acFunction": "",
    "format": "",
    "saveOnDoc": ""
  }
              ],
  "destFolderStart": "Kunden/${dmsimporter_customername:f}",
  "destFolder": ["Angebote/${dmsimporter_offerdate:yyyy}/${dmsimporter_offerdate:MM}", "/Alle Angebote/${dmsimporter_offerdate:yyyy}/${dmsimporter_offerdate:MM}"],
  "asaRecord": "dmsimporter_kundenakte",
  "fileName": "An_${dmsimporter_offernumber}.${extension}",
  "sysFlags": "",
  "fileNameSet": "An_666777.txt",
  "destFolderStartSet": "Kunden/Testkunde 456",
  "destFolderSet": ["Angebote/2019/09", "/Alle Angebote/2019/09"],
  "values": {
    "src": {
      "src_offertype": {
        "value": "Angebotstyp2",
        "type": "string",
        "srcMetadata": "src_offertype",
        "acMetadata": "dmsimporter_offertype",
        "use": false
      },
      "src_offernumber": {
        "value": "666777",
        "type": "string",
        "srcMetadata": "src_offernumber",
        "acMetadata": "dmsimporter_offernumber",
        "use": "true"
      },
      "src_offerdate_1": {
        "value": "2019-09-18T10:00:00.000Z",
        "type": "date",
        "srcMetadata": "src_offerdate_1",
        "acMetadata": "dmsimporter_offerdate",
        "use": "true"
      },
      "src_customernumber": {
        "value": "K456",
        "type": "string",
        "srcMetadata": "src_customernumber",
        "acMetadata": "dmsimporter_customernumber",
        "use": false
      },
      "src_customername": {
        "value": "Testkunde 456",
        "type": "string",
        "srcMetadata": "src_customername",
        "acMetadata": "dmsimporter_customername",
        "use": false
      }
    },
    "agorum": {
      "dmsimporter_offertype": {
        "value": "Angebotstyp2",
        "type": "string",
        "srcMetadata": "src_offertype",
        "acMetadata": "dmsimporter_offertype",
        "use": false
      },
      "dmsimporter_offernumber": {
        "value": "666777",
        "type": "string",
        "srcMetadata": "src_offernumber",
        "acMetadata": "dmsimporter_offernumber",
        "use": "true"
      },
      "dmsimporter_offerdate": {
        "value": "2019-09-18T10:00:00.000Z",
        "type": "date",
        "srcMetadata": "src_offerdate_1",
        "acMetadata": "dmsimporter_offerdate",
        "use": "true"
      },
      "dmsimporter_doctype": {
        "value": "Angebot",
        "type": "string",
        "acMetadata": "dmsimporter_doctype",
        "use": "true"
      },
      "dmsimporter_customernumber": {
        "value": "K456",
        "type": "string",
        "srcMetadata": "src_customernumber",
        "acMetadata": "dmsimporter_customernumber",
        "use": false
      },
      "dmsimporter_customername": {
        "value": "Testkunde 456",
        "type": "string",
        "srcMetadata": "src_customername",
        "acMetadata": "dmsimporter_customername",
        "use": false
      },
      "extension": {
        "value": "txt",
        "type": "string",
        "acMetadata": "extension",
        "use": false
      },
      "originalName": {
        "value": "test3",
        "type": "string",
        "acMetadata": "originalName",
        "use": false
      }
    }
  }
}

Um in der Funktion update auf eines der Metadaten zugreifen zu können, sprechen Sie die verschiedenen Kategorien an. Sie greifen etwa auf das Metadatum dmsimporter_customernumber wie folgt zu:

rule.values.agorum.dmsimporter_customernumber

In der Funktion update können Sie jetzt weitere Anpassungen am importierten Objekt vornehmen. Sie können damit Prozesse starten oder weitere Metadaten setzen.


Beispiel der Funktion „update“

function update(object, rule) {
  // ..
}

Zum Schluss müssen Sie die Funktionen read und update freigeben, damit diese aufrufbar sind:

module.exports = {
  read: read,
  update: update
};


Beispiel eines JavaScripts mit den Funktionen „read“ und „update“ ohne zusätzliche Datei

let InputStreamReader = Packages.java.io.InputStreamReader;
let File = Packages.java.io.File;
let BufferedReader = Packages.java.io.BufferedReader;
let FileInputStream = Packages.java.io.FileInputStream;
let sdf = new Packages.java.text.SimpleDateFormat('dd.MM.yyyy');

// Dieses Script wird für den Export einmal geladen.
// Sie können hier global z.B. auch Globale Daten schon mal einlesen,
// die Sie dann in den beiden Methoden read und update verwenden können

function read(file) {
  
  // Hier eine Beispielimplementierung

  let data = {};
  let f = new File(file);
  
  if (f.exists()) {
    let name = f.getName();
    if (name.indexOf('.') !== -1) name = name.substring(0, name.lastIndexOf('.'));
    data.name = name;
    data.lastmodified = sdf.format(f.lastModified());
    data.size = f.length();
    data.parent = f.getParentFile().getName();
    
    data.src_doctype = 'file';
    
    // special case note
    // data.ac_note = 'A Note Object for: ' + data.name;
    
    return data;
  }
  
  return null;
}

function update(object, rule) {
  
}

module.exports = {
  read: read,
  update: update
};


Beispiel eines Importer-Skripts, bei dem die Infos in einer mitgelieferten JSON-Datei abgelegt sind

let InputStreamReader = Packages.java.io.InputStreamReader;
let File = Packages.java.io.File;
let BufferedReader = Packages.java.io.BufferedReader;
let FileInputStream = Packages.java.io.FileInputStream;

/**
 * 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 metadata file, contains json
function read(file) {
  let data = {};
  let f = new File(file + '.json');
  if (f.exists()) {
    let stream = new FileInputStream(file + '.json');

    let br = new BufferedReader(new InputStreamReader(stream, 'UTF-8'));
    try {
      let lines = [];

      let line = null;
      while ((line = br.readLine()) !== null) {
        lines = lines.concat(line);
      }
      
      let data = JSON.parse(lines.join('\n'));
      
      data.dmsimporter_createdate = new Date('1978/09/17 12:00:00');
      return data;
    }
    finally {
      br.close();
    }
  }
  else if (new File(file).getName().toLowerCase().endsWith('.not')) {
    return {
      ac_ignore: true
    };
  }
  
  return null;
}

function update(object, rule) {
  // e.g.
  // object.createDate = rule.values.agorum.ac_createdate.value;
  if (rule.values.agorum.dmsimporter_createdate) {
    // throw 'date: ' + JSON.stringify(rule.values.agorum.dmsimporter_createdate);
    object.createDate = rule.values.agorum.dmsimporter_createdate.value;
  }
}

module.exports = {
  read: read,
  update: update
};


Beispiel-Skript für d3

let InputStreamReader = Packages.java.io.InputStreamReader;
let BufferedReader = Packages.java.io.BufferedReader;
let FileInputStream = Packages.java.io.FileInputStream;

/**
 * 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 stream = new FileInputStream(file + '.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;
      }
    }
  }
  finally {
    br.close();
  }
  
  return jplData;
}

module.exports = {
  read: read
};

Mehrere Versionen einer Datei importieren


Sie können eine einzelne Datei in verschiedenen Versionen importieren und diese Versionierung in agorum core nachbilden.


Beispiel

Unterhalb dieses Verzeichnisses liegen die einzelnen Versionen der Datei.

Sie können:

Für jede einzelne Versionsdatei muss das Import-JavaScript diese Werte zurückgeben:

Wert Beschreibung Pflicht
ac_version Definiert eine Ganzzahl, beginnend bei 1.
  • Das System sortiert die einzelnen Dateien nach dieser Nummer und importiert sie in dieser Reihenfolge.
  • Die Version mit der höchsten Nummer entspricht der aktuellen Version der Datei.
ja
ac_versionlabel Definiert eine Zeichenkette für die lesbare Versionsnummer, die in agorum core in der Objektinfo steht. nein
ac_versioncomment Definiert eine Zeichenkette als Versionskommentar (intern: description).

Sie können jedes andere Metadatum verwenden, da das System alle Metadaten versioniert.
nein


Ausschnitt aus dem Beispiel-JavaScript zur Verdeutlichung der Pfad-Operation

// ....
// Achtung: Versionsdateien sind in einem Unterordner, deswegen muss der letzte Ordner ignoriert werden
if (data.ac_version) {
  path = path.substring(0, path.lastIndexOf('/'));
}
// ....

Ein Beispiel für einen Import finden Sie unter Die Filestruktur mit Metadaten aus den Dateinamen importieren.

Die Konfiguration über das User-Interface (UI) anlegen


Für die Konfiguration der Grundeinstellungen des Imports steht ein User-Interface (UI) zur Verfügung.

  1. Öffnen Sie links in der Seitenleiste Explorer.
  2. Klicken Sie mit der rechten Maustaste auf ein Objekt.
  3. Wählen Sie im Kontextmenü dms importer > UI starten.

    Ergebnis: Eine Oberfläche öffnet sich, in der Sie:

    • eine Import-Datei erstellen
    • alle benötigen Daten eintragen, die das System zum Import von Dateien benötigt
Oberfläche für die Konfiguration

Schaltflächen in der Kopfzeile

Schaltfläche Bedeutung
New
  • Setzt die Einstellungen zurück.
  • Entfernt alle Eingaben.
  • Setzt die Oberfläche auf Neu zurück.
Load Lädt eine bereits gespeicherte Import-Definition, sodass Sie diese weiterbearbeiten oder ausführen können.
Save Speichert Ihre aktuelle Eingabe.
  • Füllen Sie alle Pflichtfelder (erkenntlich mit einem *) aus.
  • Sie können beliebig viele Import-Konfigurationen anlegen und speichern.

Einstellungen

Einstellung Bedeutung Pflicht
Config name Definiert den Namen der Konfiguration. ja
Max amount to import Begrenzt die Anzahl der zu importierenden Daten, etwa für Tests. nein
Simulated Aktiviert den Simulationsmodus für Importe.
  • Das System importiert keine Dateien, sondern führt lediglich die Regeln sowie das JavaScript aus.
  • Prüfen Sie die Konfiguration zuerst mithilfe der Simulation.
nein
Skip Errors Aktiviert
Ignoriert beim Import auftretende Fehler und fährt mit dem Import fort.

Deaktivieren Sie diese Einstellung und finden und beheben Sie die Fehler.

Deaktiviert
Der Import stoppt bei Fehlern.
nein
Output folder Definiert einen lokalen Ordner auf dem Server, auf dem agorum core installiert ist, und schreibt die Protokolle des Imports in diesen Ordner. ja
Import folder Definiert das Verzeichnis / die Verzeichnisse, in denen sich die zu importierenden Daten befinden.

Geben Sie mehrere Verzeichnisse an, arbeitet das System diese der Reihe nach ab.
ja
agorum core base folder Definiert einen Startordner innerhalb der agorum core-Struktur.

Dieser Ordner stellt für alle Pfadangaben die Basis dar.
ja
Set revision flags Aktiviert
Berücksichtigt Flags in der Regeldatei.

Deaktiviert
Ignoriert Flags in der Regeldatei.
nein
Migration csv Definiert den Pfad zur Import-Konfigurationsdatei.

Die Import-Konfigurationsdatei muss in agorum core gespeichert sein.
ja
Path to mapping csvs Definiert den Ordner, in dem Mapping-CSVs vorhanden sind.

Sie können beliebig viele Mapping-Dateien unter diesem Pfad zur Verfügung stellen.
nein
Import Script (JS) Definiert das JavaScript mit den Funktionen read und update.

Die Handler fs, json und jpl (d3-Exportdateien) existieren.
ja
Name of src_doctype field Definiert eine andere Ausdrucksweise der Ursprungssoftware für das Feld src_doctype, um die Dokumententypen voneinander zu unterscheiden.

Das System weiß, dass es die Werte für den src_doctype in diesem Metadatum findet.
nein
Extension metadata file Definiert die Endung der Metadaten-Dateien.
  • Zu jeder importierten Datei muss eine Metadaten-Datei mit dieser Endung existieren.
  • Der Import stoppt, und das System zeigt eine Fehlermeldung an, wenn zu einer importierten Datei keine Metadaten-Datei mit dieser Endung existiert.
  • Sie können mithilfe des Parameters Skip Errors Fehler ignorieren und den Import fortführen.
nein
Extensions to ignore Definiert die Dateiendungen, die das System während des Imports überspringt.

Beispiel
Beim Import existiert zu jeder Datei, die Sie importieren möchten, eine Steuerdatei mit der Dateiendung json. Tragen Sie hier ein, dass das System alle Dateien mit der Dateiendung json nicht für den Import berücksichtigt. Diese müssen Sie in Ihrem Skript berücksichtigen.
nein

Bereich „Status“

In diesem Bereich starten Sie den Import. Das System gibt Statusinformationen aus, während es den Import ausführt.

Schaltfläche Beschreibung
Run Startet und protokolliert den Import.
Stop Stoppt den Import.
Delete imported Löscht den Import aus agorum core.
  • Verwenden Sie diese Schaltfläche, wenn Sie den Import vorab testen möchten und Sie feststellen, dass die Einstellungen nicht ideal sind.
  • Die Grundstruktur müssen Sie nochmals anlegen.
  • Legen Sie Ordner per Skript automatisch an, anstatt sie manuell anzulegen.

Hinweise:

  • Das System löscht das dazugehörige Protokoll nicht, damit Sie Fehlermeldungen erneut prüfen können.

  • Das System benennt den von Ihnen angegebenen Output folder um und fügt dessen Ordner-ID an den Dateinamen ein.

  • Sie können diese Protokolle manuell löschen, wenn Sie sie nicht mehr benötigen.


Angezeigte Werte

Wert Beschreibung
Start Zeigt Datum / Uhrzeit des gestarteten Imports.
Step Scanning
Das System sammelt alle zu importierenden Daten und erstellt eine Liste, die es im 2. Schritt abarbeitet.

Importing
Das System importiert die eingescannten Daten.
Duration Zeigt die Dauer des Imports an.
Amount Zeigt den Status der importieren Daten.

Sie sehen anhand der Werte Ist / Soll, wie viele Dokumente das System bereits importiert hat.

Beispiel
10/100
Skipped Zeigt die übersprungenen Objekte.

Das System überspringt Daten, die es nicht einlesen konnte (weil schon importiert, per JavaScript als zu überspringend markiert oder weil die Dokumente fehlerhaft sind).
Errors Zeigt, wie viele Fehlermeldungen während des Imports aufgetreten sind.
Current Zeigt in path das aktuell importierte Objekt mit dessen agorum core-Pfad.

Bereich „Log“

Protokoll des Imports


Das System protokolliert den kompletten Import und legt das Protokoll in den Ordner Output folder ab.


Aufbau eines Protokolls

<Pfad des Output folder>/done.txt

<Pfad des Output folder>/error.txt (wird nur erstellt, wenn Fehler vorhanden sind)

<Pfad des Output folder>/audit/audit_dd_MM_yyyy-HH_mm_ss.csv

done.txt

Enthält jede Datei, die das System erfolgreich importiert hat.

Beispiel

/opt/agorum/agorumcore/dmsimporter-demo/import-folder/folder 2/folder 3/folder 4/test4.txt
/opt/agorum/agorumcore/dmsimporter-demo/import-folder/folder 2/test2.txt
/opt/agorum/agorumcore/dmsimporter-demo/import-folder/folder 5/test5.txt
/opt/agorum/agorumcore/dmsimporter-demo/import-folder/test.txt

Anhand dieser Einträge weiß das System bei einer Importunterbrechung, welche Dokumente es bereits importiert hat, und überspringt diese.

error.txt

Enthält Fehlermeldungen, die während des Imports aufgetreten sind. Der Inhalt der Datei ändert sich, wenn Sie die Einstellung Skip errors aktiviert haben.


Einstellung „Skip errors“ aktiviert
In der Datei error.txt stehen alle Fehlermeldungen, die während des Imports aufgetreten sind.


Einstellung „Skip errors“ deaktiviert
Der Import wird durch einen Fehler aufgehalten und zeigt diesen Fehler in der Datei an.

Die Datei ist wie folgt aufgebaut (zur besseren Sichtbarkeit wurde Source File fett dargestellt, die Fehlermeldung normal):

<Source File>
<Fehler-Text>
<Source File>
<Fehler-Text>


Beispiel

/opt/agorum/agorumcore/dmsimporter-demo/import-folder/folder 2/folder 3/test3.txt
Metadatum dmsimporter_dt kann nicht generiert werden es fehlt scr_dt
/opt/agorum/agorumcore/dmsimporter-demo/import-folder/folder 1/test1.txt
Datum ist falsch belegt {"value":"1978-09-17T11:00:00.000Z","type":"date","acMetadata":"dmsimporter_createdate","use":false}

Bereich „audit“

Unterhalb des Ordners audit legt das System eine CSV-Datei an, die das audit-Protokoll enthält.

Der Dateiname basiert auf folgendem Format:

audit_dd_MM_yyyy-HH_mm_ss.csv
Beispiel: audit_09_09_2019-11_06_26.csv
Spalte Beschreibung Beispiel
source name Zeigt den Dateinamen vor Import.

test4.txt

date Zeigt das Importdatum im Format ​​​​​​dd.MM.yyy HH:mm.

09.09.2019 09:06:01

source file Zeigt den kompletten Pfad, in dem sich die Datei innerhalb der Importstruktur befand.

/opt/agorum/agorumcore/dmsimporter-demo/import-folder/folder 2/folder 3/test3.txt

destination name Zeigt den Dateinamen nach dem Import in agorum core.

Angebot_666777.txt

destination folder Zeigt die Ablagepfade innerhalb von agorum core.

Das System trennt die Pfade durch \n auf und listet sie einzeln auf, wenn die Importdatei in mehreren Pfaden liegen (Verlinkungen).

Kunden/Testkunde 456/Angebote/2019/09
Alle Angebote/2019/09

metadata Zeigt die Metadaten, die der importierten Datei in agorum core zugeordnet worden sind.

Das System protokolliert die Metadaten inklusive des Mappings.
dmsimporter_offernumber (src_offernumber)=38493 dmsimporter_offerdate (src_offerdate)=Sat Sep 21 2019 12:00:00 GMT+0200 (CEST) dmsimporter_doctype=Angebot dmsimporter_customernumber (src_customernumber)=K999 dmsimporter_customername=Kunde 999
systemflags Zeigt die Systemflags der importierten Datei.  
revision years Zeigt die Anzahl der Jahre, auf welche die importierte Datei auf revisionssicher gesetzt ist.

11

success siehe Spalte Beispiel

true
Import war erfolgreich.

false
Import ist fehlgeschlagen. In der Spalte Info steht die dazugehörige Fehlermeldung.

info Zeigt die Fehlermeldung, wenn der Import fehlschlägt. Beispieldatei:
Beispielinhalt:


Beispiel der Audit-Datei undefined>audit_09_09_2019-11_23_34.csv mit folgendem Inhalt

source name;date;source file;destination name;destionation folder;metadata;systemflags;revision years;success;info
"test3.txt";"09.09.2019 11:23:35";"/opt/agorum/agorumcore/dmsimporter-demo/import-folder/folder 2/folder 3/test3.txt";"?";"?";"";"";"";false;"Metadatum dmsimporter_dt kann nicht generiert werden es fehlt scr_dt"
"test4.txt";"09.09.2019 11:23:35";"/opt/agorum/agorumcore/dmsimporter-demo/import-folder/folder 2/folder 3/folder 4/test4.txt";"An_34343.txt";"Kunden/Testkunde 456/Angebote/2019/09
/Alle Angebote/2019/09";"dmsimporter_offernumber (src_offernumber)=34343
dmsimporter_offerdate (src_offerdate)=Fri Sep 20 2019 12:00:00 GMT+0200 (CEST)
description (src_description1)=Teil 1 Teil 2
dmsimporter_doctype=Angebot
";"";"";true;""
"test2.txt";"09.09.2019 11:23:36";"/opt/agorum/agorumcore/dmsimporter-demo/import-folder/folder 2/test2.txt";"An_98765.txt";"Kunden/Testkunde 456/Angebote/2019/09
/Alle Angebote/2019/09";"dmsimporter_offernumber (src_offernumber)=98765
dmsimporter_offerdate (src_offerdate)=Tue Sep 17 2019 12:00:00 GMT+0200 (CEST)
dmsimporter_doctype=Angebot
";"";"";true;""
"test1.txt";"09.09.2019 11:23:36";"/opt/agorum/agorumcore/dmsimporter-demo/import-folder/folder 1/test1.txt";"?";"?";"";"";"";false;"Datum ist falsch belegt {""value"":""1978-09-17T11:00:00.000Z"",""type"":""date"",""acMetadata"":""dmsimporter_createdate"",""use"":false}"
"test5.txt";"09.09.2019 11:23:36";"/opt/agorum/agorumcore/dmsimporter-demo/import-folder/folder 5/test5.txt";"An_38493.txt";"/Alle Angebote/2019/09";"dmsimporter_offernumber (src_offernumber)=38493
dmsimporter_offerdate (src_offerdate)=Sat Sep 21 2019 12:00:00 GMT+0200 (CEST)
dmsimporter_doctype=Angebot
dmsimporter_customernumber (src_customernumber)=K999
dmsimporter_customername=Kunde 999
";"";"";true;""
"test.txt";"09.09.2019 11:23:37";"/opt/agorum/agorumcore/dmsimporter-demo/import-folder/test.txt";"Re_12345_test.txt";"Kunden/Testkunde 123/Rechnungen/2019/09";"dmsimporter_invoicenumber (src_invoicenumber)=12345
dmsimporter_invoicedate (src_invoicedate)=Tue Sep 17 2019 12:00:00 GMT+0200 (CEST)
dmsimporter_doctype=Rechnung
";"";"";true;""

Verwendbare Metadaten in der CSV-Datei


Globale agorum core-Metadaten existieren, die Sie verwenden können.

Metadatum Beschreibung
originalName Entspricht dem Dateinamen (baseName) des eingelesenen Files.
extension Entspricht der Dateiendung des eingelesenen Files.

Mitgelieferte Beispiele


Der agorum core dms importer liefert Beispiele mit, die die Funktionsweise des Imports vorstellen.