Direkt zum Hauptinhalt

Funktionsweise

Der Service importiert Dateien aus einem konfigurierbaren Importverzeichnis in das MESONIC-Archiv. Die erlaubten Dateitypen sind über FileFilter konfigurierbar (Standard: *.pdf). Es werden zwei Verzeichnistypen unterstützt:

  • Reguläre Verzeichnisse: Direkte Unterverzeichnisse von ImportPath. Der Verzeichnisname muss exakt der Bezeichnung eines Archiv-Formulars in MESONIC entsprechen.
  • Erkennungsverzeichnisse: Unterverzeichnisse, die einem Objekttyp zugeordnet sind (Belege, Artikel, Personenkonten). Diese enthalten Formular-Unterverzeichnisse, deren Name dem Archiv-Formular entspricht.

Betriebsmodi

  • Batch-Modus (Watch: false): Verarbeitet alle vorhandenen Dateien einmalig und beendet sich danach.
  • Watch-Modus (Watch: true): Verarbeitet vorhandene Dateien und überwacht das Importverzeichnis dauerhaft auf neue Dateien. Neue Dateien werden automatisch erkannt. Falls eine Datei noch gesperrt ist (z.B. laufender Kopiervorgang), werden bis zu 10 Versuche im Abstand von 500ms unternommen.

Objekterkennung

Der Service unterstützt drei Objekttypen. Die Zuordnung erfolgt über konfigurierbare Erkennungsverzeichnisse:

Objekttyp Standard-Verzeichnis MesoXPO-Klasse Suchfeld
Belege Belege BestelldateiKopf Belegkey (Kontonummer-Laufnummer) oder Belegnummer
Artikel Artikel ArtikelStammdatei Artikelnummer
Personenkonten Personenkonten ViewKontenstamm Kontonummer

Dateien in regulären Verzeichnissen (die keinem Objekttyp zugeordnet sind) werden ohne Objekterkennung importiert - Schlagwortdateien funktionieren weiterhin.

Wichtig: Dateien dürfen nicht direkt in einem Erkennungsverzeichnis liegen, sondern müssen sich in einem Formular-Unterverzeichnis befinden. Dateien direkt in z.B. Belege\ werden mit einer Warnung übersprungen.

Verzeichnis-Erkennung (optional)

Alternativ zur Identifier-Extraktion aus dem Dateinamen (per Regex) kann der Identifier auch über den Verzeichnisnamen ermittelt werden. Dazu werden Dateien in ein Unterverzeichnis des Formular-Verzeichnisses gelegt, dessen Name dem Objekt-Identifier entspricht:

Belege\Laborbericht\12000-156A\scan.pdf

Hier wird 12000-156A als Identifier aus dem Verzeichnisnamen übernommen - unabhängig vom Dateinamen. Das ist nützlich wenn:

  • Dateinamen keine auswertbare Struktur haben (z.B. scan001.pdf)
  • Mehrere Dateien demselben Objekt zugeordnet werden sollen
  • Die Zuordnung manuell über die Ablagestruktur gesteuert werden soll

Die Verzeichnis-Erkennung hat Vorrang vor der Regex-Extraktion. Sie funktioniert in allen Modi (Batch, Watch, Mandantenverzeichnisse).

Verzeichnisstruktur

C:\Archivimport\
  Belege\                          <-- Erkennungsverzeichnis (Objekttyp: Beleg)
    Laborbericht\                  <-- Formular-Unterverzeichnis -> Archiv-Formular "Laborbericht"
      12000-156A.pdf               <-- Identifier aus Dateiname (per Regex)
      12000-156A.ini               <-- optionale Schlagwortdatei
      20100-42B\                   <-- Verzeichnis-Erkennung: Identifier = "20100-42B"
        scan001.pdf                <-- Dateiname beliebig
        scan002.pdf
    Probebegleitschein\            <-- Formular-Unterverzeichnis -> Archiv-Formular "Probebegleitschein"
      20100-42B.pdf
  Artikel\                         <-- Erkennungsverzeichnis (Objekttyp: Artikel)
    Artikelbilder\                 <-- Formular-Unterverzeichnis -> Archiv-Formular "Artikelbilder"
      Artikel_ART-001.pdf
  Personenkonten\                  <-- Erkennungsverzeichnis (Objekttyp: Personenkonto)
    Kundenstamm\                   <-- Formular-Unterverzeichnis -> Archiv-Formular "Kundenstamm"
      Konto_12000.pdf
  Rechnungen\                      <-- Reguläres Verzeichnis -> Archiv-Formular "Rechnungen"
    dokument.pdf

