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.
No Comments