Zum Hauptinhalt springen

Einrichten einer Hotfolder.ini

Vor über 2 Monaten aktualisiert

Das Anlegen von unterschiedlichen Zugangsdaten pro Sektion wird nun unterstützt. Standardmäßig wird der Zugang aus [DEFAULT] verwendet, sofern keine sektionsspezifischen Daten hinterlegt sind.

Beispiel für unterschiedliche Konfigurationen:

[DEFAULT]
URL = http://documents.example.com:5050/
Token = bs9fMWw7c4ctgMgyRSB7y8U8qlksGOto

[DOCX]
; keine Zugangsdaten
Directory = ...
...

[CSV]
; Verwendung einer anderen URL
URL = http://documents.example.com:8551/
...

[PDF]
; Verwendung eines anderen Hotfolders
Token = 8Z6USm5wWfUu27UlQHQC351wwrqHfzJZ
...

[XML]
; Eigene URL und Token
URL = http://documents.example.com:8551/
Token = 8Z6USm5wWfUu27UlQHQC351wwrqHfzJZ
...

Wie ein Hotfolder funktioniert, wird in der hotfolder.ini im config-Verzeichnis festgelegt.

Legen Sie für jeden Hotfolder eine Sektion in eckigen Klammern an. Der Name der Sektion kann frei gewählt werden. Unterhalb jeder Sektion können verschiedene Parameter und Untersektionen eingegeben werden

Parameter

Type

Pflichtfeld. Beschreibt die Art des Hotfolders. Gültige Werte sind xml, pdf, capture und importservice.

Directory

Pflichtfeld. Das Verzeichnis, in dem der Hotfolder die abgelegten Dateien sucht. Das Verzeichnis muss bereits existieren und wird nicht automatisch angelegt.

Archive

Pflichtfeld. Das Archiv, in das die Dateien des Hotfolders gespeichert werden. Mögliche Werte sind

  • der Kurzname eines Archivs

  • (bei PDF-Hotfoldern) eine Format-Beschreibung zur Ermittlung des Archivnamens aus den Feldwerten (siehe Untersektionen [Test/archive]).

Dateien können auch stattdessen im Eingang eines Benutzers abgelegt werden. Dafür wird das allgemeine Format <archive>@<user> verwendet. Wenn ein @ vorkommt und dahinter ein Benutzername steht, werden die Daten aus dem Hotfolder nicht direkt in ein Archiv geschrieben, sondern im Eingang des angegebenen Benutzers abgelegt.

Die Angabe eines Archivs ist in diesem Fall optional.

Falls ein Archiv angegeben ist, wird dieses Archiv im Eingang vorausgewählt und es ist möglich, Index-Daten für den späteren Archivierungs-Vorgang zwischenzuspeichern.

Beispiele für gültige Archive-Werte:

invoice

Es wird in das Archiv mit dem Kurznamen invoice archiviert.

@schmidt

Die Dateien werden im Eingang des Benutzers mit dem Login-Namen schmidt abgelegt.

invoice@schmidt

Die Dateien werden im Eingang des Benutzers mit dem Login-Namen schmidt abgelegt, das Archiv mit dem Kurznamen invoice ist vorausgewählt.

Hotfolder können Dokumente auch direkt in einem Gruppeneingang ablegen.

Analog zur Syntax <archive>@<user> (legt das Dokument in den Eingang des Benutzers mit dem Login-Namen benutzer und setzt das Archiv mit dem Kurznamen archiv als Voreinstellung) wird das Dokument bei #Gruppenname in die Gruppe mit den Namen Gruppenname gelegt.

Auch hier kann ein Archiv über den Kurznamen vor dem # voreingestellt werden.

Active

Wird der Wert auf false oder 0 gesetzt, wird der entsprechende Hotfolder bei der Verarbeitung ignoriert.

DeleteCompleted

Ein ganzzahliger Wert, der angibt, nach wie vielen Tagen archivierte Dateien aus dem Completed-Verzeichnis gelöscht werden. 0 bedeutet sofort nach dem Archivieren löschen, -1 löscht Dateien nie. Ist der Wert gar nicht gesetzt, wird als Standard -1 angenommen.

MinFilesize

Die minimale Dateigröße in Bytes, ab der der Hotfolder die Dateien beachtet. Der Vorgabewert für diese Einstellung ist 1, sodass 0 Byte große Dateien standardmäßig ignoriert werden.

Postbox

Optional. Ermöglicht die Angabe von Login-Namen in einer kommagetrennten Liste. Die hier konfigurierten Benutzer erhalten beim Import den Vorgang zusätzlich ins Postfach. Wenn im Archiv Mandanten aktiviert sind, werden Benutzer, die auf den Mandanten des Vorgang keinen Zugriff haben, im System-Ereignisprotokoll vermerkt.

[Demo-Archiv] ... Postbox=admin, testuser 

