Version 6.0.0
Wichtige Hinweise
docs365 documents ab Version 6.0 unterstützt für die Server-Installation kein Windows Server 2008 R2 mehr. Microsoft selbst hat den erweiterten Support für diese Windows-Version bereits am 14. Januar 2020 eingestellt.
Neue Oberfläche im Viewer
Die Oberfläche hat ein größeres Redesign erhalten. Archivieren- und Vorgangsdialog werden nun nicht mehr in einem virtuellen Fenster angezeigt, sondern legen sich direkt über die Tabellen-Ansicht.
Die Liste der Dokumente und die PDF-Vorschau werden nicht mehr nebeneinander angezeigt, sondern es gibt eine Listen-Ansicht (für die Dokumenten-Übersicht) und eine Viewer-Ansicht für die PDF-Vorschau, zwischen denen man beliebig wechseln kann. Insbesondere kann die PDF-Vorschau nun auch in der Tabellen-Ansicht aktiviert werden, sodass man den Inhalt der Dokumente betrachten kann, ohne den Vorgang öffnen zu müssen. Über das Zahnrad-Icon kann zwischen beiden Ansichten umgeschaltet werden. In der Viewer-Ansicht kann über den linken Button in der Titelzeile zwischen den Dokumenten gewechselt werden.
Die Breite des rechten Bereichs und die eingestellte Ansicht werden für die Tabellen-Ansicht und die Archivieren-/Vorgangsdialoge jeweils getrennt gespeichert. Somit ist es beispielsweise möglich, auch weiterhin die Dokumentenliste in der Tabellen-Ansicht und die PDF-Vorschau in den Dialogen anzuzeigen.
Im Archivieren-Dialog ist es durch diese Änderung nicht mehr möglich, in einem Schritt die Archivierung und Workflow-Funktionen durchzuführen. Das wurde jetzt mit dem Vorgangs-Dialog vereinheitlicht und ist nun ein zweistufiger Prozess:
Wenn man den Speichern-Button klickt, bleibt der Vorgang zunächst noch geöffnet, sodass man anschließend im Workflow-Menü die Funktionen auswählen kann, die man ausführen möchte.
Alternativ kann man über “Speichern und schließen” den Dialog auch direkt nach dem Speichern verlassen.
Formular-Editor
Bislang bestanden die Formulare in Archiven immer aus allen sichtbaren Datenfeldern untereinander, und zwar in der Reihenfolge, in der sie im Archiv konfiguriert sind.
Über den neuen Formular-Editor können nun für jedes Archiv eigene Formulare konfiguriert werden. Dafür gibt es in der Archiv-Konfiguration einen neuen Abschnitt “Formulare”, in dem diese angelegt werden können. Jedes Formular benötigt einen Namen, eines davon kann als “Aktiv” markiert werden und wird dann im Viewer verwendet (wenn es kein aktives Formular gibt, wird die alte Ansicht weiter verwendet). Über das Zahnrad-Icon kann der eigentliche Formular-Editor geöffnet werden.
Über das Menü können Datenfelder aus dem Formular versteckt und auch wieder hinzugefügt werden. Per Drag & Drop können die Datenfelder in eine andere Reihenfolge oder auch nebeneinander gebracht werden.
Die Breite der Beschriftung kann ebenfalls verändert werden, indem man mit dem Mauszeiger auf den linken Rand des angezeigten Datenfelds klickt und diesen Rand dann nach links oder recht verschiebt. Wenn der “Spalten-Modus” im Menü aktiviert ist, wird die Breite für alle Felder einer Spalte gleichzeitig verändert, ansonsten nur für das einzelne Datenfeld.
Wenn man auf ein Datenfeld klickt, können über den rechten Bereich Eigenschaften verändert werden (z.B. die Beschriftung umbenannt werden) oder Ereignisse konfiguriert werden (mehr dazu im nächsten Abschnitt).
Über die Vorschau kann man sich anzeigen lassen, wie das Formular dann im Viewer tatsächlich aussehen wird, außerdem können hier die Formular-Events getestet werden.
Formular-Events
Wenn man im Formular-Editor entweder auf das Formular oder auf einzelne Datenfelder klickt, können im rechten Bereich mit den Eigenschaften verschiedene Formular-Events konfiguriert werden.
Formular-Events werden in der neue Programmiersprache STAR geschrieben, die in einer separaten Dokumentation beschrieben wird. Sie können die Werte eines oder mehrerer Datenfelder veränderen und dabei beispielsweise Berechnungen durchführen oder mitgelieferte Funktionen aufrufen.
Im Formular gibt es folgende Ereignisse:
on_newWird serverseitig ausgeführt, wenn im Archivieren-Dialog die Vorgabe-Werte ausgefüllt werden.
on_saveWird serverseitig unmittelbar vor dem Speichern des Vorgangs ausgeführt.
on_smartindexingWird ausgeführt, nachdem Feldwerte durch SmartIndexing gesetzt wurden.
In einzelnen Datenfeldern werden folgende Events ausgeführt:
on_enterWenn das Datenfeld den Fokus bekommt.
on_changeWenn der Wert im Datenfeld sich ändert.
on_leaveWenn der Fokus das Datenfeld verlässt.
Neue Syntax und Funktionen in Workflow-Bedingungen
Die Bedingungen in Workflow-Übergangen verwenden statt der Syntax für Spaltenfilter nun die Syntax von Expressions der Programmiersprache STAR. Bestehende Bedingungen werden automatisch migriert. Dadurch können nun auch Funktionen verwendet werden.
Automatisches Befüllen von Datenfeldern
Im Archivieren-Dialog können Datenfelder nun abhängig von einem anderen Datenfeld über einen Lookup in einer Datentabelle oder einem Archiv automatisch ausgefüllt werden.
Angenommen, man hat zwei Datenfelder “Postleitzahl” und “Ort” und möchte, dass nach Eingabe der Postleitzahl automatisch der Ort befüllt wird. Dafür gibt es eine Datentabelle, die alle Postleitzahlen mit ihrem zugehörigen Ort enthält.
Man stellt dafür in den erweiterten Datenfeld-Optionen des Datenfeldes “Postleitzahl” in der Tabelle unter “Autofill” ein, welche anderen Felder anhängig von diesem Feld gefüllt werden sollen. In der Spalte “Datenfeld” muss also “Ort” ausgewählt werden und in “Nachschlag-Tabelle” die Tabelle, die die Postleitzahlen und Orte enthält.
Das Nachschlag-Feld gibt das Feld der Datentabelle an, in dem nach dem Wert dieses Feldes gesucht wird. Wird er gefunden, wird der Inhalt des Wert-Feldes in der Datentabelle zum Ausfüllen des anderen Feldes verwendet.
Rollenrechte für Datentabellen
In den Rollen können nun auch Rechte auf einzelne Datentabellen vergeben werden. Pro Datentabelle können die drei Optionen “Unsichtbar”, “Nur lesen” und “Vollzugriff” eingestellt werden. Rollen mit Administrator-Rechten haben weiterhin Vollzugriff auf alle Datentabellen.
Das Recht “Nur lesen” wird für den im nachfolgenden Abschnitt beschriebenen Lookup-Dialog benötigt.
Das Recht “Vollzugriff” wird von Dienstbenutzern benötigt, die über das neue Tool für Datentabellen-Import automatisch Datentabellen befüllen.
Lookup-Dialoge für Datentabellen
Wenn man in einem Datenfeld als Vorschlagsquelle eine Datentabelle eingestellt hat und der Benutzer mindestens Leserechte auf die Datentabelle hat, ist es nun möglich, den zu übernehmenden Wert durch eine Suche in allen Spalten der Datentabelle zu ermitteln.
Im Eingabefeld erscheint in diesem Fall ganz rechts ein Such-Icon. Wenn man es anklickt, wird ein Dialog geöffnet, der den Inhalt der Datentabelle anzeigt. Wenn man nun etwas im Suchfeld eingibt, wird in allen Spalten der Datentabelle nach dem eingegebenen Wert gesucht, Suchtreffer werden (wie bei der Schnellsuche im Archiv) hervorgehoben.
Die gewünschte Zeile unter den Suchtreffern kann man nun mit den Pfeiltasten oder der Maus auswählen. Ein Doppelklick oder Enter bestätigt die Auswahl, dann wird der Wert aus der in der Vorschlagsquelle eingestellten Spalte in das Datenfeld übernommen.
Gruppen-Postfächer
In der Workflow-Aktion “Vorgang versenden” kann ein Vorgang nun auch an eine Gruppe verschickt werden. Alle Anwender, die Teil der Gruppe sind, sehen den Vorgang dann in ihrem Postfach. Über die Aktion “Vorgang aus Postfach entfernen” kann der Vorgang anschließend durch einen Status-Übergang wieder aus dem Gruppenpostfach entfernt werden.
Wenn man in der Workflow-Aktion als Empfänger “Freie Auswahl” einstellt, werden dem Benutzer als Empfänger nur die Gruppen angeboten, bei denen mindestens ein Mitglied Zugriff auf Vorgänge mit dem Zielstatus hat.
Ein manuelles Hinzufügen an Gruppenpostfächer ist in dieser Version noch nicht möglich.
Tool für Datentabellen-Import
Über den Befehl pa_client.exe import können nun CSV-Dateien oder ODBC-Datenbank-Tabellen
automatisiert in Datentabellen importiert werden. Konfiguriert wird der Import über eine neue
Konfigurations-Datei import.ini im config-Verzeichnis.
In dieser INI-Datei wird pro Sektion ein Import definiert, darüber hinaus gibt es noch eine
besondere Sektion [DEFAULT], in der Vorgabe-Werte definiert werden, die für alle Sektionen
gelten:
[DEFAULT]
URL = https://documents.example.com/
Token = mJVEFmvHJFGeqhsmPoWzRkVgHI6X8K9g
[Kunden]
Type = odbc
Datatable = kunden
UseAlias = true
Clear = true
DSN = MYDSN
UID = phoenix
PWD = phnxqdrt
SQL = SELECT name, iban FROM kunden
[CSV]
Type = csv
FileMask = D:\Import\L*.csv|D:\Lieferanten\**\lieferant.csv
Datatable = kunden
Active=true
Decimal = ,
MoveCompleted = D:\Imported
Mapping = index
[CSV/Mapping]
name = 1
iban = 2
URLDie Basis-URL zum Server.
TokenDas Token des Dienstbenutzers, über den der Import durchgeführt wird.
TypeMögliche Werte sind
csvfür Importe aus lokalen CSV-Dateien oderodbcfür einen dynamischen Import aus einer Datenbank über eine ODBC-Datenquelle.DatatableDer Kurzname der Datentabelle, in die Importiert werden.
Es ist sinnvoll, Optionen wie URL und Token in die Sektion [DEFAULT] zu schreiben, da
diese in der Regel in allen Sektionen identisch sind. Es ist aber auch möglich, einzelne Imports zu
einem anderen Documents-Server durchzuführen, indem die URL in einer Sektion überschrieben wird.
Folgende Optionen sind optional:
ActiveWenn dieser Wert auf
falsegesetzt wird, wird die Sektion beim Import übersprungen.ClearWenn dieser Wert auf
truegesetzt wird, werden existierende Daten beim Import aus der Datentabelle gelöscht. Das gilt pro Sektion, d.h. wenn bei einem CSV-Import mehrere CSV-Dateien in einer Sektion in die gleiche Datentabelle importiert werden, wird diese nur einmalig geleert und anschließend alle CSV-Dateien gelöscht.UpdateOnEine durch Kommas getrennte Liste von Spalten-Kurznamen, anhand derer Zeilen der Datentabelle aktualisiert werden. Wenn ein existierender Wert der Datentabellen in allen hier angegeben Spalten einen mit einer zu importierenden Zeile identischen Wert hat, wird die vorhandene Zeile aktualisiert und keine neue hinzugefügt.
OnRowErrorWenn bei einem Import einzelne Zeilen nicht importiert werden können (z.B. weil das Datumsformat falsch ist), bestimmt diese Option, was passieren soll: Beim Wert
abort(Vorgabe) wird der gesamte Import abgebrochen und mit der nächsten Datei bzw. Sektion fortgefahren. Beiskipwird nur die fehlerhafte Zeile übersprungen.
Import-Typ csv
Importiert eine oder mehrere CSV-Dateien, die in einer Sektion alle das gleiche, konfigurierbare
Format haben müssen. Die Liste der zu importierenden Dateien wird in der Option FileMask
angegeben, die eine Dateimaske spezifiziert. Durch | getrennt können mehrere Dateimasken
angegeben werden, * ist ein Platzhalter für beliebiger Zeichen.
FileMask = D:\Import\L*.csv|D:\Lieferanten\*\lieferant.csv
In diesem Beispiel werden alle mit “L” beginnenden CSV-Datein im Verzeichnis D:\Import
importiert und darüber hinaus alle Dateien mit dem Namen lieferant.csv, die in einem
Unterzeichnis von D:\Lieferanten liegen (der *-Platzhalter kann auch für Unterverzeichnisse
stehen).
Die nachfolgenden Optionen haben die gleiche Auswirkung wie beim manuellen CSV-Import einer Datentabelle und definieren das Format der CSV-Datei:
DecimalDezimal-Trennzeichen (üblicherweise ein Komma für deutsche CSV-Dateien oder Punkt für englische). Vorgabe ist das Komma.
DelimiterFeld-Trennzeichen. Vorgabe ist das Semikolon.
QuotecharTextqualifizierer.
MappingMögliche Werte sind
indexundtitle(siehe unten). Wenn diese Option nicht konfiguriert ist, werden die Spalten der CSV-Datei den Datenfeldern genau in der Reihenfolge zugeordnet, wie sie in der Datentabelle konfiguriert sind.ModuleEin Python-Modul im Verzeichnis
customisation\csv, mit dem der Import detailliert angepasst werden kann.SkipGibt an, wie viele Zeilen am Anfang der CSV-Datei übersprungen werden sollen.
LimitLimitiert den Import auf die ersten n Zeilen der CSV-Datei. Sinnvoll zum Debuggen, um die Import-Optionen von großen CSV-Dateien zu testen, ohne dass sofort viele Zeilen importiert werden.
Darüber hinaus gibt es zwei Optionen, die einstellen, was mit erfolgreich importieren CSV-Dateien passieren soll:
MoveCompletedGibt ein existierende Verzeichnis an, in das erfolgreich importierte CSV-Dateien verschoben werden soll.
DeleteCompletedWenn diese Option auf
trueeingestellt ist, werden erfolgreich importierte CSV-Dateien sofort gelöscht. Diese Option wird ignoriert, wennMoveCompletedebenfalls konfiguriert ist.
Zuordnung von Spalten aus der CSV-Datei
Wenn in der Sektion eines CSV-Import die Option Mapping konfiguriert ist, muss in einer
Unter-Sektion [Sektionsname/Mapping] die Zurordnung konfiguriert werden.
Beispiel für die Option index:
[Lieferanten]
Type = csv
Mapping = index
...
[Lieferanten/Mapping]
name = 2
iban = 3
Hier werden die Werte aus der 2. Spalte der CSV in das Datenfeld mit dem Kurznamen name
importiert und die aus der 3. Spalte in das Feld iban. Da für die erste Spalte keine Zurordnung
konfiguriert, werden dessen Werte beim Import ignoriert.
Beispiel für die Option title:
[Lieferanten]
Type = csv
Mapping = title
...
[Lieferanten/Mapping]
name = Kunden-Name
iban = IBAN
Hier wird die erste Zeile der CSV dazu verwendet, die Zurordnung der Spalten anhand des Spalten-Titels automatisch zu ermitteln. Groß- und Kleinschreibung wird bei der Zurordnung des Titels ignoriert und nicht angegebene Spalten ignoriert.
Customisation-Skripte für CSV-Import
In der Option Module kann der Namen eines Python-Moduls angegeben werden, das sich im
Verzeichnis customisation\csv befindet. Dieses Modul muss eine Klasse Transformer enthalten,
die eine Methode transform enthält.
Die Klasse wird für eine Sektion nur einmal instantiiert, unabhängig von der Anzahl der Dateien. Die
transform-Methode wird für die originale CSV-Zeile aufgerufen, bevor eine Zuordnung anhand der
Mapping-Sektion durchgeführt wird.
class Transformer:
def transform(self, row, context):
# Gibt die Zeile unverändert zurück.
return row
Der Parameter row enthält eine CSV-Zeile (als Liste). context ist ein Objekt, das folgende
Attribute enthält:
lineDie aktuelle Zeilennummer (beginnend mit 1), um z.B. die erste Zeile gesondert zu behandeln.
filenameDen absoluten Pfad zur aktuell verarbeiteten CSV-Datein.
Die transform-Methode gibt eine Liste (die auch eine andere Länge haben kann) zurück, die die
modifizierte Zeile enthält. Wenn der Wert None zurückgegeben wird, wird die aktuelle Zeile beim
Import übersprungen.
Import-Typ odbc
Führt eine SQL-Abfrage über eine ODBC-Datenquelle aus und importiert das Ergebnis in eine Datentabellen.
Über die Parameter DSN (Pflichtfeld), UID, PWD, Server und Database wird die
ODBC-Datenquelle konfiguriert. Werte, die bereits direkt in der DSN konfiguriert sind, müssen hier
nicht noch zusätzlich angegeben werden. Auch diese Parameter können problemlos in der Sektion
[DEFAULT] konfiguriert werden.
Ebenfalls Pflicht ist die Option SQL, die das aufzurufende SQL-Statement konfiguriert.
Die UseAlias bestimmt, wie das Resultat der SQL-Abfrage ausgewertet wird. Wenn diese Option
fehlt werden die Datenfelder in der Datentabelle genau in der Reihenfolge in der Ergebnismenge des
SQL-Statements importiert: Angenommen, in einer Datentabelle in zwei Spalten mit den Kurznamen
lieferant und iban in genau dieser Reihenfolge konfiguriert. Es gibt eine SQL-Datenbank
Lieferanten, in der diese Felder aber Name und Konto heißen. Dann muss bei der
Feldauswahl im SELECT genau die Reihenfolge der Datentabelle abfragt werden:
SELECT Name, Konto FROM Lieferanten
Das folgende Statement würde die Werte jedoch in die falschen Spalten importieren:
SELECT Konto, Name FROM Lieferanten
Wenn man nun UseAlias=true einstellt, ist die Reihenfolge im SQL-Statement egal, stattdessen
muss für jede Spalte ein Alias angegeben werden, der dem Kurznamen in der Datentabelle entspricht:
SELECT Konto AS iban, Name AS lieferant FROM Lieferanten
Wenn ein Alias verwendet wird, der keinem Kurznamen einer Spalte in der Datentabelle entspricht, wird diese Spalte beim Import ignoriert.
Verschiedenes
Zahlenwerte werden nun rechtsbündig dargestellt.
In der Workflow-Aktion “Vorgang versenden” werden bei der Ausführung nur noch Benutzer zur Auswahl angeboten, die im Archiv auch das Recht auf den Ziel-Status des Übergangs haben.
Im Benutzer-Dialog kann ein Benutzer nun E-Mail-Benachrichtigungen für neue Postfach-Einträge deaktivieren.