Version 2.1.0
Wichtige Hinweise
Universal C Runtime
Diese Version setzt voraus, dass die Universal C Runtime (CRT) in Windows installiert ist. Die CRT wurde von Microsoft Ende 2015 für alle Windows-Versionen als wichtiges Update (KB2999226) bereitgestellt und sollte daher in der Regel bereits installiert sein. Das Setup prüft beim Start, ob die CRT installiert ist. Falls dies nicht der Fall ist, beendet sich das Setup mit einer entsprechenden Meldung und sollte nach der Installation der CRT erneut ausgeführt werden.
Bei der separaten pa_hotfolder-Anwendung (siehe unten) gibt es aktuell kein
Installationsprogramm und daher keine Überprüfung, ob die Universal C Runtime installiert ist.
Wenn beim Ausführen der pa_hotfolder.exe in Fehler folgender Art angezeigt wird, sollte die CRT
über das Windows-Update oder die oben verlinkte Microsoft-Seite installiert werden:
Änderung des Standard-Themes
Das Theme iquadrat ist nun das Standard-Theme, sofern in der settings.ini oder beim Benutzer
nichts anderes eingestellt ist. Sollte das Theme classic in einer Installation weiterhin als
Standard erwünscht sein, sollte in der settings.ini die Option theme=classic hinzugefügt
werden.
Hotfolder-Archivierung über die Web-API
Bisher war es so, dass die pa_hotfolder.exe bei der Verarbeitung die archivierten Daten direkt
in die Speicher und Index-Datenbank geschrieben hat. Ab dieser Version verwendet die
pa_hotfolder.exe ebenfalls die normale Web-API, was einige Vorteile hat:
Die
pa_hotfolder.exemuss nicht mehr unbedingt auf dem gleichen Computer ausgeführt werden, auf dem auch docs365 documents installiert ist. Es wird eine separatepa_hotfolder.exe-Anwendung (siehe unten) bereitgestellt, die man auf beliebig vielen Computern installieren kann, die dann alle gleichzeig in eine einzige Documents-Installation archivieren.Weil docs365 documents eine reine 64-Bit-Anwendung ist, konnten bei Import-Services über die Hotfolder bislang auch nur 64-Bit-ODBC-Datenquellen für Datenbankabfragen verwendet werden. Da die separate
pa_hotfolder.exe-Anwendung auch in einer 32-Bit-Version bereitgestellt wird, können damit nun auch 32-Bit-ODBC-Datenquellen verwendet werden.Auch wenn die
pa_hotfolder.exeweiterhin direkt in der Documents-Installation ausgeführt wird, ist es nicht mehr zwingend erforderlich, dass sie unter einem Benutzerkonto läuft, das Schreibrechte auf die Speicher hat. Es reicht aus, wenn diepa_hotfolder.exelesend auf diesettings.iniundhotfolder.inizugreifen kann.
Dienstbenutzer für die Hotfolder-Archivierung
Eine Folge dieses neuen Verfahrens ist, dass sich nun auch der Hotfolder bei der Web-API als
Benutzer authentifizieren muss, selbst wenn die in der regulären Documents-Installation enthaltene
pa_hotfolder.exe über localhost archiviert.
Für diesen Zweck wurden Dienstbenutzer eingeführt:

Dienstbenutzer unterscheiden sich von normalen Benutzern darin, dass sie sich nicht in der Benutzer-Oberfläche anmelden können und anstatt eines Login-Namens und Passworts nur ein vom Server generiertes API-Token für die Authentifizierung kennen. Das API-Token kann in der Administrationsoberfläche invalidiert werden, indem man im Token-Feld auf das “X” klickt und anschließend speichert. Der Server generiert dann ein neues Token, sodass das alte nicht mehr gültig ist.
Auch Dienstbenutzern müssen Rollen zugewiesen werden, damit sie auf Archive zugreifen können. Somit
ist es möglich, den Zugriff so weit einzuschränken, dass eine pa_hotfolder.exe auf einem
externen Computer zwar in ein bestimmtes Archiv archivieren, mit dem Token aber nicht die Daten aus
anderen Archiven über die API auslesen kann.
Die URL des Servers und das API-Token müssen wie folgt in der settings.ini in der neuen Sektion
[Hotfolder] eingetragen werden:
[Hotfolder]
URL = http://documents.example.com:8551/
Token = ArRwFYljbSKYZHaBX2VpVhp6oHak56Ju
Beim Upgrade von docs365 documents 2.0 sowie bei neuen Installation wird diese Sektion in der
settings.ini automatisch eingetragen, dafür wird ebenfalls automatisch ein erster Dienstbenutzer
mit dem Namen Hotfolder erzeugt, der einer neuen Rolle Hotfolder zugewiesen wird, die zunächst
einmal Schreibrechte auf alle Archive hat. Somit wird die bereits eingerichtete
Hotfolder-Archivierung von Version 2.0 auch weiterhin funktionieren.
Wenn später neue Archive erstellt werden, ist es wichtig, dass der Hotfolder-Rolle Schreibrechte auf diese Archive gegeben werden, damit der Hotfolder sie ebenfalls verwenden kann.
Separate pa_hotfolder.exe-Anwendung
Ab dieser Version werden noch zwei zusätzliche Dateien mit ausgeliefert:
pa_hotfolder-2.1.0-x86.zip(32-Bit)pa_hotfolder-2.1.0-x64.zip(64-Bit)
Diese beiden Dateien enthalten die separate pa_hotfolder.exe-Anwendung jeweils in einer 32-Bit-
und einer 64-Bit-Version. Der Inhalt dieser ZIP-Dateien kann ohne Installation in einem beliebigen
Dateipfad entpackt werden, um von dort aus Archivierungen über Hotfolder durchzuführen. Dafür müssen
in dem config-Verzeichnis eine minimale settings.ini (mit der Sektion [Hotfolder] wie
oben angeben) und eine hotfolder.ini eingerichtet werden.
Notwendige Anpassungen in Import-Services
Durch die Verwendung der Web-API gibt es in der post_process-Methode von Import-Services eine
nicht rückwärtskompatible Änderung, die eine eventuelle Anpassung der Import-Services erfordert
(z.B. im index-from-db-Import-Service).
Der Parameter record, der den erzeugen Vorgang repräsentiert, war bisher ein Datenbank-Objekt,
auf dessen Eigenschaften über Attribute (z.B. record.id) zugreifen konnte. In der neuen Version
ist record ein Python-dict, dessen Inhalt die Antwort der JSON-Web-API ist und auf dessen
Eigenschaft über dict-Schlüssel zugegriffen werden kann.
Beispiel:
# Vorher:
def post_process(self, record):
for attachment in record.attachments:
id = attachment.id
# Nachher:
def post_process(self, record):
for attachment in record['attachments']:
id = attachment['id']
Parallele Hotfolder-Verarbeitung
Für eine bessere Performance verarbeitet die pa_hotfolder.exe nun mehrere Dateien gleichzeitg,
was sich insbesondere bei der Hotfolder-Verarbeitung auf einem separaten Computer über eine langsame
Netzwerkverbindung bemerkbar macht. Standardmäßig werden acht Dateien gleichzeitig verarbeitet, was
über einen Parameter der pa_hotfolder.exe angepasst werden kann:
pa_hotfolder.exe --threads 2
Dokumente als PDF zusammenfassen
Im Menü des Datengitters von Archiven gibt es einen neuen Menüpunkt Extras -> Dokumente zusammenfassen. Wenn man einen oder mehrere Vorgänge auswählt und diesen Menüpunkt anklickt, werden alle druckbaren Seiten von sämtlichen Dokumenten der ausgewählten Vorgänge zu einer einzigen PDF-Datei zusammengefügt, die dann im Browser betrachtet oder heruntergeladen werden kann. Die Reihenfolge der Vorgänge ist dabei so, wie sie im Datengitter angezeigt werden und die Reihenfolge der Dokumente ist, wie sie in den Vorgängen zu sehen sind.
Das Zusammenfassen kann je nach Größe der Dokumente einige Sekunden dauern, anschließend wird ein Dialog mit dem Ergebnis und einem Link auf das fertige Dokument angezeigt. Es wird die Anzahl der Seiten angegeben und evtl. eine Liste der Dateinamen von Dokumenten, die nicht beachtet werden konnten (wenn sie beispielweise wie eine ZIP-Datei nicht druckbar sind).
Ein Klick auf Dokument anzeigen öffnet die generierte PDF-Datei in einem neuen Browser-Tab.
Neue Option “Revisionssicher speichern” für Datenfelder
Bisher war es möglich, ein Datenfeld als Änderbar zu markieren, sodass man die Werte dieses Feldes auch nach der Archivierung noch bearbeiten konnte. Änderbare Felder wurden bislang ausschließlich in der Datenbank und nicht revisionssicher im Speicher abgelegt, während nicht änderbare Felder grundsätzlich revisionssicher gespeichert wurden.
Nun ist auch auch möglich, revisionssicher gespeicherte Felder als Änderbar zu markieren. Dafür gibt es in den erweiterten Optionen der Datenfelder eine neue Einstellung Revisionssicher speichern, die angibt, ob das betroffene Feld revisionssicher im Speicher verwaltet oder nur in der Datenbank gespeichert wird. Bei neuen Feldern ist die Option Revisionssicher speichern standardmäßig aktiviert.
Diese Option ist bei auf Änderbar eingestellten Feldern wichtig: Wenn man in einem Vorgang auf Bearbeiten klickt und nur nicht revisionssichere Datenfelder verändert, werden die Werte im aktuellen Vorgang überschrieben. Ist jedoch mindestens eines der veränderten Felder revisionssicher gespeichert, wird eine neue Version des Vorgangs angelegt, die die veränderten Werte enthält. Die vorherige Version mit den alten Werten bleibt als versteckter Vorgang erhalten.
Beim Update von docs365 documents 2.0 werden in bestehenden Archiven alle änderbaren Felder weiterhin als nicht revisionsicher markiert und alle nicht änderbaren Felder als revisionsicher.
Da es nun möglich ist, die Option Änderbar selbst in Produktivarchiven zu jedem Zeitpunkt
anzupassen, ohne dass das die Revisionssicherheit verändert, wurde in der pa_ctl.exe der Befehl
pa_ctl.exe modify <archiv> chbl/nochbl entfernt, da er nicht mehr benötigt wird.
Die Option Revisionssicher speichern kann jedoch nur verändert werden, solange sich das Archiv noch im Testmodus befindet.
Eindeutige Werte in Datenfeldern
Wenn ein Datenfeld in den erweiterten Optionen als Eindeutig markiert wird, dürfen beim Archivieren nur Werte verwendet werden, die nicht bereits bei anderen Vorgängen in diesem Datenfeld existieren. Versteckte Vorgänge werden dabei nicht beachtet, d.h. es ist weiterhin möglich, einen Wert im Datenfeld zu verwenden, auch wenn ein versteckter Vorgang diesen bereits enthält.
Verbesserte Spaltenkonfiguration im Viewer
Wenn man in einer Spalte im Datengitter des Viewers durch den Klick auf den Spaltentitel das Menü aufklappt und auf Spaltenkonfiguration klickt, gibt es nun einen verbesserten Dialog, mit dem die anzuzeigenden Spalten sortiert, ausgeblendet und wieder eingeblendet werden können.
Verstecken von Datenfeldern
Wenn ein Datenfeld in den erweiterten Optionen als Unsichtbar markiert wird, wird dieses Datenfeld standardmäßig nicht mehr im Viewer angezeigt. Dabei ist das Verhalten bei normalen Benutzer und Benutzern mit Administrator-Rechten unterschiedlich:
Normale Benutzer können auf die Werte dieses Datenfeldes gar nicht mehr zugreifen. Es ist sowohl im Datengitter als auch im Vorgangsdialog und direktem API-Zugriff vollständig ausgeblendet. Jedoch ist es auch für diese Benutzer im direkten API-Zugriff weiterhin möglich, beim Archivieren Feld-Werte zu übergeben, beispielsweise wenn ein Hotfolder-Dienstbenutzer ohne Administrator-Rechte weiterhin Werte für unsichtbare Felder füllen muss.
Bei Administrator-Benutzern sind unsichtbare Felder im Datengitter zunächst einmal ausgeblendet, jedoch ist es möglich, sie über die Spaltenkonfiguration manuell wieder einzublenden. Im Vorgangs-Dialog werden unsichtbare Spalten weiterhin normal angezeigt.
Grundsätzlich sind unsichtbare Datenfeldern weiterhin normal aktiv und können revisionssicher Werte speichern, nur dass normale Benutzer nicht darauf zugreifen können. Die Unsichtbarkeit kann jederzeit wieder rückgängig gemacht werden.
Zeichenerkennung (OCR) in PDFs mit gemischten Text- und Bilddaten
Bisher war die Zeichenerkennung (OCR) bei PDF-Dateien nur dann möglich, wenn sie ausschließlich aus Bilddaten bestanden, so wie es im Falle eines gescannten Dokumentes der Fall ist. In Zukunft können auch solche PDF-Dateien verarbeitet werden, die aus einer Mischung aus Text- und Bilddaten bestehen, z.B. digital erzeugte Dokumente mit eingebetteten Logos oder Diagrammen. Der Textanteil bleibt erhalten und die Bilder werden getrennt einer Zeichenerkennung unterzogen, so dass erkannter Text durchsucht, markiert oder kopiert werden kann.
Anhängen von Dokumenten aus dem Eingang
Beim Hinzufügen von Dokumenten zu einem neu angelegten oder einem bestehenden Vorgang musste bisher eine Datei ausgewählt werden, die zunächst vom Browser hochgeladen und dann dem Vorgang als Dokument angehängt wurde. An dieser Stelle besteht nun die alternative Möglichkeit, anstelle einer Datei ein Dokument aus dem Eingang auszuwählen, das dann an den Vorgang angehängt und aus dem Eingang entfernt wird.
Verbesserter Dialog für erweiteres Datenfeld-Optionen
Der Dialog für die erweitereten Datenfeld-Optionen ist nun übersichtlicher, da die einzelnen Einstellungen thematisch gruppiert wurden und viele Optionen zusätzlich noch einen kurzen Hilfetext enthalten haben, der ihre Funktion erklärt:

Export und Import von Archiv-Konfigurationen
In der Administrationsoberfläche können Archivkonfigurationen in JSON-Dateien exportiert bzw. aus JSON-Dateien importiert werden. Für den Export steht im Archiv-Formular ein Button zur Verfügung. Für den Import muss zunächst wie gewohnt ein neues Archiv angelegt werden (Button “Neu”). Anschließend steht im Formular ein Button “Importieren” zur Verfügung, der die Felder des Formulars mit den importierten Daten vorbelegt, die in der Folge angepasst werden können.
Über den Ex- und Import wird auch der Austausch von Konfigurationen zwischen unterschiedlichen Installationen möglich. Die Archiv-Konfiguration kann jedoch Einstellungen enthalten, die sich auf die jeweilige Installation beziehen, beispielsweise die Status auf dem Reiter Workflow oder die SmartIndexing-Einstellungen in den Spalten-Optionen. Wird beim Import festgestellt, dass eine Einstellung in der exportierten Konfiguration im Import-System nicht existiert, erscheint eine Fehlermeldung und die relevante Einstellung wird zurückgesetzt. Die übrigen Daten werden trotzdem importiert.
Automatisierte Vorgabewerte für Archivspalten
Als Vorgabewerte für den Inhalt von Archivspalten können neben manuell festgelegten, festen Werten nun auch automatisierte Werte verwendet werden, beispielsweise der momentan angemeldete Benutzer oder das heutige Datum. Die Vorgabewerte werden wie bisher auch in den Spalten-Optionen innerhalb der Archiv-Konfiguration in der Administrations-Oberfläche festgelegt.
Mit Hilfe eines Auswahlfeldes kann ein automatisierter Vorgabewert ausgewählt werden. Die zur Verfügung stehenden Auswahlmöglichkeiten hängen dabei von der Art des Feldes (Datum, Text oder Zahl) ab. Zur Festlegung eines manuellen Vorgabewertes wird in der Auswahlliste die Option “Spezieller Wert” ausgewählt. Der Wert kann dann wie bisher in einem Eingabefeld eingtragen werden.
Automatisch gefüllte Datenfelder
Wenn bei einem Datenfeld in den erweiterten Optionen die Einstellung Keine manuelle Eingabe aktiviert wird, ist es für Benutzer nicht möglich, im Archivieren-Dialog manuell Werte einzugeben, auch SmartIndexing ist für diese Felder deaktiviert.
Jedoch können diese Felder weiterhin durch Lookups aus externen Datenquellen gefüllt werden. Somit ist diese Einstellung sinnvoll für Felder, die ausschließlich automatisch ermittelte Werte aus externen Datenquellen enthalten sollen.
Dokumente über Import-Services an bestehende Vorgänge anhängen
Import-Services können nun auch noch dazu verwendet werden, über einen Hotfolder Dokumente an
bereits bestehende Vorgänge anzuhängen. Dafür muss im result-Objekt anstatt result.archive
die ID des zu erweiternden Vorgangs in result.record geschrieben werden.
Der ImportService stellt eine Hilfsfunktionen self.find_records(archive, query) bereit, mit
denen nach Vorgängen gesucht werden kann. Der Parameter archive ist die ID oder der Kurzname des
zu verwendenen Archivs und query ein Such-Filter mit der gleichen Syntax, die auch in den
gefilterten Archiven oder der Spaltensuche verwendet wird. Der Rückgabewert ist eine Liste von
gefundenen Vorgängen als dict, die ID kann über den Schlüssel id extrahiert werden:
class ImportService(importservice.Base):
def process(self, file, result):
result.add_file(file)
# Vorgang im Archiv "rechnungen" suchen, dessen
# Belegnummer "ABC123" ist.
records = self.find_records('rechnungen', '_belegnr = "ABC123"')
if len(records) != 1:
raise RuntimeError('Es wurde genau ein Vorgang erwartet.')
result.record = records[0]['id']
Beim Aufruf von find_records sollte grundsätzlich die Länge der zurückgegebenen Liste geprüft
werden, da bei Filtern auch gar keine oder mehrere Vorgänge zurückgegeben werden. Die maximale
Anzahl der gefundenen Vorgänge ist auf 100 beschränkt.
Verschiedenes
Zur Änderung des Passworts über das User-Profil (Button mit dem Usernamen unten links im Client) ist nun zusätzlich die Eingabe des alten Passworts erforderlich.