Mandantenverzeichnisse

Mit MandantenVerzeichnisse: true wird die erste Verzeichnisebene unter ImportPath als Mandantennummer interpretiert. So können mehrere Mandanten mit einer einzigen Service-Instanz bedient werden. Der Parameter Company entfällt in diesem Modus. Ist Company dennoch in der Konfiguration gesetzt, wird der Wert ignoriert und eine Warnung geloggt.

Systemverzeichnisse (Erfolgreich/Fehler/InArbeit bzw. die konfigurierten Namen) auf Mandantenebene werden automatisch übersprungen und nicht als Mandant interpretiert.

Die Datenbankverbindung wird beim Start nur auf Systemebene hergestellt. Mandanten-spezifische Verbindungen werden erst bei Bedarf erstellt und anschließend für die Dauer der Sitzung zwischengespeichert.

C:\Archivimport\
  500M\                            <-- Mandant 500M
    Belege\                        <-- Erkennungsverzeichnis (Objekttyp: Beleg)
      Laborbericht\
        12000-156A.pdf             <-- Identifier aus Dateiname
        20100-42B\                 <-- Verzeichnis-Erkennung
          scan.pdf
    Rechnungen\                    <-- Reguläres Verzeichnis -> Archiv-Formular "Rechnungen"
      dokument.pdf
  600M\                            <-- Mandant 600M
    Belege\
      Probebegleitschein\
        20100-42B.pdf
    Artikel\
      Artikelbilder\
        Artikel_ART-001.pdf

Innerhalb jedes Mandantenverzeichnisses gilt die gleiche Struktur wie im Einzelmandant-Modus (Erkennungsverzeichnisse, Formular-Unterverzeichnisse, Schlagwortdateien etc.).

Dateiverschiebung nach Verarbeitung

Unmittelbar vor dem Archivieren wird eine Datei (inkl. begleitender Schlagwortdatei) in das Arbeitsverzeichnis InArbeit (konfigurierbar via WorkFolder) verschoben. Das Verschieben ist die einzige Operation, die an einer fremden Dateisperre scheitert — schlägt es fehl (Datei noch im Zugriff durch Scanner, Virenscanner o.Ä.), ist noch nichts archiviert und der nächste Lauf versucht es erneut. Eine bereits archivierte Datei kann so nicht ein zweites Mal importiert werden. Das Verschieben selbst wird bei Sperren mehrfach wiederholt (bis zu 10 Versuche im 500-ms-Abstand).

Nach der Verarbeitung werden Dateien (inkl. begleitender Schlagwortdateien) automatisch verschoben:

  • Erfolgreicher Import: Unterverzeichnis Erfolgreich (konfigurierbar via SuccessFolder)
  • Fehler beim Import: Unterverzeichnis Fehler (konfigurierbar via ErrorFolder)

Das Zielverzeichnis wird relativ zum Verzeichnis der Datei erstellt:

  • Regulär: Rechnungen\Erfolgreich\dokument.pdf
  • Erkennung: Belege\Laborbericht\Erfolgreich\12000-156A.pdf
  • Verzeichnis-Erkennung: Belege\Laborbericht\12000-156A\Erfolgreich\scan.pdf

Bei Namenskonflikten wird automatisch ein Zeitstempel angefügt (z.B. 12000-156A_20240115_143022.pdf).

Bleiben beim Beenden/Absturz des Dienstes Dateien im Arbeitsverzeichnis zurück, werden sie beim nächsten Start automatisch zurückgeholt und erneut verarbeitet (Log-Warnung weist darauf hin).