One of the most important tasks of the Template Engine is to optimize the export of CMS files. On the one hand, using the Template Engine saves the resources of the machine concerned. On the other hand websites can be published faster.

The largest potential for optimization can be found in the export process itself since a file only needs to be exported if the web document that corresponds to it has changed. For being able to predict this, the Template Engine records dependencies between files. These dependencies are explained in this section.

A file not only needs to be exported again after it has been modified. If, for example, a file includes data from another file (by means of links or NPSOBJ instructions) it depends on this other file and needs to be exported even if only parts of the included file have changed.

The Template Engine records such dependencies between the CMS files while it exports them. Since the first export of a folder hierarchy is a complete export, it is guaranteed that all the existing dependencies are recorded. Later on, when the data is updated by means of update records, the Template Engine uses its recordings to check and then delete files that have become obsolete. When the folder hierarchy is finally published, the Template Engine generates the documents that need to be updated.

CMS Fiona recognizes the following dependency types. The details are listed in the right column. The file on which another file depends is called destination file.

Dependency type  Details

object (1)

Description: The file depends on the name or the position of the destination file in the folder hierarchy. This is also the case if the name is a component in a link destination path.

Trigger: Parameter name, objectsToRoot, object, parent, visibleName/visiblePath (generates a dependency for all objectsToRoot of a link destination file).

Effects: Files associated with the file are deleted, if parent or name of the destination file is modified or the destination file is deleted.

content (2)

Description: The file depends on fields of a different file (other fields than the ones metioned for object, reference, and children dependencies).

Trigger: Querying parameters, that do not generate one of the dependencies above.

Effects: When the destination file is released, the file is removed from the cache.

reference (3)

Description: The file only depends on data of the destination file that rarely change, such as data needed for links and tables of contents. When the destination file is released again and this data remains unchanged and no other dependencies (especially content dependencies) are generated, the exported files are not removed from the cache.

Trigger: Querying the state of the destination file. Reference parameters: title, contentType, objClass for files, destinationUrl, displayTitle for links plus the fields listed in the export.referenceAttributes system configuration entry (do not specify fields of the linklist type here).

Effects: The file is only deleted, if the value of a reference parameter has changed.

children (4)

Description: The file depends on the list of the files contained in a folder.

Trigger: Querying children, prev, next.

Effects: The files associated with the file are deleted, when files contained in a folder are released or unreleased or lose their released version by some other action.

usesAll (5)

Description: The file depends on numerous or an undefined number of files.

Trigger: automatically when usesAllThreshold dependencies is exceeded or one of the following parameters is queried: superObjects, superLinks, hasSuperLinks.

Effects: Files in the file system associated with the NPS file are deleted when any data of the Template Engine changes.

During the export, dependencies can also be generated in systemExecute procedures. This might be necessary if the procedure reads fields from files for which no dependency has been or will be created.