Tcl-Skripte in mehreren Callback-Funktionen verwenden

Manchmal müssen in mehreren Callback-Funktionen die gleichen Tcl-Prozeduren verwendet werden. Um den gleichen Code nicht an mehreren Stellen pflegen zu müssen, können Sie ihn in eine Datei auslagern, die beim Start des Content Managers eingelesen wird. Gehen Sie hierzu folgendermaßen vor:

  1. Legen Sie eine Datei mit der Prozedur in ein Verzeichnis, dessen Inhalt beim Start des Content Managers automatisch eingelesen wird, beispielsweise

    instance/myInstance/script/cm/serverCmds/callbackCommand.tcl

  2. Die Prozedur sollte alle Argumente erhalten, die auch der Funktion oder den Funktionen übergeben werden. Ferner muss sie die Werte zurückgeben, die für die jeweiligen aufrufenden Funktionen relevant sind. Der folgende Code zeigt dies am Beispiel eines Vollständigkeitschecks:

    proc callbackCommand {contentId} {
      set messages {"Nachricht"}
      set result 0
      return "$messages $result"
    }
  3. Schließlich muss die Prozedur im sicheren Interpreter registriert werden:

    safeInterp alias callbackCommand callbackCommand
  4. Starten Sie den Content Manager neu, damit die Skriptdatei eingelesen und die Prozedur verfügbar gemacht wird:

    instance/myInstance/bin/rc.npsd restart CM
  5. Nun können Sie in der jeweiligen Funktion die Prozedur folgendermaßen aufrufen und die Rückgabewerte entsprechend verwenden:

    CM> objClass withName document get completionCheck
    set returnValue [callbackCommand $contentId]
    set messages [lindex $returnValue 0]
    set result [lindex $returnValue 1]
    

Wenn eine Prozedur aus Funktionen heraus aufgerufen wird, die unterschiedliche Rückgabewerte erwarten, lassen Sie die Prozedur eine Liste mit allen erforderlichen Rückgabewerten zurückgeben. Ermitteln Sie dann in den aufrufenden Funktionen die erforderlichen Werte mit Hilfe von lindex.
Wenn die Funktionen, die die Prozedur aufrufen, der Prozedur unterschiedliche Argumente übergeben müssen, verwenden Sie ein zusätzliches Argument, das die aufrufende Funktion identifiziert. Machen Sie dann die Berechnungen in der Prozedur vom Wert des zusätzlichen Arguments abhängig.