Invoice Administrations-Handbuch
Diese Dokumentation erläutert die Verwendung der WEB-Konfigurationen auf der Administrations-Outbar. Die Konfigurations-Oberflächen wurden mit dem Vue.js Framework erstellt.
- Outbar 'Administration'
- Sub-Outbar "Allgemein"
- Einleitung
- Verbindungen
- Benutzer und Benutzergruppen
- Übersetzungen
- PropCache
- Tabellen Exportieren / Importieren
- Sub-Outbar "Invoice" - Workflow Konfiguration
- Sub-Outbar "Invoice" - Feld-Konfigurationen
- Kopf-Felder
- Positions-Felder
- Gentable-Schaltflächen
- Gentable Konfiguration
- Suchfelder
- Archiv-Zuordnung
- Parameter
- Zugriffsberechtigungen
- Stammdaten-Import (CSV-Import)
Outbar 'Administration'
Die Outbar "Administration" unterteilt sich in mehrere Sub-Outbars. Unterhalb der Sub-Outbar 'Allgemein' befinden sich die sehr allgemeinen Konfigurations-Ordner, welche für alle Lösungen (Invoice, Mailroom) gleichermaßen gelten. Die Sub-Outbar "Squeeze" wird standardmäßig ausgeliefert - wird aber nur benötigt, wenn auch Squeeze installiert wurde. Unter "Invoice" befinden sich die spezifischen Konfigurationen für den Rechnungs-Workflow. Projektspezifisch können weitere Sub-Outbars hinzugefügt werden. Der Aufbau der einzelnen Sub-Outbars kann je nach Versions-Stand minimal von dieser Dokumentation abweichen. Auch die Darstellung kann je nach Documents-Version abweichen.
Der folgenden Screenshots zeigen die klassische Documents5 Ansicht und die Ansicht mit dem "Design20".
Sub-Outbar "Allgemein"
In diesem Kapitel werden die Konfigurations-Ordner der Outbar "Allgemein" beschrieben.
Einleitung
Auf der Sub-Outbar "Allgemein" befinden sich die Lösungs-übergreifenden Konfigurationen, welche sowohl für Invoice als auch für Mailroom verwendet werden können. Hierzu gehört zum Beispiel die Benutzer-Konfiguration sowie die Übersetzungen und die PropertyCache-Konfiguration.
Verbindungen
Unterhalb "Verbindung" können diverse Verbindungen konfiguriert werden. Die wichtigste Verbindungs-Konfiguration ist die für den Table-Service. Der Table-Service liest und schreibt die Daten in die Datenbank-Tabellen. Ohne den Table-Service können die meisten Konfigurationen keine Daten anzeigen.
Die Table-Service Konfigurationsdateien befinden sich nach der Installation in der Documents-Installation unter "DEXPRO\TableService\". Die Konfiguration der korrekten Verbindungsdaten wird bereits in der Installations-Anleitung beschrieben. Aktuell kann über die WEB-Konfiguration lediglich die Table-Service URL konfiguriert werden. Über den Button "Table Service" kann die Verbindung getestet werden.
Die Datenbankverbindungen für die Workflow-Skripte werden in der Datei "dbConn.json" gespeichert, welche sich direkt unterhalb des "DEXPRO"-Ordners befindet. Für diese Datei existiert aktuell noch keine WEB-Konfiguration. Die Einrichtung dieser Datei wurde ebenfalls bereits in der Installations-Anleitung beschrieben.
Die Verbindung zu Squeeze wird ausführlich in einer separaten Dokumentation beschrieben.
Benutzer und Benutzergruppen
Über die WEB-Konfiguration für die Benutzer und Benutzergruppen können sowohl Benutzer als auch Zugriffsprofile über die WEB-Konfiguration erstellt und angepasst werden. Es gibt einen Ordner für die Benutzer und einen Ordner für die Benutzergruppen.
Die Konfigurations-Ordner für die Benutzer und Benutzergruppen wurden aus der Contract-Lösung adaptiert. Die Mappentypen "otrUser" und "otrAccessProfile" wurden hierfür übernommen - die hinterlegten Skripte wurden jedoch durch eigene Skripte ersetzt. Falls auf demselben System bereits ein Contract installiert ist oder installiert werden soll, müssen die Original-Mappentypen und die Original-Skripte und Ordner verwendet werden!
Bei einer aktiven LDAP-Anbindung sind diese Ordner überflüssig bzw. können nur für die nicht synchronisierten Objekte verwendet werden.
Über benutzerdefinierte Aktions-Buttons können zum einen neue Benutzer (oder Benutzergruppen) erstellt werden oder es werden die Benutzer-Daten aus Documents mit den Benutzer-Mappen synchronisiert. Bei den Benutzern ist darauf zu achten, dass die Angabe der Mail-Adresse ein Pflichtfeld am Mappentypen "otrUser" ist! Auch bei den technischen Benutzer muss eine gültige Mail-Adresse hinterlegt sein!
Benutzer
Über die Aktionsliste bei der Benutzer-Konfiguration können persönliche Ordner für alle Benutzer ausgeblendet werden oder mit Icons versehen werden. Für den Invoice-Standard werden zum Beispiel die Ordner "Gesendet", "Versendung beendet" und "In Arbeit" nicht benötigt und führen in der Anwender-Schulung zu unnötigen Fragen. Die Icons neben den persönlichen Ordnern können je nach Wunsch des Kunden gesetzt werden. Beim "Design20" haben die Icons zum Beispiel keine Auswirkung. Die zur Verfügung stehenden "entypo" Bilder befinden sich unterhalb der Documents-Installation im Ordner "doc". Die "entypo.zip" muss entpackt werden und im neuen Ordner "entypo" muss die "index.html" mit einem Browser geöffnet werden.
Über die Benutzer-Akten können die wichtigsten Benutzer-Einstellungen gesetzt werden. Beim Speichern werden die Daten zurück an den Benutzer übertragen. Über das Status-Icon am Benutzer ist schnell sichtbar welche Benutzer abwesend sind oder welche Benutzer gesperrt wurden
.
Bei abwesenden Benutzern wird in der Mappenansicht der Button "Benutzer anwesend setzen" eingeblendet. Über den Button wird die Abwesenheitseinstellung direkt wieder aufgehoben.
In der Aktions-Liste zum Benutzer befinden sich weitere benutzerdefinierte Aktionen. Über "Passwort ändern" kann zum Beispiel ein initiales Passwort gesetzt werden oder ein vergessenes Passwort kann auf ein Standard-Passwort zurückgesetzt werden. Die Abwesenheits-Einstellung umfasst auch den Zeitraum der Abwesenheit und die Abwesenheitsmitteilung. Über die Einstellung "E-Mails sammeln" können die Uhrzeiten ausgewählt werden, zu denen die Sammel-Mails versendet werden. Die Sammel-Mails betreffen die Documents-Standard-Mails bei einem neuen Posteingang und haben keinen Einfluss auf die Invoice-spezifischen Eskalations-Mails! Bei abwesenden Benutzern können die Mappen aus dem Posteingang delegiert werden.
Benutzergruppen
Bei den Benutzergruppen kann neben der Benutzer-Zuordnung lediglich die Übersetzung in den unterschiedlichen Sprachen angegeben sowie eine Beschreibung der Verwendung angegeben werden.
Im Folgenden werden die im Standard ausgelieferten Gruppen genauer erläutert. Die Benutzer der Gruppe "Invoice" erhalten Mappenrechte am Mappentypen "Invoice". Alle Benutzer die am Rechnungs-Workflow teilnehmen müssen der Gruppe "Invoice" zugeordnet werden! Spezifischere Zugriffsrechte werden durch ein GACL-Feld gesteuert.
Die Gruppe "TechAccessProfile" wird im Workflow an Stelle von einem Signaleingang verwendet, wenn Mappen länger auf weitere Verarbeitung warten. Die Gruppe sperrt die Mappe im Workflow. Bei den Signaleingängen findet die Überprüfung auf die Weiterleitung alle 5 Minuten statt. Bei der Umsetzung über die sperrende Mappe kann passend abgestimmtes Job-Skript zu definierten Zeitpunkten ausgeführt werden. Ein weiterer Vorteil ist, dass der Wartezustand einfacher unterbrochen werden kann und während ein Signaleingang nur einen ausgehenden Kontrollfluss hat kann die Weiterleitung bei einer sperrenden Gruppe über beliebige ausgehende Kontrollflüsse erfolgen. Der Gruppe dürfen nur rein technische Benutzer wie der hinterlegte Job-Benutzer oder der Import-Benutzer zugeordnet werden!
Bei Fehlern im Workflow-Verlauf wird die Gruppe "WorkflowError" angesprochen. Technisch wird in der Aktion das gleichnamige Feld angesprochen und die Vorbelegung für das Feld ist ebenfalls "WorkflowError". Über die User-Exit-Funktionen kann der Feldwert manipuliert werden, um zum Beispiel unterschiedliche Gruppen pro Mandant anzusteuern. Der Gruppe "WorkflowError" sollten Support-Benutzer mit technischem Hintergrundwissen zugewiesen werden. Die Gruppe wird zuständig, wenn Skript-Fehler aufgetreten sind. Die Benutzer dieser Gruppe sehen am Invoice-Mappentypen zusätzliche Feld-Register mit technischen Feldwerten. Benutzer dieser Gruppe sollten initiale GACL-Berechtigungen erhalten.
Etwas spezifischer verhält es sich bei der Gruppe "WorkflowRulesError". Diese Gruppe wird angesteuert, wenn Fehler bei der Workflow-Regel-Ermittlung aufgetreten sind. Auch hier erfolgt die Zuordnung über das gleichnamige Feld mit der Vorbelegung "WorkflowRulesError". Fehler bei der Workflow-Regel-Ermittlung treten in der Regel auf, wenn für eine Mappe keine passende Workflow-Regel gefunden werden konnte - also wenn eine spezifische Workflow-Regel für die aktuelle Mappe fehlt. Benutzer dieser Gruppe sollten Zugriff auf die Workflow-Regeln haben und die Gruppe sollte initiale GACL-Berechtigungen an allen Mappen erhalten. Benutzer dieser Gruppe sehen am Mappentypen Invoice das zusätzliche Feld-Register "Workflow" mit technischen Feldwerten.
Die Workflow-Regeln und weitere Konfigurationen befinden sich auf der Administrations-Outbar. Zugriff auf diese Outbar haben Benutzer der Gruppe "Administration". Projektspezifisch können Benutzer mit Administrations-Berechtigung auch einige spezielle benutzerdefinierte Aktionen wie den Workflow-Neustart oder die Übernahme sehen.
Die Gruppe "Validierung" kann in den Workflow-Regeln für die Validierung verwendet werden.
Die Geschäftsführung ("BusinessManagement") soll in der Regel initiale GACL-Zugriffsberechtigungen erhalten und kann bei den Workflow-Regeln für die finale Freigabe verwendet werden.
Übersetzungen
Übersetzungen können in Documents mit der Schreibweise "de:Deutscher Anzeigewert;en:English label" angegeben werden. Alternativ können sogenannte properties-Dateien verwendet werden. Bei der Verwendung der properties-Dateien wird lediglich ein Text im Format "pf:TechnischerWert" angegeben. Der Anzeigewert wird aus einer properties-Datei ermittelt. Für jede Sprache existiert eine Datei mit demselben Namens-Aufbau - wie zum Beispiel "DEXPRO_%lang%.properties", wobei das "%lang%" jeweils durch die gültigen Sprach-Abkürzungen ("de", "en") ersetzt wird.
Der Vorteil bei der Verwendung der properties besteht darin, dass neue Sprachen relativ einfach hinzugefügt werden können. Die bestehenden Anzeigewerte müssen nicht mühselig gesammelt werden, sondern befinden sich bereits gesammelt in einer Datei. Sobald Werte hinzukommen muss jedoch pro Sprache eine Datei angepasst werden. Wenn nicht extrem sorgfältig gearbeitet wird, dann entsteht schnell ein Schiefstand zwischen den Dateien. Zudem bleibt der große Nachteil bei projektspezifischen Anpassungen für den Kunden. Nach einem Update müssen die projektspezifischen Anpassungen mit sehr hohem Aufwand manuell wieder hergestellt werden.
Die WEB-Konfiguration für die Übersetzungen bietet eine Lösung für die genannten Problemstellungen. Die Übersetzungen werden nebeneinander angezeigt und müssen nicht aufwändig zusammen gesucht werden. Projektspezifische Anpassungen können durch einen Klick als solche markiert werden und werden bei einem Update nicht überschrieben.
Die Einträge aus den properties-Dateien werden hierzu in Datenbank-Tabellen geschrieben. Der technische Name steht in der Spalte "Name" und jede Übersetzung wird in einer separaten Spalte angezeigt. Durch eine gesetzte Checkbox "Projektspezifische Anpassung" werden die gesetzten Einträge beim Import nicht überschrieben. Hinzu kommen die Spalten "Applikation", "Typ" und "Unterkategorie".
Applikation
In der Spalte "Applikation" kann zwischen den einzelnen Software-Komponenten unterschieden werden. Der Großteil der properties-Dateien wird für die Documents-Oberflächen benötigt und werden durch den Eintrag "Documents" gekennzeichnet. Weitere properties-Dateien werden für die Konfigurations-Seiten selber verwendet. Die Konfigurationen wurden mit dem Framework Vue.js erstellt und die zugehörigen properties-Dateien wurden der Applikation "Vue" zugeordnet.
Typ
Für unterschiedliche Bereiche wurden zur Abgrenzung unterschiedliche properties-Dateien erstellt. Jedem properties-Aufbau wird ein Typ zugeordnet. In dem Unterordner "Properties" können die einzelnen Zuordnungen der properties-Dateien eingesehen werden. Jeder Typ muss einer Applikation zugeordnet sein und jeder Typ enthält einen technischen Namen als eindeutige ID.
Der Dateipfad kann entweder komplett als String oder durch vorgegebene Abkürzungen angegeben werden. Kombinationen sind nicht möglich! Folgende Abkürzungen sind definiert und verweisen auf folgende Pfade innerhalb der Documents-Installation:
%DocumentsLocale% ...\server\locale\
%DexproLocale% ...\DEXPRO\Locale\
%GentablePath% ...\DEXPRO\Gentable\
Vorhandene Einträge können über das Stift-Icon bearbeitet werden. Über die Mülltonne
können bestehende Einträge gelöscht werden. Durch einen Doppelklick auf einen Eintrag öffnet sich die Ansicht mit den bereits gefilterten properties-Einträgen. Über den Eintrag in der Kopfleiste kann wieder zurück in die ursprüngliche Ansicht gesprungen werden.
Die von Documents ausgelieferten properties-Dateien eignen sich nicht für die Verwendung mit dieser WEB-Konfiguration. Das liegt zum einen daran, dass in den Dateien immer wieder Sonderfälle wie Zeilenumbrüche und ähnliche Sonderfälle zu berücksichtigen sind und zum anderen liegt es daran, dass die hier verwendete Logik Unterkategorien unterstützt.
Unterkategorie
Die properties-Einträge können in Unterkategorien gruppiert werden, was bei der Suche nach spezifischen Einträgen eine enorme Hilfe darstellt. Die Unterkategorien werden beim Export in die properties-Dateien als Kommentar geschrieben.
Aus den properties-Dateien in die Datenbank schreiben 
Bei der Installation oder bei einem Produkt-Update werden gegebenenfalls aktualisierte properties-Dateien ausgeliefert. Um eine properties-Datei aus dem Dateipfad in die Datenbank einzulesen kann der Button mit der Wolke und dem Pfeil nach unten verwendet werden. Beim Einlesen wird nach Dateien mit passendem Dateiaufbau gesucht. Befindet man sich im Sub-Ordner "Properties" in einer spezifischen Ansicht, dann werden auch nur die passenden properties-Dateien ausgelesen. Wenn man sich in der globalen Ansicht befindet werden in jedem Fall alle properties ausgelesen (auch wenn Such-Filter gesetzt wurden!).
Die Verarbeitung prüft zunächst für jeden technischen Wert, ob bereits ein Eintrag besteht. Wenn noch kein Eintrag besteht wird ein Insert ausgeführt. Wenn bereits ein Eintrag besteht wird geprüft, ob der Haken "Projektspezifische Anpassung" gesetzt wurde. Wenn der Haken gesetzt wurde wird nur ein Update ausgeführt, wenn der Wert in der Datenbank leer oder NULL ist. Somit werden die projektspezifischen Anpassungen in der Datenbank nicht überschrieben und alle Datenbank-Einträge die nicht in den properties-Dateien vorkommen bleiben ebenfalls bestehen. Nach einem Export aus der Datenbank heraus enthalten die neu erstellten properties-Dateien alle neuen Einträge samt aller projektspezifischer Anpassungen!
Nach der Verarbeitung wird ein eine Rückmeldung in Form eines HTML-Pop-Ups ausgegeben.
Aus der Datenbank in die properties-Dateien schreiben 
Anpassungen sollten immer über die WEB-Oberfläche vorgenommen werden und Anpassungen sollten immer mit der Checkbox "Projektspezifische Anpassung" versehen werden, damit die Änderungen nicht überschrieben werden. Beim Schreiben der properties-Dateien wird die bestehende Datei mit einem Zeitstempel versehen und in einen Backup-Ordner im selben Pfad verschoben. Die Werte werden nach der Unterkategorie und nach technischem Namen sortiert in die properties geschrieben. Die Unterkategorien werden als Kommentare festgehalten.
Damit nicht immer alle properties-Dateien neu erstellt werden bietet es sich an die Anpassung über den Unter-Ordner "Properties" in der spezifischen Ansicht vorzunehmen, denn hier werden beim Export nur die zum spezifisch ausgewählten propertie neu geschrieben.
Am Ende der Verarbeitung wird ein "context.reloadCurrentPrincipal(true)" ausgeführt, um die properties direkt zu laden. Zudem wird eine Rückmeldung in Form eines HTML-Pop-Ups ausgegeben. Je nachdem wo der angepasst Wert angezeigt wird wirkt sich die Anpassung entweder direkt oder erst nach einer Neu-Anmeldung oder erst nach einem Neustart von Documents samt Tomcat aus.
PropCache
In Documents können häufig verwendete Daten in einen Cache geladen werden. Hierdurch wird die Performance deutlich gesteigert. Der Ordner listet lediglich 2 Buttons zur Anzeige und zum Löschen eines bestehenden PropCache. Die propCache-Werte werden automatisch erstellt, sobald ein Skript zum ersten Mal auf den Cache zugreift. Die jeweiligen Cache werden automatisch gelöscht, sobald über die Konfigurationen Anpassungen vorgenommen werden.
Property Cache löschen
Property Cache anzeigen
Die Anzeige des propCache-Wertes kann für den Support hilfreich sein, um ein bestimmtes Verhalten besser nachvollziehen zu können. In der Regel werden die propCache-Werte als JSON-String gespeichert. Dieser wird in einem HTML-Pop-Up angezeigt.
Tabellen Exportieren / Importieren
Die Tabellen der Konfigurations-Datenbank "DEX_Workflow" können über eine Konfiguration Exportiert und wieder importiert werden. Nicht alle Tabellen eignen sich jedoch für diesen Übertragungs-Weg, da beim Import neue Spalten-ID erzeugt werden.
Export
Über den Unterordner Export können einzelne oder alle Tabellen exportiert werden. Die WEB-Konfiguration zeigt alle Tabellen der Datenbank "DEX_Workflow" an. Die Export-Dateien werden im Documents-Verzeichnis unter "DEXPRO\JsonExport\" im JSON-Format abgelegt. Eine Export-Datei enthält den Aufbau der Tabelle sowie die Daten.
Import
Bei der Invoice-Installation müssen bereits einige der JSON-Dateien importiert werden. Die Dateien müssen sich im Ordner "DEXPRO\JsonImport\" befinden. In der WEB-Konfigurations-Oberfläche werden nur die vorhandenen JSON-Dateien angezeigt. Beim Import werden alle Daten gelöscht und neu geschrieben und dabei ändern sich die Auto-Inkrement-Werte! Falls Abhängigkeiten über diese ID gebildet werden (z. B. bei Sub-Workflow-Regeln), dann eignet sich dieser Import nicht für die Übertragung der Tabelle!
Sub-Outbar "Invoice" - Workflow Konfiguration
Dieses Kapitel beschreibt die Workflow-Konfigurationen. Das Invoice-Template wird mit einem Standard-Workflow ausgeliefert, welcher über diese Konfigurationen gesteuert wird.
Visio Workflow
Der Invoice-Mappentyp wird zusammen mit dem Workflow "WorkflowRules" ausgeliefert, welcher über das Visio-Plugin erstellt wurde. Der Workflow enthält keine Sub-Workflows. Der Workflow startet oben mittig und verläuft entgegen dem Uhrzeigersinn immer im Kreis. Der Verlauf kann zum einen über die Workflow-Konfiguration bestimmt werden. Zum anderen bieten die im Workflow hinterlegten Skripte User-Exits, um Feldwerte an der Mappe zu manipulieren.
Initiales Skript
Der Workflow startet mit einem initialen Skript-Aufruf. In dem Skript werden die initialen Berechtigungen gesetzt und falls es noch keine Rechnungsposition gibt wird eine initiale Rechnungsposition erstellt. Über die User-Exit Funktion "ue_Initialization()" kann beliebiger weiter Code ausgeführt werden. Das initiale Skript wird nur einmalig ausgeführt. Alle folgenden Abschnitte werden bis zum Workflow-Ende in jedem Durchlauf immer wieder ausgeführt.
Workflow-ID und Workflow-Aktion ermitteln
Zunächst wird eine eindeutige Workflow-ID ermittelt. Pro Workflow-ID können völlig unterschiedliche Abläufe definiert werden. Im Anschluss wird die Folge-Aktion zur bisherigen Aktion ermittelt. Die Workflow-Aktionen werden sequentiell abgearbeitet. Wenn noch keine Workflow-Aktion definiert ist wird die initiale Workflow-Aktion zur Workflow-ID ermittelt.
Die zugeordnete Workflow-ID kann im Laufe des Workflows wechseln. Wenn die Workflow-ID wechselt, dann wird geprüft ob die bisherige Workflow-Aktion auch im neuen Workflow vorkommt. Falls dem so ist startet der neue Workflow mit der Folge-Aktion zur alten Aktion und andernfalls startet der neue Workflow mit der ersten Aktion.
Einige für die Workflow-Steuerung relevanten Angaben werden direkt an der Aktion gehalten. Alle Informationen werden als JSON-String in das Feld "ActionInfoJSON" geschrieben, um Datenbankzugriffe zu vermeiden. Der Nachteil ist, dass sich Anpassungen bei der Workflow-Aktions-Konfiguration nicht direkt auswirken können.
Bei den Workflow-Aktionen wird zwischen technischen Aktionen und Aktionen, bei denen ein Benutzer oder eine Gruppe aktiv etwas bearbeiten muss. Rein technische Aktionen sind zum Beispiel die Archivierung oder die Buchungsschnittstelle.
Bei der Ermittlung der Aktion wird kein User-Exit angeboten. Bei einem Skript-Fehler wird die im Feld "WorkflowError" hinterlegte Gruppe angesprochen. Die Vorbelegung für das Feld ist "WorkflowError". Die dort hinterlegte Gruppe wird bei allen Workflow-Fehlern ausgenommen bei der Workflow-Regel-Ermittlung angesprochen.
Workflow-Regeln ermitteln
Über die Workflow-Regeln werden Benutzer oder Gruppen der Workflow-Aktion zugeordnet. Für technische Aktionen müssen keine Workflow-Regeln gepflegt werden. Nach der Benutzer-Ermittlung wird das User-Exit "ue_CheckWorkflowRules()" aufgerufen. Über diese Funktion können die Worfklow-Regel-Ergebnisse nachträglich manipuliert werden.
Falls keine Workflow-Regel ermittelt werden konnte wird die im Feld "WorkflowRulesError" hinterlegte Gruppe angesprochen. In der Standard-Auslieferung ist die gleichnamige Gruppe "WorkflowRulesError" am Feld hinterlegt.
Technische Aktion
Im Folge-Schritt wird die aktuell hinterlegte Workflow-Aktion geprüft, ob es sich um eine technische Aktion handelt. Bei den technischen Aktionen werden 2 Skripte in Abfolge ausgeführt. Für die mit dem Standard ausgelieferten technischen Aktionen sind bereits fertige User-Exit-Funktionen im Skript "DEXPRO__UserExit_TechActionLib" vorhanden.
Für projektspezifische technische Aktionen muss die Funktion "ue_TechSendControlFlow()" verwendet werden. Nach der ersten Skriptausführung wird über die Funktion "ue_TechActionDecision()" entschieden, ob nachfolgend eine direkte weitere Skriptausführung stattfindet oder ob die Rechnungs-Akte bei der technischen Gruppe "TechAccessProfile" abgelegt wird und durch ein Job-Skript weiter verarbeitet wird. Die Archivierung kann zum Beispiel direkt erfolgen oder kann über einen Job geplant zu einem definierten Zeitpunkt ausgeführt werden. Für die über einen Job ausgeführte Weiterleitung muss ein separates projektspezifisches Skript erstellt werden und für die direkte Ausführung muss die Funktion "ue_ReceiveSignal2()" angepasst werden.
Workflow-Aktionen für Benutzer / Gruppen
Über die Workflow-Regeln wird der Workflow-Aktion ein Benutzer bzw. eine Gruppe zugeordnet. Über die Konfiguration der Workflow-Aktion ergeben sich zusätzliche Informationen, ob Benutzer oder Gruppen zum Beispiel lediglich informiert werden sollen oder ob die Gruppe die Mappe als Gruppe sperrt oder ob die Gruppe vorab aufgelöst werden soll oder ob die Rechnungs-Akte direkt im Bearbeitungs-Modus gestartet werden soll oder ob die Mailversendung für die Benutzer unterdrückt werden soll. Neben weiteren Konfigurationen kann auch die Beschriftung des Buttons zum Abschluss der Aktion gesetzt werden. Über die User-Exit Funktion "ue_BeforeUserAction()" kann beliebiger Code vor dem Routing zum Workflow-Schritt ausgeführt werden.
Über die gesammelten Informationen routet der Workflow die Akte zum entsprechend passend konfigurierten Visio-Workflow-Schritt. Für die passende Anzeige der Kopffelder wird das "decreaseFieldRightOnFileViewScript" mit dem Namen "Invoice_DF_DecreaseFieldRightOnFileViewScript" ausgeführt und greift dabei auf die WEB-Feld-Konfiguration zu. Über die Eigenschaft "gentableDefScriptName" wird der Aufbau der Rechnungspositionen ebenfalls komplett über die WEB-Konfiguration gesteuert.
Wenn die Akte durch eine Gruppe gesperrt wird kann ein Benutzer aus der Gruppe die Bearbeitung der Mappe übernehmen. Die Rechnungs-Akte wird zu einem anderen Workflow-Schritt weitergeleitet, in der der Benutzer die Rechnungs-Akte exklusiv sperrt. Der Anwender kann den Beleg wieder zurück in den Gruppenkorb legen.
Die Invoice-Lösung wird mit diversen benutzerdefinierten Aktionen ausgeliefert. Das User-Exit Skript "Invoice__UserExit_DF_ShowUserDefinedActions" zur Anzeige-Steuerung der benutzerdefinierten Aktion wird unverschlüsselt ausgeliefert, damit projektspezifische Anpassung einfach vorgenommen werden können. Zur Verfügung steht zum Beispiel die benutzerdefinierte Aktion zur Weiterleitung an eine Gruppe oder an einen anderen Benutzer oder für die Rückfrage oder zum Zrücksenden an vorangegangene Aktionen sowie diverse Aktionen mit unterschiedlichen Beschriftungen zum Abschluss der Workflow-Aktion.
Beim Speichern und bei Abschluss der Aktion werden verschlüsselte Prüf-Skripte ausgeführt. Einige Prüfungen können über die Parameter-Steuerung ein- und ausgeschaltet werden. Im Skript "Invoice__UserExit_DocFileLib" können über die User-Exit Funktionen "ue_OnSave_Start()" und "ue_OnSave_End()" weitere projektspezifische Prüfungen am Start bzw. am Ende des Speicher-Vorgangs einer Rechnungs-Akte ausgeführt werden. Und im Skript "DEXPRO__UserExit_WorkflowLib" können beliebige projektspezifische Prüfungen beim Abschluss einer Aktion vor den Standard-Prüfungen über die Funktion "ue_OnActionEnd_Start()" bzw. nach Abschluss der Standard-Prüfungen über die Funktion "ue_OnActionEnd_End()" ausgeführt werden.
Prüfung Workflow-Ende
Nach Abschluss einer Aktion wird geprüft, ob es sich um die letzte Workflow-Aktion zur Workflow-ID handelt. Wenn es sich nicht um die letzte Workflow-Aktion handelt verläuft der Workflow weiterhin im Kreis und es wird im nächsten Schritt wieder die Folge-Aktion ermittelt. Wenn es sich um die letzte Workflow-Aktion handelt wird die User-Exit Prüf-Funktion "ue_CheckFileDataAtTheEndOfTheWorkflow()" aufgerufen. Am Workflow-Ende sollte jede Rechnungs-Akte archiviert worden sein - daher wird die Rechnungs-Akte zum Beispiel auf einen gültigen Archiv-Schlüssel geprüft. Zudem wird der Buchungs-Status der Mappe geprüft.
Bei der Konfiguration der Workflow ID kann definiert werden ob die Rechnungs-Akte am Ende des Workflows einfach liegen bleibt oder versiegelt wird oder gelöscht wird.
Workflow Konfigurationen
Über die Konfiguration "Workflow Konfiguration" können einige Definitionen gesetzt werden, welche nur sehr selten geändert werden sollen. In der Regel wird im Invoice-Standard das Gentable zur Darstellung der Rechnungs-Positionen verwendet. Der zweite Eintrag "Ungültige Einträge ignorieren" bezieht sich auf die Workflow-Regeln. Über den Parameter können auch ungültige Angaben für Benutzer oder Gruppen zugelassen werden um diese Angaben im Anschluss über die User-Exit Funktion auf korrekte Werte zu manipulieren.
In der Standard-Auslieferung werden bei den Workflow-Regeln bis zu 3 Prüf-Feldwerte pro Regel angezeigt. Bei Bedarf können bis zu 10 Prüf-Felder pro Regel angezeigt werden. Workflow-Regeln können zudem über Gültigkeitszeiträume zeitlich eingeschränkt werden. Hierüber können zum Beispiel geplante Abwesenheiten umgesetzt werden. Bei der Ermittlung der Workflow ID können bis zu 5 Felder geprüft werden.
Auch wenn es die Konfiguration zulässt: die Einträge dürfen nur angepasst werden und dürfen nicht gelöscht werden!
Workflow Aktionen
In der Standard-Auslieferung werden die gängigsten Workflow-Aktionen für die Rechnungs-Verarbeitung mit ausgeliefert. In der ersten Ansicht werden lediglich die Workflow-Aktionen angezeigt und es wird angezeigt ob es sich um eine technische Aktion oder um eine Aktion mit Benutzer-Interaktion handelt.
Durch einen Klick auf das Stift-Symbol oder durch einen Doppelklick auf die Zeile kann ein bestehender Eintrag geändert werden und über den Button "Neuer Eintrag" kann eine projektspezifische Aktion erstellt werden. Eine Workflow-Aktion besteht aus einem technischen Namen und aus Anzeige-Werten pro definierter Sprache. Zudem kann der Aufgaben-Text pro Sprache festgelegt werden. Die Übersetzungen werden beim Speichern im Hintergrund in die properties-Dateien geschrieben.
Technische Aktion
Bei einer technischen Aktion wird initial ein Portal-Skript ausgeführt. Für die ausgelieferten technischen Aktionen werden separate User-Exit Funktionen im Skript "DEXPRO__UserExit_TechActionLib" ausgeliefert. Bei den projektspezifischen technischen Aktionen muss die Funktion "ue_TechSendControlFlow()" verwendet werden. Bei einem Fehler bei der Ausführung wird die im Mappenfeld "ActionAccessProfile" hinterlegte Gruppe angesprochen. Im Standard wird in dem Feld die Gruppe "WorkflowError" eingetragen. Die zuständige Gruppe kann über den Parameter "TechActionError" angepasst werden oder über die spezifischen UserExit-Funktionen (DEXPRO__UserExit_TechActionLib). In der UserExit-Funktion "ue_Post()" wird der Wert zum Beispiel gesetzt. Die UserExit-Funktionen werden nach der Parameter-Auswertung ausgeführt und würden den Parameter-Wert überschreiben!
Über die Angabe "Ausführende Aktion" wird entschieden was im Anschluss passieren soll. Über den Eintrag "Job" läuft die Rechnungs-Akte in einen Workflow-Schritt und wird durch die Gruppe "TechAccessProfile" gesperrt. Dies wird zum Beispiel bei der Job-gesteuerten Archivierung verwendet. Die Belege werden über einen Portal-Job weiter verarbeitet. Über die Auswahl "Keine" wird der Beleg direkt zur nächsten Workflow-Aktion weitergeleitet. Über "Signal" läuft der Beleg in einen Signaleingang. Beim Signaleingang ist ein Skript hinterlegt, welches die User-Exit Funktion "ue_ReceiveSignal2()" aufruft. Die nachfolgende Funktion kann über die User-Exit-Funktion "ue_TechActionDecision()" manipuliert werden. Wenn eine Rechnung mit Bestellbezug auf einen vorhandenen Wareneingang geprüft wird muss Sie zum Beispiel nur auf einen Wareneingang warten, wenn noch kein Wareneingang vorliegt. Andernfalls soll die Rechnungs-Akte direkt zur nächsten Aktion weitergeleitet werden.
Workflow-Aktion mit Benutzer-Interaktion
Bei diesen Aktionen müssen über die Workflow-Regeln Benutzer oder Gruppen zugewiesen werden. An einer Visio-Workflow-Aktion können diverse Einstellungen vorgenommen werden. Damit möglichst viele Einstellungsmöglichkeiten in eine WEB-Konfiguration ausgelagert werden können muss der Workflow möglichst viele Konfigurations-Möglichkeiten enthalten. Aufgrund der Vielzahl der Möglichkeiten kann jedoch nur aus einer Auswahl an Konfigurationen ausgewählt werden. Es wurden die gängigsten Konfigurationen zusammengestellt.
Über die Auswahl "Benutzerinteraktion" muss zunächst entschieden werden, ob der Benutzer aktiv in die Verarbeitung involviert wird oder ob der bzw. die Benutzer lediglich informiert werden sollen. Bei der reinen Information wird die Rechnungs-Akte lediglich in den Posteingang abgelegt und alle weiteren Konfigurations-Optionen werden ausgeblendet. Der Anwender erhält je nach Benutzer-Konfiguration eine Info-Mail zum neuen Posteingang. Der Workflow der Rechnungs-Akte läuft direkt weiter zur nächsten Workflow-Aktion.
Über den Eintrag "Aktion ausführen" können Einstellungen für die Zuordnung einer Gruppe (Zugriffsprofil) sowie für die Zuordnung eines Benutzers konfiguriert werden. Die Zuordnung erfolgt technisch über die Felder "ActionAccessProfile" und "ActionUser". Die Aktions-Liste und die Kopier-Liste werden immer in allen Aktionen angezeigt.
Workflow-Aktion abschließen
Zum Abschluss der Workflow-Aktion wird dem Benutzer ein Button angezeigt. Im Visio-Workflow wurden an allen Aktionen je 5 ausgehende Kontrollflüsse zum Abschluss der Aktion angebracht. Die Kontrollflüsse unterscheiden sich jeweils in der Navigation (Mappe beibehalten / Nächste Mappe / Zur Übersicht / Zum Eingangsordner / Aktueller Ordner). Es wird maximal einer dieser Kontrollflüsse als Button angezeigt. Die Beschriftung ist jeweils "Aktion abschließen". Um passendere Beschriftungen pro Workflow-Aktion zu ermöglichen wurden diverse benutzerdefinierte Aktionen erstellt, welche die Rechnungs-Akte automatisch über den konfigurierten ausgehenden Kontrollfluss senden. Diese unterscheiden sich größtenteils nur durch die Beschriftung. Projektspezifisch können eigene benutzerdefinierte Aktionen erstellt werden.
Beim Abschluss einer Aktion werden Standard-Prüfungen ausgeführt, welche um eigene Prüfungen in den User-Exit Funktionen erweitert werden können.
Zugriffsprofil
Bei der Bearbeitung durch eine Gruppe muss zunächst festgelegt werden, ob die Bearbeitung durch ein Gruppenmitglied oder durch alle Gruppenmitglieder erfolgen soll. Für die Verarbeitung durch alle Gruppenmitglieder enthält der Workflow lediglich 2 Aktionen. Einmal öffnet sich die Akte direkt im Bearbeitungs-Modus und einmal im Ansicht-Modus. Die Rechnungs-Akte wird jeweils im Posteingang abgelegt und die Mail-Versendung wird nicht unterdrückt.
Bei der Bearbeitung durch ein Gruppenmitglied wurden 2 Konfigurationen erstellt, bei denen die Gruppe in die Mitglieder bei Eintritt in die Gruppe aufgelöst wird. Sobald die Gruppe aufgelöst wird sperrt nicht mehr die Gruppe die Rechnungs-Akte, sondern die einzelnen Benutzer. Es greifen die Vertretungen der Benutzer. Dafür können nur diejenigen Benutzer die Akte bearbeiten, welche Zum Zeitpunkt der Zuordnung Mitglied der Gruppe waren. Bei den 2 Konfigurationen kann lediglich zwischen dem Bearbeitungs-Modus und dem Ansicht-Modus beim Öffnen der Akte unterschieden werden.
Zudem wurden 4 Konfigurationen bereitgestellt, bei denen die Gruppe nicht aufgelöst wird. Zusätzlich zur Unterscheidung, ob die Rechnungs-Akte im Ansicht- oder Bearbeitungs-Modus öffnet kann zusätzlich die Mail-Versendung unterdrückt werden. In der Regel soll die Mail-Unterdrückung bei Gruppen mit Power-Usern erfolgen. In dem Fall wird gleichzeitig die Ablage in dem Posteingang der Mitglieder unterdrückt. Für die Abarbeitung der Akten können eigene Filter-Ordner erstellt werden wodurch der Posteingang der Anwender übersichtlich bleibt.
Benutzer
Bei der Zuordnung zu einem Benutzer oder wenn ein Benutzer eine Akte aus dem Gruppenkorb übernimmt, dann wird die passende Aktion aus 8 Aktionen ebenfalls über die Benutzer-Konfiguration ermittelt. In einem ersten Schritt wird über die Mailversendung beim Posteingang entschieden. Bei der aktiven Übernahme aus einem Gruppenkorb wird die Mailversendung unterdrückt. Über die WEB-Konfiguration kann zudem konfiguriert werden ob sich die Mappe im Ansicht- oder Bearbeitungs-Modus öffnet und ob Belege im Posteingang abgelegt werden.
Workflow ID
Über diese WEB-Konfigurationen können neue Workflow IDs erzeugt werden. Pro Workflow ID wird die Abfolge von Workflow-Aktionen festgelegt und es müssen separate Workflow-Regeln angelegt werden. Zudem kann pro Workflow ID definiert werden, ob die Akten am Workflow-Ende gelöscht oder nur versiegelt werden oder ob gar keine Aktion erfolgen soll. In der Standard-Auslieferung werden 2 Workflows für die Unterscheidung zwischen Rechnungen mit und ohne Bestellbezug ausgeliefert. Die Zuordnung kann nach beliebigen Feld-Kriterien erfolgen.
Bei der Zuordnung einer Workflow ID zu einer Rechnungs-Akte werden die Einträge nach absteigender Priorisierung abgefragt. Für die Zuordnung einer Rechnungs-Akte zu einer Workflow ID können bis zu 5 Feld-Werte abgefragt werden. In der Standard-Auslieferung werden 3 Feld-Abfragen angezeigt. Nur wenn alle Feldprüfungen mit den Werten in der Rechnungs-Akte übereinstimmen wird der Beleg der Workflow ID zugeordnet. Andernfalls wird der Eintrag mit der nächst höheren Priorität abgefragt. Die Zuordnung der Workflow ID zu einer Rechnungs-Akte erfolgt bei jeder Ermittlung der nächsten Workflow-Aktion. Die Zuordnung kann sich im Laufe des Workflows mehrfach ändern. Für eine Workflow ID können mehrere Einträge gesetzt werden. Hierdurch können komplexe Abfragen vermieden werden.
In der Feld-Liste werden nur Kopf-Felder gelistet, bei denen in der Feld-Konfiguration die Checkbox "In Workflow-Regel verwenden?" gesetzt ist. Als Vergleich-Werte werden die folgenden Angaben unterstützt. Wenn die Feldangabe leer ist wird kein Vergleich ausgeführt und das Ergebnis wird als korrekt gewertet.
Gleich
Vergleicht den angegebenen Wert mit dem String-Wert in einem Feld. Boolean-Werte werden wie im Screenshot zu sehen mit "true" bzw. "false" ausgegeben. Die korrekte Groß- und Kleinschreibung muss berücksichtigt werden!
Beginnt mit
Bei einer "Beginnt mit" Abfrage muss der Feldwert lediglich mit dem angegebenen String beginnen.
Bereich
Über eine Bereichs-Abfrage können zum Beispiel Sachkonten oder Kostenstellen-Bereiche abgedeckt werden. Der Bereich muss mit ".." getrennt werden. Ein beliebiger Wert zwischen 250 und 500 kann zum Beispiel durch "250..500" angegeben werden. Vorangestellte Zeichen werden abgeschnitten, wenn Sie in beiden Bereichs-Angaben vorkommen (Beispiel "AB250..AB500").
Größer / Größer oder Gleich / Kleiner / Kleiner oder Gleich
Diese Vergleiche dürfen nur bei numerischen Feldwerten und bei Datums-Angaben verwendet werden!
Regular Expression
Für komplexere Vergleiche können auch reguläre Ausdrücke angegeben werden. Es muss ein gültiger regulärer Ausdruck angegeben werden, um Skript-Fehler zu vermeiden!
Ungleich
Die Feld-Vergleiche können auch mit ungleich verwendet werden.
Workflow-Regeln
Übersicht Workflow IDs
Über die Konfiguration der Workflow-Regeln wird in einem ersten Schritt der Workflow-Verlauf definiert. In der initialen Ansicht sieht der Anwender die Liste der verfügbaren Workflow IDs. In dieser Ansicht kann der Anwender weder Einträge hinzufügen noch bestehende Einträge ändern. Durch einen Doppel-Klick auf einen Eintrag öffnet sich die Ansicht des Workflow-Verlaufs zur Workflow ID.
Workflow-Verlauf
Über diese Konfigurations-Seite wird der Workflow-Verlauf zur ausgewählten Workflow ID konfiguriert. Die gelisteten Workflow-Aktionen werden aufsteigend der Ausführungsreihenfolge nach durchlaufen. Die Liste enthält auch die technischen Workflow-Aktionen. Über den Button "Neuen Eintrag" können Workflow-Aktionen zum Workflow hinzugefügt werden. Über den Stift-Eintrag im rechten Bereich oder über die "Drag and Drop"-Icons im linken Bereich kann die Reihenfolge der Workflow-Aktionen angepasst werden. Dabei ist zwingend zu beachten, dass sich die Änderung direkt und unverzüglich auf den Workflow-Verlauf aller aktuellen Workflow-Akten auswirkt!
Wenn ein Anwender im unteren Beispiel die Workflow-Aktion "Freigabe" zum Beispiel vor die Aktion "Prüfung" verschiebt, dann wird die Workflow-Aktion "Freigabe" für alle Akten, welche sich aktuell in der Workflow-Aktion "Prüfung" befinden nicht mehr ausgeführt! Beleg, die sich zum Zeitpunkt der Umstellung in der Freigabe befinden und somit bereits geprüft wurden, laufen erneut in die Workflow-Aktion "Prüfung".
Workflow-Aktionen sollten nur dann aus dem Workflow-Verlauf entfernt werden, wenn sich keine Akte in dieser Workflow-Aktion befindet!
Jede Workflow-Aktion kann einer Workflow ID nur ein einziges Mal zugeordnet werden. Dieselbe Workflow-Aktion kann aber in unterschiedlichen Workflow IDs verwendet werden. Für mehrstufige Prüfungen oder Freigaben werden bereits im Standard je 4 Prüf- und Freigabe-Workflow-Aktionen ausgeliefert und für die mehrfache Archivierung existieren bereits in der Auslieferung je 6 direkte Archivierungen und 6 Job-gesteuerte Archivierungen.
Zu jeder Workflow-Aktion wird die Anzahl der bereits angelegten Workflow-Regeln angezeigt. Um bestehende Regeln einzusehen oder um neue Workflow-Regeln anzulegen muss ein Doppelklick auf die Workflow-Aktion ausgeführt werden.
An den Rechnungs-Belegen kann der Workflow-Verlauf auf dem Register "Workflow Verlauf" vorausgesagt werden. Das Diagramm zeigt den Workflow-Ablauf zur aktuellen Workflow ID. Technische Aktionen werden orange markiert. Die Start- und der End-Prunkte werden grün dargestellt. Für die aktuelle und für alle zukünftigen Workflow-Aktionen werden die Benutzer und Gruppen über die Workflow-Regeln ermittelt. Der tatsächliche Verlauf kann sich jedoch durch Feldwert-Anpassungen ändern.
Workflow-Regeln
Bei den Workflow-Regeln verhält es sich ähnlich wie bei der Zuordnung der Workflow ID zu einer Akte. Die einzelnen Workflow-Regeln werden nach der Spalte "Priorisierung" absteigend durchlaufen. Jede Regel erhält eine eindeutige Regel ID. Technisch wird hierfür eine Auto-Inkrement-Spalte in der Datenbank verwendet.
Pro Workflow-Regel können bis zu 10 Feld-Abfragen durchgeführt werden. In der Standard-Auslieferung werden 3 Abfragen angezeigt. Wie im oberen Screenshot zu sehen muss nicht zwingend eine Feld-Abfrage definiert werden. Eine so definierte Workflow-Regel greift in jedem Fall und weitere Workflow-Regeln mit niedrigeren Priorisierungen würden niemals abgefragt.
Eine Feld-Abfrage kann entweder für ein Kopf-Feld oder für ein Positions-Feld ausgeführt werden. Sobald Workflow-Regeln für Positions-Felder definiert werden kann es passieren, dass die Gentable-Positionen unterschiedlichen Workflow-Regeln zugeordnet werden. Wenn sich daraus eine unterschiedliche Zuordnung zu Benutzern und Gruppen ergibt, wird die Rechnung aufgeteilt.
Wenn der Anwender beim Typ "Kopf" auswählt werden in der "Feld"-Spalte nur die Kopffelder angezeigt, welche explizit für die Workflow-Regeln aktiviert wurden. Bei der Typ-Auswahl "Pos." werden unter "Feld" nur die entsprechenden Positions-Spalten angezeigt, welche für die Workflow-Regeln aktiviert wurden. Die Vergleichswerte entsprechen den bereits beschriebenen Vergleichswerten bei der Workflow ID. Wenn kein Feldwert angegeben wurde wird auch keine Prüfung ausgeführt. Wenn ein Feldwert angegeben wurde und die Prüfung fehlschlägt wird die nächste Workflow-Regel geprüft. Wenn eine Workflow-Regel nur für bestimmte Rechnungs-Positionen greifen wird für die anderen Positionen weiter gesucht. Die Suche endet erst, wenn jeder Rechnungs-Position eine Workflow-Regel zugeordnet werden konnte.
Vergleichs-Typen
Als Standard-Vergleichstyp ist "Gleich" vor belegt. Der Feldwert muss dem angegebenen Wert entsprechen (exakte Groß- Kleinschreibung beachten!). Boolean-Feldwerte müssen mit "true" bzw. "false" angegeben werden.
Bei "Ungleich" darf der Wert nicht dem Feldwert entsprechen und bei "Beginnt mit" muss der Feldwert mit dem angegebenen Begriff beginnen.
Die Vergleichstypen "Größer", "Größer gleich", "Kleiner" und "Kleiner gleich" sind ausschließlich für numerische Werte und Datums-Werte gedacht. Numerische Werte müssen technisch angegeben werden - also ohne tausender Trennzeichen und mit einem "." als Dezimaltrennzeichen. Datumswerte müssen im Format "dd.mm.yyyy" angegeben werden.
Mit "Bereich" können numerische Angaben "von .. bis einschließlich" angegeben werden. Eine Beispiel-Angabe ist: "1000..2000". Der Abgleich funktioniert auch mit vorangestellten Buchstaben - zum Beispiel: "AB1000..AB2000".
Über "Regular Expression" können reguläre Ausdrücke verwendet werden. Diese können vorab über den Button "REGEX PRÜFEN" getestet werden.
Regel-Typen
Neben der Priorisierung kann der Workflow-Regel ein Regel-Typ ausgewählt werden. Die Voreinstellung steht auf "Benutzer/Gruppe". Hierbei werden in der Folgenden Aufzählungsliste alle Benutzer und Gruppen aus Documents gelistet. Die Einträge werden bei manueller Angabe automatisch gefiltert. Ein "(G)" hinter der Angabe steht für eine Gruppe und ein "(U)" für einen Benutzer.
Bei der Auswahl des Regel-Typs "Kopf-Feld" wird der Benutzer bzw. die Benutzergruppe über ein Kopf-Feld ermittelt. Hierdurch können manuelle Zuordnungen umgesetzt werden. Statt der Angabe "Benutzer/Gruppe" muss nun das Kopf-Feld angegeben werden, in dem der Wert zu finden ist. Entsprechend können solche Regeln auch pro Rechnungs-Position über den Regel-Typ "Positions-Felder" angelegt werden.
Manchmal soll eine Workflow-Aktion nur für bestimmte Akten ausgeführt werden. Zum Beispiel können bestimmte Freigaben bei geringen Rechnungsbeträgen übersprungen werden. Hierfür können Regeln vom Typ "Aktion überspringen" angelegt werden. Der Workflow für den Rechnungs-Beleg wird direkt weitergeleitet und es wird direkt die Folge-Workflow-Aktion ermittelt.
Die Workflow-Regeln werden nach absteigender Priorisierung abgearbeitet. Bei sehr vielen Regeln wird die Ansicht schnell unübersichtlich und ggf. müssen extrem viele Prüfungen ausgeführt werden. Um zum einen die Ansicht zu optimieren und zum anderen auch die durchgeführten Prüfungen reduzieren können sogenannte Sub-Regeln erstellt werden. Die Sub-Regeln werden einer übergeordneten Regel zugeordnet. Um Sub-Regeln erzeugen zu können muss bei einer Workflow-Regel der Regel-Typ "Hauptregel" gesetzt werden. Im unteren Beispiel wird bei der oberen Regel das Feld "Mandant" auf den Wert "4711" geprüft.
In der Spalte "Benutzer/Gruppe" ist statt einer Angabe ein Icon zu sehen. Wenn man auf dieses Icon klickt wird eine neue Regel-Ansicht für Sub-Regeln geöffnet. Die hier konfigurierten Sub-Regeln werden nur geprüft, wenn die übergeordnete Regel mit der ID 10066 zutrifft. In dem Beispiel werden die hier definierten Sub-Regeln nur beim Mandanten 4711 geprüft. Bei anderen Mandanten entfallen diese Überprüfungen.
Unterhalb von Sub-Regeln können wiederum Sub-Regeln erstellt werden.
Aufgeteilte Rechungen
Sobald Workflow-Regeln Positions-Felder abfragen kann es passieren, dass den Rechnungspositionen unterschiedliche Workflow-Regeln zugeordnet werden und die Workflow-Regeln unterschiedliche Benutzer oder Gruppen zuordnen. In diesem Fall wird die Rechnungs-Akte bei einer technischen Gruppe geparkt und wird pro abweichendem Benutzer oder Gruppe kopiert. Der Anwender arbeitet somit an einer Kopie und nicht mehr am Original-Beleg! Wichtig ist, dass die Kopffelder bei einer Kopie nicht bearbeitet werden können, denn alle Anpassungen müssten beim Speichern automatisch auf alle anderen Kopien samt dem Original übertragen werden. Solche Feldwert-Anpassungen müssen demnach projektspezifisch über benutzerdefinierte Aktionen umgesetzt werden. Die benutzerdefinierte Aktion "Kommentar hinzufügen" ist ein solches Beispiel hierfür.
Eine Kopie enthält nur diejenigen Rechnungs-Positionen, welche über die Workflow-Regeln zugeordnet wurden. Anpassungen an den Positionen werden nach Abschluss aller Kopien an die Original-Mappe übertragen. Die Überwachung der Original-Mappen übernimmt das Job-Skript "Invoice_JOB_ForwardMainFiles".
Eine Kopie bleibt nur für die Verarbeitung innerhalb einer Workflow-Aktion bestehen und wird im Anschluss gelöscht. Ein Kopie selber darf die aktuelle Workflow-Aktion nicht verlassen! Wenn ein Beleg zum Beispiel zurückgesendet wird, dann werden alle Kopien gelöscht und die Original-Mappe wird zurückgesendet.
Sub-Outbar "Invoice" - Feld-Konfigurationen
Die Feld-Konfigurationen können zum Teil über die WEB-Konfiguration erfolgen. Die Anzeige und Anordnung der Kopf-Felder muss aus technischen Gründen über den Documents-Manager am Mappentypen erfolgen. Die Kopffeld-Konfiguration wird aus der Documents-Datenbank geladen.
Kopf-Felder
Die Anlage neuer Kopf-Felder sowie die Anordnung der Kopf-Felder und auch die Zuweisung der Felder zu den Registern muss über den Documents-Manager erfolgen!
Felder in die WEB-Oberfläche importieren
In der WEB-Konfiguration "Kopf-Felder" können die Felder über den Button "KOPFFELDER NEU LADEN" importiert werden. Die Feld-Attribute werden direkt aus den entsprechenden Documents-Datenbank-Tabellen ausgelesen. Die angezeigte Reihenfolge der Felder entspricht der Feld-Reihenfolge am Mappentypen. Die Zahlen in der Spalte "Sortierung" stammen aus der Documents-Datenbank.
In der initialen Feld-Übersicht können pro Feld lediglich 2 Angaben konfiguriert werden. Zum einen kann über die Checkbox "In Workflow-Regeln verwenden?" konfiguriert werden, ob das Feld in der Feldliste bei den Workflow-Regeln gelistet wird. Hierdurch bleibt die Liste kurz und übersichtlich. Zum anderen kann über die Checkbox "SQL Insert?" festgelegt werden ob das Feld beim Speichern in die Datenbank-Tabelle "Invoice_Posting_Head" geschrieben wird. Die Tabellen-Spalte wird mit dem gleichnamigen Namen vorbelegt.
Beim Import von projektspezifischen Feldern (abgesehen von horizontalen Trennern) ist die Checkbox "SQL Insert?" automatisch gesetzt. Die Tabelle "Invoice_Posting_Head" muss entsprechend erweitert werden.
Alternativen
Über den Link "Alternativen öffnen" wird eine neue spezifische Ansicht geöffnet. Hier können alternative Eigenschaften für das Feld in Abhängigkeit zu Feldwerten definiert werden. Bei der Validierung soll der Anwender einen großen Teil der Feldwerte geändert werden können und in der Freigabe soll der Anwender oft gar keine Feldwerte ändern können. Einige Feldwerte sollen erst ab einem bestimmten Workflow-Schritt zu einer Pflicht-Angabe werden oder sollen nur in einem bestimmten Workflow-Schritt angezeigt werden.
Zu einem Feldwert können die folgenden Feld-Attribute gesetzt werden:
- Pflichtfeld?
- In Ansicht darstellen?
- Schreibgeschützt?
- Selbe Zeile wie Vorgänger?
Die Einträge werden nach absteigender Priorisierung überprüft. Pro Eintrag können die Workflow ID, die Aktion und der Status sowie 2 beliebige Feldwerte abgefragt werden. Sobald bei einem Eintrag alle Feldwerte übereinstimmen werden die Attribute zum Eintrag übernommen. Statt der Feld-Angabe kann der Eintrag "Alle Felder" verwendet werden. Ein solcher Eintrag gilt übergreifend für alle Felder.
PropCache
Die Feldkonfiguration samt Alternativen werden im PropCache-Eintrag "FieldConfiguration" als Json-String festgehalten. Der PropCache wird bei einer Anpassungen über die WEB-Konfiguration automatisch geleert.
Feldkonfigurationen laden
Die passenden Feld-Attribute werden über die Funktion "setFieldAttributesByConfig" am DocFile-Objekt geladen. Diese Funktion wird zum einen nach jeder Weiterleitung der Mappe ausgeführt ("afterForwardFileScript") und kann manuell über die benutzerdefinierte Aktion "Feldkonfiguration laden" über die Aktionsliste ausgeführt werden.
Zusätzlich oder alternativ können die Attribute "In Ansicht darstellen?" und "Schreibgeschützt?" bei jedem Zugriff auf die Mappe aktualisiert werden ("decreaseFieldRightOnFileViewScript"). Hierdurch können Felder abhängig von anderen Feldwerten ausgeblendet werden oder einen Schreibschutz erhalten. Bereits ausgeblendete Felder können durch das Skript nicht wieder angezeigt werden! Für die Aktivierung des Skripts muss der Parameter "Kopf-Feld Konfiguration" ("HeadFieldConfigSettings" - 2. Parameter-Wert) aktiviert werden.
Einen Sonderfall stellen die technischen Felder auf den Registern "Workflow", "Gentable" und "Rights" dar. Auf diese Felder haben die Benutzer nur lesenden Zugriff. Lediglich die Benutzer der Gruppe "WorkflowError" können Feldwerte bearbeiten, wenn die Feldbearbeitung über die Feld-Konfiguration zugelassen wird. Die Register "Gentable" und "Rights" sehen in der Standard-Auslieferung generell nur Mitglieder der Gruppe "WorkflowError". Dies kann jedoch projektspezifisch über das User-Exit Skript "Invoice__UserExit_DF_HideRegisterOnFileView" angepasst werden.
Positions-Felder
Die Positions-Felder werden im sogenannten Gentable dargestellt. für die Aktivierung muss die Eigenschaft "hasInvoicePlugin" am Mappentypen gesetzt sein. Technisch wird die komplette Tabellen-Struktur in das Feld "Gentable" geschrieben. Der Aufbau bzw. die Darstellung des Gentable wird über eine XML-Struktur definiert. Diese XML wird über die Eigenschaft "gentableDefScriptName" über ein Skript generiert (Invoice_DF_GentableDefScriptName). Die genaue Funktionsweise kann in der Hersteller Dokumentation "GenTable Administration" vom Hersteller Otris nachgelesen werden.
Gentable Konfiguration
Über diese WEB-Konfiguration können sowohl die ganz allgemeinen Einstellungen sowie alle optionalen Eigenschaften für das Gentable gesetzt werden, welche zum Aufbau der Gentable-XML verwendet werden.. An den allgemeinen Einstellungen müssen keine Anpassungen vorgenommen werden. Es sollten auch nur Anpassungen vorgenommen werden, wenn man genau weiß was man tut. Unter den XML-Einstellungen können die globalen Einstellungen der Konfigurationsdatei vorgenommen werden. Die Beschreibung zu den einzelnen technischen Namen muss der oben genannten Hersteller-Dokumentation entnommen werden. An dieser Stelle werden nur 2 Werte kurz erläutert. Über den Eintrag "fieldName" wird das Feld zum Speichern der Gentable-Werte angegeben und über den Eintrag "storeFormat" kann entschieden werden, ob die Tabellen-Struktur als "xml" oder "json" gespeichert werden soll.
Positions-Felder
Über diese Konfiguration werden die Definitionen zu den einzelnen Gentable-Spalten angegeben. In der Standard-Sortierung der WEB-Konfiguration werden zuerst die aktiven Felder nach aufsteigender "Sortierung" gelistet. Im Standard sind bereits ca. 200 vorkonfigurierte Felder enthalten.
Durch einen Doppel-Klick auf einen Eintrag bzw. durch einen Klick auf das Stift-Symbol im rechten Bereich öffnet sich die Standard-Feldkonfiguration. Diese Feld-Konfiguration greift, solange keine spezifische und für eine Rechnung zutreffende Alternative definiert wurde. Über den Button "Neuer Eintrag" können projektspezifische Positions-Felder konfiguriert werden. Neben dem technischen Feldnamen muss die Übersetzung und eine Nummer für die Sortierung angegeben werden. Über die Checkbox "Aktiv?" wird die Verwendung der Spalte aktiviert bzw. deaktiviert. Bei aktiven Feldern wird zudem die Aktivierungsbedingung geprüft. Als Beispiel für eine solche Bedingung wird bei einigen Feldern der Wert "%HasOrder%=true" ausgeliefert. Die Checkbox "HasOrder" im Kopf gibt an, ob es sich um eine Rechnung mit Bestellbezug handelt oder nicht. Durch eine solche Bedingung können Gentable-Spalten in Abhängigkeit von Kopf-Feldwerten ein- oder ausgeblendet werden.
Es stehen alle Gentable-Feldtypen zur Verfügung. Je nach Feldtyp ändert sich die Anzeige. Bei String-Feldtypen kann zum Beispiel eine maximale Eingabelänge definiert werden und bei numerischen Werten kann die Anzahl der Nachkommastellen definiert werden. Ein Feld kann als Pflichtfeld deklariert werden und kann einen Schreibschutz erhalten oder lediglich angezeigt werden. Technische Felder können über die Checkbox "In Ansicht darstellen?" auch komplett ausgeblendet werden. Zudem kann für jedes Feld eine Standard-Feld-Breite sowie eine maximale Feld-Breite definiert werden und es kann eine Vorbelegung bei der Erstellung neuer Zeilen festgelegt werden.
Die Positions-Felder sollten immer in die Datenbank-Tabelle "Invoice_Posting_Pos" geschrieben werden. Nur so funktioniert ohne Datenverlust auch der umgekehrte Weg aus der Datenbank in das Gentable-Feld. Für alle ausgelieferten Gentable-Spalten existiert bereits eine Spalten mit dem technischen Gentable-Spalten-Namen. Die Spalte "ID" hat in diesem Fall eine Sonderstellung. In der Tabelle ist die "ID"-Spalte eine Auto-Inkrement-Zeile. Wenn eine neue Gentable-Zeile in die Tabelle geschrieben wird, dann wird die erzeugte "ID" zurück in die gleichnamige Gentable-Spalte "ID" geschrieben. Sobald eine Gentable-Zeile einer ID zugeordnet wurde werden nur noch UPDATE-Befehle ausgeführt.
JavaScript Events
Über die weiteren Register können zusätzliche Einstellungen konfiguriert werden. Unter "EVENTS" können bis zu 3 Javascript-Events definiert werden. Die zur Verfügung stehenden Events können aus einer Auswahlliste ausgewählt werden. Die ausgelieferten Funktionen befinden sich in der Documents-Installation unter "..\DEXPRO\ScriptExits\DexLib\". Damit die hier enthaltenen Dateien bei einem Invoice-Update überschrieben werden können, sollten diese Dateien nicht angepasst werden.
Projektspezifische Anpassungen müssen in die Datei "..\DEXPRO_ClientExits\DexClientExits.jsp" geschrieben werden.
Autocomplete
Die Autocomplete-Funktion ruft das Documents-User-Exit-Skript "DEXPRO__UserExit_Autocomplete" auf. Das Skript wird unverschlüsselt ausgeliefert und kann im Projekt beliebig angepasst werden. Bei den Autocomplete-Einstellungen können beim Aufruf Kopffelder als Skript-Parameter mitgegeben.
Sonstiges
Um die kompletten Funktionen des Gentable abbilden zu können gibt es auf dem Register "Sonstiges" noch die Möglichkeit eine CSS-Klasse für die Spalte zu definieren und Bedingungen ("conditions") zu definieren. Bei den Bedingungen können Zeilen in Abhängigkeit von Feldwerten ausgeblendet werden oder einen Schreibschutz erhalten. Genaueres hierzu findet sich in der Gentable-Administrations-Dokumentation.
Alternativen
Wie bei den Kopf-Feldern können zu einem Feld sogenannten "Alternativen" definiert werden. Diese Alternativen werden über einen numerischen Wert priorisiert und werden nach absteigender Priorisierung überprüft. Pro Priorität können die Standard-Felder "Workflow", "Aktion" und "Status" abgefragt werden und es können zusätzlich 2 beliebige Feldwerte herangezogen werden. Sobald alle Angaben einer Alternative zutreffen, ersetzen die Angaben aus der Alternative die Standard-Werte. Weitere Alternativen werden nicht mehr überprüft!
Bei der Anlage neuer Alternativen sieht man zusätzlich zu den Optionen den Standardwert zum Feld. Es müssen nur die Werte angegeben werden, welche vom Standard abweichen!
Gentable-Schaltflächen
Oberhalb der Positionsdaten (Gentable) können Buttons angezeigt werden, welche über die WEB-Konfiguration "Gentable Schaltflächen" konfiguriert werden können. Im Standard werden einige solcher Buttons zum Beispiel zur Anlage neuer Zeilen oder zum Kopieren oder Löschen bestehender Zeilen ausgeliefert. Diese Schaltflächen werden in der angegebenen Priorisierungs-Reihenfolge angezeigt und können optional statt einer Beschriftung mit einem Icon versehen werden. Ein Button muss eine spezifische Funktion ausführen.
Über das Stift-Symbol im rechten bereich können bestehende Einträge verändert werden und über die Mülltonne können bestehende Einträge wieder gelöscht werden. Über den Button "NEUER EINTRAG" kann ein Button hinzugefügt werden.
Durch einen Doppelklick auf einen Schaltflächen-Eintrag öffnet sich eine neue Ansicht, über die man Buttons bei bestimmten Feldwert-Kombinationen ein- bzw. ausblenden kann.
Gentable Konfiguration
Über diese Konfiguration können sehr spezifische Wert angegeben werden, welche zum Aufbau der XML-Struktur verwendet werden. Die Konfiguration unterteilt sich auf 2 Register.
Auf dem Register "ALLGEMEINE EINSTELLUNGEN" befinden sich größtenteils die Angaben, welche nicht angepasst werden sollten! Lediglich der Eintrag "UtilOutXml" kann bei Supportfällen temporär auf "true" gesetzt werden, um die generierte XML-Struktur in das Documents-Log auszugeben. Die Einstellung darf aus Performance-Gründen nie lange aktiv sein!
Die Einträge vom Register "XML-EINSTELLUNGEN" werden als Kopf-Werte in die XML-Struktur übernommen. Bei der Angabe "storeFormat" kann zum Beispiel angegeben werden ob die Gentable-Daten als JSON oder im XML-Format gespeichert werden. Die Beschreibung der einzelnen Angaben kann der Hersteller-Doku zur Gentable-Administration entnommen werden.
Suchfelder
Alle Positionsdaten werden im JSON-Format oder als XMl-Struktur in ein Feld geschrieben. Hierdurch kann zum Beispiel nicht spezifisch nach einer bestimmten Kostenstelle gesucht werden. Als Workaround wurden zusätzliche technische Suchfelder im Kopf angelegt. Über diese Konfiguration können bis zu 3 Positions-Felder angegeben werden, welche einem Kopffeld zugeordnet werden. Der Inhalt aus allen Zeilen von den angegebenen Spalten wird in das entsprechende Feld geschrieben und das Kopffeld kann entsprechend in der Suchmaske angezeigt werden.
Über diese Konfiguration können die Standard-Zuordnungen angepasst werden bzw. können projektspezifische Zuordnungen definiert werden.
Archiv-Zuordnung
Die XML-Struktur für den Aufbau des Gentable wird im Standard durch ein Skript generiert. Die Konfiguration wird aus den Datenbank-Tabellen ermittelt und als Schlüssel dient der Mappentyp-Name "Invoice". Bei Archiv-Mappen wird als Mappentyp-Name jedoch eine Angabe wie zum Beispiel "Instance=Default/ eex_Invoice" ausgegeben und somit kann die Gentable-Konfiguration nicht ermittelt werden.
Über die Zuordnung in dieser Tabelle kann ein Archiv-Mappentyp einem Mappentypen zugeordnet werden.
Parameter
Invoice-Parameter
Invoice enthält in der Auslieferung viele Standard-Prüfungen mit Standard-Einstellungen und viele von diesen Einstellungen können über Parameter verändert werden. Hierdurch erspart sich der Consultant Programmieraufwand. Ein Parameter hat einen technischen Namen und eine Kurzbeschreibung. Die Standard-Konfiguration für die mit dem Standard ausgelieferten Parameter kann nicht verändert werden! Bei einem Klick auf das Stift-Symbol erscheint eine entsprechende Fehlermeldung. Bei der Anlage projektspezifischer Parameter wird die Checkbox "Projektspezifisch?" gesetzt. Über die Spalte "Seit Version" wird die Invoice-Versions-Nummer angegeben, ab welcher der Parameter zur Verfügung steht.
Parameter-Werte
Pro Parameter können bis zu 3 Werte definiert werden. Durch einen Doppelklick auf einen Parameter öffnet sich eine neue Ansicht zur Angabe der Parameter-Werten. Die Funktion der einzelnen Parameter-Werte wird in dieser Ansicht genauer beschrieben. die Beschreibung enthält auch den Standard-Wert und den Typ des Standard-Werts.
Bei der Angabe eines neuen Eintrags muss zu jedem Parameter-Wert eine Angabe erfolgen! Wenn nur ein Wert vom Standard abweicht müssen die anderen beiden Werte auf die Standard-Werte gesetzt werden! Damit für unterschiedliche Belege unterschiedliche Parameter-Werte greifen können pro Eintrag bis zu 3 Feldwerte abgefragt werden. Sobald alle Feld-Abfragen zutreffen werden die Parameter-Werte der Zeile verwendet. Falls kein spezifischer Eintrag zutrifft greifen die Standard-Werte. Die Einträge werden nach absteigender Gewichtung überprüft.
Die Standard-Parameter und die projektspezifischen Parameter können in den projektspezifischen Skripten verwendet werden. Das folgende Beispiel zeigt wie alle 3 Parameter-Werte zu einem Parameter ermittelt werden können. Der jeweilige Standard-Wert wird explizit nochmal als Wert mitgegeben, damit die Funktion selbst dann noch den korrekten Wert zurückliefert, wenn der Parameter nicht existiert.
var docFile = context.file;
var paramObj = docFile.getParamObject("TechnischerParameterName");
var standardValue1 = true;
var standardValue2 = "Standard String";
var standardValue3 = 1.5;
var paramVal1 = docFile.getParamValue(paramObj, 1, standardValue1, "boolean");
var paramVal2 = docFile.getParamValue(paramObj, 2, standardValue2, "string");
var paramVal3 = docFile.getParamValue(paramObj, 3, standardValue3, "decimal");
Globale Parameter
Parameter werden in den meisten Fällen im Kontext einer Rechnung aufgerufen. Einige wenige Parameter werden global ohne einen direkten Bezug zu einer Rechnung verwendet. Bei einem globalen Parameter können die Werte entsprechend nur auf einen fixen Wert ohne Feld-Abfragen und ohne Gewichtung gesetzt werden. Bei den globalen Parametern wird die Checkbox "Globaler Parameter?" gesetzt.
Die globalen Parameter-Werte müssen direkt über das Parameter-Objekt ermittelt werden:
var p = new Param("JobScriptUser", "Invoice");
p.Value1Specific; // 1st specific value as string
p.Value2Specific; // 2nd specific value as string
p.Value3Specific; // 3rd specific value as string
Zugriffsberechtigungen
Zugriffsberechtigungen
Die Invoice-Lösung enthält diverse Zugriffsbeschränkungen welche verhindern, dass ein Anwender Zugriff auf Belege oder Konfigurationen erhält, welche er nicht sehen darf.
Mappenrechte
Zunächst sind am Mappentypen "Invoice" Mappenrechte hinterlegt. Bestimmte Gruppen wie "Administration", "WorkflowError", "WorkflowRulesError" und "TechAccessProfile" sowie der Benutzer "import" erhalten gesonderte Berechtigungen. Jeder Anwender, der am Rechnungseingangs-Workflow teilnehmen soll muss zumindest der Gruppe "Invoice" zugeordnet werden.
Ein Benutzer, welcher keiner der oben genannten Gruppen zugeordnet wurde, erhält keinen Zugriff auf die Outbar für die Rechnungseingänge und schon gar nicht zur Administrations-Outbar. Der Anwender kann nicht einmal nach Rechnungen suchen.
GACL-Berechtigung
Zusätzlich zu den Mappenrechten ist am Mappentypen "Invoice" eine sogenannte GACL-Berechtigung (Group Access Control List) mit dem Filter "%accessProfilesGACLFilter%|%userLogin%" gesetzt. Der Mappenklassenschutz wird über das Textfeld "Rights" gesteuert.
Durch den Mappenklassenschutz erhalten nur diejenigen Benutzer Zugriff zur Mappe, wenn der Benutzer entweder sein eigenes Login in dem Textfeld enthalten ist oder wenn der Benutzer einer Gruppe angehört, welche im Feld gelistet wird. Der Feldwert wird initial durch den Besitzer/Ersteller der Mappe vorbelegt. Jeder Benutzer bzw. jede Gruppe, welche im Laufe des Workflows den Beleg sperrt, wird zum Feld "RightsWorkflow" hinzugefügt. Zudem können initiale Berechtigungen gesetzt werden, welche in das Feld "RightsInitial" geschrieben werden. Die Summe der beiden Feldwerte wird in das Feld "Rights" geschrieben. Nach jeder Weiterleitung im Workflow werden die Berechtigungen neu ermittelt.
Initiale Berechtigungen
Die initialen Berechtigungen werden vor allem dafür verwendet, dass Benutzer bestimmter Gruppen immer Zugriff auf alle Mappen erhalten. Benutzer für den Support oder der Job-ausführende Benutzer müssen immer Zugriff auf alle Mappen haben! Diese Einstellung kann über die Konfiguration "Initiale Berechtigungen" vorgenommen werden.
Die Berechtigungen können allerdings auch abhängig von Feldwerten gesetzt werden und diese Feldwerte können sich im Laufe des Workflows ändern. Zum Beispiel können Gruppen oder Benutzer abhängig vom Mandanten berechtigt werden. Wenn der Mandant allerdings nicht automatisch oder gar falsch erkannt wurde, kann sich der Feldwert und somit die Zuordnung der berechtigten Gruppen im Workflow-Verlauf ändern. Anders als das "initial" vermuten lässt, werden die Gruppen nach jeder Weiterleitung erneut ermittelt und in das Feld "RightsInitial" geschrieben. Durch Feldwert-Anpassungen kann es passieren, dass Benutzer oder Gruppen Ihre Zugriffsberechtigung erst durch verzögert einen geänderten Feldwert erhalten und es kann auch passieren, dass Benutzer durch Feldwertänderungen Ihre Zugriffsberechtigungen wieder verlieren.
Pro Eintrag können bis zu 3 Feldwerte abgefragt werden. Es werden immer alle Einträge überprüft!
Stammdaten-Import (CSV-Import)
Stammdaten können über CSV-Dateien importiert werden. Die CSV-Dateien können aus dem führenden System in einem definierten Pfad bereitgestellt werden und können von dort via Job eingelesen werden.
WEB-Konfiguration
Der CSV-Import kann über die Admin-Outbar "Allgemein" unter "Stammdaten" konfiguriert werden. Pro Import-Datei muss eine Konfiguration angelegt werden. Über den Button "NEUER EINTRAG" kann eine neue Konfiguration angelegt werden. Bestehende Konfigurationen können über den Stift bearbeitet werden und können über die Mülltonne entfernt werden.
Zunächst muss der Anwender allgemeine Konfigurationsdaten angeben. Der Konfigurationsname sollte den Import eindeutig beschreiben. Tabellenname entspricht dem Namen der Ziel-SQL-Tabelle. Die zugehörige Datenbankverbindung muss unter "Verbindung" -> "Datenbank-Verbindung" gepflegt sein. Wichtig ist, dass hier nicht der Name der Datenbank gemeint ist, sondern der Name der Datenbank-Verbindung! In der Regel wird "DEX_MasterData" verwendet.
Unter Dateipfad muss der komplette Dateipfad bis zur Datei angegeben werden. Der Documents-Dienst-Benutzer muss zwingend Zugriff auf den Pfad und die Datei haben! Die Datei selber muss im CSV-Format vorliegen. Excel-Dateien müssen zunächst im CSV-Format gespeichert werden.
Die Zeichen-Codierung der CSV-Datei muss entweder ANSI oder UTF-8 sein. Dies kann zum Beispiel mit dem Tool Notepad++ geprüft werden. Hier wird die Codierung unten rechts angezeigt. Über das Register "Codierung" kann die Codierung einfach angepasst werden. Die Zeichencodierung in Documents ist in der Regel UTF-8. Entsprechend wird davon ausgegangen, dass ANSI-Formate in UTF-8 gewandelt werden müssen.
Die CSV-Ausgabe von Excel erzeugt eine Datei im UTF-8-BOM Format. Das Format muss zwingend vorher in UTF-8 konvertiert werden! Leerzeilen müssen manuell entfernt werden.
Nachdem die allgemeine Konfiguration erstellt wurde, kann durch einen Klick auf die Konfiguration die spezifische Mapping-Konfiguration geöffnet werden. Über "NEUER EINTRAG" können Mapping-Einträge für den Import angelegt werden. Hierbei kann zwischen den beiden Typen "Fester Wert" und "Wert aus CSV-Feld" unterschieden werden.
"Fester Wert" schreibt einen fixen Wert in die Tabellenspalte. "Wert aus CSV-Feld" ordnet einer Tabellen-Spalte einen Spalten-Wert aus der CSV-Datei zu. Es wird davon ausgegangen, dass die erste Zeile der CSV-Datei Tabellen-Überschriften enthält. Damit das Mapping funktioniert, sollten Sonderzeichen und Leerschritte bei den Tabellenüberschriften vermieden werden.
Über "STAMMDATEN IMPORTIEREN" wird der Import für die aktuell im Pfad vorhandene Datei ausgeführt. Hierbei werden alle bestehenden Daten aus der Tabelle gelöscht und neu geschrieben!
Job
Der CSV-Import kann über das Skript "DEXPRO_JOB_ImportCSV" als täglicher Job ausgeführt werden. Das Skript iteriert alle Konfigurationen und führt die Importe nacheinander aus. Die Einstellungen können über den Documents-Manager vorgenommen werden.
Durch den Import werden bestehende Tabellen geleert und die Daten werden neu geschrieben!
Manueller CSV-Import
In einigen Projekten sollen Importe nur bei Bedarf ausgeführt werden. Hierfür bietet sich der manuelle Import an. Unterhalb des Ordners "Stammdaten-Import" befindet sich der Ordner "Datei-Upload". Über den Button mit der Wolke öffnet sich ein Pop-Up-Fenster. Über die Upload-Fläche kann die CSV-Datei via Drag-N-Drop hochgeladen werden und über die Auswahlliste kann die zugehörige Konfiguration ausgewählt werden.
Die hochgeladene Datei ersetzt die Datei in dem in der Konfiguration angegebenen CSV-Pfad. Durch den Klick auf den Button '"OK" wird der Import für die gewählte Konfiguration ausgeführt.
Sollte es zu einer Fehlermeldung kommen, bleibt das Pop-Up-Fenster offen. Der Import kann allerdings nicht direkt neu ausgeführt werden, da die Upload-Datei nicht mehr gefunden werden kann. Das Fenster muss zwingend geschlossen werden und die Datei muss erneut hochgeladen werden.
Der Import wird in einer Logdatei protokolliert. Die Logdatei befindet sich unter "Logdateien" -> "DEXPRO" und in der Ansicht muss in den Ordner "MasterDataImport" navigiert werden.