Skip to main content

Versteckte User-Exits

Einige Skripte enthalten User-Exit Funktionen und viele dieser Funktionen sind in den verschiedenen "UserExit"-Bibliotheken enthalten. Wenn neue Funktionen hinzukommen müssten diese Bibliotheken allerdings immer manuell um diese Funktionen erweitert werden. Daher werden neue hinzugefügte UserExit Funktionen nur aufgerufen, wenn Sie als Funktion existieren. 

Die Funktionen können bei Bedarf zur "DEXPRO__UserExit_CustomLib" hinzugefügt werden.

 

/** Über dieses UserExit kann der Name der Log-Datei angepasst werden.
 * @param {string} logName Aktueller Dateiname
 * @param {string} fileId Aktuelle Mappen-ID
 * @param {string} fileTemplate Mappentyp der aktuellen Mappe
 * @since Invoice 0.95
 * @returns {string} Neuer Name für die Log-Datei
 **/
function ue_ChangeRulesLogName(logName, fileId, fileTemplate){
    return logName + "_" + fileId + "_" + fileTemplate;
}

/** Über dieses UserExit kann der Log-Pfad zur Log-Datei angepasst werden.
 * Achtung! Diese Funktion kann ggf. über den später ausgeführten UserExit ue_ChangeLogPath() nochmals überschrieben werden!
 * @param {string} logFolder Aktueller Datei-Pfad
 * @param {string} fileId Aktuelle Mappen-ID
 * @param {string} fileTemplate Mappentyp der aktuellen Mappe
 * @since Invoice 0.95
 * @returns {string} Neuer Log-Pfad
 **/
function ue_ChangeRulesLogFolder(logFolder, fileId, fileTemplate){
    return logFolder + cFS + "WfRules"; // cFS ist bei Linux "/" und bei Windows "\\"
}

/** Über dieses UserExit kann der Zusatz zum Log-Dateinamen angepasst werden.
 * In der Regel wird ein täglicher oder monatlicher Zeitstempel angefügt, damit die einzelnen Logdateien nicht zu groß werden.
 * Der zurückgegebene String wird einfach zum Dateinamen angefügt, falls es nicht einer dieser speziellen Rückgabewerte ist:
 * "year"/"yyyy"/"y" fügt das Aktuelle Jahr hinzu
 * "month"/"mm"/"m" fügt Jahr und Monat hinzu
 * "date"/"day"/"dd"/"d" fügt Jahr, Monat und Tag hinzu
 * "timestamp"/"ts" fügt Jahr, Monat, Tag und Uhrzeit hinzu 
 * @param {string} logName Incoming log-name
 * @param {string} fileId Aktuelle Mappen-ID
 * @param {string} fileTemplate Mappentyp der aktuellen Mappe
 * @since Invoice 0.95
 * @returns {string} new log add
 **/
function ue_ChangeRulesLogAdd(logName, fileId, fileTemplate){
    return "";
}

/** Über dieses UserExit kann der Log-Pfad generell für alle internen Logs umgestellt werden!
 * @param {string} path Aktueller Pfad.
 * @since Invoice 0.95
 * @return {string} Angepasster Pfad.
 */
function ue_ChangeLogPath(path){
    if( context.scriptName==="abc" ){
        return "E:\\Logs";
    }
    return path;
}

/** Das UserExit wird vor der Bearbeitung einer Mappe direkt zu Beginn im Skript "Invoice_DF_BeforeEdit" aufgerufen.
 * Bei einem Fehler muss "context.errorMessage" in der Funktion gesetzt werden!
 * @since Invoice 0.94
 * @return {boolean} true / false.
 */
function ue_BeforeEdit_Start(){
    return true;
}

/** Das UserExit wird vor der Bearbeitung einer Mappe am Ende des Skripts "Invoice_DF_BeforeEdit" aufgerufen.
 * Bei einem Fehler muss "context.errorMessage" in der Funktion gesetzt werden!
 * @since Invoice 0.94
 * @return {boolean} true / false.
 */
function ue_BeforeEdit_End(){
    return true;
}

/** Das UserExit wird vor der Weiterleitung  aufgerufen.
 * Das aufrufende Skript bei der Weiterleitung an einen Benutzer ist "DEXPRO_Action_ForwardUser" und
 * das aufrufende Skript bei der Weiterleitung an eine Gruppe lautet "DEXPRO_Action_ForwardAP".
 * Bei einem Fehler muss "context.errorMessage" in der Funktion gesetzt werden!
 * @param {string} loginOrAccessProfile Login eines Benutzers bzw. Name des Zugriffsprofils (je nach aufrufendem Skript).
 * @since Invoice 0.94
 * @return {boolean} true / false.
 */
