Checks and Functions

Checks and functions allow you to hook into particular actions performed with versions. This is done by means of Tcl code.

There are three checks and functions that can be specified in file formats: the completion check, the content assignment function, and the or workflow modification function. Two ways to open the form in which they can be edited exist: If you are about to create a file format, click on the Checks and Functions button in the Other Options section in the corresponding form. However, if you would like to modify them in an existing file format, localize the file format first in the File Formats section using the search function. Click on the file format name in the list entry to switch to the view page of the file format and there on the Edit button to switch to the editing form for file formats. Here, click on the Checks and Functions button in the Other Options section of the form to open the corresponding form:

Version assignment function

The Content Management Server calls up the version assignment function before it sets a version’s field values. This occurs after you have edited the fields in a field set or the main content of a content. The function is called after the value assignment functions of the individual fields have been executed. Your Tcl code only has access to the Content Management Server data in read-only mode. The function code can use the following variables:

  • modifiedAttributes: The list of version fields and their values that are to be changed by the write operation, encoded as name-value pairs. The blob of the content is not contained in this list.
  • contentId: The ID of the content whose fields are to be changed.
  • inBlobFile: The name of the file in which the function finds the blob in case it has been modified. If the blob has not been changed, this variable is undefined.
  • outBlobFile: The name of the file to which the function must write the blob if it is changed. This file does not exist when the function code is entered. If the function creates it, the Content Management Server sets the blob to its contents.
  • result: On successful execution, this variable should be set to 1 , and otherwise to 0 by the function to signal the execution status to the Content Manager.
  • messages: If result is 0, the Content Manager interprets the value of messages as an error message to be output.

You can use your code to check the consistency of the field values and, if necessary, change the modifiedAttributes list. Please note that the main content of a version is referenced separately via the inBlobFile and outBlobFile variables. This is shown in the following example for a main content containing text:

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

    ### Code modifying the blob and other fields goes here.
    ### Now, let’s store the blob in the provided file:

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

If your code has set result to 1, the Content Management Server interprets the modifiedAttributes as field name-value pairs and stores the field values. Input values which are saved in an internal format (such as date values) are converted in this process. If, on the other hand, you set result to 0 (zero), the Content Management Server does not save the field values. In this case, the Content Management Server assumes that an error has occurred and that your code has stored one or more error messages in the messages list. The Content Management Server then displays these error messages.

Workflow modification function

You can use the code entered here to influence the workflow of a draft version before the content is created. It is called up when a file is created or if one of the workflow actions Edit, Reject or Unrelease is performed. Before the Content Management Server calls the code, it sets the contentId variable to the ID of the draft version concerned and the objId variable to the ID of the file to which the content belongs. Furthermore, the workflow parameters are stored in the workflow variable. These parameters result from the workflow assigned to the file format of the file. The parameters are stored in the workflow variable as a Tcl List. The elements of this list are:

  • editGroups editGroups
    is the list of user groups that are to edit the content.
  • signatureDefs signatureDefs
    is the list of signature definitions. Each definition is a list made up of two elements, the first element being the name of a signature field and the second element the name of the user group whose members are permitted to provide the signature.
  • allowsMultipleSignatures multiSig
    contains 0 if is not permissible for the same user group to sign a content more than once. Otherwise, the parameter contains the value 1.

Using your Tcl code, you can modify the workflow definition by saving it in the workflow variable. The following example illustrates how different workflows can be used depending on the path:

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

Completion check

Here you can enter Tcl code which the Content Management Server will execute after a draft version was modified. Among other things, the values of fields can be checked for consistency here.

The Content Manager Server only calls the code if all other completion checks have been successfully concluded or if the reasons for incompleteness need to be determined. The Content Management Server does not allow any write operations (such as changing a field value). However, variables can be set.

The following global variable is set by the Content Management Server prior to executing the code:

  • contentId: the ID of the version to be checked.

The result is returned by means of the following (global) variables:

  • result: 0 (zero) indicates that the version is incomplete. Other return values will be interpreted as complete.
  • messages: A list of messages indicating the reasons for incompleteness (string array)

After you have determined the checks and functions of the file format, click on OK to save the changes.