Das Attribut result.postbox ist aufrufbar. Hier können Benutzer als Strings hinzugefügt werden. Falls das Attribut nicht definiert wird, verwendet die Direktive Postbox=... stattdessen.

import importservice  class ImportService(importservice.Base):     def process(self, file, result):         result.postbox = ["admin", "testuser"] 

Wichtig

Im Falle einer Postbox-Konfiguration sollten die Benutzer dem ausgewählten Mandaten im Archiv zugewiesen sein, da sie den Vorgang andernfalls nicht ins Postfach bekommen und vom Hotfolder stattdessen eine Warnung ausgegeben wird.

Wenn der Typ PDF ist, gibt es weitere Parameter:

Pattern

Pflichtfeld. Ein regulärer Ausdruck, der den Feldschlüssel der Metadaten in der PDF-Datei beschreibt. Beispielsweise sucht C2[0-9]{4} im PDF-Text nach Feldern, die mit C2 beginnen und von vier weiteren Zahlen gefolgt werden, z.B. C29876.

SplitMark

Standardmäßig werden PDF-Dateien in einzelne Seiten aufgeteilt und anschließend so gruppiert, dass ein neues Dokument beginnt, wenn auf einer Seite Felder existieren, die dem angegebenen Pattern entsprechen. Seiten ohne eigene Felder werden dem letzten Dokument angehängt. Wenn allerdings SplitMark angegeben wird, wird nur dann ein neues Dokument angenommen, wenn sich der Wert im angegebenen Feld geändert hat. Der Wert von SplitMark muss dem Pattern entsprechen, d.h. beim Pattern C2[0-9]{4} kann SplitMark den Wert C29876 haben, nicht aber Test.

Filemask

Ermöglicht das Filtern der zu verarbeitenden Dateien im Hotfolder mit Hilfe von Platzhaltern. Wenn z.B. nur PDF-Dateien beachtet werden sollen, deren Dateiname mit SOEPR beginnt, muss dieser Parameter auf den Wert SOEPR*.pdf gesetzt werden. Wenn dieser Parameter fehlt, wird standardmäßig nach *.pdf gesucht.

Split

Das Aufteilen von PDF-Dateien in einzelne Seiten und anschließendes Gruppieren ist standardmäßig aktiviert. Wenn allerdings Split den Wert false oder 0 enthält, wird dieses Verfahren deaktiviert. Die PDF-Datei wird ohne weitere Nachbearbeitung direkt archiviert (die Metadaten aus den Feldern aber dennoch extrahiert).

Client

Pflichtfeld, wenn im Archiv Mandanten konfiguriert sind, ansonsten ohne Auswirkung. In dieser Option wird das Kürzel des Mandanten eingestellt, der neuen Vorgängen zugewiesen wird.

[Demo-Archiv] ... Client = IQUADRAT 

In Import-Services kann der Mandant über result.client dyamisch überschrieben werden und im XML-Hotfolder über das Tag <client>. Auch hier muss jeweils das Kürzel des Mandanten angegeben werden.

import importservice  class ImportService(importservice.Base):     def process(self, file, result):         result.client = "IQUADRAT AG" 

Smartindexing

Optional. Führt Smartindexing in der Hotfolder-Verarbeitung aus. Wird aktuell bei folgenden Dateiformaten unterstützt: * PDF-Dateien, die einfach extrahierbaren Text enthalten. * DOCX-Dateien

Ist die Option Client gesetzt, wird ein mandantenspezifisches Smartindexing durchgeführt.

OnSmartindexingEvent

Optional. Führt zusätzlich zum Smartindexing das on_smartindexing-Event in der Hotfolder-Verarbeitung aus. Standardmäßig ist diese Einstellung auf false.

ArchiveDefaults

Optional. Standardmäßig werden in der Hotfolder-Verarbeitung die im Archiv konfigurierten Vorgabewerte eines Datenfelds beachtet und zusätzlich bereitgestellt. Werte aus einer Untersektion [<Sektion>/defaults] überschreiben die durch diese Option geladenen Vorgabewerte.

SaveFailureAction

Optional. Steuert das Verhalten bei Fehlern im on_save-Event oder bei einer fehlgeschlagenen Validierung festgelegter Vorschläge eines Datenfeldes während der Vorgangsarchivierung über einen Import-Service.

Standardmäßig ist diese Einstellung auf abort gesetzt. Damit wird der Importvorgang beim Auftreten eines Fehlers abgebrochen und das Dokument wird ins _Failed-Verzeichnis verschoben. Wenn die Option auf proceed gesetzt wird, führen Fehler nicht zum Abbruch des Imports. Das Dokument wird dennoch archiviert; alle Meldungen werden in der Vorgangshistorie, sowie im Aktions-Ereignisprotokoll festgehalten.

[Demo-Archiv] SaveFailureAction = proceed 

Die Einstellung kann ebenfalls direkt im Import-Service über result.save_failure_action gesetzt werden.

MoveCompleted