function ue_BeforeForwardFile(loginOrAccessProfile){
    if( context.scriptName==="DEXPRO_Action_ForwardAP" ){
       // ...
    }
    else if( context.scriptName==="DEXPRO_Action_ForwardUser" ){
       // ...
    }
    return true;
}

/
** Das UserExit wird vor dem Zurücksenden im Skript "DEXPRO_Action_SendBack" aufgerufen.
 * Bei einem Fehler muss "context.errorMessage" in der Funktion gesetzt werden!
 * @param {string} workflowAction Enthält die ausgewählte Workflow-Aktion.
 * @since Invoice 0.94
 * @return {boolean} true / false.
 */
function ue_BeforeSendBack(workflowAction){
    return true;
}

/**  Das UserExit wird beim Zurücksenden auf den ausgehenden KontrollflüssenKontrollflüssen 

 * über das Skript "DEXPRO_WF_CheckSendBack" aufgerufen (ab Workflow-Version "WorkflowRules-3").
 * Die Funktion greift demnach auch bei projektspezifischen UDA, welche diese Kontrollflüsse verwenden.
 * Bei einem Fehler muss die Fehlermeldung zurückgegeben werden - andernfalls ein Leerstring!
 * @since Invoice 1.0.001
 * @return {string} ""/ error-message.
 */
function ue_OnSendBack(){
    return "";
}

/** Das UserExit wird bei Übernahme einer Mappe aus einem Gruppenkorb aufgerufen.
 * Der Aufruf erfolgt über das Skript "DEXPRO_WF_CheckDataForwardUser".
 * In dem Skript wird zuvor lediglich der aktuelle Benutzer in das Feld "ActionUser" geschrieben.
 * Bei einem Fehler muss die Fehlermeldung zurückgegeben werden - andernfalls ein Leerstring!
 * @since Invoice 1.0.010
 * @return {string} ""/ error-message.
 */
function ue_CheckDataForwardUser(){
    return "";
}

/**
 Das UserExit wird beim Zurücklegen in den Gruppenkorb aufgerufen.
 * Der Aufruf erfolgt über das Skript "DEXPRO_WF_CheckDataBackAccessProfile".
 * Bei einem Fehler muss die Fehlermeldung zurückgegeben werden - andernfalls ein Leerstring!
 * @since Invoice 1.0.010
 * @return {string} ""/ error-message.
 */
function ue_CheckDataBackAccessProfile(){
    return "";
}

/** Nach einer Weiterleitung über eine benutzerdefinierte Aktion muss die Anzeige nach der Weiterleitung über das Skript erfolgen.
 * Die Standard-Navigationen wie "Mappe beibehalten" oder "Nächste Mappe" oder "Zum Eingangsordner" wurden über das
 * Objekt "NavigationReturnObjekt" umgesetzt. Die Ergebnisse können im Nachgang manipuliert werden.
 * Hierzu kann das Objekt via 'prototype' um die nachfolgende Funktion erweitert werden.
 * Am Objekt können die Werte "ReturnType" und "ReturnVal" wie im unteren Beispiel neu ermittelt werden.
 * @property {string} ReturnType Wird als context.returnType gesetzt
 * @property {*} ReturnType Wird als return-Wert verwendet
 * @property {SystemUser} SystemUser Der ausführende Benutzer als SystemUser-Objekt
 * @property {DocFile} DocFile Die aktuelle Mappe
 * @property {string} Navigation Enthält die Navigation ("keepfile" / "next" / ...)
 * @property {string} ActionID Enthält die Aktions ID der Mappe (vor der Weiterleitung)
 * @property {string} WorkflowID Enthält die Workflow ID der Mappe (vor der Weiterleitung)
 * @property {string} ForwardAction Info zur Weiterleitung ("FinishAction" / "SendBack" / "Forward" / ...)
 * @since Invoice 1.0.010
 */
NavigationReturnObject.prototype.ue_NavigationManipulation = function(){
    this.Log += "[INFO] function ue_NavigationManipulation()\n";
    if( this.SystemUser instanceof SystemUser ){
        this.Log += "[INFO] valid system user\n";
        var lastUsedFolder = this.SystemUser.getPrivateFolder("lastused");
        if( lastUsedFolder ){
            /* Dieses Beispiel öffnet den privaten Ordner 'Zuletzt benutzt' und zeigt die aktuelle Mappe an. */
            this.ReturnType = "multipleAction";
            this.ReturnVal  = JSON.stringify( [
                { returnType : 'showFolder', returnValue : lastUsedFolder.id },
                { returnType : 'showFile'returnValue : this.DocFile.getid() }
            ] );
        }
        else{
            this.Log += "[ERROR] invalid private folder(lastused)\n";
        }
    }
    else{
        this.Log += "[ERROR] invalid system user\n";
    }
    util.log(this.Log);
}