Checks und Funktionen

Mit Checks und Funktionen können Sie in bestimmte Aktionen, die mit Versionen durchgeführt werden, eingreifen. Dies geschieht mit Hilfe von Tcl-Code.

Es gibt drei Checks und Funktionen, die in Dateivorlagen angegeben werden können, den Vollständigkeitscheck, die Versionszuweisungsfunktion und die Workflowzuweisungsfunktion. Das Formular, in dem der Tcl-Code eingegeben werden kann, erreichen Sie auf zwei Arten.

  • Wenn Sie gerade eine Vorlage anlegen, so klicken Sie bitte im entsprechenden Formular auf den Button Checks und Funktionen im Bereich Weitere Optionen.
  • Wenn Sie dagegen den Tcl-Code in einer bestehenden Vorlage bearbeiten möchten, so lokalisieren Sie die Vorlage bitte zunächst in der Sektion Vorlagen mit Hilfe der Suchfunktion. Klicken Sie anschließend auf den Vorlagennamen im entsprechenden Listeneintrag, um auf die Ansichtsseite der Vorlage zu wechseln und dort wiederum den Button Bearbeiten, um zu dem Bearbeitungsformular für Vorlagen zu gelangen. Hier klicken Sie bitte abschließend im Formularbereich Weitere Optionen auf den Button Checks und Funktionen, um das entsprechende Formular zu öffnen.

Versionszuweisungsfunktion

Die Versionszuweisungsfunktion wird vom Content Management Server aufgerufen, bevor er die Feldwerte einer Version setzt. Dies geschieht, nachdem Sie die Felder in einer Feldergruppe oder den Haupttext einer Version bearbeitet haben. Die Funktion wird aufgerufen, nachdem die Wertzuweisungsfunktionen der einzelnen Felder ausgeführt wurden. Ihr Tcl-Code hat nur lesenden Zugriff auf die Content-Management-Server-Daten. Der Code der Funktion kann die folgenden Variablen verwenden:

  • modifiedAttributes: Die Liste der Versionsfelder und ihrer Werte, die durch die Schreiboperation geändert werden sollen, kodiert als Name-Wert-Paare. Der Hauptinhalt der Version ist in dieser Liste nicht enthalten.
  • contentId: Die ID der Version, dessen Felder geändert werden sollen.
  • inBlobFile: Der Name der Datei, in der die Funktion den Hauptinhalt findet, falls dieser geändert wurde. Wurde der Hauptinhalt nicht geändert, so ist diese Variable nicht definiert.
  • outBlobFile: Der Name der Datei, in die die Funktion den Hauptinhalt schreiben muss, wenn er ihn ändert. Beim Eintritt in den Code der Funktion existiert diese Datei nicht. Legt die Funktion sie an, so setzt der Content Management Server den Hauptinhalt auf ihren Inhalt.
  • result: Diese Variable sollte von der Funktion bei erfolgreicher Ausführung auf 1, andernfalls auf 0 gesetzt werden, um dem Content Manager den Ausführungsstatus zu signalisieren.
  • messages: Ist result 0, so interpretiert der Content Manager den Wert von messages als auszugebende Fehlermeldung.

Sie können mit Ihrem Code die Konsistenz der Feldwerte prüfen und gegebenenfalls die Liste modifiedAttributes ändern. Bitte beachten Sie, dass der Hauptinhalt einer Version separat über die Variablen inBlobFile und outBlobFile referenziert wird. Dies zeigt das folgende Beispiel für einen Hauptinhalt, der Text enthält:

if {[info exists inBlobFile]} {
    set fh [open $inBlobFile r]
    fconfigure $fh -encoding utf-8
    set blob [read $fh]
    close $fh

    ### Code, der den Blob und andere Felder modifiziert, kommt
    ### hierher. Jetzt den Blob in der vorgesehenen Datei speichern:

    set fh [open $outBlobFile w]
    fconfigure $fh -encoding utf-8
    puts -nonewline $fh $blob
    close $fh
    set result 1
}