Optional. Für zusätzliche Dateien, die über result.add_file hinzugefügt und archiviert werden, kann nach der Hotfolder-Verarbeitung bestimmt werden, in welches Verzeichnis diese verschoben werden. Die primär verarbeitete Datei ist davon unbetroffen und wird immer verschoben.

Standard ist true oder 1. Wird der Wert auf false oder 0 gesetzt, werden die zusätzlichen Dateien nach der Hotfolder-Verarbeitung nicht in das _Completed-Verzeichnis verschoben.

MoveFailed

Optional. Für zusätzliche Dateien, die über result.add_file hinzugefügt und archiviert werden, kann beim Auftreten eines Fehlers während der Hotfolder-Verarbeitung bestimmt werden, in welches Verzeichnis diese verschoben werden. Die primär verarbeitete Datei ist davon unbetroffen und wird immer verschoben.

Standard ist false oder 0. Wird der Wert auf true oder 1 gesetzt, dann werden die zusätzlichen Dateien im Fehlerfall in das _Failed-Verzeichnis verschoben.

Untersektionen

Eine Untersektion wird unterhalb einer Sektion mit eckigen Klammern und einem Schrägstrich geschrieben; wenn die Sektion z. B. [Test] heißt, kann eine Untersektion folgendermaßen heißen:

  • [Test/defaults],

  • [Test/fields] oder

  • [Test/archive]

Im ersten Fall wird für ein Datenfeld im Archiv ein Standardwert festgelegt, es sei denn, für dieses Feld gibt es Metadaten. Im folgenden Beispiel wird die Spalte belegart mit dem Wert Rechnung gefüllt:

[Test/defaults] belegart=Rechnung 

Im zweiten Fall kann man die Metadaten aus der PDF-Datei mit Datenfeldern aus dem Archiv verknüpfen (Feldzuordnung). Der linke Wert beschreibt den Schlüssel des Feldes in der PDF-Datei und der rechte Wert die Kurz-ID des Datenfelds im Archiv:

[Test/fields] C21003=datum C21004=firmennummer C21005=jahr 

Im dritten Fall kann man aus den Metadaten der PDF-Datei das Zielarchiv automatisch ermitteln (Archivzuordnung). Angenommen, die Metadaten einer PDF-Datei enthalten ein Feld mit dem Schlüssel C21005, dass das Jahr einer Rechnung als Wert hat.

Wenn nun Archive den Wert rechnungen_{C21005} enthält (den Feldschlüssel in geschweiften Klammern) und das Feld C21005 den Wert 2014, wird als Archiv-ID automatisch rechnungen_2014 angenommen.

Dieser Archiv-ID kann nun zusätzlich über die Untersektion archive explizit eine andere Archiv-ID zugewiesen werden:

[Test/archive] rechnungen_2013 = alte_rechnungen rechnungen_2014 = 00531718-f5e4-f94c-7b38-d9d17c54c215 

Existiert in dieser Untersektion keine Zuordnung, wird der vorher ermittelte Wert selbst als Archiv-ID verwendet.

Beispiel einer hotfolder.ini

[DEFAULT]
URL = http://documents.example.com:5050/
Token = bs9fMWw7c4ctgMgyRSB7y8U8qlksGOto

[DOCX]
; keine Zugangsdaten
Directory = ...
...

[CSV]
; Verwendung einer anderen URL
URL = http://documents.example.com:8551/
...

[PDF]
; Verwendung eines anderen Hotfolders
Token = 8Z6USm5wWfUu27UlQHQC351wwrqHfzJZ
...

[XML]
; Eigene URL und Token
URL = http://documents.example.com:8551/
Token = 8Z6USm5wWfUu27UlQHQC351wwrqHfzJZ
...

Es ist möglich, für größere Flexibilität mehrere Regeln auf einmal zu definieren und mit Ausnahmen zu kombinieren:

Filemask=*.pdf|*.xml|*.DOCX FilemaskExclusion=tmp*.pdf|Desktop.ini 

In diesem Beispiel werden alle Dateien mit der Endung pdf, xml oder docx verarbeitet, jedoch nicht die Datei Desktop.ini oder alle PDF-Dateien, deren Name mit „tmp“ beginnt. Grundsätzlich wird eine Datei immer dann verarbeitet,

  • wenn mindestens eine Regel in Filemask auf sie zutrifft. Die Option Filemask kann auch weggelassen werden, dann wird die Voreinstellung des jeweiligen Hotfolder-Typs verwendet (beispielsweise nur *.xml im XML-Hotfolder oder alle Dateien im Hotfolder-Typ file).

  • wenn keine der Regeln in FilemaskExclusion auf sie zutrifft.

Des Weiteren erhalten nach dem Import-Vorgang die Benutzer admin und testuser die neuen Vorgänge ins Postfach gelegt.

Tipp

Leerzeichen um das | sollten vermieden werden, da die Leerzeichen dann Teil der Regel werden und nur Dateien beachten, die mit einem Leerzeichen beginnen bzw. enden.

Hat dies deine Frage beantwortet?