Skip to main content

Navigation nach Abschluss der Aktion (UserExits)

Bei Abschluss der aktuellen Workflow-Aktion über einen ausgehenden Kontrollfluss gesteuert werden. Der Nachteil dieser Umsetzung ist, dass der Kontrollfluss nur eine Beschriftung möglich ist. Da sich alle Workflow-Aktionen technisch im Hintergrund dieselbe Aktion teilen kann nur eine Beschriftung für den Button (pf:WfButton_ActionEnd)  gesetzt werden und diese Anzeige gilt dann für alle Workflow-Aktionen wo "Bearbeitung abschließen" ausgewählt wurde. Dafür greift die ausgewählte Navigation ("Mappe beibehalten", "Nächste Mappe", "Zum Eingangsordner") exakt so funktioniert wie man es vom Documents-Workflow kennt.

image-1633681732002.png

Häufig wird von den Kunden jedoch gewünscht, dass pro Workflow-Aktion eine spezifische Beschriftung angezeigt wird. Für den Abschluss bei der Validierung soll zum Beispiel "Validiert" angezeigt werden und bei Abschluss einer Freigabe soll auf dem Button "Freigeben" stehen. Das ist nur technisch nur möglich indem statt dem Kontrollfluss-Button ein Button als benutzerdefinierte Aktion angezeigt wird. Bei einer benutzerdefinierte Aktion muss die Navigation als Rückgabewert über das Skript gesteuert werden.

Hierfür wurde das "NavigationReturnObject()" erstellt. Ein großer Nachteil ist, dass das Verhalten vor allem bei der Navigation "Nächste Mappe" nicht 1:1 wie bei der Navigation über einen Kontrollfluss nachgestellt werden kann. Zum Beispiel kann bei selektierten Belegen in einem Ordner nicht automatisch einer der nächsten selektierten Belege angezeigt werden, da "context.selectedFiles" auch bei selektierten Belegen ein leeres FileResultset zurückliefert. Es kann auch nicht irgendein Beleg aus dem aktuellen Ordner angezeigt werden, da "context.folder", "context.folderName" und "context.folderFiles" keine Werte liefern.

Für die Anzeige des nächsten Belegs wird der Aufgaben-Ordner des aktuellen Benutzers ermittelt und es wird aus diesem Ordner ein möglichst passender Beleg ermittelt. Diese Ermittlung kann unter Umständen lange dauern, wenn der Anwender sehr viele Belege in seinen Aufgaben hat. Projektspezifisch könnte der neu anzuzeigende Beleg zum Beispiel über einen spezifischen Filterordner ermittelt werden und der Filterordner kann anhand einiger Daten wie die Aktion-ID und ggf. weiteren Informationen wie dem Mandanten abgeleitet werden.

Für solche Umsetzungen wird das NavigationReturnObject() ab der Invoice Version 1.1. um optionale UserExit-Funktion pro Navigation erweitert. Sobald eine der Funktionen definiert ist und diese funktion den Wert true zurückliefert ersetzt diese das Navigations-Standardverhalten! Folgende UserExit-Funktionen wurden ergänzt:

  • ue_Keep()
  • ue_Next()
  • ue_Overview()
  • ue_Folder()
  • ue_Inbox()

Alle funktionen haben denselben Aufbau haben.

/** Rückgabewert für die Navigation 'Mappe beibehalten'.
 * @returns {boolean} true (verwende UserExit Navigation) / false (verwerfe Rückgabewerte und ermittle nach Standard)
 **/
NavigationReturnObject.prototype.ue_Next(){
	this.ReturnType = ... // context.returnType (stay/updateFile/html/showFolder/gadget/openOutbar/multipleAction/...)
	this.ReturnVal = ... // value that will be returned return
	return true;
}

Das NavigationReturnObject() hat Folgende Attribute:

Attribut
Beschreibung
Voreinstellung
ReturnType Rückgabetyp (context.returnType) "stay"
ReturnVal Rückgabewert  
ForwardAction
Weiterleitungs-Art "FinishAction"/"Forward"/"AnswerQuestion"
Navigation Navigation "keepfile"/"next"/"overview"/"inbox"
DocFile Aktuelle Mappe context.file
DocFileID Documents ID der aktuellen Mappe context.file.getid()
Filetype Mappentyp der aktuellen Mappe context.file.getAttribute("FromTemplate")
ActionID Aktion ID der aktuellen Mappe context.file.ActionID
WorkflowID Workflow ID der aktuellen Mappe context.file.WorkflowID
SystemUser Aktueller Benutzer als SystemUser Objekt

context.getSystemUser()