Hat Ihr Code result auf 1 gesetzt, so interpretiert der Content Management Server modifiedAttributes als Feldname-Wert-Paare und speichert die Feldwerte ab. Bei diesem Vorgang werden Eingabewerte, die in einem internen Format gespeichert werden (beispielsweise Datumswerte), konvertiert. Setzen Sie dagegen result auf 0 (null), so speichert der Content Management Server die Feldwerte nicht. In diesem Fall nimmt der Content Management Server an, dass ein Fehler aufgetreten ist und dass Ihr Code eine oder mehrere Fehlermeldungen in der Liste messages gespeichert hat. Diese Fehlermeldungen werden vom Content Management Server angezeigt.

Workflowzuweisungsfunktion

Mit diesem Code können Sie auf den Workflow einer Arbeitsversion Einfluss nehmen, bevor die Version angelegt wird. Er wird aufgerufen, wenn eine Datei angelegt oder eine der Workflow-Aktionen Bearbeiten, Zurückweisen oder Zurückziehen ausgeführt wird. Bevor der Content Management Server den Code abarbeitet, setzt er die Variable contentId auf die ID der betreffenden Arbeitsversion und die Variable objId auf die ID der Datei, zu der die Version gehört. Ferner sind in der Variablen workflow die Workflow-Parameter gespeichert. Diese Parameter ergeben sich aus dem Workflow, der der Vorlage der Datei zugeordnet ist. Die Parameter sind in der Variablen workflow als Tcl-Liste abgelegt. Die Elemente dieser Liste sind:

  • editGroups editGroups
    editGroups
    ist die Liste der Benutzergruppen, die die Version bearbeiten müssen.
  • signatureDefs signatureDefs
    signatureDefs
    ist die Liste der Signaturdefinitionen. Jede Definition ist eine Liste aus zwei Elementen, deren erstes Element der Name eines Signaturfeldes und deren zweites Element der Name der Benutzergruppe ist, deren Mitglieder die Unterschrift leisten dürfen.
  • allowsMultipleSignatures multiSig
    multiSig
    enthält 0, wenn es nicht zulässig sein soll, dass die gleiche Benutzergruppe eine Version mehrfach unterzeichnet. Andernfalls enthält der Parameter den Wert 1.

Mit Ihrem Tcl-Code können Sie die Workflow-Definition ändern, indem Sie sie in der Variablen workflow speichern. Das folgende Beispiel zeigt, wie je nach Pfad unterschiedliche Workflows verwendet werden können:

set pfad [obj withId $objId get path]
switch -regexp $pfad {
/intranet {set workflow {allowsMultipleSignatures 1 editGroups Intranet_Editors signatureDefs {{Sig_Chiefs1 Chiefs1}}}}
/internet {set workflow {allowsMultipleSignatures 1 editGroups Internet_Editors signatureDefs {{Sig_Chiefs2 Chiefs2}}}}
}

Vollständigkeitscheck

Hier können Sie Tcl-Code eintragen, der vom Content Management Server immer abgearbeitet wird, nachdem eine Arbeitsversion geändert wurde. Unter anderem lassen sich hier Konsistenzprüfungen der Werte mehrerer Felder der Version realisieren.

Der Content Management Server ruft den Code nur auf, wenn alle anderen Vollständigkeitsprüfungen erfolgreich abgeschlossen wurden oder die Gründe für die Unvollständigkeit ermittelt werden. Der Content Management Server lässt keine schreibenden Operationen (wie die Änderung eines Feldwertes) zu. Variablen können jedoch gesetzt werden.

Die folgende (globale) Variable wird vom Content Management Server vorbelegt:

  • contentId: Die ID der Version, die überprüft werden soll.

Mit folgenden (globalen) Variablen wird das Ergebnis zurückgegeben:

  • result: 0 bedeutet, dass die Version unvollständig ist. Andere Rückgabewerte werden als vollständig interpretiert.
  • messages: Liste der Meldungen der Gründe für die Unvollständigkeit (String-Array).

Nachdem Sie die Checks und Funktionen der Vorlage festgelegt haben, klicken Sie bitte auf OK, um die Änderungen zu speichern.